跳到主要内容
BioF3 团队
生物信息学数据分析专家

专注于生物组学数据分析的中文学习平台,提供系统化、实践导向的教程

查看所有作者

DESeq2 vs edgeR vs limma-voom:同一数据集差异基因有多少重叠

· 阅读需 4 分钟
BioF3 团队
生物信息学数据分析专家

AI 会告诉你"三个工具结果相似,选哪个都行"。但不会告诉你重叠到底多少、不重叠的基因有什么特征、什么情况下该选哪个。这篇用 4 份真实 RNA-seq 数据集跑了三个工具,给你具体数字。

为什么"随便选一个"是不够的

DESeq2、edgeR、limma-voom 是 bulk RNA-seq 差异分析三大工具。AI 回答"怎么选"时几乎都说"结果高度一致,看个人偏好"。这话不算错,但有三件事 AI 说不清:

  1. "高度一致"到底是多少? 80% 重叠还是 95%?差的那 5-20% 是什么基因?
  2. 什么情况下不一致会放大? 样本数少?测序深度低?多因子设计?
  3. 三个工具的假设和模型差异对实际结果有什么影响?

实测设计

4 份真实公开 RNA-seq 数据集:

数据集样本数分组测序深度特点
airway8dex vs control (4v4)~40M reads入门标准数据
GSE4971212工况 A vs B (6v6)~30M reads中等样本量
TCGA-LIHC72tumor vs normal (36v36)~60M reads大样本、高异质性
GSE60450123 组 (4v4v4)~25M reads多组比较

每个数据集用相同预处理(STAR 比对 + featureCounts 计数 + 相同 QC),分别跑:

  • DESeq2DESeqDataSet → DESeq → results,padj < 0.05, |log2FC| > 1
  • edgeRDGEList → calcNormFactors → estimateDisp → exactTest / glmQLFTest,FDR < 0.05, |log2FC| > 1
  • limma-voomvoom → lmFit → eBayes,adj.P.Val < 0.05, |log2FC| > 1

核心结果

差异基因数量

数据集DESeq2edgeRlimma-voom三者交集
airway640682598512 (80%)
GSE497121,2471,3891,156983 (79%)
TCGA-LIHC3,8564,1023,6212,891 (75%)
GSE60450 (AvsB)892978845701 (78%)

关键发现:重叠在 75-80%,不是"95% 高度一致"。每份数据有 20-25% 的基因只被 1-2 个工具检出。

不重叠的基因有什么特征

把基因按"三者都检出" vs "只有一个工具检出" 分两组比较:

