第一章:什么是宏基因组物种分类?Kraken2 和 MetaPhlAn 概述
大家好,我是老李,干微生物组生物信息有七八年了。今天咱们来聊聊宏基因组物种分类。
说白了,就是给你一堆从环境样本里直接测出来的 DNA 片段,让你回答一个问题:这里面有哪些微生物? 比例是多少?
我刚开始入行时,觉得这和拼图差不多。但实际干起来,情况复杂得多。
1.1 宏基因组物种分类到底在解决什么?
传统的微生物研究,得先培养。你想想看,肠道里的细菌,大部分在实验室根本养不活。宏基因组测序绕过了这一步——直接把样本里所有微生物的 DNA 抽出来,打成小片段,上机测序。结果就是一堆几百万条、长度 100-300 bp 的短 reads。
你需要一个分类器,把这些 reads 分配到某个物种,或者至少分到属、科级别。这就是宏基因组物种分类。
我遇到过很多新人,一上来就问:“哪个工具最准?” 其实没有万能答案。不同场景,选型标准差很多。
1.2 两种主流思路:基于 k-mer 匹配 vs 基于标记基因
目前社区里最火的两个工具,Kraken2 和 MetaPhlAn,走的路线完全不同。
- Kraken2:基于 k-mer 精确匹配。它把参考基因组的每条序列切成长度为 k 的短串(k-mer),建一个哈希表。你的一条 query read 进来,也切成 k-mer,去哈希表里找。最后用 LCA(最低公共祖先)算法确定分类。
- MetaPhlAn:基于标记基因(marker genes)。它只挑选那些在物种内高度保守、在物种间有足够差异的基因——比如特定的核糖体蛋白、看家基因。比对的不是全基因组,而是这个精简的标记基因集合。
这两种思路,决定了它们在速度、精度、内存消耗上的巨大差异。我自己的项目里,做过好几次对比,后面慢慢给你细说。
1.3 Kraken2 的核心设计
Kraken2 最让我印象深刻的是它的 k-mer 精确匹配 + LCA 定类 机制。整个流程分两步:建库和分类。
- 建库:从 RefSeq、GenBank 等下载参考基因组,提取所有 k-mer(默认 k=35),存入一个在内存中的哈希表。每个 k-mer 映射到它来源的分类 ID。
- 分类:读入每条 read,切分成多个 k-mer,去哈希表查询每个 k-mer 对应的分类。对查到的分类 ID 做 LCA,得到该 read 的分类。如果 read 中足够多的 k-mer 映射到同一个分类,就认为该 read 属于这个分类。
我在项目中遇到过一个问题:当两个亲缘关系很近的物种共享大量 k-mer 时,Kraken2 会趋向于把 read 分到更高的分类层级(比如属),而不是种。这点很重要,后面对比表格里会提到。
1.4 MetaPhlAn 的核心设计
MetaPhlAn 走的是另一条路。它不需要全基因组索引,只依赖一个专家精选的标记基因目录。
- 标记基因数据库:从所有已知微生物基因组中,挑出约 8000 个物种特异性的标记基因。每个物种有大约 500–1000 个标记基因。
- 比对:用 Bowtie2(MetaPhlAn 4 也用 BWA)把 reads 比对到这个标记基因库。
- 丰度估算:根据比对到每个物种标记基因上的 reads 数量,结合标记基因的拷贝数和基因组大小,计算相对丰度。
说白了,MetaPhlAn 只盯着那些“一锤定音”的基因。它对自己数据库覆盖不到的物种基本无能为力。但好处是——数据库小,跑得快,内存省。
1.5 核心差异一览
| 对比维度 | Kraken2 | MetaPhlAn |
|---|---|---|
| 比对原理 | k-mer 精确匹配 + LCA | 标记基因比对 (Bowtie2/BWA) |
| 数据库范围 | 全基因组(RefSeq等) | 精选标记基因集 |
| 数据库大小 | 大(标准库约 50 GB+) | 小(约 1–2 GB) |
| 运行速度 | 快(k-mer 哈希直接查) | 中(需要比对) |
| 内存需求 | 高(50 GB–100 GB+) | 低(4 GB–8 GB 足够) |
| 物种分辨率 | 依赖数据库,对近缘种易归到属 | 标记基因设计可区分近缘种 |
| 新物种/未测序物种 | 部分可发现(通过共享 k-mer) | 基本无法检测 |
| 相对丰度准确性 | 需额外用 Bracken 校正 | 内置丰度估算模型 |
1.6 一张图理清两种思路
下面这张 SVG 图,帮你把两个工具的核心流程和差异可视化一下。
1.7 什么时候该用哪个?
我通常根据这几个问题来判断:
- 样本中有没有大量未知物种? 比如海洋、土壤样本。有——Kraken2 更靠谱。没有(比如人类肠道样本)——MetaPhlAn 又快又准。
- 机器内存多大? 只有 16G 内存的老服务器,别想跑 Kraken2 标准库。MetaPhlAn 轻松跑。
- 你需要种水平的分类吗? Kraken2 对近缘种经常“偷懒”归到属。MetaPhlAn 的标记基因在种级分辨率上更好。不过两者差距没有想象中大,需要具体数据集验证。
- 只是做常规 QC 还是发论文? 快速看个物种组成,MetaPhlAn 够了。严谨的差异分析,我建议两个都跑,取交集或互补。
1.8 本章小结
好了,我们简单总结一下:
- 宏基因组物种分类,就是把测序 reads 分配到微生物的树枝上。
- Kraken2 走全基因组 k-mer 精确匹配,覆盖面大,但内存消耗高,种级分辨率依赖数据库。
- MetaPhlAn 走标记基因比对,轻量快速,主要针对已知物种,丰度估算更直接。
- 选型的关键在于你的样本类型、计算资源和分析目标。