1. MetaPhlAn 简介:宏基因组物种分类利器
做宏基因组分析的人,十有八九都听过 MetaPhlAn 这个名字。它全称是 Metagenomic Phylogenetic Analysis,由 Huttenhower 实验室开发,专门用标记基因来做物种分类和相对丰度定量。我个人最早接触它是在一次肠道菌群项目的初期,当时读库数据量不大,用传统全基因比对又慢又贵,MetaPhlAn 给了我一条捷径——几小时出结果,而且物种分辨率够用。
1.1 它到底解决了什么问题?
宏基因组测序拿到的是一堆来自不同微生物的 DNA 碎片。传统做法是把每条 reads 往参考基因组上比对,然后统计覆盖度。但这种方式缺点很明显:
- 计算成本高——比对几亿条 reads 到上万基因组,时间耗不起。
- 重复序列干扰——保守区域在物种间高度相似,比对容易张冠李戴。
- 物种覆盖不全——很多环境微生物没有高质量参考基因组。
MetaPhlAn 换了个思路:它只挑出那些 物种特异性足够强、在基因组里单拷贝或低拷贝的标记基因,然后拿 reads 去匹配这些标记。匹配上了,就能直接定种并估算丰度。
1.2 核心流程:从 reads 到物种谱
MetaPhlAn 的工作流并不复杂,但每一步都藏着可调的参数。我把主干画成了下面的图,方便大家建立整体印象。
图上我标出了三个“参数可调区域”,这也是咱们这门课的核心对象。很多人拿了旗舰版(--preset phlan4)就跑,但实际项目里 不同参数组合会导致物种谱的漂移,尤其是低丰度种和接近物种界线的类群。
1.3 为什么需要单独做参数敏感性分析?
你肯定听过“参数敏感性分析”这个词——换个参数跑一遍,看结果变不变。听起来简单对吧?但放到 MetaPhlAn 上,坑其实不少。
我举个例子。之前有一个海水样本项目,我们先用默认参数跑了一遍,发现 Vibrio 属丰度只有 0.2%。后来为了看稳定性,我把比对敏感度从 -s 0.5 改到 -s 0.9,结果 Vibrio 直接跳到 1.8%,还多出了好几个未被注释的低频种。究其原因,默认参数下许多属于稀有菌群的 reads 被当作“未比对”扔掉了。如果只报告单一参数的结果,这份数据结论就是误导性的。
--read_percentage 这一行。
1.4 参数敏感性分析的核心目标
我们把目标讲清楚,后面所有的案例才会对得上。参数敏感性分析不是要把所有参数组合跑一遍(那样你算力吃不消),而是:
- 识别关键参数——哪些参数小幅度变化就会导致物种谱显著改变?
- 量化波动范围——同一个样本,不同参数下丰度的变异系数有多大?
- 建立最佳实践——针对特定样本类型(肠道、海洋、土壤等),推荐哪一组参数?
- 判断结论稳健性——你的差异分析结果(A vs B)会不会因为参数选择而逆转?
这四个目标贯穿整门课。第2章开始我们会逐一拆解,用真实数据集演示。
1.5 你需要提前准备好的环境
如果你没有现成的 MetaPhlAn 环境,建议用 conda 快速搭建。我习惯用 mamba 加速安装:
mamba create -n metaphlan -c bioconda -c conda-forge metaphlan
conda activate metaphlan
metaphlan --version
安装完成后,下载新版标记数据库(约 2.5 GB):
metaphlan --install --bowtie2db ~/databases/metaphlan_db
验证数据库是否可用:
metaphlan metagenome_sample.fastq.gz --bowtie2db ~/databases/metaphlan_db \
--input_type fastq --output_file profile.tsv 2>&1 | head -5
如果看到类似下面这样,说明环境就绪:
Species: 555 taxons detected
Reads mapped: 12.3% (85,000 / 691,000)
-- read_percentage 12.3 --
-- index_used: /path/to/metaphlan_db/mpa_vOct23_CHOCOPhlAnSGB_2024
1.6 本章知识点速览表
| 知识点 | 一句话说明 | 对参数敏感性的影响 |
|---|---|---|
| 标记基因选择 | 每个物种挑选几段保守但特异的基因 | 标记集大小直接影响召回率和分辨率 |
| bowtie2 比对 | 将 reads 比对到标记基因索引 | 比对参数(-s, --n-ceil)改变比对率 |
| 相对丰度估算 | 根据标记覆盖度归一化到 100% | 低丰度种受统计截断阈值影响大 |
| 输出谱表 | TSV 文件:物种→丰度的映射 | 丰度值对参数波动的敏感程度是本课分析目标 |