[BioC] limma, spot and technical replicates

STKH (Steen Krogsgaard) StKH at novozymes.com
Thu Nov 17 11:11:16 CET 2005


Hi,

I handle spot replicates, technical replicates and biological replicates
in the following way, which I got from Limma User Guide section 11.2 (9
March 2005) with my own addition of using the ndups and spacing
parameters in lmFit to handle spot replication. I'm not a statistician
so this may be wrong, if so please let me know.

Consider a model experiment with two samples (S, F) each with two
biological replicates (S1, S2, F1, F2), hybridized in a balanced block
design with dye swap replicates:

Slide#	Cy3	Cy5
1		S1	F1
2		F1	S1
3		S1	F2
4		F2	S1
5		S2	F1
6		F1	S2
7		S2	F2
8		F2	S2

The arrays are made from 9600 cDNAs each spotted twice on the slides
(first one full set of 9600 probes, then the next set)

This is how I make the analysis (the data are loaded and normalized
prior to this; this is not the actual code so please excuse any typos):

design=modelMatrix(targets, ref="S1") #the file in targets contains the
above definitions of slides
contrasts=makeContrasts(dif=(F1+F2-S2)/2, levels=design) # the "dif"
contrast is F1+F2 vs S1+S2
fit=lmFit(MA, design, ndups=2, spacing=9600) # data in MA
fit2=contrasts.fit(fit, contrasts)
fit2=eBayes(fit2)
top100=topTable(fit2, number=100, adjust.method="fdr") # select top 100
regulated probes, use fdr adjustment.

cheers
Steen


-----Original Message-----
From: bioconductor-bounces at stat.math.ethz.ch
[mailto:bioconductor-bounces at stat.math.ethz.ch] On Behalf Of Carolyn
Fitzsimmons
Sent: 17. november 2005 08:02
To: bioconductor at stat.math.ethz.ch
Subject: Re: [BioC] limma, spot and technical replicates


Hi Cecilia,

 From my limited experience with limma, I do not see where you have 
written any code that dealt with the technical 
replication.  Therefore you are treating all biological replicates as 
biological replicates and it is not surprising that your results are 
the same as those you obtained from limmaGUI.

Currently in limma you cannot account for both spot replication and 
slide replication. (I believe).
You can take the average of the replicates on the slide and then use 
the blocking argument in the correlation calculation and lmFit 
function to account for technical replicates (see limma guide on 
technical replication).  Or you have to do what you have already done.

I hope this helps you,  Carolyn

At 23:08 2005-11-16, you wrote:
>I apologize in advance, since I only started using limma 2 days ago.
>I have a simple experiment
>with 2 treatments (S and F) in a loop design. For each treatment I 
>have 3 biological replicates
>  (S1 to S3 and F1 to F3) and for each biological replicate there 
> are 2 technical replicates.
>Biological reps are from different plants, while technical reps are 
>different RNA extraction from the same plant.
>      SlideNumber FileName Cy3 Cy5
>RF1          RF1  RF1.txt  S1  F1
>RF2          RF2  RF2.txt  F1  S1
>RF3          RF3  RF3.txt  S1  F1
>RF4          RF4  RF4.txt  F1  S2
>RF5          RF5  RF5.txt  S2  F2
>RF6          RF6  RF6.txt  F2  S2
>RF7          RF7  RF7.txt  S2  F2
>RF8          RF8  RF8.txt  F2  S3
>RF9          RF9  RF9.txt  S3  F3
>RF10        RF10 RF10.txt  F3  S3
>RF11        RF11 RF11.txt  S3  F3
>RF12        RF12 RF12.txt  F3  S1
>After inputting all files, and doing within and between 
>normalizations, I did the following
>to deal with the spot and technical replications. (I'm only 
>intersted in the genes diffentially
>expressed between S and F.)
>
> > design <-modelMatrix(targets,ref="S1")
> > show(design)
>      F1 F2 F3 S2 S3
>RF1   1  0  0  0  0
>RF2  -1  0  0  0  0
>RF3   1  0  0  0  0
>RF4  -1  0  0  1  0
>RF5   0  1  0 -1  0
>RF6   0 -1  0  1  0
>RF7   0  1  0 -1  0
>RF8   0 -1  0  0  1
>RF9   0  0  1  0 -1
>RF10  0  0 -1  0  1
>RF11  0  0  1  0 -1
>RF12  0  0 -1  0  0
> > cor <- duplicateCorrelation(MA,design,ndups=3,spacing=3120)
> > cor$consensus.correlation
>[1] 0.3128828
> > fit <-lmFit(MA,design,ndups=3,spacing=3120,correlation=0.3128828)
> > cont.matrix <- makeContrasts(fvss=(F1+F2+F3-S2-S3)/3, levels=design)

> > fit2 <- contrasts.fit(fit, cont.matrix) fit2 <- eBayes(fit2)
>
>Is this the correct way to deal with my design? The results are
>nearly identical to results I
>  obtain if I treat all replicates as biological in limmaGUI. I 
> interpret this to mean that the
>variation between technical reps are similar to variation between 
>biological reps. Is there an
>eazy way to determine whether this is true? In such a case I can 
>just use limmaGUI and avoid
>limma?
>
>Cecilia McGregor
>
>PhD Student
>Sweetpotato Breeding and Genetics Lab
>JC Miller Hall room 236
>Louisiana State University
>Baton Rouge
>LA, 70803
>USA
>
>Phone: (225) 578 2173
>
>_______________________________________________
>Bioconductor mailing list
>Bioconductor at stat.math.ethz.ch 
>https://stat.ethz.ch/mailman/listinfo/bioconductor

_______________________________________________
Bioconductor mailing list
Bioconductor at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/bioconductor



More information about the Bioconductor mailing list