Dear All,
i would like to adress a weird error appeared after acquiring from topTable() function from limma a DE gene list. In detail:
my initial expression set used for limma:
> eset.filtered ExpressionSet (storageMode: environment) assayData: 9002 features, 60 samples element names: exprs protocolData: none phenoData rowNames: St_1_WL57A.CEL St_2_WL57A.CEL ... 1554_03_Gemmer_1.CEL (60 total) varLabels: Meta_factor Disease Location Study varMetadata: labelDescription featureData featureNames: 10_at 100_at ... 9997_at (9002 total) fvarLabels: PROBEID SYMBOL ENTREZID fvarMetadata: labelDescription experimentData: use 'experimentData(object)' Annotation: hgu133ahsentrezg
a small output of my topTable:
> head(top2) PROBEID SYMBOL ENTREZID logFC AveExpr t P.Value 10_at 10_at NAT2 10 -0.9413907 8.182277 -3.6931419 0.0008417892 100_at 100_at ADA 100 0.4684892 7.164424 2.9547326 0.0058992355 1000_at 1000_at CDH2 1000 0.0229453 6.455099 0.3317122 0.7423179275 10000_at 10000_at AKT3 10000 -0.2402645 6.583278 -2.4979502 0.0179511393 10001_at 10001_at MED6 10001 0.2387839 7.441471 2.8580600 0.0075169910 10004_at 10004_at NAALADL1 10004 -0.6113054 6.120823 -3.6790795 0.0008747382 adj.P.Val B 10_at 0.003173277 -0.8449979 100_at 0.015482483 -2.6620277 1000_at 0.803552908 -6.4885956 10000_at 0.039377383 -3.6735306 10001_at 0.018959920 -2.8844877 10004_at 0.003259269 -0.8812204
as from the arguments of topTable i used to return all the rows-probesets of eset.filtered, then i tried(as i had similarly done in older cases) and also without any sorting, to subset my expressionset in the rows with gene symbols to use it to some other analyses:
top2 <- top2[!is.na(top2$SYMBOL),] dim(top2) [1] 9001 9 eset.3 <- eset.filtered[rownames(top2),]
But then, when i used
rownames(eset.3) <- top2$SYMBOL
the following error appeared:
Error in `sampleNames<-`(`*tmp*`, value = c("St_1_WL57A.CEL", "St_2_WL57A.CEL", :
number of new names (60) should equal number of rows in AnnotatedDataFrame (34)
But the weird thing is, that after the above function, indeed my probeset ids have been substituted with the gene symbols !! So, what is this weird error about ?
Also my sessionInfo()
> sessionInfo() R version 3.2.2 (2015-08-14) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 8 x64 (build 9200) locale: [1] LC_COLLATE=Greek_Greece.1253 LC_CTYPE=Greek_Greece.1253 [3] LC_MONETARY=Greek_Greece.1253 LC_NUMERIC=C [5] LC_TIME=Greek_Greece.1253 attached base packages: [1] grid stats4 parallel stats graphics grDevices utils datasets [9] methods base other attached packages: [1] hgu133ahsentrezg.db_19.0.0 org.Hs.eg.db_3.2.3 MineICA_1.10.0 [4] fastICA_1.2-0 Hmisc_3.17-1 Formula_1.2-1 [7] survival_2.38-3 lattice_0.20-33 annotate_1.48.0 [10] XML_3.98-1.3 Rgraphviz_2.14.0 igraph_1.0.1 [13] colorspace_1.2-6 RColorBrewer_1.1-2 mclust_5.1 [16] marray_1.48.0 cluster_2.0.3 GOstats_2.36.0 [19] graph_1.48.0 Category_2.36.0 GO.db_3.2.2 [22] RSQLite_1.0.0 DBI_0.3.1 AnnotationDbi_1.32.3 [25] IRanges_2.4.6 S4Vectors_0.8.11 Matrix_1.2-3 [28] gtools_3.5.0 biomaRt_2.26.1 xtable_1.8-0 [31] foreach_1.4.3 scales_0.3.0 ggplot2_2.0.0 [34] plyr_1.8.3 JADE_1.9-93 limma_3.26.7 [37] affy_1.48.0 Biobase_2.30.0 BiocGenerics_0.16.1 loaded via a namespace (and not attached): [1] genefilter_1.52.1 splines_3.2.2 RBGL_1.46.0 [4] foreign_0.8-66 affyio_1.40.0 zlibbioc_1.16.0 [7] munsell_0.4.2 gtable_0.1.2 codetools_0.2-14 [10] latticeExtra_0.6-26 BiocInstaller_1.20.1 a4Base_1.18.0 [13] preprocessCore_1.32.0 GSEABase_1.32.0 Rcpp_0.12.3 [16] acepack_1.3-3.3 gridExtra_2.0.0 clue_0.3-51 [19] tools_3.2.2 bitops_1.0-6 magrittr_1.5 [22] RCurl_1.95-4.7 a4Core_1.18.0 iterators_1.0.8 [25] rpart_4.1-10 AnnotationForge_1.12.2 compiler_3.2.2 [28] nnet_7.3-12
Thank you !!
There is
dimnames<-,eSet-method
, andrownames<-,ANY-method
ends up callingdimnames<-
. Does validObject(eset.3) return TRUE? For instance, if I start with a valid ExpressionSet everything is fineBut if I somehow mess things up (by violating the ExpressionSet API, in this case)
Then things are broken as in the report
validObject() shows the problem, though not how one got into this situation
Dear Martin, also thank you for your valuable explanation !!! --- i used validObject directly on my eset.filtered from the beggining:
So, i guess that probably it has something to do with the fact that i used the function combineTwoExpressionSet()
from the a4base package to merge two affymetrix datasets:
?combineTwoExpressionSet---in the details in mentions:
"exprs and pData are merged. Other data (such as MIAME or annotation) are those of x"
Dear James, thank you for your notification !! i used featureNames() instead of rownames() and did not returned an error !!
Nevertheless, normaly i use featureNames(), but due to "lazyness" lately i used a couple of times rownames() but without an error !! but i guess it has probably something to do with the fact that my eset.filtered is a merged eset--