NCBI如何批量下载数据
这篇文章给大家分享的是有关NCBI如何批量下载数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
NCBI批量搜索、下载序列
脚本代码:
fromBioimportEntrezimportos,sysfromBio.SeqimportSeqfromBio.SeqRecordimportSeqRecordfromBio.SeqFeatureimportSeqFeature,FeatureLocationfromBioimportSeqIOimportsys,os,argparse,os.path,re,math,time'''database:['pubmed','protein','nucleotide','nuccore','nucgss','nucest','structure','genome','books','cancerchromosomes','cdd','gap','domains','gene','genomeprj','gensat','geo','gds','homologene','journals','mesh','ncbisearch','nlmcatalog','omia','omim','pmc','popset','probe','proteinclusters','pcassay','pccompound','pcsubstance','snp','taxonomy','toolkit','unigene','unists']'''parser=argparse.ArgumentParser(description='Thisscriptisusedtofastafromncbi')parser.add_argument('-t','--term',help='inputsearchterm:https://www.ncbi.nlm.nih.gov/books/NBK3837/#_EntrezHelp_Entrez_Searching_Options_',required=True)parser.add_argument('-d','--database',help='Pleaseinputdatabasetosearchnucleotideorproteindefaultnucleotide',default='nucleotide',required=False)parser.add_argument('-r','--rettype',help='returntypefastaorgbdefaultgb',default="gb",required=False)parser.add_argument('-o','--out_dir',help='Pleaseinputout_putdirectorypath',default=os.getcwd(),required=False)parser.add_argument('-n','--name',default='seq',required=False,help='Pleasespecifytheoutput,seq')args=parser.parse_args()dout=''ifos.path.exists(args.out_dir):dout=os.path.abspath(args.out_dir)else:os.mkdir(args.out_dir)dout=os.path.abspath(args.out_dir)output_handle=open(dout+'/'+args.name+'.%s'%args.rettype,"w")Entrez.email="huangls@biomics.com.cn"#AlwaystellNCBIwhoyouare#handle=Entrez.efetch(db="nucleotide",id="EU490707",rettype="gb",retmode="text")#print(handle.read())handle=Entrez.esearch(db=args.database,term=args.term,idtype="acc")record=Entrez.read(handle)foriinrecord['IdList']:printi+'\n'handle=Entrez.efetch(db=args.database,id=i,rettype=args.rettype,retmode="text")#print(handle.read())record=SeqIO.read(handle,args.rettype)SeqIO.write(record,output_handle,args.rettype)output_handle.close()
帮助文档:
1python/share/work/huangls/piplines/01.script/search_NCBI.py-h2usage:search_NCBI.py[-h]-tTERM[-dDATABASE][-rRETTYPE][-oOUT_DIR]3[-nNAME]4Thisscriptisusedtofastafromncbi5optionalarguments:6-h,--helpshowthishelpmessageandexit7-tTERM,--termTERMinputsearchterm:https://www.ncbi.nlm.nih.gov/books8/NBK3837/#_EntrezHelp_Entrez_Searching_Options_9-dDATABASE,--databaseDATABASE10Pleaseinputdatabasetosearchnucleotideorprotein11defaultnucleotide12-rRETTYPE,--rettypeRETTYPE13returntypefastaorgbdefaultgb14-oOUT_DIR,--out_dirOUT_DIR15Pleaseinputout_putdirectorypath16-nNAME,--nameNAMEPleasespecifytheoutput,seq
使用说明:
先来看一个示例:
pythonsearch_NCBI.py-t"Polygonatum[Organism]ANDchloroplastANDPsaA"-dprotein-rfasta-npsaA
该命令是从NCBI的蛋白质数据库下载所有黄精属中叶绿体上的PsaA基因的蛋白序列,输出格式为fasta。
-t:后面跟的是搜索条件,用双引号引起来。我们可以用布尔运算符和索引构建器更精确查找内容。先来介绍下布尔运算符,布尔运算符提供了一种生成精确查询的方法,可以产生定义良好的结果集。布尔运算符主要有3个,分别是AND、OR和NOT。它们的工作原理如下:
AND运算符是必须大写的,而OR和NOT不是必须的,但是建议三种运算符都用大写。
布尔运算符的运算顺序都是从左往右,例如:
promotersORresponseelementsNOThumanANDmammals
表示查询除人类外的哺乳类动物中的promoters或response elements。而使用括号可以改变运算顺序,例如:
promotersORresponseelementsNOT(humanORmouse)ANDmammals
表示查询除人类和老鼠外的哺乳类动物中的promoters或response elements。
"[ ]"里的内容是索引构建器,可以解释前面搜索词的类型,如示例中的[Organism]表示前面的Polygonatum是一个有机体。下面是一些其它示例:
此外,还能进行范围的搜索,例如序列长度和发表日期。
-d:后面跟搜索数据库,nucleotide 或 protein,默认nucleotide。
-r:后面跟输出格式,fasta 或 gb(genbank),默认gb。
-o:后面跟输出目录。
-n:后面跟输出文件名前缀。
从genbank提取序列
再给大家安利一个python程序,该程序可以根据提供的基因名列表,从genbank文件中提取基因组序列、有关基因的cds和蛋白序列、基因的位置信息,分别存放在*.gb.genome.fa 、 *.gb.cds.fa 、 *.gb.pep.fa 、 *.gb.cds_location.txt 文件中。
脚本代码:
importsys,os,argparse,os.path,globfromBioimportSeqIOparser=argparse.ArgumentParser(description='Thisscriptwasusedtogetfafromgenbankfile;*.faa=pepfile;*.ffn=cdsfile;*fna=genomefafile')parser.add_argument('-i','--id',help='Pleaseinputgenelistfile',required=True)parser.add_argument('-m','--in_dir',help='Pleaseinputin_putdirectorypath;defaultcwd',default=os.getcwd(),required=False)parser.add_argument('-o','--out_dir',help='Pleaseinputout_putdirectorypath;defaultcwd',default=os.getcwd(),required=False)args=parser.parse_args()dout=''din=''ifos.path.exists(args.in_dir):din=os.path.abspath(args.in_dir)ifos.path.exists(args.out_dir):dout=os.path.abspath(args.out_dir)else:os.mkdir(args.out_dir)dout=os.path.abspath(args.out_dir)args.id=os.path.abspath(args.id)gene={}input=open(args.id,"r")forlineininput:line=line.strip()gene[line]=linegenbank=glob.glob(din+"/*gb")forgdkfileingenbank:name=os.path.basename(gdkfile)input_handle=open(gdkfile,"r")pep_file=dout+'/'+name+".pep.fa"genePEP=open(pep_file,"w")cds_file=dout+'/'+name+".cds.fa"geneCDS=open(cds_file,"w")gene_file=dout+'/'+name+".genome.fa"gene_handle=open(gene_file,"w")cds_locat_file=dout+'/'+name+".cds_location.txt"cds_locat_handle=open(cds_locat_file,"w")forseq_recordinSeqIO.parse(input_handle,"genbank"):print"DealingwithGenBankrecord%s"%seq_record.idgene_handle.write(">%s%s\n%s\n"%(seq_record.id,seq_record.description,seq_record.seq))forseq_featureinseq_record.features:geneSeq=seq_feature.extract(seq_record.seq)ifseq_feature.type=="CDS":assertlen(seq_feature.qualifiers['translation'])==1ifgene.has_key(seq_feature.qualifiers['gene'][0]):genePEP.write(">%s\n%s\n"%(seq_feature.qualifiers['gene'][0],#seq_record.name,seq_feature.qualifiers['translation'][0]))geneCDS.write(">%s\n%s\n"%(seq_feature.qualifiers['gene'][0],#seq_record.name,geneSeq))cds_locat_handle.write(">%slocation%s\n"%(seq_feature.qualifiers['gene'][0],seq_feature.location))input_handle.close()genePEP.close()geneCDS.close()
帮助文档:
python/share/work/wangq/script/genbank/genbank.pyusage:get_data_NCBI.py-iIDLIST-oOUT_DIR-mIN_DIRoptionalarguments:-iIDLIST,--idlistIDLISTPleasegenenamelistfile-mIN_DIR,--in_dirIN_DIRPleaseinputcompletein_putdirectorypath-oOUT_DIR,--out_dirOUT_DIRPleaseinputcompleteout_putdirectorypath例:python/share/work/wangq/script/genbank/genbank.py-iid.txt-m/share/nas1/wangq/work/NCBI_download-o/share/nas1/wangq/work/NCBI_download
注意:-m 后输入的是一目录,该目录下可以有多个 genbank 文件,程序会批量读取。-i 后跟需提取的基因名称列表,格式如下:
rpl2psbAndhDndhF
genbank转gff3
最后一个脚本bp_genbank2gff3.pl,此脚本可以根据 genbank 文件生成 gff3 文件,由Bioperl提供,安装并配置过Bioperl就可以直接使用。用法也很简单,bp_genbank2gff3.pl 后跟genbank 文件就可以啦!
bp_genbank2gff3.plfilename(s)
感谢各位的阅读!关于“NCBI如何批量下载数据”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。