I'm wrestling with tximport/DESeq2. I've create a small experiment dataset of 2 paired end fastq, generated counts with salmon, and successfully read them in with tximport (or so I think). "files" is my list of 2 quant.sf files. tx2gene is the obvious.
> txi <- tximport(files, type = "salmon", tx2gene = tx2gene)
> sampleTable
tissue
sample1 young_leaf
sample2 roots
> dds <- DESeqDataSetFromTximport(txi, sampleTable, ~tissue)
Error in checkSlotAssignment(object, name, value) :
assignment of an object of class "NULL" is not valid for slot 'NAMES' in an object of class "DESeqDataSet"; is(value, "characterORNULL") is not TRUE
I've just recently installed R 3.4.0 and have update all packages. I see that there was some changes in S4 of renaming characterORNULL to character_OR_NULL; is this the issue?
Thanks
> sessionInfo() R version 3.4.0 (2017-04-21) Platform: x86_64-pc-linux-gnu (64-bit) Matrix products: default BLAS: /global/u1/j/jcarlson/local/lib64/R/lib/libRblas.so LAPACK: /global/u1/j/jcarlson/local/lib64/R/lib/libRlapack.so locale: [1] C attached base packages: [1] parallel stats4 stats graphics grDevices utils datasets [8] methods base other attached packages: [1] tximport_1.4.0 DESeq2_1.16.0 [3] SummarizedExperiment_1.6.0 DelayedArray_0.2.0 [5] matrixStats_0.52.2 Biobase_2.36.0 [7] GenomicRanges_1.28.0 GenomeInfoDb_1.12.0 [9] IRanges_2.10.0 S4Vectors_0.14.0 [11] BiocGenerics_0.22.0 loaded via a namespace (and not attached): [1] genefilter_1.58.0 locfit_1.5-9.1 splines_3.4.0 [4] lattice_0.20-35 colorspace_1.3-2 htmltools_0.3.6 [7] base64enc_0.1-3 survival_2.41-3 XML_3.98-1.6 [10] foreign_0.8-68 DBI_0.6-1 BiocParallel_1.10.0 [13] RColorBrewer_1.1-2 GenomeInfoDbData_0.99.0 plyr_1.8.4 [16] stringr_1.2.0 zlibbioc_1.22.0 munsell_0.4.3 [19] gtable_0.2.0 htmlwidgets_0.8 memoise_1.1.0 [22] latticeExtra_0.6-28 knitr_1.15.1 geneplotter_1.54.0 [25] AnnotationDbi_1.38.0 htmlTable_1.9 Rcpp_0.12.10 [28] acepack_1.4.1 xtable_1.8-2 scales_0.4.1 [31] backports_1.0.5 checkmate_1.8.2 Hmisc_4.0-3 [34] annotate_1.54.0 XVector_0.16.0 gridExtra_2.2.1 [37] rjson_0.2.15 ggplot2_2.2.1 digest_0.6.12 [40] stringi_1.1.5 grid_3.4.0 tools_3.4.0 [43] bitops_1.0-6 magrittr_1.5 RSQLite_1.1-2 [46] lazyeval_0.2.0 RCurl_1.95-4.8 tibble_1.3.0 [49] Formula_1.2-1 cluster_2.0.6 Matrix_1.2-10 [52] data.table_1.10.4 rpart_4.1-11 nnet_7.3-12 [55] compiler_3.4.0
Hi Michael,
Thanks for the response.
biocLite() looks clean:
For a brief time, I thought my problem was that I was no pulling in tximportData. But adding that did not help.
Should I be concerned that the Class is -none- in the DESeqDataSet?
The error message almost makes sense if it's happening from trying to act on a null class.
Incidentally, I see that makeExampleDESeqDataSet() also returns the same error for me
That's useful for debugging, isolating the problem to DESeq2 or its depends. Can you call traceback() after the error and post here?
sure!
RangedSummarizedExperiment has character_OR_NULL and DESeq2 has characterORNULL. I thought the latter was obsolete. This is also the one that shows up in the error message.
I'm starting to get more suspicious of the change in the S4Vectors package. Renaming characterORNULL to character_OR_NULL happened in 0.14.0 9 days ago.
What is your version of S4Vectors?
Does
BiocInstaller::biocValid()
point to any problems?@JWCarlson found the workaround.. (he hit the 5-post limit)
The DESeq2 package will need to be tweaked to account for the latest change in S4Vectors.
Creating the class definitions:
setClassUnion("characterORNULL", c("character", "NULL”))
setClassUnion(“DataTableORNULL", c(“DataTable", "NULL”))
These were defined in the old S4Vectors but not in the latest version.
That is not the right solution. The slot NAMES comes from SummarizedExperiment; does
SummarizedExperiment::SummarizedExperiment()
work? DoesgetClass("SummarizedExperiment")
showcharacter_or_NULL
? Are there two versions of SummarizedExperiment installed, maybe tested withThanks Martin for helping to dive into this.
I just updated all Bioc packages on my machine and DESeq2 builds and passes CHECK as it does on Bioc servers.
I recognize that my setClassUnion call is a hack. It's a workaround until this gets sorted out and something to convince me that this really is the issue.
In answer to your questions, the constructor works and it shows character_OR_NULL. (As does RangedSummarizedExperiment; DESeqDataSet show NAMES is characterORNULL). And it looks like I have only 1 version installed.
Here is what I get for the NAMES slot of DESeqDataSet today. I don't believe that the version bump in SummarizedExperiment is relevant.