Chapter 7 Differential expression analysis with DESeq2
Here is a quick example of the use of DESeq2
for differential expression analysis.
7.1 Loading data for DESeq2
A DESeqDataSet
object is required for all the following steps.
library(DESeq2)
rownames(metadata) <- metadata$SampleID
<- DESeqDataSetFromTximport(txi = txi.kallisto,
dds colData = metadata,
design = ~ treatment)
7.2 Filtering out underrepresented transcripts
Transcripts with too few counts are filtered out. The function relevel()
is used to set up which group is the control
<- dds[rowSums(counts(dds)) >= 10,]
dds $treatment <- relevel(dds$treatment, ref = 'starved') dds
7.3 Running DESEq2
The main pipeline of DESeq2
, including their own data normalization step is run using the DESeq()
function.
<- DESeq(dds) dds
Exporting results
<- results(dds)
res
summary(res)
##
## out of 32104 with nonzero total read count
## adjusted p-value < 0.1
## LFC > 0 (up) : 472, 1.5%
## LFC < 0 (down) : 585, 1.8%
## outliers [1] : 276, 0.86%
## low counts [2] : 9337, 29%
## (mean count < 6)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
datatable(as.data.frame(res),
caption = 'Differential expression results using DESeq2',
options = list(scrollX = TRUE))
## Warning in instance$preRenderHook(instance): It seems your data is too big
## for client-side DataTables. You may consider server-side processing: https://
## rstudio.github.io/DT/server.html