拿到一张 50 个差异代谢物的名单,问题才回答了一半:它们指向哪条通路、扰动发生在网络的哪个位置?富集分析把零散名单映射到 2.2 节的通路上,用统计检验判断"这条通路里的分子是否富集得超出随机预期"。
想象一个班 40 人,期末有 12 人挂科,其中 8 人来自同一个 10 人小组——你不需要任何统计也觉得"这个小组有问题"。富集分析做的就是这件事:背景是检测到的全部代谢物(全班),前景是差异代谢物(挂科名单),检验每条通路(小组)的超几何分布概率。
# 概念示例:用 clusterProfiler 风格做代谢物富集 # sig_ids: 差异代谢物的 KEGG ID,bg_ids: 全部检出代谢物的 KEGG ID library(clusterProfiler) ego <- enricher(gene = sig_ids, # 代谢组学里复用基因富集框架 universe = bg_ids, TERM2GENE = kegg_pathway_compound, pAdjustMethod = "BH") head(as.data.frame(ego)[, c("ID", "Description", "p.adjust", "Count")])
代谢组学的特有坑:背景集合必须真实。用"KEGG 全库 2 万个化合物"当背景而不是"本实验检出的 800 个",p 值会被系统性低估。检测集合本身就是有偏的(脂质在反相平台高覆盖),背景跟着偏才公平。
差异代谢物两两算相关(Spearman),相关系数超过阈值连边,得到一个网络。模块化社区检测(如 WGCNA 的思路)可以把上千特征压缩成几十个"代谢模块",模块特征值再与表型关联——这是把多维数据降维成可解释单元的常用路径。
但记住相关网络的两个边界:样本量小于 50 时相关系数极不稳定;网络边不代表因果(第 2 章枢纽分子问题)。网络是"提出假设"的工具,不是"证明机制"的工具。
标准输出两张图:富集条形图(通路按 p.adjust 排序、气泡大小为命中数)、通路拓扑叠加图(差异代谢物按方向标色叠到 KEGG 通路图上)。第二张图信息量更大——同一通路里上游底物升、下游产物降的方向性组合,才是定位扰动位点的证据(回顾 2.2 节)。
💡 关键直觉:通路分析的产出不是 p 值清单,而是两三句"某通路被推向某方向"的机制陈述。写不出这句话,说明差异信号还没有组织起来。
第 6 章看这条完整流水线在真实课题里怎么跑。
ORA(过表征分析)拿差异代谢物清单查表,用超几何检验问"这条通路里的命中数是否超出随机预期";MSEA(代谢物集富集分析)不设硬阈值,把所有代谢物的效应量连续值纳入;网络推断(Mummichog、GSVA 类)则绕开预定义通路,从 m/z 网络模块直接预测活动通路。三者的输入假设不同:ORA 丢掉了阈值以下的弱信号,MSEA 保留了幅度信息,网络法适合注释不全的非靶向数据。
# 超几何检验的手工实现:TCA 通路(20 个成员)里命中 6 个差异代谢物 from math import comb N, K, n = 1500, 20, 120 # 总注释数、通路大小、差异代谢物总数 hits = 6 p = sum(comb(K, h) * comb(N - K, n - h) for h in range(hits, min(K, n) + 1)) / comb(N, n) print(f"TCA 命中 {hits}/{K},富集 p = {p:.4f}") # 12 条通路同时检验时 BH 校正后 0.04*6/12≈… 需报校正后 p,见下一行 m_tests = 12 p_adj = min(1.0, p * m_tests / 1) # Bonferroni 保守版 print(f"Bonferroni 校正后 p = {p_adj:.3f}(临界,换 BH 更合理)")
其一,代谢物在通路里的"方向"不一致(有的升有的降),简单计数会互相抵消——需要按方向分层或用拓扑权重;其二,数据库的物种注释错位(植物通路套到人类数据)会让富集结果全盘失效;其三,"富集到的通路"与"活性改变的通路"不是一回事——浓度是通量与消耗的净结果,只有 ¹³C 通量实验才能直接测速率。通路分析的正确输出是一个"值得追的假设清单",而不是结论本身。
通路结果的呈现同样有规范:森林图或气泡图列出通路名、富集比、p 与校正 p、方向标注(上调/下调命中数);正文引用通路时给出命中代谢物明细表,让读者能从通路名回溯到每个浓度值。审稿人对"通路富集到 TCA(p=0.03)"这种孤句的容忍度逐年降低——能点开的证据链才是通路分析的合格交付物。
通路分析的结果写作还有一个层次递进的规范:初级是罗列富集通路名,中级是给出命中代谢物与方向的热图,高级是把通路结果与独立证据(转录组、蛋白组或通量数据)对齐成多组学共识。审稿档次大致对应这三个层次。对以代谢组单独成文的研究,退而求其次的做法是把通路结论严格限定为"代谢物流量再分配的提示"而非"通路活性上调"——措辞的克制换来的科学信用,在后续验证研究中会兑现。这一分寸感是第 6 章所有高质量案例的共同特征,值得在通读案例章后回来重读这一段。
结果解读时可加一道方向一致性检验:把通路内代谢物的 log2 fold change 与其在经典通路图中的上下游位置对照,若出现"底物与产物同向大幅升降"的段落,优先怀疑注释错误或间接代偿,而非直接宣称通路激活。MSEA 的报告同样应附代谢物集大小、富集比与 Holm 校正后 p 值三列,供读者自行复算。
网络可视化发布前还有一道质检:节点度分布应呈幂律长尾,若出现几十个孤立双节点模块,多半是相关阈值过严(如只保留 |r|>0.9 的边),可放宽到 0.7–0.8 并配合 FDR 控制;反之若平均度超过 50,网络已近全连接,模块划分失去意义。报告模块时附上模块内平均相关系数与模块签名代谢物各前五位,读者即可不依赖图片快速复核结构。