生物信息学
20210110_NCBI批量下载fasta文件方法
20210110_NCBI批量下载fasta文件
Entrez Direct是一种命令行界面的工具,它是NCBI(美国国家生物技术信息中心)提供的一种工具,可用于直接从NCBI数据库检索和下载生物信息学数据。Entrez Direct可以访问NCBI数据库中的多种数据,例如PubMed、GenBank、RefSeq、Gene、UniGene、HomoloGene和Protein等。使用Entrez Direct,用户可以通过命令行方式轻松地执行高级搜索、过滤和下载等操作。
Entrez Direct由Perl语言编写,可以在Linux、Unix和Mac OS X操作系统上运行。它支持多种命令和选项,用户可以根据自己的需要进行组合使用,以实现各种数据检索和处理操作。例如,用户可以使用Entrez Direct进行全文搜索、获取文章摘要、下载指定序列、比较序列、进行序列格式转换、过滤结果、提取数据等操作。
需要注意的是,Entrez Direct需要一定的编程技能和命令行操作经验。但是,对于需要频繁访问NCBI数据库的生物信息学研究人员和开发者来说,Entrez Direct是一种非常有用的工具。
================================================================
批量下载方法一:
================================================================
from Bio import Entrez, SeqIO
# 设置Entrez
Entrez.email = "your.email@example.com" # 请使用您自己的电子邮件地址
db = "nuccore" # 数据库名称,这里选择核酸序列数据库
# 按ID下载fasta文件
id_list = ["ID1", "ID2", "ID3"] # 要下载的NCBI ID列表
handle = Entrez.efetch(db=db, id=id_list, rettype="fasta", retmode="text")
records = list(SeqIO.parse(handle, "fasta"))
handle.close()
# 保存为本地文件
output_file = "output.fasta"
SeqIO.write(records, output_file, "fasta")
请将"your.email@example.com"替换为您自己的电子邮件地址,并将id_list替换为您要下载的NCBI ID列表。运行脚本后,您将获得一个名为output.fasta的fasta文件,其中包含所有指定ID的序列。
================================================================
批量下载方法二:
================================================================
(base) root@dell-server:/home# docker pull
(base) root@dell-server:/home# vim mango_ncbi_mito_id.txt
(base) root@dell-server:/home# cat mango_ncbi_mito_id.txt
NC_035239.1
CM021858.1
NC_066470.1
NC_057290.1
NC_066471.1
(base) root@dell-server:/home# python batch_download.py mango_ncbi_chlo_id.txt manggo_chlo_ncbi_reference.fasta
(base) root@dell-server:/home# cat batch_download.py
import os
import sys
# python batch_download.py mango_ncbi_mito_id.txt manggo_mito_ncbi_reference.fasta
filein = sys.argv[1]
fileout = sys.argv[2]
os.system('rm -rf %s'%(fileout))
for eles in open(filein).read().strip().split("\n") :
os.system('docker run -v /var/run/docker.sock:/var/run/docker.sock -v `pwd`:/data -w /data pegi3s/entrez-direct efetch -db=nuccore -format=fasta -id=%s >> %s '%(eles,fileout))
print(eles)
os.system('cut -d " " -f 1 %s > tmp.txt && mv tmp.txt %s '%(fileout,fileout))