[BioC] Agilent time course with technical replicates, differential expression using Limma

Matt Huska matthew.huska at mdc-berlin.de
Fri Aug 22 16:43:46 CEST 2008


Hi all,

I have been given the microarray data to analyze for a 4 point time 
course experiment with two technical replicates (dye swaps) and no 
biological replicates. One channel is has RNA from a control mouse and 
the other has RNA from a mouse infected with a treatment of interest. 
The platform is the 4x44k Agilent whole mouse oligoarray. I am trying to 
use Limma to determine significantly differentially expressed probes 
over the whole time series.

First, is it even possible to do this with the given experimental 
design? I have only worked with Affymetrix chips with biological 
replicates, so this type of experimental design is new to me.

If it is, then I could still use some help. I read the section of the 
Limma User's Guide (2 Jan 2008) on Dye Swaps, Technical Replication and 
Time Course Experiments but am having trouble putting the ideas together.

Here is my targets table:

filename        timepoint       cy3     cy5
1_1 h1      c       t
1_2 h4      c       t
1_3 h8      c       t
1_4 h16     c       t
2_1 h1      t       c
2_2 h4      t       c
2_3 h8      t       c
2_4 h16     t       c

I believe this is correct as far as normalization is concerned:

targets <- readTargets(file="Targets-invitro.txt");
RG <- read.maimages(targets$filename, source="agilent", 
path="../input/MAGEML+txt/Annabell", ext="txt")
MA <- normalizeWithinArrays(RG, method="loess")
MA <- normalizeBetweenArrays(MA, method="scale")

but I am unsure what to do for a design and contrasts matrix. This is my 
best guess:

TS <- factor(targets$timepoint)
design <- model.matrix(~0+TS)
# Multiple 2nd half of matrix by -1 because of dye swap?
design[5:8,] <- design[5:8,] * -1
colnames(design) <- levels(TS)
# so design is now:
#    h1 h16 h4 h8
# 1  1   0  0  0
# 2  0   0  1  0
# 3  0   0  0  1
# 4  0   1  0  0
# 5 -1   0  0  0
# 6  0   0 -1  0
# 7  0   0  0 -1
# 8  0  -1  0  0
cont.matrix <- makeContrasts(
         h1vsh4=h4-h1,
         h4vsh8=h8-h4,
         h8vsh16=h16-h8,
         levels=TS)
fit2 <- contrasts.fit(fit, cont.matrix)
fit2 <- eBayes(fit2)
tt <- topTable(fit2, adjust.method="BH")

Many thanks,
Matt

-- 
Matthew Huska
Bioinformatics Core Facility
Computational Biology and Data Mining Group
Max-Delbrueck-Centrum fuer Molekulare Medizin
Robert-Roessle-Str. 10
D-13125 Berlin
tel: +49 30 9406 4221
fax: +49 30 9406 4240
email: matthew.huska at mdc-berlin.de
web: http://cbdm.mdc-berlin.de



More information about the Bioconductor mailing list