Hi everyone,

I am using Limma for analysis of peptide microarrays but have run into a few issues and I was hoping to get some advice from the forum...

Basically the experimental design is a comparison of antibody binding patterns between a disease state and healthy subjects. The peptide arrays are incubated with serum from either of the two groups and then a secondary labelling stage is carried out using fluorescently labelled anti-human-IgG-Cy5 and anti-human-IgA-Cy3. I'm using a Genepix scanner and after scanning I end up with a 2 colour GPR file. The arrays are printed with 3 identical sub-arrays per slide.

This is rather different to the schema of 2 colour DNA arrays where one is interested in comparing the Red channel to the Green channel. Here I'm interested in a comparison of the red channels between arrays and the green channels between arrays. So essentially the design is that of a 2 single colour arrays performed in parallel.

I conduct the analysis as follows:

1. Read a RGlist object from the gpr files and flag "bad" spots - identified during scanning.
2. Define a design matrix - this example is for 3 disease arrays compared to 3 normals
3. Filter out the control spots / empty spots etc.
4. Perform a quantile normalisation between arrays of the red and green channel data in  parallel (The 
value that is being normalised is the log2 foreground / background ratio - this is in keeping with other 
studies looking at peptide array analysis)
5. Fit the linear model taking into account the 3 duplicate spots per array.
6. Apply empirical Bayses statistics and use topTable to generate a list of differentially identified 
peptides for the red channel (IgG) and green channel (IgA) respectively.
 

This is an example of the script I'm using...

library(limma)
setwd("F:/1510/GPR")

f <- function(x) as.numeric(x$Flags > -99)
targets <- readTargets("targets.txt")

RG <- read.maimages (targets$FileName, source="genepix", columns=list(R="F635 Median", G="F532 Median", Rb="B635 Median", Gb="B532 Median"), wt.fun=f)

pData <- data.frame(population = c('disease', 'disease', 'disease', 'norm', 'norm', 'norm'))
rownames(pData) <- RG$targets$FileName
design <- model.matrix (~factor(pData$population))
peptides<-grep("BAC1|BAC2|BAC3", RG$genes$Name)
RG.final<-RG[peptides, ]

RNorm<-normalizeBetweenArrays(log(RG.final$R,2)/log(RG.final$Rb,2), method="quantile")
GNorm<-normalizeBetweenArrays(log(RG.final$G,2)/log(RG.final$Gb,2), method="quantile")

rownames(RNorm) <- RG.final$genes$Name
rownames(GNorm) <- RG.final$genes$Name
RNormSort <- RNorm[order(rownames(RNorm)), ]
GNormSort <- GNorm[order(rownames(GNorm)), ]

corfitR <- duplicateCorrelation(RNormSort, design, ndups=3)
fitR <- lmFit(RNormSort, design, ndups=3, correlation=corfitR$consensus)

corfitG <- duplicateCorrelation(GNormSort, design, ndups=3)
fitG <- lmFit(GNormSort, design, ndups=3, correlation=corfitG$consensus)

ebayesR <- eBayes(fitR)
ebayesG <- eBayes(fitG)

topTable(ebayesR, coef = 2, adjust = "fdr", n = 50)
topTable(ebayesG, coef = 2, adjust = "fdr", n = 50)


The questions I have are:

1. I incuabted a technical replicate for each of the arrays in this series. They're not included in this analysis - all the above targets are biological replicates. However there are are already intra-array replicates accounted for. I seem to remember reading somewhere that limma can't handle both types of replicates at the same time. Is that still the case? Does anyone know a way round this? 

2. Other peptide array studies have removed false positives from the analysis. The false positives can be identified by incubating the array with just the secondary fluorescent antibodies and no patient sera. Thus any peptides that are identified will represent non-specific binding of the secondary to the peptide. My thoughts are that since I'm looking for diffentially identified peptides the false positives should be positive between both groups... However I wonder whether I could analyse a dataset of secondary antibody only arrays and use the data from that to filter the above data? Has anyone an idea how I might do this?

Finally I'd be interested to hear if you think I'm going about this analysis in a reasonable way. There isn't all that much written about analysing peptide arrays using R so any suggestions would be really welcome.

Many thanks,

Kate



__________________________________________________
Dr. Kate Nambiar
Research Fellow in Infectious Diseases
Brighton and Sussex University Hospitals NHS Trust
Eastern Road, Brighton, BN2 5BE

Email  k.z.nambiar@bsms.ac.uk
Tel +44 (0) 1273 696955 Ext 3900
Fax +44 (0) 1273 664375



	[[alternative HTML version deleted]]

