kraken2就不介绍了,是一款挺好用的快速比对宏基因组软件。
现在有了nt数据库下面animal的序列,那么如何构建kraken2的数据库呢?
首先推荐把kraken2安装到单独的conda环境中,而不是把kraken2直接安装
conda install kraken2 #不推荐
这种虽然方便,但是很可能与其它软件产生环境变量冲突
看了看kraken2的说明书,它提供”archaea”, “bacteria”, “plasmid”, “viral”, “human”, “fungi”, “plant”, “protozoa”, “nr”, “nt”, “env_nr”, “env_nt”, “UniVec”, “UniVec_Core”数据库,但确实没有动物库
那么自己构建一个库吧。
1 首先利用kraken2自身下载数据库的功能,下载taxonomy分类库
kraken2-build --download-taxonomy --threads 24 --db $DBNAME
2 添加nt.animal.fa
kraken2-build --add-to-library nt.animal.fa --db $DBNAME
这一步就会报错,因为nt.animal.fa库里有一些奇奇怪怪的accession,例如4W1Z_7
其实这些accession也没问题,但kraken2就是识别不出来,好吧,那只能更改源代码
找到kraken2安装的目录,修改一下libexec/scan_fasta_file.pl
注释掉die那一行,就OK了,吐槽一下kraken2编程真严谨,如果是我这句估计都不写
另外,需要注意的是,nt.animal.fa库里有些很短的序列,可能只有几十bp,也可以写个perl把这些序列删了,我试了试,152G的文件变成了149G,似乎用处不大
3 构建个性化库
kraken2-build --build --db $DBNAME #当时自己好像没加线程,以后试试加线程
4 运行kraken2
kraken2 --db $DB --threads 20 --paired ../s-592_NDSW56977_1.fq ../s-592_NDSW56977_2.fq --report report --output output --classified-out cseqs#.fq --unclassified-out de-s-592_NDSW56977#.fq #kraken2好处就是还能把未分类的序列paired,真优秀,这些序列就是去除宿主的序列了