第3章 读段比对与物种分类归纳总结

这一章我们聊聊宏基因组分析里最核心的一步:把测序读段比对到参考数据库,然后归纳出每个物种的丰度。我个人刚开始做宏基因组时,觉得这一步就是跑个命令而已,结果各种坑踩下来才发现,这里面的门道比想象中多得多。

3.1 读段比对——别急着跑命令

说白了,读段比对就是为每一条测序读段找到一个「标尺」。这个标尺就是参考基因组或基因数据库。你想想看,宏基因组样本里混杂着数百种微生物的DNA片段,就像一锅大杂烩。比对的目的就是把每一块碎片归类到它原来的物种身上。

我建议大家在选择比对工具时,先问自己三个问题:

  • 读段长度是多长?短读(<150bp)和长读(>500bp)用的工具不同
  • 参考数据库有多大?几GB还是几百GB?这直接影响运行时间和内存
  • 要的是物种级分辨率还是功能级?不同问题选择不同策略

3.2 常用比对工具对比

下面这张表是我自己整理的,是这么多年项目里反复试错后的经验总结。

工具 比对策略 适用场景 优缺点
Bowtie2 FM-index 双索引比对 短读段到参考基因组的快速比对 速度极快,但对高度相似区域区分力弱
BWA-MEM Burrows-Wheeler 变换 较长读段或同源性搜索 灵敏度和特异性均衡,适合全长基因组
Kraken2 k-mer 精确匹配 + LCA 算法 宏基因组学快速物种分类 准确度高,但需要较大内存(~50GB+)
Bracken 基于 Kraken2 结果的贝叶斯校正 物种到属级的丰度估计 比 Kraken2 原始计数更接近真实丰度

Bowtie2是我个人比较爱用的一款短读段比对器。它专为宏基因组而生,比对速度快,内存占用也合理。我曾经用它在一天之内处理了200个环境样本的比对任务,那台服务器也只有64GB内存,跑下来非常顺利。

避坑指南: 我曾经遇到一个难题,就是高宿主污染的环境样本。当时用了常规的比对工具,结果大部分读段都匹配到了宿主基因组上。后来我改用了Kraken2的快速分类模式,加上Bracken做丰度校正,才找回微生物信号。

3.3 物种分类策略

分类策略本质上分两大派:

  1. 有参考基因组派:先把读段比对到已知物种的基因组,然后统计每个基因组上的覆盖深度和覆盖比例。这种方法对已知物种效果好,但遇到新物种就抓瞎。
  2. 无需参考基因组派:用k-mer方法直接对读段进行分类,Kraken2就是代表。它把每条读段拆成短k-mer,然后去参考数据库里找精确匹配,再用最长公共祖先算法来确定分类级别。

我个人习惯优先使用Bowtie2进行初步比对,过滤掉宿主和低质量匹配后,再对剩余读段用Kraken2做精细分类。这两步组合起来,能覆盖宏基因组样本中大部分已知和未知微生物。

小技巧: 比对时的--very-sensitive-local参数虽然慢,但能提高多拷贝基因的检出率。我在处理重复序列较多的样本时,用这个参数总能有意外发现。

3.4 归纳总结实战

比对完成后的归纳总结,其实关键不在于跑哪个工具,而在于跑完之后你怎么整理。我见过很多同行跑完命令就把结果丢在那里不管了,这样容易漏掉重要信息。

下面是一个典型的Bowtie2比对命令:

bowtie2 -x /ref_db/hg38 -1 sample_R1.fastq -2 sample_R2.fastq \
    -S sample_aligned.sam \
    --very-sensitive \
    -p 16 \
    2> sample_bowtie2.log

这是Kraken2分类调用示例:

kraken2 --db /kraken_db/standard \
    --threads 16 \
    --output sample_kraken_output.txt \
    --report sample_kraken_report.txt \
    --use-names \
    sample_R1.fastq sample_R2.fastq

接着用Bracken做丰度校正:

bracken -d /kraken_db/standard \
    -i sample_kraken_report.txt \
    -o sample_bracken_species.txt \
    -r 150 \
    -l S
注意: 参数-r 150必须和你的实际读段长度一致。我上次帮同事排查问题,发现他跑出来结果异常,就是因为读段是100bp,但他写成了150bp。Bracken内部会根据读段长度调整k-mer覆盖度估计,参数不对结果白搭。

结果归纳时,我建议做三件事:

  • 生成物种丰度表(行是物种,列是样本)
  • 计算α多样性(Shannon指数、Chao1等)
  • 做β多样性分析(主坐标分析PCoA)

举个例子,从Bracken的物种丰度表里,你可以直接看每个物种的相对丰度。比如某环境样本中,假单胞菌属占35%,芽孢杆菌属占28%,这都是可以直接读出来的信息。

3.5 实战建议

你可能会问,这么多工具,我到底选哪个?别急,我给一个快速决策指南:

  1. 样本数量多(>50个),优先选Kraken2+Bracken,速度快,内存优化好
  2. 需要高精度分析,比如临床诊断,用Bowtie2+BWA二阶段比对,再做LCA分类
  3. 长读段样本(PacBio/Nanopore),用minimap2+Bracken的修改版

我曾经在处理一组100个临床样本的时候,一开始用了Bowtie2全文库比对,结果跑了一周都没跑完。后来换了Kraken2的快速模式,四小时搞定。选择工具真要考虑数据规模。

最后,别忘了比对后的日志文件。那里藏着比对率、多匹配率、未比对率等关键指标。如果比对率低于10%,说明样本质量或者数据库选择有问题,需要回头检查。

小经验: 有一次我在处理海洋样本,忽视了低丰度微生物的存在,结果分析时漏掉了关键物种。后来我改用更灵敏的比对参数,才找回那些信号。低丰度微生物往往是生物标志物的候选者,千万别忽略它们。

这一章就告一段落。希望这些实战经验能帮你少走弯路。比对分类做得好,后续分析就有了扎实的基础。

读段比对与物种分类归纳流程图 原始读段 质量控制 读段比对 物种分类 丰度估计 结果输出 比对工具:Bowtie2 / BWA / Kraken2 → 分类策略:k-mer比对 / LCA算法