[BioC] preprocessing Affymetrix with threestep and expresso (reply and note on xps)

cstrato cstrato at aon.at
Tue Sep 1 20:34:37 CEST 2009


Dear Javier,

In the MAS5 algorithm Affymetrix usually does probeset-level 
normalization after the summarization step, i.e. it scales the trimmed 
mean expression level to a certain target intensity (e.g. sc=500). You 
are free to replace the scaling step with another probeset-level 
normalization step.
Alternatively, you can do probe-level normalization after background 
correction, e.g. quantile normalization or trimmed mean normalization, 
which allows you to skip the probeset-level normalization. Thus if you 
do quantile normalization there is no need for the scaling step after 
summarization. However, you are free to combine these methods. To test 
which combinations work best there is a BioC package "affycomp".

Note for xps users:
XPS has also a three-step function, "express()", which allows you to mix 
different algorithms. As it happens, I have just uploaded a new vignette 
"xpsPreprocess.pdf" to BioC development, which shows you how to combine 
the different algorithms, and how to add a probeset-level normalization 
after the summarization step. Certain aspects of this vignette may also 
be useful for users of "expresso()". You can download this vignette from:
http://bioconductor.org/packages/2.5/bioc/vignettes/xps/inst/doc/xpsPreprocess.pdf

Best regards
Christian
_._._._._._._._._._._._._._._._._._
C.h.r.i.s.t.i.a.n   S.t.r.a.t.o.w.a
V.i.e.n.n.a           A.u.s.t.r.i.a
e.m.a.i.l:        cstrato at aon.at
_._._._._._._._._._._._._._._._._._


Javier Pérez Florido wrote:
> Dear list,
> Any tips for the following question?
> Affymetrix performs the normalization step after summarization and I 
> would like to know whether , using another normalization step than the 
> one described for MAS (scaling), I have to write the normalization 
> step after the summarization or not. I mean, If I want to use 
> "quantile" as normalization, I don't know if I have to proceed like this:
>
> res<- expresso(data, bgcorrect.method = "mas", pmcorrect.method = 
> "mas", normalize = FALSE, summary.method = "mas")
> res2<-normalize(res,method="quantiles")
> exprs(res2)<-log2(exprs(res2))
>
> or like this:
>
> res<- expresso(data, bgcorrect.method = "mas", pmcorrect.method = 
> "mas", normalize.method = "quantiles", summary.method = "mas")
> exprs(res)<-log2(exprs(res))
>
> Thanks again,
> Javier
>
>
>
> Javier Pérez Florido escribió:
>> Laurent Gautier escribió:
>>> Javier Pérez Florido wrote:
>>>> Dear list,
>>>> I have 3 questions about threestep (affyPLM) and expresso (AFFY) 
>>>> functions:
>>>>
>>>>    1. Which type of pm correction does threestep function perform? 
>>>> PMonly?
>>>>    2. I would like to preprocess my microarray experiment using the
>>>>       following steps within the preprocessing method: GCRMA as
>>>>       background correction, INVARIANTSET as normalization, PMONLY 
>>>> as pm
>>>>       correction and TUKEY-BIWEIGHT (MAS) as summarization 
>>>> procedure. Is
>>>>       there any function which I can use to perform it? As far as I
>>>>       know, expresso hasn't got GCRMA as background correction and
>>>>       threestep function  hasn't got INVARIANTSET as normalization
>>>>       procedure. Any tips?
>>>
>>> In GCRMA it seems that it is named a background adjustment rather 
>>> than a
>>> background correction, and therefore do not fit in the existing 
>>> framework.
>>>
>>> The following might(*) bring GCRMA to affy (*: not tested):
>>> bg.correct.gcrma <- bg.adjust.gcrma
>>> upDate.bgcorrect.methods(c(bgcorrect.methods(), "gcrma"))
>> Thanks Prof. Gautier, it worked like you said. Now, I am able to use 
>> gcrma as background "method" in expresso.
>>>
>>> For threestep, the set of normalization methods it accepts is an
>>> hard-coded list. Editing the code to make it accept an other method
>>> at the R level is rather simple, but one should check what is happening
>>> with those method names at the C level.
>>> Going the other way around and write a summary method for affy that
>>> performs the fit of a linear model of your choosing is also an 
>>> alternative.
>>>
>>>
>>>>    3. If I want to perform MAS preprocessing using expresso, I think I
>>>>       should do it like this:
>>>>
>>>>         eset<- expresso(data, bgcorrect.method = "mas", 
>>>> pmcorrect.method
>>>>     = "mas", normalize = FALSE, summary.method = "mas")
>>>>         eset<-affy.scalevalue.exprSet(eset)
>>>>         exprs(eset)<-log2(exprs(eset))
>>>
>>> The source is open:
>>>
>>>> mas5
>>> function (object, normalize = TRUE, sc = 500, analysis = "absolute",
>>>     ...)
>>> {
>>>     res <- expresso(object, bgcorrect.method = "mas", pmcorrect.method
>>> = "mas",
>>>         normalize = FALSE, summary.method = "mas", ...)
>>>     if (normalize)
>>>         res <- affy.scalevalue.exprSet(res, sc = sc, analysis = 
>>> analysis)
>>>     return(res)
>>> }
>>> <environment: namespace:affy>
>>>
>>>
>>>>     This is done this way because Affymetrix performs the 
>>>> normalization
>>>>     step after summarization. What about if I want to perform NO
>>>>     background correction, INVARIANTSET as normalization, MAS as pm
>>>>     correction and MAS as summarization? Is it like this?
>>>>        eset<- expresso(data, bgcorrect.method = "mas", 
>>>> pmcorrect.method
>>>>     = "mas", normalize.method="invariantset" summary.method = "mas")
>>>>        exprs(eset)<-log2(exprs(eset))
>>>
>>> Most likely not. It looks like you copied/pasted the call to perform
>>> MAS5.0 without a change.
>>> The help pages contain how to get the method names.
>>> Example: help("bgcorrect.methods")
>> OK, you were right about mas5 method (Affy package) and I wrote the 
>> expresso command in the wrong way.
>> What I wanted to mean is that Affymetrix performs the normalization 
>> step after summarization (I don`t know why). What I would like to 
>> know is if I want to use another normalization step than the one 
>> described for MAS (scaling), do I have to write the normalization 
>> step after the summarization? I mean, If I want to use "quantile" as 
>> normalization, I don't know if I have to proceed like this:
>>
>> res<- expresso(data, bgcorrect.method = "mas", pmcorrect.method = 
>> "mas", normalize = FALSE, summary.method = "mas")
>> res2<-normalize(res,method="quantiles")
>> exprs(res2)<-log2(exprs(res2))
>>
>> or like this:
>>
>> res<- expresso(data, bgcorrect.method = "mas", pmcorrect.method = 
>> "mas", normalize.method = "quantiles", summary.method = "mas")
>> exprs(res)<-log2(exprs(res))
>>
>> Thanks again,
>> Javier
>>
>>
>>
>>>
>>>
>>> L.
>>>
>>>> Thanks in advance,
>>>> Javier
>>>>
>>>>
>>>>     [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> Bioconductor mailing list
>>>> Bioconductor at stat.math.ethz.ch
>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>>>> Search the archives: 
>>>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>>>
>>>
>>
>>
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: 
> http://news.gmane.org/gmane.science.biology.informatics.conductor
>



More information about the Bioconductor mailing list