[Bioc-devel] Build error for DESeq2 dev causing error in other package builds

Martin Morgan mtmorgan at fredhutch.org
Fri Apr 3 14:38:42 CEST 2015

On 04/03/2015 04:37 AM, Andrea Rau wrote:
> Hello,
> I am the maintainer of a Bioconductor package called 'HTSFilter' that
> imports DESeq2. On today's build report, I see that my package (as well
> as DESeq2 and all of the other packages that import it) is showing an
> error message which seems to arise from a recent change in the DESeq2
> code dealing with the dimnames of a DESeqDataSet object. The error
> message in my package reads:
> Error in `assays<-`(`*tmp*`, value = <S4 object of class structure("SimpleList", package = "S4Vectors")>) :
>     'dimnames' differ between assay elements

I broke assays<-,SummarizedExperiment,*-method in GenomicRanges 1.19.50. it has 
been fixed and problems should clear up in the next build report. The 
(incorrect) error about 'dimnames differ between assay elements', seen in


will not appear.

Off-list, Michael Love asked me what exactly does get checked. The row- and 
column names of each incoming assay need either to be NULL, or to match the 
current row and column names of the SummarizedExperiment. For instance the 

 > example(SummarizedExperiment)
## ...
 > assays(se2) = assays(se2)                           # incoming dimnames
 > assays(se2) = assays(se2, withDimnames=FALSE)       # no incoming dimnames
 > m = assays(se2)[["counts"]]; rownames(m) = NULL
 > assays(se2)[["counts"]] = m                         # no rownames
 > assays(se2)[[1]] = assays(se2)[[1]][, c(2:6, 1)]    # out-of-order columns
Error in `assays<-`(`*tmp*`, value = <S4 object of class "SimpleList">) :
   current and replacement dimnames() differ

It doesn't seem safe to allow the dimnames to mismatch, even though earlier 
versions allowed this.

The documentation page has

      assays(x, ..., withDimnames=TRUE) <- value

but says

withDimnames: A 'logical(1)', indicating whether dimnames should be
           applied to extracted assay elements (this argument is ignored
           for the setter 'assays<-'). Setting 'withDimnames=FALSE'
           increases the speed and memory efficiency with which assays
           are extracted.

which may make one wonder why withDimnames=TRUE appears in the signature for 
assays<-. The reason involves complex assignments like

   names(assays(se2)) = "foo"


   names(assays(se2, withDimanames=FALSE)) = "bar"

The second version is more efficient than the first, avoiding copying dimnames. 
The reason for the efficiency is a little complicated. assays() in these 
expressions acts as both getter and setter. The signature of the setter assays<- 
needs to be able to 'pass through' the withDimnames argument to the getter, even 
if it has no effect on the setter itself. I have updated the documentation to 
clarify this, inasmuch as I am able.

   assayNames(se2) = "foo"

hides the complex assignment complexity for this common use case. Probably the 
default should be FALSE for the setter, but symmetry and the complexity of the 
update scenario made me hesitant to do so. Presumably handling of dimnames will 
be simplified in the next release cycle, when dimnames are stored redundantly on 
all assay elements.

Sorry for the confusion from my flawed commits in version 1.19.50.


> and seems to occur when calling the DESeq function (right after the
> "gene-wise dispersion estimates" message is printed). I know that today
> is the deadline for fixing errors prior to release, so the time-frame is
> somewhat short to fix errors. To ensure that my package isn't withheld
> from release, should I retrograde to the last stable version of DESeq2
> rather than using dev?
> Thanks for your help,
> Andrea
> Here is some code + sessionInfo that illustrate the error:
>   > library(HTSFilter)
>   > library(DESeq2)
>   > library(Biobase)
>   > data(sultan)
>   > conds <- pData(sultan)$cell.line
>   > dds <- DESeqDataSetFromMatrix(countData = exprs(sultan),
> +        colData = data.frame(cell.line = conds),
> +        design = ~ cell.line)
>   > dds <- DESeq(dds)
> estimating size factors
> estimating dispersions
> gene-wise dispersion estimates
> Error in `assays<-`(`*tmp*`, value = <S4 object of class "SimpleList">) :
>     'dimnames' differ between assay elements
>   > sessionInfo()
> R version 3.2.0 beta (2015-04-01 r68134)
> Platform: x86_64-w64-mingw32/x64 (64-bit)
> Running under: Windows 7 x64 (build 7601) Service Pack 1
> locale:
> [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252
> LC_MONETARY=French_France.1252
> [4] LC_NUMERIC=C                   LC_TIME=French_France.1252
> attached base packages:
> [1] stats4    parallel  stats     graphics  grDevices utils datasets
> methods   base
> other attached packages:
>    [1] DESeq2_1.7.46             RcppArmadillo_0.4.650.1.1
> Rcpp_0.11.5               GenomicRanges_1.19.50
>    [5] GenomeInfoDb_1.3.16       IRanges_2.1.43 S4Vectors_0.5.22
> HTSFilter_1.7.0
>    [9] Biobase_2.27.3            BiocGenerics_0.13.10
> loaded via a namespace (and not attached):
>    [1] RColorBrewer_1.1-2    futile.logger_1.4 plyr_1.8.1
> XVector_0.7.4         tools_3.2.0
>    [6] futile.options_1.0.0  rpart_4.1-9 digest_0.6.8
> annotate_1.45.4       RSQLite_1.0.0
> [11] gtable_0.1.2          lattice_0.20-31 DBI_0.3.1
> proto_0.3-10          DESeq_1.19.0
> [16] cluster_2.0.1         genefilter_1.49.2 stringr_0.6.2
> locfit_1.5-9.1        nnet_7.3-9
> [21] grid_3.2.0            AnnotationDbi_1.29.20 XML_3.98-1.1
> survival_2.38-1       BiocParallel_1.1.21
> [26] foreign_0.8-61        latticeExtra_0.6-26 Formula_1.2-0
> limma_3.23.11         geneplotter_1.45.0
> [31] ggplot2_1.0.1         reshape2_1.4.1 lambda.r_1.1.7
> edgeR_3.9.14          Hmisc_3.15-0
> [36] MASS_7.3-40           scales_0.2.4 splines_3.2.0
> colorspace_1.2-6      xtable_1.7-4
> [41] acepack_1.3-3.3       munsell_0.4.2
> 	[[alternative HTML version deleted]]
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel

Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793

More information about the Bioc-devel mailing list