宏基因组分类概述
宏基因组分类,说白了就是从一堆混杂的微生物 DNA 序列里搞清楚两件事——"都有谁"和"各占多少"。我最早接触这个方向时,导师丢给我一个肠道菌群的数据集,说"看看里面有什么"。那时候我对分类工具一知半解,跑了好几个软件,结果五花八门。嗯,就是从那次开始,我意识到理解分类策略本身比会敲命令重要得多。
这一章咱们先把宏基因组分类的底牌翻清楚:它要解决什么问题,主流策略有哪些,各自依赖什么数据库,以及怎么评价结果好不好。你把这些搞明白了,后面再对比 Kraken2 和 MetaPhlAn,心里就有谱了。
2.1 什么是宏基因组分类
宏基因组分类,本质上是一个"多标签识别"问题。你手里有一管环境样本(比如土壤、肠道内容物、海洋水样),提取了里面所有微生物的 DNA,测序后得到几千万条短片段(reads)。分类工具的任务就是:判断每一条 read 来自哪个物种,或者至少判断它属于哪个分类层级。
这和传统的纯培养鉴定完全不同。传统方法得先把菌分离出来,再一个个鉴定。宏基因组分类不用培养,直接测序,能检测到那些"养不出来"的微生物。我在一个深海沉积物项目里遇到过,用培养法只鉴定出 12 个属,用宏基因组分类直接干到 300 多个属——差距就是这么大。
分类结果通常有两种产出形式:
- 定性:样本中存在哪些微生物物种
- 定量:每个物种的相对丰度是多少
实际项目中,这两者缺一不可。你光知道有"大肠杆菌"不够,还得知道它占了 0.1% 还是 10%,这直接决定了它是不是优势菌。
2.2 分类学层级
生物分类学有个经典的层级结构:界、门、纲、目、科、属、种。宏基因组分类工具可以在不同层级上给出结果,但不同工具的分辨能力差别很大。
| 层级 | 英文 | 示例(人类肠道样本) | 常见工具的分辨能力 |
|---|---|---|---|
| 界 | Kingdom | Bacteria | 几乎所有工具都能到 |
| 门 | Phylum | Firmicutes | 大部分工具可靠 |
| 纲 | Class | Clostridia | 多数工具可达到 |
| 目 | Order | Clostridiales | 需要一定覆盖度 |
| 科 | Family | Lachnospiraceae | Kraken2 可达,MetaPhlAn 需标记基因覆盖 |
| 属 | Genus | Blautia | 两类工具都能做到 |
| 种 | Species | Blautia obeum | Kraken2 精度高,MetaPhlAn 依赖标记基因区分度 |
我个人习惯,在项目前期先用"门"和"属"两个层级看整体格局,后续做精细分析时再聚焦到"种"层级。你想想看,如果一开始就盯着种级别,很多低丰度物种会被噪声淹没,反而看不出群落的大框架。
2.3 两大分类策略
目前主流的宏基因组分类工具,按策略可以分为两大类。我把它们的核心逻辑和代表工具整理了一下:
| 对比维度 | 基于参考基因组(Kraken2 为代表) | 基于标记基因(MetaPhlAn 为代表) |
|---|---|---|
| 核心思路 | 将 reads 与完整参考基因组数据库进行 k-mer 匹配 | 只比对进化上保守的标记基因(如 16S rRNA、COG、特定单拷贝基因) |
| 数据库规模 | 大(几十 GB ~ 几百 GB) | 小(几 GB) |
| 运行速度 | 快(k-mer 索引,直接查表) | 较慢(需要比对到标记基因集) |
| 内存占用 | 高(数据库常驻内存) | 低(标记基因库小) |
| 物种分辨率 | 可达株级别(如果参考基因组中有近缘株) | 通常到种级别,部分到株级别 |
| 对未知物种的检测能力 | 较弱(依赖已知参考基因组) | 相对较强(标记基因保守,能捕获部分未知物种) |
| 定量准确性 | 受数据库覆盖度影响,可能高估近缘物种 | 标记基因拷贝数校正后,定量更稳健 |
我当年在一个口腔微生物项目里,同时用了这两类工具。Kraken2 跑得快,能检出很多低丰度物种;但 MetaPhlAn 的定量结果更稳定,批次间重复性更好。说白了,它俩不是替代关系,而是互补关系。
2.4 常用数据库
分类工具的背后,数据库是真正的"底牌"。不同工具依赖的数据库差异很大,选错了数据库版本,结果直接翻车。我曾经因为 NCBI 的 RefSeq 版本没对齐,导致同一个样本在不同批次里分类结果差了 30%——那是一次非常惨痛的教训。
以下是两类工具常用的数据库:
- 基于参考基因组工具(Kraken2 等):
- NCBI RefSeq(完整基因组,含细菌、古菌、病毒、真菌)
- GTDB(基因组分类数据库,标准化程度高)
- 自定义数据库(你可以把关注的目标物种基因组加进去)
- 基于标记基因工具(MetaPhlAn 等):
- MetaPhlAn 自带标记基因库(约 1.2 万个物种的特异性标记基因)
- ChocoPhlAn(MetaPhlAn 3/4 使用的扩展标记基因集,含约 10 万个物种)
- 自定义标记基因集(适用于特殊环境样本)
2.5 评估指标
怎么判断一个分类结果靠不靠谱?我个人主要看四个指标:
| 指标 | 定义 | 在分类工具中的意义 |
|---|---|---|
| 精确率(Precision) | 被正确分类的 reads 数 / 所有被分类的 reads 数 | 衡量分类结果中"假阳性"的多少 |
| 召回率(Recall) | 被正确分类的 reads 数 / 所有应被分类的 reads 数 | 衡量工具"漏检"了多少物种 |
| F1 分数 | 精确率和召回率的调和平均数 | 综合评价工具的分类能力 |
| 未分类率 | 未被分配到任何物种的 reads 比例 | 反映数据库覆盖度的不足 |
在实际项目中,还有一个更"工程化"的指标——运行时间与内存峰值。Kraken2 跑一个 2000 万 reads 的样本大概需要 2-3 分钟,但内存要吃掉 100 GB 以上。MetaPhlAn 跑同样数据需要 15-20 分钟,但内存只要 8 GB。你想想看,如果是 100 个样本的队列任务,这个差距就非常现实了。
2.6 实际项目中的选型考量
说了这么多,最后落地到实际项目里,到底选 Kraken2 还是 MetaPhlAn?我给你几个具体的场景参考:
- 场景一:快速筛查
你手上有 200 个环境样本,想先看看整体微生物组成。我会优先选 Kraken2,因为它快。在集群上开 40 个线程,一晚上跑完 200 个样本。MetaPhlAn 跑同样量级可能需要两到三天。 - 场景二:临床诊断
样本中病原体丰度可能很低,假阳性代价大。这时候我倾向用 MetaPhlAn,它的标记基因策略对低丰度物种的定量更保守,假阳性率更低。 - 场景三:微生物组纵向研究
要比较多个时间点的丰度变化,定量稳定性是关键。MetaPhlAn 的标记基因拷贝数校正做得好,跨样本可比性更强。我个人习惯用 MetaPhlAn 做纵向分析的主工具。 - 场景四:发现新物种
如果你研究的是深海热液、极端环境这类"已知物种覆盖率低"的样本,Kraken2 的参考基因组数据库可能遗漏很多。这时候可以试试 MetaPhlAn,它的标记基因更保守,能捕获部分未知物种的信号。
嗯,这一章把宏基因组分类的整体框架搭起来了。你理解了"分类到底在做什么"以及"两大策略的核心差异",后面看 Kraken2 和 MetaPhlAn 的具体输出、参数调优、结果对比,就不会被细节带偏。