[BioC] intraSpotCorrelation
Gordon K Smyth
smyth at wehi.EDU.AU
Thu May 21 02:09:47 CEST 2009
Dear Thierry,
I can't comment on whether the low intraspot correlation you observe is a
feasible value because I don't have any personal experience with the
Agilent platform you are using. My earlier comments on the expected size
of the correlation were written in the context of analysing Agilent Human
1A oligo arrays, and I don't have good experience with more recent Agilent
arrays, as they are not used by my collaborators. There have been some
suggestions in the literature which might imply that the latest Agilent
two colour platforms produce data with very small spot correlation
effects. If this is true, then it would explain the small correlation you
see.
My suggestion is that you analyse the data with the estimated correlation,
even though small. You definitely should not manually insert an
artificial value which does not match your data.
Best wishes
Gordon
On Wed, 20 May 2009, Thierry Janssens wrote:
> 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