千家信息网

NCBI如何批量下载数据

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关NCBI如何批量下载数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。NCBI批量搜索、下载序列脚本代码:from Bio import Entr
千家信息网最后更新 2026年11月01日NCBI如何批量下载数据

这篇文章给大家分享的是有关NCBI如何批量下载数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

NCBI批量搜索、下载序列

脚本代码:

from Bio import Entrezimport os,sysfrom Bio.Seq import Seqfrom Bio.SeqRecord import SeqRecordfrom Bio.SeqFeature import SeqFeature, FeatureLocationfrom Bio import SeqIOimport sys, 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='This script is used to fasta from ncbi ')parser.add_argument('-t','--term',help='input search  term : https://www.ncbi.nlm.nih.gov/books/NBK3837/#_EntrezHelp_Entrez_Searching_Options_',required=True)parser.add_argument('-d','--database',help='Please input database to search nucleotide or protein  default nucleotide',default = 'nucleotide',required=False)parser.add_argument('-r','--rettype',help='return type fasta or gb default gb',default = "gb",required=False)parser.add_argument('-o','--out_dir',help='Please input  out_put directory path',default = os.getcwd(),required=False)parser.add_argument('-n','--name',default ='seq',required=False,help='Please specify the output, seq')args = parser.parse_args()dout=''if os.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"     # Always tell NCBI who you are#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)for i in record['IdList']:    print i+'\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 -h 2usage: search_NCBI.py [-h] -t TERM [-d DATABASE] [-r RETTYPE] [-o OUT_DIR] 3                      [-n NAME] 4This script is used to fasta from ncbi 5optional arguments: 6  -h, --help            show this help message and exit 7  -t TERM, --term TERM  input search term : https://www.ncbi.nlm.nih.gov/books 8                        /NBK3837/#_EntrezHelp_Entrez_Searching_Options_ 9  -d DATABASE, --database DATABASE10                        Please input database to search nucleotide or protein11                        default nucleotide12  -r RETTYPE, --rettype RETTYPE13                        return type fasta or gb default gb14  -o OUT_DIR, --out_dir OUT_DIR15                        Please input out_put directory path16  -n NAME, --name NAME  Please specify the output, seq

使用说明:

先来看一个示例:

python search_NCBI.py -t "Polygonatum[Organism] AND chloroplast AND PsaA" -d protein -r fasta -n psaA

该命令是从NCBI的蛋白质数据库下载所有黄精属中叶绿体上的PsaA基因的蛋白序列,输出格式为fasta。

-t:后面跟的是搜索条件,用双引号引起来。我们可以用布尔运算符和索引构建器更精确查找内容。先来介绍下布尔运算符,布尔运算符提供了一种生成精确查询的方法,可以产生定义良好的结果集。布尔运算符主要有3个,分别是AND、OR和NOT。它们的工作原理如下:

AND运算符是必须大写的,而OR和NOT不是必须的,但是建议三种运算符都用大写。

布尔运算符的运算顺序都是从左往右,例如:

promoters OR response elements NOT human AND mammals

表示查询除人类外的哺乳类动物中的promoters或response elements。而使用括号可以改变运算顺序,例如:

promoters OR response elements NOT (human OR mouse)AND mammals

表示查询除人类和老鼠外的哺乳类动物中的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 文件中。

脚本代码:

import sys, os, argparse, os.path ,globfrom Bio import SeqIOparser = argparse.ArgumentParser(description='This script was used to get fa from genbank file; *.faa =pep file; *.ffn=cds file; *fna=genome fa file')parser.add_argument('-i','--id',help='Please input gene list file',required=True)parser.add_argument('-m','--in_dir',help='Please input  in_put directory path;default cwd',default = os.getcwd(),required=False)parser.add_argument('-o','--out_dir',help='Please input  out_put directory path;default cwd',default = os.getcwd(),required=False)args = parser.parse_args()dout=''din=''if os.path.exists(args.in_dir):    din=os.path.abspath(args.in_dir)if os.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")for line in input :    line = line.strip()    gene[line] = linegenbank=glob.glob(din+"/*gb")for gdkfile in genbank :    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")    for seq_record in SeqIO.parse(input_handle, "genbank") :        print "Dealing with GenBank record %s" % seq_record.id        gene_handle.write(">%s %s\n%s\n" % (            seq_record.id,            seq_record.description,            seq_record.seq))        for seq_feature in seq_record.features :            geneSeq = seq_feature.extract(seq_record.seq)            if seq_feature.type=="CDS" :                assert len(seq_feature.qualifiers['translation'])==1                if gene.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(">%s location %s\n" % (                        seq_feature.qualifiers['gene'][0],                        seq_feature.location ))    input_handle.close()    genePEP.close()    geneCDS.close()

帮助文档:

python /share/work/wangq/script/genbank/genbank.py usage: get_data_NCBI.py -i IDLIST -o OUT_DIR -m IN_DIRoptional arguments:  -i IDLIST, --idlist IDLIST                        Please gene name list file  -m IN_DIR, --in_dir IN_DIR                        Please input complete in_put directory path  -o OUT_DIR, --out_dir OUT_DIR                        Please input complete out_put directory path例:python /share/work/wangq/script/genbank/genbank.py -i id.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.pl  filename(s)

感谢各位的阅读!关于"NCBI如何批量下载数据"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

运算 文件 运算符 基因 序列 布尔 搜索 数据 内容 脚本 输出 格式 目录 示例 程序 蛋白 帮助 查询 精确 人类 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网络科技 互联网科技股 互联网公司 科技公司 安徽鑫晟辉互联网科技 上海致骋互联网科技 哈尔滨屹滨互联网科技有限公司 互联网科技大奖都有哪些公司 中国科技创新与世界互联网大会 内蒙古九一互联网科技 高科技互联网套路 卡尔迅互联网科技有限公司 互联网与数字科技关系 南京一网一红互联网科技有限公司 上海万顺科技互联网有限公司招聘 北京互联网科技类企业分布 广州三三互联网科技有限公司 互联网的科技体现在哪里 恒生科技指数 中概互联网 恒生互联网科技趋势 华服互联网科技怎么样 北京路客互联网科技有限公司 河南真二互联网科技有限公司 互联网科技logo 科技大学互联网专业好不好 互联网和高科技公司 欧洲十大科技互联网公司 广州恒生互联网科技有限 武汉健翔互联网络科技有限公司 雨阳互联网卡科技有限公司
0