[BioC] unable to set sampleNames after combine (from beadarray package) on ExpressionSetIllumina
Martin Morgan
mtmorgan at fhcrc.org
Wed Sep 10 21:45:54 CEST 2014
Hi Adai --
On 09/09/2014 03:52 AM, Adaikalavan Ramasamy wrote:
> Dear all,
>
> Here is a possible bug in the combine() function from beadarray. I read two
> ExpressionSetIllumina objects with 36 samples and 12 samples each. The
> combine() function works brilliantly and without errors or warnings but I
> get error message when I try to change the sample names.
>
> ## create fake data to read in ##
> tmp <- data.frame( PROBE_ID = paste0("P", 1:10), SYMBOL = LETTERS[1:10],
> S1.AVG_Signal = rnorm(10, mean=7), S2.AVG_Signal =
> rnorm(10, mean=8), S3.AVG_Signal = rnorm(10, mean=6) )
> write.table(tmp, file="SampleProbeProfile_1.txt", sep="\t", quote=F,
> row.names=F)
> rm(tmp)
>
> tmp <- data.frame( PROBE_ID = paste0("P", 1:10), SYMBOL = LETTERS[1:10],
> S4.AVG_Signal = rnorm(10, mean=9), S5.AVG_Signal =
> rnorm(10, mean=6) )
> write.table(tmp, file="SampleProbeProfile_2.txt", sep="\t", quote=F,
> row.names=F)
> rm(tmp)
>
>
> ## Read in and combine ##
> raw1 <- readBeadSummaryData(dataFile="SampleProbeProfile_1.txt",
> ProbeID="PROBE_ID", columns=list(exprs="AVG_Signal"), skip=0)
> raw2 <- readBeadSummaryData(dataFile="SampleProbeProfile_2.txt",
> ProbeID="PROBE_ID", columns=list(exprs="AVG_Signal"), skip=0)
>
> raw <- combine(raw1, raw2) # no warnings or error
>
> dim(raw1)
> # Features Samples Channels
> # 10 3 1
>
> dim(raw2)
> # Features Samples Channels
> # 10 2 1
>
> dim(raw)
> # Features Samples Channels
> # 10 5 1
>
> raw1, raw2 and raw are all of ExpressionSetIllumina class.
>
>
> And here is the problem:
>
> sampleNames(raw) <- paste0("Sample", 1:5)
> # Error in `sampleNames<-`(`*tmp*`, value = c("Sample1", "Sample2",
> "Sample3", :
> # number of new names (5) should equal number of rows in
the problem is that beadarray does not 'combine' the 'protocolData' slot and
does not check that the resulting object is valid
> validObject(raw)
Error in validObject(raw) :
invalid class "ExpressionSetIllumina" object: 1: sample numbers differ
between phenoData and protocolData
invalid class "ExpressionSetIllumina" object: 2: sampleNames differ between
phenoData and protocolData
A work-around is to update the protocolData slot yourself, until the package
maintainer (cc'd) has a chance to fix the problem.
> protocolData(raw) <- combine(protocolData(raw1), protocolData(raw2))
> validObject(raw)
[1] TRUE
> sampleNames(raw) <- 1:5
>
Thanks for the nice reproducible example
Martin
> AnnotatedDataFrame (3)
>
>
> Alternatively, I could change the rownames of raw1 and raw2 separately and
> then combine but I am just curious as to why this error message. Thank you.
>
> Regards, Adai
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at r-project.org
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor
>
--
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 Bioconductor
mailing list