Search
Question: R 3.5.0/Bioconductor version 3.6: OS-dependent behavior divergence for list concatenation of SummarizedExperiment
0
gravatar for balin
7 days ago by
balin0
balin0 wrote:

Consider the following code:

nrows <- 200; ncols <- 6
counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
rowRanges <- GenomicRanges::GRanges(rep(c("chr1", "chr2"), c(50, 150)),
               IRanges::IRanges(floor(runif(200, 1e5, 1e6)), width=100),
               strand=sample(c("+", "-"), 200, TRUE),
               feature_id=sprintf("ID%03d", 1:200))
colData <- S4Vectors::DataFrame(Treatment=rep(c("ChIP", "Input"), 3),
               row.names=LETTERS[1:6])
rse <- SummarizedExperiment::SummarizedExperiment(
               assays=S4Vectors::SimpleList(counts=counts),
               rowRanges=rowRanges, colData=colData)
c(rse,list())

This works fine when run on (Arch)Linux and produces

[[1]]
class: RangedSummarizedExperiment 
dim: 200 6 
metadata(0):
assays(1): counts
rownames: NULL
rowData names(1): feature_id
colnames(6): A B ... E F
colData names(1): Treatment

BUT on Windows the same code currently produces:

Error in as(from, to_class, strict = FALSE) :
  no method or default for coercing "list" to "RangedSummarizedExperiment"

I can provide sessionInfo() for both systems, but as there's no where to attach files here I wait until it's requested - is this even the right venue for BIOC bugreports?

ADD COMMENTlink modified 7 days ago by James W. MacDonald46k • written 7 days ago by balin0

Stepping back a bit, is this a sensible thing to expect to work? That a list() can be represented as a (Ranged)SummarizedExperiment ?

ADD REPLYlink written 7 days ago by Martin Morgan ♦♦ 21k
On Wed, 2018-05-16 at 13:22 +0000, Martin Morgan [bioc] wrote: > Activity on a post you are following on support.bioconductor.org > User Martin Morgan wrote Comment: R 3.5.0/Bioconductor version 3.6: > OS-dependent behavior divergence for list concatenation of > SummarizedExperiment: > Stepping back a bit, is this a sensible thing to expect to work? That > a list() can be represented as a (Ranged)SummarizedExperiment ? > Post tags: summarizedexperiment, bug, 3.5.0 > You may reply via email or visit Two Mailing lists for the Bioconductor project > 08958/#108973 @Martin Morgan OK. Sourcing `biocLite` from the homepage finally gave my the outdated error. Investigation into my `.libPaths` revealed that despite all my efforts to keep package libs project-specific, the (root-only writable) system library helt **old** bioc pakages including `BiocInstaller` ... that's remedied now and I am properly up to speed. Accordingly above concatenation now also fails for me. Why would that be the case with an up-to-date but not an old bioc version? Is that really intended behavior?
ADD REPLYlink written 7 days ago by balin0

It's not intended behavior that you could concatenate a RangedSummarizedExperiment with some other random thing and have it work. By definition you should only be able to concatenate things of the same type, which is what I think Martin was getting at in his previous comment.

ADD REPLYlink written 6 days ago by James W. MacDonald46k
0
gravatar for James W. MacDonald
7 days ago by
United States
James W. MacDonald46k wrote:

On Linux:

> nrows <- 200; ncols <- 6
> counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
> rowRanges <- GenomicRanges::GRanges(rep(c("chr1", "chr2"), c(50, 150)),
+                IRanges::IRanges(floor(runif(200, 1e5, 1e6)), width=100),
+                strand=sample(c("+", "-"), 200, TRUE),
+                feature_id=sprintf("ID%03d", 1:200))
> colData <- S4Vectors::DataFrame(Treatment=rep(c("ChIP", "Input"), 3),
+                row.names=LETTERS[1:6])
> rse <- SummarizedExperiment::SummarizedExperiment(
+                assays=S4Vectors::SimpleList(counts=counts),
+                rowRanges=rowRanges, colData=colData)
> c(rse,list())
Error in as(from, to_class, strict = FALSE) :
  no method or default for coercing "list" to "RangedSummarizedExperiment"
> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 8 (jessie)

Matrix products: default
BLAS: /data/oldR/R-3.5.0/lib64/R/lib/libRblas.so
LAPACK: /data/oldR/R-3.5.0/lib64/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] parallel  stats4    stats     graphics  grDevices utils     datasets
[8] methods   base     

other attached packages:
 [1] SummarizedExperiment_1.10.0 DelayedArray_0.6.0         
 [3] BiocParallel_1.14.1         matrixStats_0.53.1         
 [5] Biobase_2.40.0              GenomicRanges_1.32.2       
 [7] GenomeInfoDb_1.16.0         IRanges_2.14.4             
 [9] S4Vectors_0.18.1            BiocGenerics_0.26.0  

And on Windows:

 

> nrows <- 200; ncols <- 6
> counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
> rowRanges <- GenomicRanges::GRanges(rep(c("chr1", "chr2"), c(50, 150)),
+                IRanges::IRanges(floor(runif(200, 1e5, 1e6)), width=100),
+                strand=sample(c("+", "-"), 200, TRUE),
+                feature_id=sprintf("ID%03d", 1:200))
> colData <- S4Vectors::DataFrame(Treatment=rep(c("ChIP", "Input"), 3),
+                row.names=LETTERS[1:6])
> rse <- SummarizedExperiment::SummarizedExperiment(
+                assays=S4Vectors::SimpleList(counts=counts),
+                rowRanges=rowRanges, colData=colData)
> c(rse,list())
Error in as(from, to_class, strict = FALSE) :
  no method or default for coercing "list" to "RangedSummarizedExperiment"
> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] parallel  stats4    stats     graphics  grDevices utils     datasets
[8] methods   base     

other attached packages:
 [1] SummarizedExperiment_1.10.0 DelayedArray_0.6.0         
 [3] BiocParallel_1.14.0         matrixStats_0.53.1         
 [5] Biobase_2.40.0              GenomicRanges_1.32.0       
 [7] GenomeInfoDb_1.16.0         IRanges_2.14.1             
 [9] S4Vectors_0.18.1            BiocGenerics_0.26.0   
ADD COMMENTlink written 7 days ago by James W. MacDonald46k

Weirder by the minute ... here's my (again error free) reproduction including sessionInfo() ...

I note a difference in SummarizedExperiment version (above 1.10., me 1.8), which BiocInstaller::biocLite(checkBuild=T) does not change ... where does that difference come from?

> nrows <- 200; ncols <- 6
> counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
> rowRanges <- GenomicRanges::GRanges(rep(c("chr1", "chr2"), c(50, 150)),
+                 IRanges::IRanges(floor(runif(200, 1e5, 1e6)), width=100),
+                 strand=sample(c("+", "-"), 200, TRUE),
+                 feature_id=sprintf("ID%03d", 1:200))
> colData <- S4Vectors::DataFrame(Treatment=rep(c("ChIP", "Input"), 3),
+                 row.names=LETTERS[1:6])
> rse <- SummarizedExperiment::SummarizedExperiment(
+                 assays=S4Vectors::SimpleList(counts=counts),
+                 rowRanges=rowRanges, colData=colData)
> c(rse,list())
[[1]]
class: RangedSummarizedExperiment 
dim: 200 6 
metadata(0):
assays(1): counts
rownames: NULL
rowData names(1): feature_id
colnames(6): A B ... E F
colData names(1): Treatment
> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Arch Linux

Matrix products: default
BLAS: /usr/lib/libblas.so.3.8.0
LAPACK: /usr/lib/liblapack.so.3.8.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] lattice_0.20-35            matrixStats_0.53.1         IRanges_2.12.0            
 [4] bitops_1.0-6               grid_3.5.0                 GenomeInfoDb_1.14.0       
 [7] switchr_0.12.7             stats4_3.5.0               zlibbioc_1.24.0           
[10] XVector_0.18.0             S4Vectors_0.16.0           Matrix_1.2-14             
[13] tools_3.5.0                Biobase_2.38.0             RCurl_1.95-4.10           
[16] DelayedArray_0.4.1         parallel_3.5.0             compiler_3.5.0            
[19] BiocGenerics_0.24.0        GenomicRanges_1.30.3       SummarizedExperiment_1.8.1
[22] GenomeInfoDbData_1.0.0
ADD REPLYlink modified 7 days ago • written 7 days ago by balin0

@balin is using R-3.5.0, but with Bioconductor 3.6; BiocInstaller::valid() will complain about invalid packages. Of course, updating will apparently break the installation...

ADD REPLYlink written 7 days ago by Martin Morgan ♦♦ 21k

@Martin Morgan

1) I have not down anything out of the ordinary (other than maintaining my dev environment in switchr) - is switchr known to generate this kind of R/bioc mismatch?

2) isn't it strange that the apparently mismatched R/bioc combination does the concatenation just fine, but your matched version doesn't?

ADD REPLYlink written 7 days ago by balin0

I don't know how switchr works, but your package versions are not consistent with your R version.

It isn't the mismatch that causes problems, but the fact that in your sessionInfo you have different packages from those expected / that Jim has. For instance, you have SummarizedExperiment 1.8.1 which is from the Bioc 3.6 (R 3.4.*) release, whereas Jim has 1.10..0, which is from the Bioc 3.7 / R 3.5 release. 

ADD REPLYlink written 7 days ago by Martin Morgan ♦♦ 21k
> BiocInstaller::biocValid()
[1] TRUE
ADD REPLYlink written 7 days ago by balin0
> BiocInstaller::biocLite('BiocUpgrade')
Error: Bioconductor version 3.6 cannot be upgraded with R version 3.5.0
ADD REPLYlink written 7 days ago by balin0

I was misleading about biocValid(), sorry.  You should see

> library(BiocInstaller)
Warning: Bioconductor version 3.6 is too old for R version 3.5.0; see
  https://bioconductor.org/install/#troubleshoot-biocinstaller

'BIocUpgrade' is used to toggle between versions within an R release; follow the "Troubleshoot BiocInstaller" section at at http://bioconductor.org/install/#troubleshoot-bioconductor-packages

ADD REPLYlink modified 7 days ago • written 7 days ago by Martin Morgan ♦♦ 21k

I don't ... loads without a hitch.

ADD REPLYlink written 7 days ago by balin0

We could try trouble-shooting if you want, the end interpretation is that your packages are incorrect for your version of R.

The following should generate the warning message

BiocInstaller:::.onAttach()

It is generated based on the value of

BiocInstaller:::IS_END_OF_LIFE

which should be TRUE. It is set in 

BiocInstaller:::.onLoad

You could debug this

> debug(BiocInstaller:::.onLoad)
> BiocInstaller:::.onLoad()
...
Browse[2]> n
...

and the code should consult the web for relevant variables.

 

 

ADD REPLYlink modified 7 days ago • written 7 days ago by Martin Morgan ♦♦ 21k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.2.0
Traffic: 402 users visited in the last hour