背景
Kraken(Kraken2)默认的report格式并不利于后续的分析,在运行Kraken时我通常会使用--use-mpa-style
这个参数来生成像MetaPhlan(MetaPhlan2)格式的结果。但是如果想要做后续的分析(Bracken),就还要用到report格式的结果。之前我采用的策略是运行两次Kraken2:
### run it twice...
kraken2 \
--db $KRAKEN_DB \
--paired \
--threads 8 \
--output ${prefix}.out \
--report ${prefix}.kraken2.tsv \
$fq1 $fq2 \
--use-mpa-style
### run again for bracken
kraken2 \
--db $KRAKEN_DB \
--paired \
--threads 8 \
--report ${prefix}.kraken2 \
$fq1 $fq2 > /dev/null
经验上来讲Kraken很大一部分运行时间花在将数据库载入内存和硬盘读写(IO),对于大数据库、深度测序,会造成一定的资源浪费、并且CPU利用率不高。
最近发现了Bracken的作者开发的很有用的工具集。其中包含一个将Kraken report格式转换为mpa格式的输出的脚本kreport2mpa.py
。
使用kreport2mpa.py
简化kraken流程
下面是简化后的Kraken2流程:
kraken2 \
--db $KRAKEN_DB \
--paired \
--threads 8 \
--output ${prefix}.kraken2.out \
--report ${prefix}.kraken2.report \
$reads1 $reads2
### Convert kraken report to mpa file
kreport2mpa.py \
-r ${prefix}.kraken2.report \
-o ${prefix}.kraken2.tax \
--no-intermediate-ranks
shotgunmetagenomics-nf流程的develop branch已经更新了对应的module。
使用extract_kraken_reads.py
提取对应TaxID的序列
这个程序可以用来快速过滤出属于一个物种(或其他分类等级)的序列。
## 提取E. coli序列
extract_kraken_reads.py \
-t 562 \
-k ${prefix}.kraken2.report \
-s1 $reads1 -s2 $reads2 \
-o $extracted1 -o2 $extracted2 \
--fastq-output
参考
KrakenTools: https://github.com/jenniferlu717/KrakenTools