From keith at wehi.EDU.AU  Sun Jan 18 05:17:15 2015
From: keith at wehi.EDU.AU (Keith Satterley)
Date: Sun, 18 Jan 2015 15:17:15 +1100 (EST)
Subject: [Rd] Is the tcltk failure in affylmGUI related to R bug 15957
In-Reply-To: <9A2846D1-D6AF-4FC7-ABCC-D12270693C0F@gmail.com>
References: <54B603B0.9090607@wehi.edu.au>
	<9A2846D1-D6AF-4FC7-ABCC-D12270693C0F@gmail.com>
Message-ID: <718649604.114432406.1421554635376.JavaMail.root@wehi.edu.au>

Thanks Peter and Dan for your replies.
After learning a bit more about tcltk and environments etc. I have replaced

  Try(n <- evalq(TclVarCount <- TclVarCount + 1, .TkRoot$env))

with

  Try(n <- .TkRoot$env$TclVarCount <- .TkRoot$env$TclVarCount +1L)

as you suggest.

It now works for both R-3.1.1 and R-3.1.2+

(My understanding is that the Try function is there to put a GUI box around the error messages.)

I shall update affylmGUI versions accordingly soon.

cheers
Keith
PS> I have also changed the Depends in DESCRIPTION to Imports and added an import statement to the NAMESPACE file which is independent of this problem.
Consequently removed Require("tkrplot") statements as no longer needed.

----- peter dalgaard <pdalgd at gmail.com> wrote:
> Seems unlikely that that particular bug is involved. I seem to recall some change related to inadvertent variable capture in .TkRoot$env (?). At any rate, we currently have
> 
> > parent.env(.TkRoot$env)
> <environment: R_EmptyEnv>
> 
> which used to be
> 
> > parent.env(.TkRoot$env)
> <environment: R_GlobalEnv>
> 
> as a result, this won't work any more because R_EmptyEnv has no operators and functions in it:
> 
> > evalq(x <- 1, .TkRoot$env)
> Error in eval(substitute(expr), envir, enclos) : 
>   could not find function "<-"
> 
> and consequently, you conk out at
> 
>    Try(n <- evalq(TclVarCount <- TclVarCount + 1, .TkRoot$env))
> 
> which presumably needs to be recoded in the same way as the current code in tclVar():
> 
> > tclVar
> function (init = "") 
> {
>     n <- .TkRoot$env$TclVarCount <- .TkRoot$env$TclVarCount + 
>         1L
>     name <- paste0("::RTcl", n)
>     l <- list(env = new.env())
>     assign(name, NULL, envir = l$env)
>     reg.finalizer(l$env, function(env) tcl("unset", ls(env)))
>     class(l) <- "tclVar"
>     tclvalue(l) <- init
>     l
> }
> 
> (The whole thing looks a bit odd: Your function clones a fair bit of tclVar, wrapping each line in Try() for no apparent reason (or?), with the apparent purpose of doing something that seems quite similar to what tclArray() already does...)
> 
> -pd
> 
> 
> > On 14 Jan 2015, at 06:50 , Keith Satterley <keith at wehi.edu.au> wrote:
> > 
> > I maintain the package affylmGUI. It works when installed on many previous versions of R. I have today tested exactly the same code under R-2.15.3, R-3.0.2, R-3.1.0, R-3.1.1, R-3.1.2 and R-devel.
> > 
> > I have also tested the versions of affylmGUI downloaded by biocLite for each version of R and the same result applies.
> > 
> > I have no errors under 2.15.3, 3.0.2, 3.1.0 and 3.1.1. The following error occurs under 3.1.2 and R-devel.
> > 
> > I run affylmGUI and read a targets file which then causes affylmGUI to read the specified cel files. On attempting to display the RNA targets file in a Tk window using the "RNA Targets" option from the "RNA Targets" Menu item and the following errors occur:
> > 
> > Error text box 1: Error in eval(substitute(expr),enclos):could not find function "<-"   - pressed OK
> > Following error text box: Error in paste("::RTcl",n,sep=""): object 'n' not found   - pressed OK
> > Following error text box: Error in assign(name, NULL, environ = I$env): object 'name' not found   - pressed OK
> > Following error text box: Error in paste("set",name, "(0,0)\"\"",sep= ""):object 'name' not found   - pressed OK
> > 
> > This then results in an unfilled Tk window.
> > 
> > I am testing on a Windows 7, 64 bit environment. My sessionInfo is:
> > 
> > R version 3.1.2 (2014-10-31)
> > Platform: x86_64-w64-mingw32/x64 (64-bit)
> > locale:
> > [1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252 LC_MONETARY=English_Australia.1252
> > [4] LC_NUMERIC=C LC_TIME=English_Australia.1252
> > attached base packages:
> > [1] stats4    parallel  tcltk     stats     graphics  grDevices utils     datasets  methods   base
> > other attached packages:
> > [1] affylmGUI_1.40.0      AnnotationDbi_1.28.1 GenomeInfoDb_1.2.4    IRanges_2.0.1         S4Vectors_0.4.0
> > [6] xtable_1.7-4          R2HTML_2.3.1 affyPLM_1.42.0        preprocessCore_1.28.0 gcrma_2.38.0
> > [11] tkrplot_0.0-23        affyio_1.34.0 BiocInstaller_1.16.1  affy_1.44.0           Biobase_2.26.0
> > [16] BiocGenerics_0.12.1   limma_3.22.3
> > loaded via a namespace (and not attached):
> > [1] Biostrings_2.34.1 DBI_0.3.1         RSQLite_1.0.0 splines_3.1.2     XVector_0.6.0     zlibbioc_1.12.0
> > 
> > I think the relevant code that is resulting in the error is generated by this function in main.R:
> > tclArrayVar <- function(){
> >    Try(n <- evalq(TclVarCount <- TclVarCount + 1, .TkRoot$env))
> >    Try(name <- paste("::RTcl", n,sep = ""))
> >    Try(l <- list(env = new.env()))
> >    Try(assign(name, NULL, envir = l$env))
> >    Try(reg.finalizer(l$env, function(env) tcl("unset", ls(env))))
> >    Try(class(l) <- "tclArrayVar")
> >    Try(.Tcl(paste("set ",name,"(0,0) \"\"",sep="")))
> >    l  ### Investigate this line KS
> > } #end of tclArrayVar <- function()
> > 
> > This code is lines 877-886 in main.R
> > 
> > Despite the un-investigated last line in this function, it works fine in earlier versions of R as described above.
> > 
> > The original programmer has left our division some years ago and I have maintained the code since then. Consequently my understandings as to why the code was written the way it was is somewhat limited, so I have not touched anything unless it was broken.
> > 
> > My question is, do I need to do something with the affylmGUI code? I'd appreciate some advice if so.
> > 
> > Is this failure related to bug 15957 (https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15957) that Duncan fixed on 2014-09-08.
> > 
> > cheers,
> > 
> > Keith
> > ==============================
> > Keith Satterley
> > Bioinformatics Division
> > The Walter & Eliza Hall Institute of Medical Research
> > Melbourne, Victoria, Australia
> > ==============================
> > 
> > 
> > ______________________________________________________________________
> > The information in this email is confidential and intend...{{dropped:4}}
> > 
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> -- 
> Peter Dalgaard, Professor,
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
> 
> 
> 
> 
> 
> 
> 
> 


______________________________________________________________________
The information in this email is confidential and intend...{{dropped:4}}



[Rd] Is the tcltk failure in affylmGUI related to R bug 15957
Keith Satterley