NCBI的nr、nt库包含了基本上所有现有已知物种的序列信息,在进行blast时,由于数据库较大,搜索时间会比较长,同时可能会有其他物种信息干扰。因此我们可以根据NCBI提供的物种分类号对其进行拆分,下面以nr库进行举例说明。
以上文件下载完后最好进行md5校验,检查文件完整性。
gzip -d nr.gz mv nr nr.fa gzip -d prot.accession2taxid.gz gzip -d taxdump.tar.gz
makeblastdb -in nr.fa -dbtype prot -title nr -parse_seqids -hash_index -out nr -logfile nr.log
这里我们以病毒为例,病毒对应的Taxonomy id是10239
taxonkit list --ids 10239 --indent "" > Viruses.taxid # 提取病毒分类号 cat prot.accession2taxid |csvtk -t grep -f taxid -P Viruses.taxid |csvtk -t cut -f accession.version > Viruses.acc # 获取对应的accession号 # 也可以使用blast自带的脚本提取 get_species_taxids.sh -n Viruses # 获取Viruses的taxid,即10239 get_species_taxids.sh -t 10239 > Viruses.taxid
目前构建子库有两种方法:
# 方法一 blastdbcmd -db nr -entry_batch Viruses_nr.acc -out Viruses_nr.fa # 方法二 seqtk subseq nr.fa Viruses_nr.acc > Viruses_nr.fa
提取完后使用makeblastdb构建对应的子库即可。
但是这两种方法提取寄生虫(Parasitus,Taxonomy id:708403)的分类数据时,发现第一种方法提取的序列不全,不知道什么情况。
blastdb_aliastool -db nr -seqidlist Viruses_nr.acc -out Viruses -title "Viruses_nr"
简单的比对,省事的话,blast支持指定物种 taxids 来做比对,这样效果也不错:
## blastn 查询需要比对的污染物种库 taxids
# get_species_taxids.sh -n Bacteria #2
# get_species_taxids.sh -n Archaea #2157
# get_species_taxids.sh -n Viruses #10239
# 得到物种taxids 列表
# get_species_taxids.sh -t 2 >Bacteria.taxids
# get_species_taxids.sh -t 2157 >Archaea.taxids
# get_species_taxids.sh -t 10239 >Viruses.taxids
# 合并
# cat Bacteria.taxids Archaea.taxids Viruses.taxids >all.taxids
#blast 比对
blastn -query novel.fasta \
-db /share/work/database/blastdb/nt/nt \
-taxidlist all.taxids \
-out novel.nt.blast \
-evalue 1e-5 \
-perc_identity 0.8 \
-task megablast \
-outfmt '6 std qcovs stitle staxid' \
-max_target_seqs 5 -num_threads 10
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!