第一节:富集因子 – 从定义到直觉
搞生物信息学的人,几乎天天都要跟“富集”打交道。你今天做了一堆差异基因,想看看它们是不是集中在某个通路里;明天筛了一批化合物,想判断它们对某个靶点有没有偏好性——这时候你就会用到富集因子(Enrichment Factor, EF)。
说白了,富集因子就是一个比值,用来衡量“我们关心的那部分东西”在“一个特定的子集”里出现的频率,比在“整个背景”里高多少。数值越大,说明这个子集越有针对性。
1.1 富集因子的标准公式
你可能会在各个文献里看到不同写法,但核心骨架就一个:
EF = (a / n) / (A / N)
其中:
a = 在目标子集(例如差异基因列表)中属于某通路C的基因个数
n = 目标子集的总基因数
A = 在全基因组背景中属于通路C的基因个数
N = 全基因组背景的总基因数
举个例子你想想看。你手上有一个含 200 个基因的差异列表,其中 15 个属于“细胞周期”通路。全基因组共有 20000 个基因,该通路总共有 200 个基因。那么:
EF = (15/200) / (200/20000) = 0.075 / 0.01 = 7.5
这意味着在差异列表里,细胞周期通路相关基因的密度是背景分布的 7.5 倍。嗯,富集效果非常明显了。
1.2 两个最容易踩的坑
我刚开始做药物虚拟筛选时,就用 EF 来评价分子对接的命中率。结果算出来一个 EF 值高达 25,把我高兴坏了。后来复查才发现——背景库里有大量重复结构,导致 (A/N) 算小了。所以我建议大家注意这几点:
- 背景一定要完整且去重。背景总集全不全,直接决定了分母的可信度。我见过有人拿一个不完整的基因组做 GO EF,最后数值虚高,根本没法用。
- 小样本别瞎用 EF。如果 n 只有 10 个基因,其中 2 个属于某个通路,EF = (2/10)/(A/N),稍微波动一下就会非常夸张。你想想看,这种结果你敢信吗?
1.3 除了基因集,EF 还能用在哪?
EF 并不局限于基因本体分析。下面这张表列出了我实际项目中用到过 EF 的几个场景:
| 应用领域 | a / n | A / N | 典型 EF 阈值 |
|---|---|---|---|
| GO / KEGG 富集 | 差异基因中属于某通路的基因数占比 | 基因组中该通路基因数占比 | >2 通常认为有意义 |
| 药物虚拟筛选 | 虚拟命中结构中属于某活性类的占比 | 整个化合物库中该类占比 | >5 说明筛选策略有效 |
| ChIP-seq 峰注释 | 峰落在某个功能区域的占比 | 全基因组该功能区域的占比 | >3 提示区域偏好 |
| 微生物组 OTU 关联 | 在目标条件中某属的相对丰度 | 所有样本中该属的平均丰度 | >1.5 视为富集 |
看到了吧?只要你能把数据抽象成“子集比例 vs 背景比例”,EF 就不挑领域。这里有个小诀窍:如果你拿不准该不该用 EF,就回头想想——我这个“子集”和“背景”是不是概念上对等的?如果不对等,那 EF 可能是个假信号。
1.4 富集因子的变体:EF_max 与早期富集因子
在某些应用里(比如虚拟筛选的早期命中评价),我们还会看到 EFmax 或 early EF。它们不是新概念,而是在对排名靠前的部分做 EF 计算。说白了就是:对预测得分最高的前 x% 化合物计算 EF,看实际活性化合物是不是真的“扎堆”出现在最前面。
EF_x% = (hits_in_top_x% / n_x%) / (total_hits / N)
其中:
hits_in_top_x% = 排名前 x% 的分子里实际有活性的个数
n_x% = 排名前 x% 的分子总数
total_hits = 整个库中所有活性分子的个数
N = 库的总分子数
我记得最早接触这个变体时,是在一篇 2010 年的 JCIM 论文里。作者用它来评价分子对接打分函数的可靠性。你想想看,如果最好的那批化合物里真的富集了活性分子,那你的流程就比随机好。这个想法很朴素,但很实用。
1.5 本章知识体系框架
下面这张 SVG 图把富集因子的定义、计算、场景和注意点串在了一起,方便你建立整体认识。
这张图你应该能一眼看懂:EF 的核心公式决定了它可以向左衍生出不同变体,向下则接入各种应用场景。最下面那层注意事项,是我用真金白银的翻车经验换来的,别跳过去。
1.6 什么时候该用 EF,什么时候不能依赖它?
我个人的经验是:EF 非常适合做“探索性分析”和“方法评价”。举个例子,你在开发一个新的分子对接流程,想比较几种打分函数谁更有筛选能力——那 EF 就是很好的指标。你不需要 P 值,只需要一张表列出不同 x% 下的 EF 值,谁高谁一目了然。
但如果你的工作是给一个通路写结论,要上报到监管部门或者要写进论文的关键结论里——那 EF 最好只作为辅助展示,主统计量交给 Fisher 检验或 GSEA 的归一化富集得分(NES)。为什么?因为 EF 没有考虑基因数量带来的随机性。100 个基因里 3 个属于某通路,跟 10 个基因里 3 个属于同一通路,EF 算出来一样,但统计学意义天差地别。