2.3.Differential Expression with DEseq2 and edgeR

本节我们将使用DESeq2edgeR 完成差异表达(Differential Expression)分析。

注意:本章需要读者具有R的编程基础。

1) Getting software & data

本章不需要 docker,可以直接在自己的计算机上安装以下的R 包,并下载相应文件。

软件依赖

  • 在基因差异表达分析中,DESeq2edgeR是两个最常用的R package。

  • 这两个package使用的统计模型非常相似,都是用基于负二项分布的广义线性模型直接对counts类型的数据建模,来计算统计显著性。

  • 这两个package都host在bioconductor上,可以通过BiocManager::install来安装:

#如果未安装BiocManager,可使用install.packages("BiocManager")安装
BiocManager::install("DESeq2")
BiocManager::install("edgeR")

数据

count_exon.txt(可以从 **** Files needed 中的Files/ 路径下的相应文件夹中下载)是拟南芥野生型(WT)与uvr8突变型(uvr8)在光照前后的基因表达矩阵

  • 第1列为基因名称

  • 第2-4列为WT光照前的表达值

  • 第5-7列为WT光照后的表达值

  • 第8-10列为_uvr8_光照前的表达值

  • 第11-13列为_uvr8_光照后的表达值

  • 在本例中,我们考虑野生型在光照前后基因表达量的变化,所以只用到前7列的数据。

2) DESeq2

2a) 准备输入数据

  • 读取野生型拟南芥的基因表达矩阵:

Tips: 由于deseq2和edgeR都是用负二项分布直接对counts建模,我们输入矩阵需为原始的count矩阵,而不应该是CPM/FPKM/TPM一类的数值。

2b) 提供样本条件信息

这里我们用一个叫做colData的数据框来存储样本信息。这里每行对应一个样本。我们只考虑一种条件,所以数据框只有一列。

2c) 差异分析

  • 以上我们就获得了差异分析的结果。可以看出,在我们这个例子中,只有dds2 <- DESeq(dds)这一行代码真正在计算两组之间的差异,以及差异的显著性,其他代码都是在准备输入输出。

  • 其实dds2 <- DESeq(dds)的内部实现是比较复杂的,它实际上顺序的调用了DESeq2 package中的三个函数:

    • estimateSizeFactors: 对library size的大小进行估计,作为模型的一个系数

    • estimateDispersons: 对负二项分布模型进行参数估计

    • nbinomWaldTest: 用Wald test来检验两个条件之间差异的显著性,即广义线性模型中对应的系数不为0的显著性

2d) 保存结果

  • 输出的结果是一个表格,每个基因对应一行,每列含义如下:

    • baseMean: 平均表达量

    • log2FoldChange: treatment相对于control的log2 fold change

    • lfcSE: 估计出的log2FoldChange的标准差

    • stat: 假设检验用到的统计量

    • pvalue: p值

    • padj: 经过multiple test correction的p值

  • 我们一般会根据log2FoldChangepadj两列信息对基因进行筛选,并进行下游的通路富集等分析

3) edgeR

3a) 准备输入数据

  • 读取表达矩阵。这一步和使用deseq2没有区别,如果你之前已经读取了表达矩阵,就不用做这步操作了。

3b) 提供样本条件信息

3c) 差异分析

edgeR对差异分析提供了三种检验方法:

  • exact test

  • likelihood ratio test

  • quasi-likelihood glm

其中exact test针对两组样本的情形,另外两种检验适用于更复杂的实验设计。我们这里likelihood ratio test为例进行介绍。

  • 还有一种做法是用design <- model.matrix(~0+conditions)定义design matrix,再用lrt <- glmLRT(fit,contrast=c(-1,1))进行检验,结果应当是相同的,大家如果希望进一步了解请自行参考edgeR的文档。

3d) 选取差异显著的基因

topTag返回的结果中包括的差异表格每行对应一个基因,由以下几列组成:

  • logFC: 相对control的log2 fold change

  • logCPM: 表达量

  • LR: 似然比统计量

  • PValue: p值

  • FDR: 经过multiple test correction的p值

4) Homework

  1. 什么是Multiple test correction? 并解释 q value(很多时候也叫FDR) 和 p value 的差别。

  2. 请结合上课时所讲的知识阐述DESeq2和edgeR中如何对数据进行 normalization,列出并解释具体的公式 。

  3. 利用我们以上介绍的方法和数据,分别使用DESeq2和edgeR找出uvr8突变型(uvr8)在光照前后的差异基因,保存为文本文件

  4. 对于uvr8突变型的差异基因,定义|log2FC|>1,FDR<0.05的基因为差异表达基因。比较两个软件得到的差异基因有多少是重合的,有多少是不同的,用venn图的形式展示

  5. 对于edgeR找出的FDR<0.05的基因,选出log2FoldChange最大的10个基因和最小的10个基因。计算原始表达量矩阵的log10CPM值并对每个基因进行Z-score处理,使用刚才筛选出来的20个基因绘制热图(heatmap)作为最后结果输出。

5) References

我们介绍的两个R package都提供了极为详尽的文档,推荐希望进一步了解的同学阅读

Here is a github page, 用edgeR寻找差异基因, shared by students of our course.

Last updated

Was this helpful?