[BioC] limma separate channel analysis: extremely low consensus intraspotcorrelation
Thierry Janssens
thierry.janssens at ecology.falw.vu.nl
Fri May 15 09:42:05 CEST 2009
Dear Bioconductor,
Dear Dr. Smyth,
I have hybridizid two color labelled cRNA from five treatments to 10
custom made 8x15k Agilent oligo arrays, in a saterated/unconnected
design. I am looking for differentially expressed genes between the five
treatments. QC reports from the Agilent Feature Extraction Software are
good (e.g. nice observed/expected R^2 around 0.99). For separate channel
analysis you need to calculate the consensus correlation of intraspot
correlation between red and green intensities. This is in my case very
low (0.06922669). On one of the threads from the past I read that this
should be 0.8-0.9. What can be the reason for this low correlation
coefficents? I am convinced that the function intraSpotCorrelation
calculates the R and G values from the M value, so I do not have to do
RG.MA(), right? I can not get rid of the intuition that this function
calculates the correlation between the M and A values, then my observed
consensus correlation would make sense.
When I manually set the consensus.correlation to, let's say, 0.9 I do
get sets of differentially expressed genes (but of course this is not
the way because I want to know what is going on ...!).
For the interested reader, my script is below here. I would be very
grateful to get some feedback on this topic. Chapter 9 of the limma
usersguide, concerning this topic, is rather short.
kind regards,
Thierry Janssens
library(limma)
library(statmod)
limmaUsersGuide(view=TRUE)
setwd("C:/Documents and Settings/thierry/My Documents/Data/Swantje
Staaden/BioC")
filenames <- readTargets("filelist.txt")
filenames <- as.vector(filenames[, 2])
RGlist <- read.maimages(files = filenames, source = "agilent")
# ...
#remove spike-in probes
j <- RGlist$genes$ControlType == 0
#normalize within arrays
RGbc <- backgroundCorrect(RGlist, method = "edwards", offset = 30)
MA <- normalizeWithinArrays(RGbc[j, ], method ="loess")
# MA plotjes
pdf("MAplotsnorm.pdf")
for(i in 1:10) {plotMA(MA, array = i)
abline(h=0, col = "red")}
dev.off()
#normalize between arrays
MAbet <- normalizeBetweenArrays(MA, method = "Aquantile")
pdf("densityplots.pdf")
plotDensities(MAbet)
dev.off()
#sort on duplo
o <- order(MA$genes$ProbeUID)
MAsorted <- MA[o,]
o <- order(MAbet$genes$ProbeUID)
MAbetsorted <- MAbet[o,]
r <- 0
for(q in seq(1, nrow(MAbetsorted), 3)) {
r <- as.numeric((identical(MAbetsorted$genes$probeUID[q],
MAbetsorted$genes$probeUID[q+1]))
&& (identical(MAbetsorted$genes$probeUID[q],
MAbetsorted$genes$probeUID[q+2])) ) + r
}
r
# r should be 5069
# Separate channel analysis in limma
MAbetsortedav <- avedups(MAbetsorted, ndups = 3, spacing =1)
targets <- readTargets("filelist.txt")
targetstest <- targetsA2C(targets)
u <- unique(targetstest$Target)
f <- factor(targetstest$Target, levels=u)
design1 <- model.matrix(~0+f)
colnames(design1) <- u
corfit <- intraspotCorrelation(MAbetsortedav, design1)
corfit$consensus.correlation
> 0.06922669
# ... etc and the script continues ...
> targetstest
channel.col Archive Filename Target
1.1 1 File SSArray1.txt B
1.2 2 File SSArray1.txt A
2.1 1 File SSArray2.txt C
2.2 2 File SSArray2.txt B
3.1 1 File SSArray3.txt AC
3.2 2 File SSArray3.txt C
4.1 1 File SSArray4.txt AB
4.2 2 File SSArray4.txt AC
5.1 1 File SSArray5.txt A
5.2 2 File SSArray5.txt AB
6.1 1 File SSArray6.txt C
6.2 2 File SSArray6.txt A
7.1 1 File SSArray7.txt AB
7.2 2 File SSArray7.txt C
8.1 1 File SSArray8.txt B
8.2 2 File SSArray8.txt AB
9.1 1 File SSArray9.txt AC
9.2 2 File SSArray9.txt B
10.1 1 File SSArray10.txt A
10.2 2 File SSArray10.txt AC
> design1
B A C AC AB
1 1 0 0 0 0
2 0 1 0 0 0
3 0 0 1 0 0
4 1 0 0 0 0
5 0 0 0 1 0
6 0 0 1 0 0
7 0 0 0 0 1
8 0 0 0 1 0
9 0 1 0 0 0
10 0 0 0 0 1
11 0 0 1 0 0
12 0 1 0 0 0
13 0 0 0 0 1
14 0 0 1 0 0
15 1 0 0 0 0
16 0 0 0 0 1
17 0 0 0 1 0
18 1 0 0 0 0
19 0 1 0 0 0
20 0 0 0 1 0
attr(,"assign")
[1] 1 1 1 1 1
attr(,"contrasts")
attr(,"contrasts")$f
[1] "contr.treatment"
--
Thierry K.S. Janssens
Vrije Universiteit Amsterdam
Faculty of Earth and Life Sciences
Institute of Ecological Science
Department of Animal Ecology,
De Boelelaan 1085
1081 HV AMSTERDAM, The Netherlands
Phone: +31 (0)20-5989147
Fax: +31 (0)20-5987123
thierry.janssens at ecology.falw.vu.nl
More information about the Bioconductor
mailing list