perl如何分离NR NT库
perl如何分离NR NT库
这篇文章主要为大家展示了“perl如何分离NR NT库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“perl如何分离NR NT库”这篇文章吧。
分离NR NT库,快速blast本地比对同源注释基因
我们需要对自己的基因做注释,需要blast同源比对NCBI当中的NR NT库;通常做无参转录组,会组织出10几万的unigene ,如果比对全库的话,就太浪费时间了,我们可以根据NCBI的分类数据库将数据库分开,可下载如下文件,然后利用下面的perl脚本就可以把NR或者NT库分开成小库:
wget-cftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nr.gzwget-cftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nt.gzwget-cftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/gi_taxid_nucl.dmp.gzwget-cftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/gi_taxid_prot.dmp.gzwget-cftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdump.tar.gz
perl脚本如下,由于脚本会把分类文件全部读入内存,所有脚本内存消耗较大,建议确保100G以上的内存空间:
#Thegi_taxid_nucl.dmpisabout160MBandcontainstwocolumns:thenucleotide'sgiandtaxid.#Thegi_taxid_prot.dmpisabout17MBandcontainstwocolumns:theprotein'sgiandtaxid.#Divisionsfile(division.dmp):#divisionid--taxonomydatabasedivisionid#divisioncde--GenBankdivisioncode(threecharacters)#divisionname--e.g.BCT,PLN,VRT,MAM,PRI...#comments#0|BCT|Bacteria||#1|INV|Invertebrates||#2|MAM|Mammals||#3|PHG|Phages||#4|PLN|PlantsandFungi||#5|PRI|Primates||#6|ROD|Rodents||#7|SYN|SyntheticandChimeric||#8|UNA|Unassigned|Nospeciesnodesshouldinheritthisdivisionassignment|#9|VRL|Viruses||#10|VRT|Vertebrates||#11|ENV|Environmentalsamples|Anonymoussequencescloneddirectlyfromtheenvironment|#nodes.dmpfileconsistsoftaxonomynodes.Thedescriptionforeachnodeincludesthefollowing#fields:#tax_id--nodeidinGenBanktaxonomydatabase#parenttax_id--parentnodeidinGenBanktaxonomydatabase#rank--rankofthisnode(superkingdom,kingdom,...)#emblcode--locus-nameprefix;notunique#divisionid--seedivision.dmpfile#inheriteddivflag(1or0)--1ifnodeinheritsdivisionfromparent#geneticcodeid--seegencode.dmpfile#inheritedGCflag(1or0)--1ifnodeinheritsgeneticcodefromparent#mitochondrialgeneticcodeid--seegencode.dmpfile#inheritedMGCflag(1or0)--1ifnodeinheritsmitochondrialgencodefromparent#GenBankhiddenflag(1or0)--1ifnameissuppressedinGenBankentrylineage#hiddensubtreerootflag(1or0)--1ifthissubtreehasnosequencedatayet#comments--free-textcommentsandcitationsdie"perl$0<division.dmp><nodes.dmp><gi_taxid_n/p.dmp><nr.fa/nt.fa><od>"unless(@ARGV==5);useMath::BigFloat;useBio::SeqIO;useBio::Seq;useData::Dumper;usePerlIO::gzip;useFileHandle;useCwdqw(abs_pathgetcwd);if($ARGV[3]=~/gz$/){open$Fa,"<:gzip","$ARGV[3]"ordie"$!";}else{open$Fa,"$ARGV[3]"ordie"$!";}my$od=$ARGV[4];$od||=getcwd;$od=abs_path($od);unless(-d$od){mkdir$od;}my$in=Bio::SeqIO->new(-fh=>$Fa,-format=>'Fasta');my%division2name=();openIN,"$ARGV[0]"ordie"$!";while(<IN>){chomp;my($taxid,$name)=split(/\s+\|\s+/);$division2name{$taxid}=$name;}close(IN);my%fout=();formy$i(keys%division2name){my$FO=FileHandle->new(">$od/$division2name{$i}.fa");my$out=Bio::SeqIO->new(-fh=>$FO,-format=>'Fasta');$fout{$i}=$out;}print"$ARGV[0]readed\n";#printDumper(\%fout);#printDumper(\%division2name);openIN,"$ARGV[1]"ordie"$!";my%taxid2division=();while(<IN>){chomp;my@tmp=split(/\s+\|\s+/);$taxid2division{$tmp[0]}=$tmp[4];#lastif$.>100;}close(IN);print"$ARGV[1]readed\n";my%gi2taxid=();openIN,"$ARGV[2]"ordie"$!";while(<IN>){chomp;my@tmp=split(/\s+/);$gi2taxid{$tmp[0]}=$tmp[1];#lastif$.>100;}close(IN);print"$ARGV[2]readed\n";#printDumper(\%gi2taxid);while(my$seq=$in->next_seq()){my$id=$seq->id;my($gi)=($id=~/gi\|(\d+)\|ref\|/);if(exists($gi2taxid{$gi})andexists($taxid2division{$gi2taxid{$gi}})){$fout{$taxid2division{$gi2taxid{$gi}}}->write_seq($seq);}else{print"unknowngi:$gi\n";}}formy$i(keys%fout){$fout{$i}->close();}
以上是“perl如何分离NR NT库”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
牵引力教育 你的PHP真的学好了?
PHP:HypertextPreprocessorPHP是一种HTML内嵌式的语言(类似IIS上的ASP...
-
PHP代码优化技巧总结
-
关于php免费学的几个网站?从初级到高级使用的资料
php的一个定义PHP又名超文本预处理器,是一种通用开源脚本语言。PHP主要适用于Web开发领域,语法吸收了C语言、Ja...
-
PHP到底能做什么,我大学里怎么没有PHP这科
-
perl如何提取GFF中所有转录本的位置信息
perl如何提取GFF中所有转录本的位置信息本篇内容主要讲解“pe...
-
perl怎么从gff文件中提取对应转录本ID的基因结构信息
perl怎么从gff文件中提取对应转录本ID的基因结构信息本篇内容...
-
perl怎么对组装结果中GAP左右批量设计引物
perl怎么对组装结果中GAP左右批量设计引物本文小编为大家详细介...
-
perl对应的gff文件格式是什么
perl对应的gff文件格式是什么本文小编为大家详细介绍“perl...
-
perl怎么提取基因组所有基因的启动子序列
perl怎么提取基因组所有基因的启动子序列这篇“perl怎么提取基...
-
perl怎么画韦恩图
perl怎么画韦恩图本篇内容主要讲解“perl怎么画韦恩图”,感兴...