生信常用數據庫(四):NR數據庫分類搭建

前言

? ? 因為完整的NR數據庫下載下來后數據量非常龐大,在我們做序列比對的時候,尤其是很多很大的序列比對的時候,特別消耗計算資源和內存,最重要的是很耽誤分析的周期,因此將NR數據庫拆開搭建是必要的,小編這里拆為動物(animal)、植物(plant)、微生物(micro)

下載

? ? 分類搭建需要下載兩部分,一部分為NR數據庫,另一部分為Taxonomy數據庫下載,Taxonomy有兩個文件prot.accession2taxid和taxdump

(一)NR數據庫下載:Index of /blast/db/FASTA? ?#ascp使用見NCBI數據下載工具:aspera的安裝與使用 - 簡書

ascp?-i?~/asperaweb_id_dsa.openssh??-QTr?-l500m??anonftp@ftp.ncbi.nlm.nih.gov:/blast/db/FASTA/nr.gz ./? #下載

ascp?-i?~/asperaweb_id_dsa.openssh??-QTr?-l500m??anonftp@ftp.ncbi.nlm.nih.gov:/blast/db/FASTA/nr.gz.md5 ./? #下載

md5sum -cnr.gz.md5??#驗證MD5值

gunzip?-c nr.gz >nr.fa #解壓

(二)prot.accession2taxid下載地址 ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz

ascp -i ~/asperaweb_id_dsa.openssh -QTr -l500m anonftp@ftp.ncbi.nlm.nih.gov:/pub/taxonomy/accession2taxid/prot.accession2taxid.gz ./???#下載

ascp -i ~/asperaweb_id_dsa.openssh -QTr -l500m anonftp@ftp.ncbi.nlm.nih.gov:/pub/taxonomy/accession2taxid/prot.accession2taxid.gz.md5 ./???#下載

md5sum -c prot.accession2taxid.gz.md5? #驗證MD5值

gunzipprot.accession2taxid.gz??#解壓

? ? 該文件格式如下,accession.version對應nr.fa中的序列ID,taxid對應axdump中nodes.dmp文件第一列的ID,之后會用到

(三)axdump下載地址:

ascp -i ~/asperaweb_id_dsa.openssh -QTr -l500m anonftp@ftp.ncbi.nlm.nih.gov:/pub/taxonomy/taxdump.tar.gz ./??#下載

ascp -i ~/asperaweb_id_dsa.openssh -QTr -l500m anonftp@ftp.ncbi.nlm.nih.gov:/pub/taxonomy/taxdump.tar.gz.md5 ./??#下載

md5sum -c taxdump.tar.gz.md5??#驗證MD5值

tar -pzxvf?taxdump.tar.gz??#解壓

??該文件關注division.dmp和nodes.dmp,division.dmp內容如下,以“|”分割,分為四列,將數據庫分成了12類,第一列為分類號,詳細說明見readme.txt文件,小編的分類搭建基于此分類

? ? ? nodes.dmp文件格式如下,第一列對應prot.accession2taxid文件中的taxid,第五列對應division.dmp文件中的第一列分類號,詳細見readme.txt文件

分類數據庫搭建

????(1)根據prot.accession2taxid、division.dmp、nodes.dmp三個文件的對應關系,提取得到下邊一樣的對應文件(如accession2taxid.txt),以Plants and Fungi為例:

awk -F"\|" '{print$1"\t"$5}' nodes.dmp|awk '{if($2=="4")print$1}' >PLN.taxid

Python get.py?PLN.taxid?prot.accession2taxid?PLN.ID

get.py 腳本如下

上述PLN.ID為所有Plants and Fungi的ID,最終得到結果如下,已將prot.accession2taxid中所有的accession.version ID分類(有一部分不存在),相當于將NR數據庫的序列進行了分類

????(2)序列提取步驟:

? ??extract_seq.pl腳本代碼如下:

die "perl $0 <id> <fa> <OUT>" unless(@ARGV==3);

use Bio::SeqIO;

use Bio::Seq;

$in = Bio::SeqIO->new(-file => "$ARGV[1]" , -format => 'Fasta');

$out = Bio::SeqIO->new(-file => ">$ARGV[2]" , -format => 'Fasta');

my%keep=();

open IN ,"$ARGV[0]" or die "$!";

while(<IN>){

????chomp;

????next if /^#/;

????$keep{$_}=1;

}

close(IN);

while ( my $seq = $in->next_seq() ) {

????my($id,$sequence,$desc,$len)=($seq->id,$seq->seq,$seq->desc,$seq->length);

if(exists $keep{$id}){

$out->write_seq($seq);

????}

}

$in->close();

$out->close();

建庫使用

? ? 提取完序列后,使用blast建庫后就可以就行比對使用

makeblastdb -in?Plants.Fungi.nr.fa?-dbtype prot

makeblastdb -in??animals.nr.fa?-dbtype prot

makeblastdb -in??micro.nr.fa??-dbtype prot?


其他用途說明

? ??Taxonomy數據庫數據庫還可以進行其他多樣化的分類,有興趣可以去官網研究,小編能力有限,不再述說

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。