生信常用数据库(四):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  [email protected]:/blast/db/FASTA/nr.gz ./  #下载

ascp -i ~/asperaweb_id_dsa.openssh  -QTr -l500m  [email protected]:/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 [email protected]:/pub/taxonomy/accession2taxid/prot.accession2taxid.gz ./   #下载

ascp -i ~/asperaweb_id_dsa.openssh -QTr -l500m [email protected]:/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 [email protected]:/pub/taxonomy/taxdump.tar.gz ./  #下载

ascp -i ~/asperaweb_id_dsa.openssh -QTr -l500m [email protected]:/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 " 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(){

    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数据库数据库还可以进行其他多样化的分类,有兴趣可以去官网研究,小编能力有限,不再述说

你可能感兴趣的:(生信常用数据库(四):NR数据库分类搭建)