前言
? ? 因?yàn)橥暾腘R數(shù)據(jù)庫下載下來后數(shù)據(jù)量非常龐大豌鹤,在我們做序列比對(duì)的時(shí)候奉芦,尤其是很多很大的序列比對(duì)的時(shí)候怠蹂,特別消耗計(jì)算資源和內(nèi)存蓝晒,最重要的是很耽誤分析的周期,因此將NR數(shù)據(jù)庫拆開搭建是必要的幻妓,小編這里拆為動(dòng)物(animal)蹦误、植物(plant)、微生物(micro)
下載
? ? 分類搭建需要下載兩部分,一部分為NR數(shù)據(jù)庫强胰,另一部分為Taxonomy數(shù)據(jù)庫下載舱沧,Taxonomy有兩個(gè)文件prot.accession2taxid和taxdump
(一)NR數(shù)據(jù)庫下載:Index of /blast/db/FASTA? ?#ascp使用見NCBI數(shù)據(jù)下載工具: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??#驗(yàn)證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? #驗(yàn)證MD5值
gunzipprot.accession2taxid.gz??#解壓
? ? 該文件格式如下,accession.version對(duì)應(yīng)nr.fa中的序列ID偶洋,taxid對(duì)應(yīng)axdump中nodes.dmp文件第一列的ID熟吏,之后會(huì)用到
(三)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??#驗(yàn)證MD5值
tar -pzxvf?taxdump.tar.gz??#解壓
??該文件關(guān)注division.dmp和nodes.dmp,division.dmp內(nèi)容如下涡真,以“|”分割分俯,分為四列肾筐,將數(shù)據(jù)庫分成了12類哆料,第一列為分類號(hào),詳細(xì)說明見readme.txt文件吗铐,小編的分類搭建基于此分類
? ? ? nodes.dmp文件格式如下东亦,第一列對(duì)應(yīng)prot.accession2taxid文件中的taxid,第五列對(duì)應(yīng)division.dmp文件中的第一列分類號(hào)唬渗,詳細(xì)見readme.txt文件
分類數(shù)據(jù)庫搭建
????(1)根據(jù)prot.accession2taxid典阵、division.dmp、nodes.dmp三個(gè)文件的對(duì)應(yīng)關(guān)系镊逝,提取得到下邊一樣的對(duì)應(yīng)文件(如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,最終得到結(jié)果如下撑蒜,已將prot.accession2taxid中所有的accession.version ID分類(有一部分不存在)歹啼,相當(dāng)于將NR數(shù)據(jù)庫的序列進(jìn)行了分類
????(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建庫后就可以就行比對(duì)使用
makeblastdb -in?Plants.Fungi.nr.fa?-dbtype prot
makeblastdb -in??animals.nr.fa?-dbtype prot
makeblastdb -in??micro.nr.fa??-dbtype prot?
其他用途說明
? ??Taxonomy數(shù)據(jù)庫數(shù)據(jù)庫還可以進(jìn)行其他多樣化的分類座菠,有興趣可以去官網(wǎng)研究狸眼,小編能力有限,不再述說