Limma and spot-specific dye effects for an environmental microarray
1
0
Entering edit mode
Ross Chapman ▴ 50
@ross-chapman-4242
Last seen 10.1 years ago
Hi all I am trying to utilise Limma to analyses data from a two colour environmental microarray in an experiment that is investigating microbial function under contrasting vegetation types. After loading the data and performing background subtraction and normalisation, I have attempted to correct for spot-specific dye effects by including a "dye factor" in the design matrix. My code is as follows: > #create design that included dye factor aswell as vegetation types ... > # > design.sc<-model.matrix(~0+factor(targets2$Target)+factor(targets2 $channel.col)) > colnamesdesign.sc)<-c("veg.3","veg.4","veg.2","veg.1","Dye") > design.sc veg.3 veg.4 veg.2 veg.1 Dye 1 0 0 0 1 0 2 0 0 1 0 1 3 0 0 1 0 0 4 0 1 0 0 1 5 0 1 0 0 0 6 1 0 0 0 1 7 1 0 0 0 0 8 0 0 0 1 1 9 0 0 0 1 0 10 0 1 0 0 1 11 0 1 0 0 0 12 0 0 0 1 1 13 0 0 1 0 0 14 1 0 0 0 1 15 1 0 0 0 0 16 0 0 1 0 1 attr(,"assign") [1] 1 1 1 1 2 attr(,"contrasts") attr(,"contrasts")$`factor(targets2$Target)` [1] "contr.treatment" attr(,"contrasts")$`factor(targets2$channel.col)` [1] "contr.treatment" > # next do intraspot correlation ... > library(limma) > corfit<-intraspotCorrelation(MA,design.sc) Loading required package: statmod Warning messages: 1: In remlscore(y, X, Z) : reml: Max iterations exceeded 2: In remlscore(y, X, Z) : reml: Max iterations exceeded 3: In remlscore(y, X, Z) : reml: Max iterations exceeded 4: In remlscore(y, X, Z) : reml: Max iterations exceeded 5: In remlscore(y, X, Z) : reml: Max iterations exceeded 6: In remlscore(y, X, Z) : reml: Max iterations exceeded 7: In remlscore(y, X, Z) : reml: Max iterations exceeded 8: In remlscore(y, X, Z) : reml: Max iterations exceeded 9: In remlscore(y, X, Z) : reml: Max iterations exceeded > fit<-lmscFit(MA,design.sc,correlation=corfit$consensus) > fit <- eBayes(fit) > #make contrasts ... > cont.matrix1 <- makeContrasts("veg.1-veg.2",levels=design.sc) > fit2.1 <- contrasts.fit(fit, cont.matrix1) > cont.matrix2 <- makeContrasts("veg.1-veg.3",levels=design.sc) > fit2.2 <- contrasts.fit(fit, cont.matrix2) > cont.matrix3 <- makeContrasts("veg.1-veg.4",levels=design.sc) > fit2.3 <- contrasts.fit(fit, cont.matrix3) > fit2.1<-eBayes(fit2.1) > fit2.2<-eBayes(fit2.2) > fit2.3<-eBayes(fit2.3) This is all a bit new for me, can someone please confirm if I have correctly addressed any spot*dye effects with this code. Many thanks in advance for your help. Regards Ross [[alternative HTML version deleted]]
Microarray limma Microarray limma • 1.3k views
ADD COMMENT
0
Entering edit mode
@gordon-smyth
Last seen 9 hours ago
WEHI, Melbourne, Australia

Dear Ross,

Yes, you've accounted for probe-specific dye effects.

Your experiment doesn't seem to have any special complications. Why did you decide to do a separate channel analysis, rather than the log- ratio style analysis illustrated in the limma User's Guide Case Studies of two-colour designs?

Best wishes
Gordon

