Using Bioconductor To Analyse Beadarray Data
From Bridges Lab Protocols
Revision as of 17:52, 21 August 2009 by Davebridges (Talk | contribs)
Contents
Software Requirements
- R, get from [CRAN]
- Bioconductor, get from [Bioconductor]
- Bioconductor packages. Install as needed:
- beadarray
- limma
source("http://www.bioconductor.org/biocLite.R") biocLite("PACKAGE")
Loading Data
- At a minimum you need the Probe Profile data (normally a txt file).
- For all R procedures first change directory to your working directory then next create a new script, and save all executed lines in that script file.
- Load the beadarray library, indictate dataFile (required), sampleSheet (normally a xls or csv file) and control set (Control Probe, normally a txt file)
data = "FinalReport_SampleProbe.txt" controls = "ControlProbe.txt" samplesheet = "Proj_54_12Aug09_WGGEX_SS_name.csv" BSData = readBeadSummaryData(dataFile = data, qcFile= controls, sampleSheet=samplesheet)
- You may need to alter either the ProbeID or ControlID to fit the illuminaprobe column from the sampleprobe or controlprobe datasets.
- This fits the data into the BSData dataframe. Phenotype data can be accessed by pData(BSData) and expression data can be accessed by exprs(BSData).
Data Normalisation
- Microarray data is typically quantile normalised and log2 transformed:
BSData.quantile = normaliseIllumina(BSData, method="quantile", transform="log2")
- To examine the effects of normalisation on the dataset use boxplots:
boxplot(as.data.frame(log2(exprs(BSData))),las=2,outline=FALSE, ylab="Intensity (Log2 Scale)") boxplot(as.data.frame(exprs(BSData.quantile)),las=2,outline=FALSE, ylab="Intensity (Log2 Scale)")
- Save these boxplots as postscript files.
Clustering Analysis
- This analysis will generate a euclidean distance matrix then a cluster analysis of that matrix and will show the distribution between replicates. Ideally similar treatments will cluster together.
d = dist(t(exprs(BSData.quantile))) plot(hclust(d)
Differential Expression Analysis
- Normalised data can be analysed using the limma package for statistical differences
- First define groups for each treatment. If a samplesheet was provided correctly and had this information:
samples = pData(BSData)$Sample_Group
- Otherwise define these groups manually in the order that they were entered (check by looking at pData(BSData)
samples = c("Control", "Control", "Treatment1", "Treatment1, "Treatment2"...)
- Next the groups are used to set up a statistical design:
library(limma) samples = as.factor(samples) design = model.matrix(~0 + samples) colnames(design) = levels(samples) fit = lmFit(exprs(BSData.quantile), design)
- Now set up contrast matrices to define how you want the data analyses. For example you may want to compare some treatments to a control, as well as between some treaments. See the limma user guide for more information about specific analyses. When defining the contrast matrix use the sample group names as defined above.
cont.matrix = makeContrasts(Treatment1vsControl = Treatment1 - Control, Treatment2vsControl = Treatment2 - Control, Treatment1vsTreatment2 = Treatment1 - Treatment2, levels = design) fit.cont = contrasts.fit(fit, cont.matrix) ebFit = eBayes(fit.cont)
Generating a Venn Diagram for Differential Expression
- First define a cutoff criteria for inclusion.
- One option is to use the decideTests function:
</pre>results = decideTests(ebFit, method="global")</pre>
- The relevant options are for method and adjust.method
- method
- default is "global", which allows for p-value comparasons
- adjust.method, this defines the false-discovery rate adjustment:
- default is "BH" for Benjami and Hochberg
- other options are "none", "fdr" (same as BH), "holm" and "BY"
- method
- The relevant options are for method and adjust.method