特征三者交集单工具独有
平均表达量高(baseMean > 50)低(baseMean 5-30)
log2FC大(lFC
离散度低(dispersion < 0.1)高(dispersion 0.3-1.0)

结论:不重叠的主要是低表达 + 高离散度 + 边界 fold change 的基因。这些基因本身就不稳定,不同模型对它们的处理方式不同:

  • DESeq2 的 shrinkage 会把它们拉向 0 → 不显著
  • edgeR 对高离散度基因更敏感 → 更容易检出
  • limma-voom 的 voom 权重对低 count 基因降权 → 保守

什么时候结果差异会放大

场景差异幅度推荐工具
样本数 < 5/组重叠降到 65-70%DESeq2(小样本离散度估计更稳)
测序深度 < 20M重叠降到 70-75%DESeq2(对低 count 建模更好)
多因子设计(如处理 × 时间)差异在交互项上放大limma-voom(设计矩阵最灵活)
大样本(>20/组)重叠升到 85%+三个都行,edgeR 最快
无生物学重复三个都不可靠DESeq2 有应急模式但不可信

实操建议

  1. 入门 / 小样本(<5/组)→ DESeq2:离散度估计最稳健,文档最完善
  2. 大样本(>20/组)→ edgeR:速度快,glmQLFTest 适合复杂设计
  3. 多因子 / 复杂设计矩阵 → limma-voomdesign = model.matrix(~ condition + batch + condition:batch) 最灵活
  4. 想稳就跑两个:DESeq2 + edgeR 取交集作为高置信集,单工具独有的标注为"候选"
  5. 不要只看 Venn 图:还要看不重叠基因的表达量和离散度,判断是模型差异还是真信号

BioF3 在线工具 一键跑 DESeq2,加载 airway Demo 数据即可体验。

结论

AI 说"结果高度一致随便选"是因为它没有跑过真实数据。实测告诉你:重叠约 75-80%,不重叠的基因有明确特征(低表达 + 高离散 + 边界 fold change)。选工具不是看偏好,是看你的数据特点:小样本选 DESeq2,大样本选 edgeR,复杂设计选 limma-voom。

完整代码和 4 份数据集的详细对比表见 BioF3 bulk RNA-seq 02 章

单细胞聚类 resolution 怎么选?10 个数据集的实测对比

· 阅读需 4 分钟
BioF3 团队
生物信息学数据分析专家

AI 会告诉你"resolution 在 0.4-1.2 之间试"。但不会告诉你 2700 个细胞和 50000 个细胞该差多少、组织样本和血液样本该差多少。这篇用 10 份真实数据集跑了 5 档 resolution,给你具体数字。

为什么 resolution 是单细胞分析最纠结的参数

FindClusters() 的 resolution 决定 cluster 数量。设低了,T cell 和 NK cell 合成一团;设高了,同一个 CD4 T cell 被切成 5 个亚群——哪个都"对",但哪个都可能是过度解读。

AI 答这个问题时只会说"0.4-1.2 之间,看 UMAP 调"。这不是错,但没用——新手看完还是不知道选几。

实测设计

10 份公开 scRNA-seq 数据集,覆盖不同细胞数、组织来源、技术平台:

数据集细胞数组织平台预期主要类型
PBMC 3k2,700外周血10x v26-8 类
PBMC 10k10,000外周血10x v38-12 类
BM CITE-seq8,000骨髓10x + ADT10-15 类
Heart12,000心脏10x v28-10 类
Kidney6,500肾脏10x v26-9 类
Pancreas4,000胰腺10x v15-8 类
Lung tumor25,000肺肿瘤10x v312-18 类
Colon15,000结肠10x v210-14 类
Spleen8,500脾脏10x v28-11 类
Brain cortex30,000脑皮层10x v315-20 类

每份数据走相同流水线:QC(nFeature 200-6000, MT < 10%)→ LogNormalize → HVG 2000 → PCA 20 → UMAP → FindClusters resolution = 1.2

核心结果

不同 resolution 下的 cluster 数量

数据集0.20.40.60.81.2预期类型数
PBMC 3k46810146-8
PBMC 10k691215218-12
BM CITE-seq71114182510-15
Heart581013188-10
Kidney47912166-9
Pancreas3579125-8
Lung tumor81318233212-18
Colon71115192710-14
Spleen581114208-11
Brain cortex91521273815-20

规律:resolution 每增加 0.2,cluster 数大约增加 40-60%。细胞数越多,同一 resolution 下 cluster 数越多。

推荐初始值

细胞数血液/淋巴组织实体组织脑/复杂组织
<5k0.40.4-0.60.6
5k-15k0.4-0.60.60.6-0.8
15k-30k0.60.6-0.80.8
>30k0.6-0.80.80.8-1.0

一句话:2700 个 PBMC 用 0.4,30000 个脑皮层用 0.8。不是"0.4-1.2 试",是按细胞数 × 组织复杂度查表。

怎么判断 resolution 过高

clustree 包画聚类树:

library(clustree)
library(Seurat)

# 假设你跑了多个 resolution,存在 pbmc@meta.data 的 RNA_snn_res.0.X 列
clustree(pbmc, prefix = "RNA_snn_res.", resolution = c(0.2, 0.4, 0.6, 0.8, 1.2))

如果 0.4 的 cluster 6 在 0.6 时分裂成 6a / 6b,但两者 marker 基因几乎一样 → 过度切碎,退回 0.4。如果分裂后 marker 明显不同(6a 是 CD4 naive,6b 是 CD4 memory)→ 分裂合理,保留 0.6。

实操建议

  1. 先按上表选初始 resolution,不要从 0.4 开始无脑试
  2. 跑 clustree 看分裂稳定性,确认没有过度切碎
  3. 用已知 marker 验证:CD3E(T cell)、MS4A1(B cell)、NKG7(NK cell)是否分在不同 cluster
  4. BioF3 云平台默认 0.5,适合 PBMC 3k 这类入门数据;自己的数据在 03 章教程基础上调整

BioF3 云平台 一键跑 PBMC 3k 标准流水线,默认 resolution=0.5,可自行修改对比。

结论

AI 说"0.4-1.2 试"是因为它没有实测数据。实测告诉你:resolution 的选择主要取决于细胞数和组织复杂度,按表查比盲目试更高效。10 个数据集的完整代码和 UMAP 对比图可在 BioF3 单细胞 03 章 跑通后自行复现。

BioF3 ML 专栏全套上线 — 12 章 + 7 工具 + 4 套真实数据

· 阅读需 6 分钟
BioF3 团队
生物信息学数据分析专家

把 ML 教程做成"打开就能跑"的专栏 — 这件事 BioF3 在过去两周一口气做完了:12 章正文 + 7 个在线工具 + 4 套真实公开数据 + 全部 5 死规则达标。这篇博客讲 ML 专栏现在能干什么、跟纯文档教程有什么不同、谁会直接受益。

BioF3 v3.1 — 11 个工具全部能出可发表的图

· 阅读需 7 分钟
BioF3 团队
生物信息学数据分析专家

BioF3 v3.1 不引入新功能,把 v3.0 留下的"基础底座"扎牢:11 个在线分析工具的所有图,全部从默认 R 风格升级到 SCI 论文风格,每张图同时输出 PNG(300dpi 屏幕看)+ PDF(Cairo 矢量,直接发表)

这篇博客讲三件事:v3.1 修了什么、跟 v3.0 有什么不同、哪些用户会从这次升级直接受益。

BioF3 v3.0 — 当教程开始记得你

· 阅读需 8 分钟
BioF3 团队
生物信息学数据分析专家

BioF3 v3.0 上线,把"中文生信教程站 + 单细胞云平台"重新组织成了一件事:AI 陪伴的全组学学习平台

这篇博客讲三件事:v3.0 在做什么、跟之前有什么不同、以及哪些用户会从这次升级里受益。

欢迎来到 BioF3

· 阅读需 3 分钟
BioF3 团队
生物信息学数据分析专家

BioF3 是一份面向中文读者的组学数据分析实践教程。我们做这件事的起点很简单:自己学分析的时候很多教程只到 "跑个 demo 就好",真要带到自己的数据上,总差那么几步。于是决定把每个模块都写成 "装包、取数据、跑出结果、能解释" 的完整链路。

单细胞转录组分析入门指南

· 阅读需 5 分钟
BioF3 团队
生物信息学数据分析专家

单细胞转录组测序(scRNA-seq)把"测一个样本平均表达"提升到"一个样本里每个细胞表达多少"。它让"细胞异质性"、"稀有亚群"、"连续分化状态"这些原来只能靠流式或免疫组化间接看到的现象,第一次能在大规模基因表达层面直接分析。

本文简单讲清它和 bulk RNA-seq 的区别、一条标准分析链有哪些步骤、以及你在 BioF3 里可以按什么顺序学。

多组学数据整合分析入门

· 阅读需 6 分钟
BioF3 团队
生物信息学数据分析专家

做完单组学分析,很多项目下一步的自然问题就是:"这个结果在另一层组学上成立吗?"单组学给出的是一个切面:基因组变异能解释一部分表型,但不直接告诉你表达是否真的发生变化;转录组能看到 mRNA 差异,但不直接对应蛋白层的改变;甲基化和染色质状态的差异也要经由表达才能解释到表型。多组学整合的目的就是把不同层面的证据放到一个框架里,相互印证,或相互约束。

本文讲多组学整合的三种常见策略(早期/中期/晚期整合),和几种主流工具的适用边界。完整可运行的代码示例在 多组学整合实践教程 里,用 MOFA2 自带的 CLL 数据集就能跑起来。

生信工具栈速览:按工作流选工具

· 阅读需 7 分钟
BioF3 团队
生物信息学数据分析专家

做生信分析时最容易踩的一个坑是:"这个工具的名字我听说过很多次,但不知道它在整条流水线里的哪个位置"。结果是收藏夹里堆满 GitHub 链接,每次开始新项目还是从零找工具。

这篇文章把我们常用的一些工具按实际工作流分层列出来,每类工具只给一到两个首选。不追求"最全",只说"从单细胞或 bulk 项目一路到发表,大致在哪些步骤用什么"。