ADD COMMENT
0
Entering edit mode
Dear Gordon Thank you for your prompt and helpful reply. I chose the 'two channel' analysis instead of the log ratios for a couple of reasons. Firstly, the two channel analysis was more intuitive and easier for me to understand given my ecological background. Secondly, in the experiment I have 4 samples (veg.1 to veg.4) hybridised using two dyes (cye3 and5) across 8 arrays. Veg.1 is paired with all other samples, but on only one array for Veg.2 and Veg.3, I was uncertain as to whether this design was sufficiently connected for a log-ratio design, and would welcome your comments on the feasibility and benefits of the log-ratios approach. Also, I was wanting to look at the profile of all probes across all reps of all vegetations - the functions that are not changed between ecosystems can be as informative as those that differ. Is there a way to remove the spot*dye effect from the normalised data from individual arrays so I can make an equal comparison of values from all samples using, for a heatmap for example, without dye effects confounding the result. Thanks for your assistance. Regards Ross On Fri, 2011-06-24 at 08:35 +1000, Gordon K Smyth wrote: > Dear Ross, > > Yes, you've accounted for probe-specific dye effects. > > Your experiment doesn't seem to have any special complications. Why did > you decide to do a separate channel analysis, rather than the log- ratio > style analysis illustrated in the limma User's Guide Case Studies of > two-colour designs? > > Best wishes > Gordon > > > Date: Thu, 23 Jun 2011 14:06:36 +1000 > > From: Ross Chapman <ross.chapman@ecogeonomix.com> > > To: bioconductor@r-project.org > > Subject: [BioC] Limma and spot-specific dye effects for an > > environmental microarray > > > > Hi all > > > > I am trying to utilise Limma to analyses data from a two colour > > environmental microarray in an experiment that is investigating > > microbial function under contrasting vegetation types. > > > > After loading the data and performing background subtraction and > > normalisation, I have attempted to correct for spot-specific dye effects > > by including a "dye factor" in the design matrix. My code is as > > follows: > > > >> #create design that included dye factor aswell as vegetation types ... > >> # > >> design.sc<-model.matrix(~0+factor(targets2$Target)+factor(targets2 > > $channel.col)) > >> colnamesdesign.sc)<-c("veg.3","veg.4","veg.2","veg.1","Dye") > >> design.sc > > veg.3 veg.4 veg.2 veg.1 Dye > > 1 0 0 0 1 0 > > 2 0 0 1 0 1 > > 3 0 0 1 0 0 > > 4 0 1 0 0 1 > > 5 0 1 0 0 0 > > 6 1 0 0 0 1 > > 7 1 0 0 0 0 > > 8 0 0 0 1 1 > > 9 0 0 0 1 0 > > 10 0 1 0 0 1 > > 11 0 1 0 0 0 > > 12 0 0 0 1 1 > > 13 0 0 1 0 0 > > 14 1 0 0 0 1 > > 15 1 0 0 0 0 > > 16 0 0 1 0 1 > > attr(,"assign") > > [1] 1 1 1 1 2 > > attr(,"contrasts") > > attr(,"contrasts")$`factor(targets2$Target)` > > [1] "contr.treatment" > > > > attr(,"contrasts")$`factor(targets2$channel.col)` > > [1] "contr.treatment" > > > >> # next do intraspot correlation ... > >> library(limma) > >> corfit<-intraspotCorrelation(MA,design.sc) > > Loading required package: statmod > > Warning messages: > > 1: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 2: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 3: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 4: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 5: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 6: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 7: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 8: In remlscore(y, X, Z) : reml: Max iterations exceeded > > 9: In remlscore(y, X, Z) : reml: Max iterations exceeded > >> fit<-lmscFit(MA,design.sc,correlation=corfit$consensus) > >> fit <- eBayes(fit) > >> #make contrasts ... > >> cont.matrix1 <- makeContrasts("veg.1-veg.2",levels=design.sc) > >> fit2.1 <- contrasts.fit(fit, cont.matrix1) > >> cont.matrix2 <- makeContrasts("veg.1-veg.3",levels=design.sc) > >> fit2.2 <- contrasts.fit(fit, cont.matrix2) > >> cont.matrix3 <- makeContrasts("veg.1-veg.4",levels=design.sc) > >> fit2.3 <- contrasts.fit(fit, cont.matrix3) > >> fit2.1<-eBayes(fit2.1) > >> fit2.2<-eBayes(fit2.2) > >> fit2.3<-eBayes(fit2.3) > > > > This is all a bit new for me, can someone please confirm if I have > > correctly addressed any spot*dye effects with this code. > > > > Many thanks in advance for your help. > > > > Regards > > > > Ross > > ______________________________________________________________________ > The information in this email is confidential and inte...{{dropped:9}}
ADD REPLY
0
Entering edit mode

