之前無論是做blastn或者是blastp都是僅僅在blast結果中顯示了種屬信息,沒有添加詳細的信息,添加種屬信息很簡單,只要結果里生成XML格式,之后轉化成xls格式就OK:
blastn -query 16S_seq/996-SLM.new.fa -db $dbNT -out 996-SLM.new.fa.nt.xml -outfmt 5 -evalue 1e-05 -max_target_seqs 1 -num_threads 28 #以blastn 為例
但是如果想要添加詳細的物種信息,例如界門綱目科屬種,就需要利用到NCBI taxonomy數據庫。
還是以blastn,比對NT庫為例。
首先,我們需要找到accession號對應的ncbi里面的taxonomy id號,也就是taxid。
打開NCBI taxonomy地址,ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/,在accession2taxid下找到nucl_gb.accession2taxid.gz,這個文件記錄了所有核酸序列(非WGS或TSA)asscession對應的taxid。這里要說明一下,在18年甚至更久以前,NCBI是通過gi號與taxid對應起來,而如今,gi號已經慢慢淡出視野。
有了blastn結果,注意輸出-outfmt選擇6,我們可以使用grep命令抓取對應的taxid號:
grep '\bNR_043136.1\b' nucl_gb.accession2taxid | awk '{print $3}' #這里為了保證結果唯一,可添加個head -1輸出一條結果
有了taxid號后,借助一個很好用的TaxonKit工具,來獲取詳細信息。該工具之前記錄過,可在“如何從NT/NR數據庫中提取子庫”中找到。
與上文抓取到的taxid號,整合taxonkit命令生成詳細的物種信息:
grep '\bNR_043136.1\b' nucl_gb.accession2taxid | awk '{print $3}' | taxonkit lineage | taxonkit reformat -F | cut -f 3
最終得到:
Bacteria;Proteobacteria;Alphaproteobacteria;Sphingomonadales;Erythrobacteraceae;Qipengyuania;Qipengyuania vulgaris
該結果可以自行寫個perl或者python添加到blastn結果中。
taxonkit工具是用GO語言寫的,很好用,還會自動獲取更新,作者真大神。