原理
Kraken2将参考基因组数据库中的每个k-mer(默认k=35)映射到包含它的最低分类节点(LCA节点),构建k-mer→TaxID哈希表。查询时将reads连续k-mer与哈希表匹配,每条read根据命中k-mer集合的LCA推断分类学标签。内存指纹型数据库(~40 GB标准kraken2数据库)使分类速度达百万reads/分钟,比BLAST快1000倍。
步骤
1. 数据库准备
标准数据库(nt全库,~80 GB)适合通用病原检测。病毒专项数据库:
kraken2-build --download-library viral --db viral_kraken2_db
kraken2-build --build --db viral_kraken2_db --threads 8
病毒专项库仅~2 GB,分类速度更快且减少假阳性。
2. 分类运行
kraken2 --db viral_kraken2_db --paired host_removed_R1.fq host_removed_R2.fq --report kraken_report.txt --output kraken_output.txt --threads 8
--report生成层级分类摘要(从界到种),--output输出每条read的分类结果。
3. 丰度估计
bracken -d viral_kraken2_db -i kraken_report.txt -o bracken_report.txt -r 150 -l S
-r 150设定reads长度,-l S为种水平丰度估计。Bracken用贝叶斯模型纠正Kraken2中因reads分配到属而非种导致的种水平低估。
4. 结果可视化与解读
用Krona生成交互式饼图:ktImportTaxonomy bracken_report.txt -o taxonomy.krona.html。病原阳性判据:种水平reads>10条且覆盖率>50%。低于10 reads谨慎判断——可能是index hopping或实验室微量污染。
参数选择建议
| 参数 | 推荐值 | 说明 |
|---|---|---|
| --confidence | 0.0-0.1 | 置信度过滤,>0可减少假阳性 |
| 数据库 | 病毒专项+nt补充 | 病毒为主,少量宿主+细菌做对照 |
| Bracken -l | S (种水平) | 溯源需要种甚至株水平分辨率 |
FAQ
Q:Kraken2报大量假阳性怎么办?
A:三招——① 用--confidence 0.1过滤低置信度分类;② 在NCBI exclude taxonomy ID列表屏蔽已知污染物种;③ 设阴性对照样本平行分析,减去对照reads数。
Q:为什么同一个reads会assign到多个物种?
A:不同物种可能共享保守基因的k-mer。Kraken2用LCA算法处理——将reads分配至所有候选的共同祖先节点。用Bracken后处理可解决种水平歧义。
Q:病毒专项数据库够用吗?
A:已知病毒足够了。但新发病毒可能完全不在数据库中——此时用nt库+注意Unclassified比例。Unclassified>90%提示有未知序列存在,应做de novo组装和ORF预测。
参考文献
- Wood DE, Lu J, Langmead B. Improved metagenomic analysis with Kraken 2. Genome Biol. 2019;20:257. DOI: 10.1186/s13059-019-1891-0
- Lu J, Breitwieser FP, Thielen P, et al. Bracken: estimating species abundance in metagenomics data. PeerJ Comput Sci. 2017;3:e104. DOI: 10.7717/peerj-cs.104