I was uncertain as to whether this design was sufficiently connected for a log-ratio design, and would welcome your comments on the feasibility and benefits of the log-ratios approach.

Shouldn't be a problem.

Also, I was wanting to look at the profile of all probes across all reps of all vegetations - the functions that are not changed between ecosystems can be as informative as those that differ. Is there a way to remove the spot*dye effect from the normalised data from individual arrays so I can make an equal comparison of values from all samples using, for a heatmap for example, without dye effects confounding the result.

Yes, removeBatchEffect() can take out the dye effect, while leaving other effects in. Be sure to specify the design as well as the batch.

Best wishes
Gordon

ADD REPLY
0
Entering edit mode
On Friday 24 June 2011 02:07:36 Ross Chapman wrote: > Is there a way > to remove the spot*dye effect from the normalised data from individual > arrays so I can make an equal comparison of values from all samples > using, for a heatmap for example, without dye effects confounding the > result. Dear Ross, a while ago we published a method, GASSCO (see below), that gets rid of gene-specific (or more precisely, probe sequence-specific) dye bias. This bias is visible as an influence of the dye orientation on the signals, and differs between probes but also between hybridizations. The artefact cannot be corrected by ordinary normalization methods such as LOESS, nor by using e.g. anova, since it is roughly the product of a probe-specific part (correlated to the A-content, when using dUTP labeling) and a hybridization-specific part (roughly linear with the labeling percentage). The GASSCO method is implemented in the Bioconductor package 'dyebias'; it may help you establish whether there is any gene-specific dye bias present, and lets you get rid of it. Let me know if you need any help with it. Philip Margaritis et al. (2009) Adaptable gene-specific dye bias correction for two-channel DNA microarrays. Mol. Sys. Biol. 5, 266. -- Philip Lijnzaad, PhD Molecular Cancer Research University Medical Center (UMC), Utrecht Stratenum room 2.211 (on Tuesdays and Thursdays not in after 15.00) MSN chat (*NOT* email): philip_lijnzaad at hotmail.com P.O. Box 85060, 3508 AB Utrecht (Universiteitsweg 100, 3584 CG Utrecht) The Netherlands tel: +31 (0)8875 68464 fax: +31 (0)8875 68479 ---------------------------------------------------------------------- -------- De informatie opgenomen in dit bericht kan vertrouwelijk zijn en is uitsluitend bestemd voor de geadresseerde. Indien u dit bericht onterecht ontvangt, wordt u verzocht de inhoud niet te gebruiken en de afzender direct te informeren door het bericht te retourneren. Het Universitair Medisch Centrum Utrecht is een publiekrechtelijke rechtspersoon in de zin van de W.H.W. (Wet Hoger Onderwijs en Wetenschappelijk Onderzoek) en staat geregistreerd bij de Kamer van Koophandel voor Midden-Nederland onder nr. 30244197. Denk s.v.p aan het milieu voor u deze e-mail afdrukt. ---------------------------------------------------------------------- -------- This message may contain confidential information and is...{{dropped:8}}
ADD REPLY

Login before adding your answer.

Traffic: 983 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6