RNA-seq功能富集与通路分析工程 - 第1节

1. 课程简介与背景

1. 课程简介与背景:从差异基因到富集分析

这些年我一直在跟「差异基因」打交道。说实话,刚入行那会儿,我也跟很多人一样——拿到 RNA-seq 的差异基因列表,就急着去查每个基因的功能。 结果呢?几十上百个基因,挨个查完,花了好几天,最后跟老板汇报时,还是说不清楚「这堆基因到底在干嘛」。

后来我明白了。我们需要的不是单个基因的故事,而是这群基因背后的「共性逻辑」。 这就是本课程要讲的核心:差异 KEGG 与 GO 富集分析。 今天我们先聊聊:什么是差异基因分析?又为什么非得做富集分析?

1.1 差异基因分析:到底在找什么?

差异基因分析,说白了就是比较两组样本,找出哪些基因的表达量发生了显著变化。 比如正常组织 vs 肿瘤组织、用药前 vs 用药后。我刚开始做差异分析时,常被老板问:『你给了我一堆基因列表,然后呢?』 嗯,这时候要是没想清楚,很容易被问住。

关键设定:差异基因通常以 |log2 Fold Change| ≥ 1 且 adjusted p-value ≤ 0.05 作为筛选标准。这是最常用的阈值,但你可以根据实验调整。

常见的差异分析工具,我个人习惯这么选:

  • DESeq2(R包):适合小样本、基于负二项分布模型,稳定。我大部分项目都用它。
  • edgeR(R包):速度比 DESeq2 快,适合大样本或初步筛选。
  • limma(R包):原本为芯片设计,但也能处理 RNA-seq,且对数据质量要求高。

你拿到差异基因列表后,通常会得到这样一个文件:

GeneID    log2FoldChange    pvalue    padj
GAPDH     1.23              0.0001    0.002
TP53      2.11              0.0005    0.008
EGFR      -0.89             0.002     0.015
...        ...               ...       ...

但问题来了——这个列表里可能有几百个基因。哪个才是关键?它们之间有没有联系?这时候就需要富集分析登场了。

1.2 为什么要做富集分析?把「点」串成「线」

你想想看,如果只盯着一个基因,很容易被它的个别功能带偏。比如 TP53 跟细胞凋亡相关,但你的差异列表里还有 DNA 修复、细胞周期、代谢相关的基因。 它们可能共同指向某个更大的生物学问题。

富集分析就是做这个的:判断一组差异基因是否在某个已知的「通路」或「功能分类」中显著富集。 我曾经在一个肝癌项目里,差异基因列表里既有炎症因子又有代谢酶,单个看都不突出。但一跑富集分析,发现「脂肪酸代谢」和「IL-17 信号通路」两个类别富集度极高,一下子就抓住了重点。

富集分析的价值:
  • 降低维度:从数百个基因 → 几十个通路/功能。
  • 提供假设:告诉我这些基因「一起做了什么」。
  • 可验证性:富集出的通路可以在下游实验中去验证,比如 qPCR 检测关键酶的表达。

1.3 GO 与 KEGG:两大法宝

做富集分析,最常用的就是 GO(Gene Ontology) 和 KEGG(Kyoto Encyclopedia of Genes and Genomes)。 很多人问:两者有什么区别?我一般这么解释:

维度 GO KEGG
本质 描述基因的「属性」 描述基因参与的「分子交互网络」
分类 BP(生物过程)、CC(细胞组分)、MF(分子功能) 信号通路、代谢通路、疾病通路
数据更新 社区维护,更新频繁 KEGG 官方维护,较稳定但更新慢
适合场景 探索基因的生物学功能倾向 寻找参与的具体信号通路

我记得有一次做免疫治疗相关的肿瘤数据,差异基因 GO 富集显示「免疫系统过程」显著,但 KEGG 富集却只找到了几条代谢通路。 为什么会这样?因为 GO 更宽泛,而 KEGG 通路的注释范围受限——很多免疫相关基因当时还没有被收录到 KEGG 通路里。 所以我的建议是:两种都用,但别只盯着P值最小的那个。

避坑指南:我曾经只看 KEGG 结果,把 GO 结果忽略了,结果漏掉了「细胞外基质组织」这个重要的功能群,差点搞错了研究方向。现在我的习惯是两边结果一起看,交叉验证。

1.4 差异基因 → 富集分析 → 生物学解释

来个直观的图,你就明白这整套流程是啥样了:

差异基因富集分析核心流程 差异基因列表 功能注释数据库 GO 数据库 / KEGG 数据库 GO 富集分析 生物过程 / 细胞组分 / 分子功能 KEGG 富集分析 信号通路 / 代谢通路 / 疾病通路 生物学解释 通路活性、机制推测、实验验证 核心:从个体基因 → 共同功能

你看,流程并不复杂:差异基因 → GO/KEGG 富集 → 生物学解释。 但具体怎么操作、用什么参数、怎么可视化、怎么解读,每一步都有坑。这门课就是要把这些坑一个一个填平。

1.5 一个真实的例子:肺腺癌差异基因富集

我曾在肺腺癌项目里对比了「肿瘤 vs 癌旁」的转录组数据。差异基因一共 1200 多个,做了 GO 和 KEGG 富集后,结果如下:

富集类别 富集条目(Top 3) p-value
GO-BP 细胞分裂、DNA 修复、有丝分裂纺锤体检查点 1.5e-08, 3.2e-06, 2.1e-05
GO-CC 核仁、染色质、动粒 4.5e-07, 1.1e-05, 2.0e-05
GO-MF ATP 酶活性、微管结合、DNA 解旋酶活性 1.9e-06, 2.7e-05, 3.1e-04
KEGG 细胞周期、p53 信号通路、DNA 复制 2.5e-10, 4.7e-06, 1.2e-05

从这个表你马上能看出什么?富集的通路都指向「细胞增殖失控」这个核心特征。 如果你只告诉我『差异基因列表里有 CDK1、CCNB1、CDC20』,可能觉得它们就是几个调控因子。 但通过富集分析,你发现了几个完整的、已被验证的通路,这远比单基因列表有力得多。

重点总结:
  • 差异基因分析是富集分析的「原材料」。
  • GO 和 KEGG 是截然不同的两种注释体系,对比使用更可靠。
  • 单一基因的调变不能代表通路活性,富集分析才能看到全局。

1.6 常见错误与建议

我踩过的坑,不想让你也踩一遍:

  • 只看 P 值,不看富集倍数:有些通路虽然 P 值小,但只涉及到 1-2 个差异基因,这种「微富集」意义有限。我一般会同时看 GeneRatio(富集基因占比)。
  • 忽略背景基因集:做富集时,一定要用所有检测到的基因作为背景,而不是只用差异基因。否则算出来的富集会严重夸大。
  • 不作多重检验校正:P 值一定要经过调整(FDR 或 BH),默认的原始 P 值会高估显著性。
我曾经用默认参数的 enrichGO 跑了一个数据集,出来 200 多个富集条目,满心欢喜。后来发现背景基因集设错了,只用了差异基因做背景……嗯,那次白干了两天。从此之后,我每条富集分析都会先检查背景基因的数量和来源。