[BioC] problem with duplicateCorrelation and ExpressionSet objects

Gordon Smyth smyth at wehi.EDU.AU
Fri May 18 09:32:46 CEST 2007


Hi Jenny,

Well may you ask, how this could be. Just to make it more 
interesting, you'll find that the problem disappears if you don't 
have the Matrix package attached to your session.

Thanks to Martin Morgan for correctly diagnosing the problem. The 
problem arises because (i) I forgot to declare the as.matrix method 
for ExpressionSet objects in the limma NAMESPACE and (ii) the Matrix 
package declares as.matrix to be an S4 generic causing a conflict with limma.

I have corrected the limma NAMESPACE in limma 2.10.4 and 2.11.4. This 
means that you will be able to re-install limma soon from either the 
BioC release or devel branches and be protected from this error. In 
the meantime, just make sure that you don't have the Matrix package 
loaded when using duplicateCorrelation() or lmFit() in limma.

Best wishes
Gordon

At 05:16 AM 18/05/2007, Jenny Drnevich wrote:
>Hi Gordon,
>
>The gcrma.pres object from the previous example was created by 
>subsetting an object created by gcrma() on an AffyBatch object (code 
>below). I get the same error if I use the original ExpressionSet 
>object created by gcrma() and if I use an ExpressionSet object 
>created by rma(). I would assume that rma() and gcrma() would output 
>real ExpressionSet objects?!?  Actually, calling as.matrix() on any 
>of my ExpressionSet objects works fine on it's own, but somehow not 
>within duplicateCorrelation (see code) - how can this be?
>
>Thanks,
>Jenny
>
>
> > raw <- ReadAffy()
>
> > gcrma.all <- gcrma(raw)
>
> > gcrma.pres <- gcrma.all[num.pres>0,]
>
> > corfit <- 
> duplicateCorrelation(gcrma.pres,design,ndups=1,block=c(2,2,1,1,3,3))
>Error in as.vector(x, mode) : cannot coerce to vector
>
> > corfit <- 
> duplicateCorrelation(gcrma.all,design,ndups=1,block=c(2,2,1,1,3,3))
>Error in as.vector(x, mode) : cannot coerce to vector
>
> > rma.all <- rma(raw)
>Background correcting
>Normalizing
>Calculating Expression
>
> > corfit <- duplicateCorrelation(rma.all,design,ndups=1,block=c(2,2,1,1,3,3))
>Error in as.vector(x, mode) : cannot coerce to vector
>
> > temp <- as.matrix(rma.all)
>         #this works fine, but somehow not in 
> duplicateCorrelation!!! From the debugger:
>
>Browse[1]> M <- as.matrix(object)
>Error in as.vector(x, mode) : cannot coerce to vector
>
>
> >class(raw)
>[1] "AffyBatch"
>attr(,"package")
>[1] "affy"
>
> > class(gcrma.all)
>[1] "ExpressionSet"
>attr(,"package")
>[1] "Biobase"
>
> > class(gcrma.pres)
>[1] "ExpressionSet"
>attr(,"package")
>[1] "Biobase"
>
> > typeof(raw)
>[1] "S4"
>
> > typeof(gcrma.all)
>[1] "S4"
>
> > typeof(gcrma.pres)
>[1] "S4"
>
>At 05:59 PM 5/16/2007, Gordon K Smyth wrote:
>>Dear Jenny,
>>
>>limma already has an as.matrix method for ExpressionSet 
>>objects.  I've just run the following code
>>which demonstrates that duplicateCorrelation() does work on such objects:
>>
>>   > library(Biobase)
>>   > library(limma)
>>   > x <- matrix(rnorm(50*4),50,4)
>>   > y <- new("ExpressionSet",exprs=x)
>>   > dupcor <- duplicateCorrelation(y,ndups=2)
>>   Loading required package: statmod
>>   > dupcor$consensus
>>   [1] -0.07112392
>>
>>I suspect that your data object is not actually an ExpressionSet 
>>object, although perhaps it is
>>something which inherits from ExpressionSet.  I can't tell from 
>>your code where you object has
>>come from or what class it is.
>>
>>Because as.matrix() is an S3 generic, there is a problem with S4 
>>objects which inherit from
>>ExpressionSet.  Can you give more information about how your problem arises?
>>
>>Best wishes
>>Gordon
>>
>>On Thu, May 17, 2007 5:15 am, Jenny Drnevich wrote:
>> > Hi Gordon and others,
>> >
>> > I just tried calling duplicateCorrelation on an ExpressionSet object
>> > with the newest versions of R, Bioconductor and limma (codes and
>> > sessionInfo() below) and it won't work. I don't think the problem
>> > lies with duplicateCorrelation() itself, rather that as.matrix() does
>> > not work for ExpressionSet objects whereas it did work for exprSet
>> > objects. The help file for duplicateCorrelation has this description
>> > for the input object:
>> >
>> > "a numeric matrix of expression values, or any data object from which
>> > as.matrix will extract a suitable matrix such as an
>> > 
>> <mk:@MSITStore:C:\PROGRA~1\R\R-25~1.0\library\limma\chtml\limma.chm::/malist.html>MAList,
>> > marrayNorm or exprSet object."
>> >
>> > The code and error:
>> >
>> >  > corfit <-
>> > duplicateCorrelation(gcrma.pres,design,ndups=1,block=c(2,2,1,1,3,3))
>> > Error in as.vector(x, mode) : cannot coerce to vector
>> >
>> >  From debugging duplicateCorrelation, the problem is in the very
>> > first line of code:
>> >
>> > Browse[1]> M <- as.matrix(object)
>> > Error in as.vector(x, mode) : cannot coerce to vector
>> >
>> >
>> > If you don't intend as.matrix() to work for ExpressionSet objects,
>> > then the code for duplicateCorrelation maybe should be changed. Of
>> > course, the easy work-around is to pass exprs(gcrma.pres) to
>> > duplicateCorrelation.
>> >
>> > Cheers,
>> > Jenny
>> >
>> >  > sessionInfo()
>> > R version 2.5.0 (2007-04-23)
>> > i386-pc-mingw32
>> >
>> > locale:
>> > LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
>> > States.1252;LC_MONETARY=English_United
>> > States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>> >
>> > attached base packages:
>> > [1] "splines"   "tools"     "stats"     "graphics"  "grDevices" "utils"
>> > [7] "datasets"  "methods"   "base"
>> >
>> > other attached packages:
>> > hgu133plus2probe   hgu133plus2cdf     affyQCReport      geneplotter
>> >          "1.16.0"         "1.16.0"         "1.14.0"         "1.14.0"
>> >      RColorBrewer       simpleaffy            made4    scatterplot3d
>> >           "0.2-3"        "2.10.11"         "1.10.0"         "0.3-24"
>> >              ade4          affyPLM         affydata    affycoretools
>> >           "1.4-3"         "1.12.0"         "1.11.2"          "1.8.0"
>> >           annaffy           xtable            gcrma      matchprobes
>> >           "1.8.1"          "1.4-3"          "2.8.0"          "1.8.0"
>> >           biomaRt            RCurl              XML          GOstats
>> >          "1.10.0"          "0.8-0"          "1.7-1"          "2.2.1"
>> >          Category           Matrix          lattice       genefilter
>> >           "2.2.2"      "0.9975-11"         "0.15-4"         "1.14.1"
>> >          survival             KEGG             RBGL         annotate
>> >            "2.31"         "1.16.0"         "1.12.0"         "1.14.1"
>> >                GO            graph            limma             affy
>> >          "1.16.0"         "1.14.0"         "2.10.0"         "1.14.0"
>> >            affyio          Biobase          RWinEdt
>> >           "1.4.0"         "1.14.0"          "1.7-5"
>> >  >
>> >
>> >
>> > Jenny Drnevich, Ph.D.
>> >
>> > Functional Genomics Bioinformatics Specialist
>> > W.M. Keck Center for Comparative and Functional Genomics
>> > Roy J. Carver Biotechnology Center
>> > University of Illinois, Urbana-Champaign
>> >
>> > 330 ERML
>> > 1201 W. Gregory Dr.
>> > Urbana, IL 61801
>> > USA
>> >
>> > ph: 217-244-7355
>> > fax: 217-265-5066
>> > e-mail: drnevich at uiuc.edu
>
>Jenny Drnevich, Ph.D.
>
>Functional Genomics Bioinformatics Specialist
>W.M. Keck Center for Comparative and Functional Genomics
>Roy J. Carver Biotechnology Center
>University of Illinois, Urbana-Champaign
>
>330 ERML
>1201 W. Gregory Dr.
>Urbana, IL 61801
>USA
>
>ph: 217-244-7355
>fax: 217-265-5066
>e-mail: drnevich at uiuc.edu



More information about the Bioconductor mailing list