Using DESeq
- For experiments with or without replication
- See the DESeq home page for official documentation
- Also see our Hot Topics RNA-Seq vignette (session 3, third part) for another discussion of the use of DESeq.
- Package summary: "Estimate variance-mean dependence in count data from high-throughput sequencing assays and test for differential expression based on a model using the negative binomial distribution"
- From the DESeq publication: "DESeq owes its basic idea to edgeR, yet differs in several aspects."
- Input is also a matrix of counts, with gene identifiers used as row names.
- Sample code to use with replication:
# Use package
library(DESeq)
# Read counts
countsTable = read.delim("Gene_counts.txt")
# Describe groups
groups = c(rep("C",3), rep("T", 3))
# Make a CountDataSet
cds = newCountDataSet(countsTable, groups)
# Estimate effective library size
cds = estimateSizeFactors(cds)
# Core assumption of the method: variance is a function of expression level
# Estimate variance for each gene
cds = estimateDispersions(cds)
# Do stats based on a negative binomial distribution
results = nbinomTest(cds, "T", "C")
write.table(results, file="DESeq_output.txt", sep="\t", quote=F)
# Data quality assessment by sample clustering and visualisation (optional)
library(gplots)
library("RColorBrewer")
#re-estimate dispersion with method "blind" to ensure analysis is unbiased.
cdsFullBlind=estimateDispersions(cds, method="blind")
#vst needed for PCA and heatmap
vsd=varianceStabilizingTransformation(cdsFullBlind)
#do heatmap
dists=dist(t(exprs(vsd)))
mat=as.matrix(dists)
rownames(mat) = colnames(mat) = with(pData(cds), paste(groups, sep=" : "))
hmcol = colorRampPalette(brewer.pal(9, "GnBu"))(100)
heatmap.2(mat, trace="none", col = rev(hmcol), margin=c(13, 13))
#do PCA
print(plotPCA(vsd, intgroup=c("condition")))
- Sample code to use without replication:
# Show that all samples are different
conds = c("a", "b", "c", "d", "e", "f")
- Then apply the same code as above except for estimateVarianceFunctions():
- cds = estimateVarianceFunctions(cds, method='blind')
- Make desired comparison
- results = nbinomTest(cds, "a", "b")
Note:
See TracWiki
for help on using the wiki.
