Question: DESeq2 error when attempting to normalize counts
0
gravatar for snamjoshi87
3.0 years ago by
snamjoshi8730
snamjoshi8730 wrote:

I am running code that I have run many times over the last two months and suddenly it stopped working. I checked my older backup copies to ensure I hadn't accidentally deleted something. Everything is exactly as it has been but it now throws an error.

Import my raw count data/processing:

countData <- read.csv(file = "countData.csv", header = T)
rownames(countData) <- countData[ ,1]
countData[ ,1] <- NULL

rownames(metaTable) <- metaTable[ ,1]   # Set first column to row names
metaTable[ ,1] <- NULL

Create DESeq object (note: my metaTable is not shown in this post):

dd <- DESeqDataSetFromMatrix(countData = countData, colData = metaTable, design = ~ condition)

This produces (sample names altered):

class: DESeqDataSet
dim: 47729 42
metadata(1): version
assays(1): counts
rownames(47729): ENSMUSG00000102693 ENSMUSG00000064842 ...
  ENSMUSG00000096730 ENSMUSG00000095742
rowData names(0):
colnames(42): SAMPLE1 SAMPLE1 ... SAMPLE41 SAMPLE42
colData names(5): LibraryLayout fastq condition technical Counts

Collapse technical replicates:

dd$technical <- gsub("_T1|_T2", "", row.names(metaTable))
ddRep <- collapseReplicates(dd, groupby = dd$technical)

This produces (sample names altered):

class: DESeqDataSet
dim: 47729 21
metadata(1): version
assays(1): counts
rownames(47729): ENSMUSG00000102693 ENSMUSG00000064842 ...
  ENSMUSG00000096730 ENSMUSG00000095742
rowData names(0):
colnames(21): SAMPLE1 SAMPLE2 ... SAMPLE20 SAMPLE21
colData names(6): LibraryLayout fastq ... Counts sizeFactor

Normalize:

ddRep <- estimateSizeFactors(ddRep)
normCounts <- as.data.frame(counts(ddRep, normalize = T))

Then I get this error:

Error in (function (classes, fdef, mtable)
   unable to find an inherited method for function 'counts' for signature '"DESeqDataSet"'

Session info:

R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS

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] parallel  stats4    stats     graphics  grDevices utils     datasets  methods 
[9] base    

other attached packages:
 [1] BiocInstaller_1.22.3       RDAVIDWebService_1.10.0    GOstats_2.38.1           
 [4] Category_2.38.0            Matrix_1.2-7.1             graph_1.50.0             
 [7] RColorBrewer_1.1-2         pheatmap_1.0.8             reshape2_1.4.1           
[10] ggplot2_2.1.0              org.Mm.eg.db_3.3.0         AnnotationDbi_1.34.4     
[13] DESeq2_1.12.4              SummarizedExperiment_1.2.3 Biobase_2.32.0           
[16] GenomicRanges_1.24.3       GenomeInfoDb_1.8.7         IRanges_2.6.1            
[19] S4Vectors_0.10.3           BiocGenerics_0.18.0      

loaded via a namespace (and not attached):
 [1] genefilter_1.54.2      locfit_1.5-9.1         splines_3.3.1        
 [4] rJava_0.9-8            lattice_0.20-34        colorspace_1.2-6     
 [7] chron_2.3-47           survival_2.39-5        RBGL_1.48.1          
[10] XML_3.98-1.4           foreign_0.8-67         DBI_0.5-1            
[13] BiocParallel_1.6.6     plyr_1.8.4             stringr_1.1.0        
[16] zlibbioc_1.18.0        munsell_0.4.3          gtable_0.2.0         
[19] latticeExtra_0.6-28    geneplotter_1.50.0     GSEABase_1.34.1      
[22] Rcpp_0.12.7            acepack_1.3-3.3        xtable_1.8-2         
[25] scales_0.4.0           Hmisc_3.17-4           annotate_1.50.1      
[28] XVector_0.12.1         gridExtra_2.2.1        stringi_1.1.2        
[31] grid_3.3.1             tools_3.3.1            bitops_1.0-6         
[34] magrittr_1.5           RCurl_1.95-4.8         RSQLite_1.0.0        
[37] Formula_1.2-1          cluster_2.0.5          GO.db_3.3.0          
[40] data.table_1.9.6       AnnotationForge_1.14.2 rpart_4.1-10         
[43] nnet_7.3-12          

 

deseq2 rdavidwebservice • 714 views
ADD COMMENTlink modified 3.0 years ago by Michael Love25k • written 3.0 years ago by snamjoshi8730
Answer: DESeq2 error when attempting to normalize counts
1
gravatar for Michael Love
3.0 years ago by
Michael Love25k
United States
Michael Love25k wrote:

What about this:

library(DESeq2)
dds <- makeExampleDESeqDataSet()
head(​counts(dds))

 

ADD COMMENTlink modified 3.0 years ago • written 3.0 years ago by Michael Love25k

Running the code above produces the same error.

ADD REPLYlink written 3.0 years ago by snamjoshi8730

And I assume you are all up to date on Bioc packages?

What do you get with:

library(BiocInstaller)
​biocValid()
ADD REPLYlink written 3.0 years ago by Michael Love25k

Running biocValid() I see the only out of date packages are evaluate (0.9), rggobi (2.1.20), rgl (0.95.1441), RGtk2 (2.20.31), and rJava (0.9-8). I had tried to update these earlier but I got non-zero exit status, probably because of some missing core libraries and I guess I never ended up updating after that. That was quite a while ago and everything has worked fine since then.

However, I just discovered that I am able to replicate the error by loading the Bioconductor package RDAVIDWebService. If this package is not loaded, both my original code and the sample code you posted work. When I add the package, I can no longer run the code!

ADD REPLYlink modified 3.0 years ago • written 3.0 years ago by snamjoshi8730

And, I noticed that when you load the RDAVIDWebService, the messages printed during package loading include: "The following object is masked from 'package:DESeq2' : counts".

So it would appear that is the issue, but why is this happening?

ADD REPLYlink written 3.0 years ago by snamjoshi8730

Sorry, for all the posting but I think I figured it out. Both DESeq2 and RDAVIDWebService have a function called counts(). Since RDAVIDWebService is loaded after DESeq2 in my code, it take precedence for the counts() function and DESeq2 cannot access it unless I use the double colon operator (i.e. DESeq2::counts() ). I'm new to all this so if someone could confirm that this is the proper way to handle this situation if I want both packages loaded, I would appreciate it.

ADD REPLYlink written 3.0 years ago by snamjoshi8730
1

Yes that is correct. You can get around it with ::

This message that was printed: "The following object is masked from 'package:DESeq2' : counts"

...tells you that whatever package you just loaded took over the counts() function in a way that you won't be able to use DESeq2's count function. 

The way we usually handle this in Bioconductor is to define methods for different classes of objects, so that lots of packages can all have functions with the same name. RDAVIDWebService should not set a generic for 'counts' because this is already in BiocGenerics:

https://github.com/Bioconductor-mirror/RDAVIDWebService/blob/dcf73870d68e6fd7306f7cdc04cd45ebe104a527/R/DAVIDGODag-methods.R#L259

https://github.com/Bioconductor-mirror/BiocGenerics/blob/master/R/dge.R#L3

 

ADD REPLYlink written 3.0 years ago by Michael Love25k
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 16.09
Traffic: 306 users visited in the last hour