利用python自NCBI下載fasta和genbank文件

第一部分

自習(xí)室網(wǎng)絡(luò)出奇的差,有時(shí)想打開NCBI網(wǎng)頁下載文件時(shí)會(huì)一直在那里轉(zhuǎn)圈圈,本來很簡(jiǎn)單的一件事有時(shí)卻要浪費(fèi)好長時(shí)間;恰好最近在學(xué)習(xí) Bioinformatics with python cookbook 這本書里的內(nèi)容,其中一小部分提到利用Biopython訪問genbank數(shù)據(jù)庫,可以非常方便的解決自己在網(wǎng)絡(luò)情況不佳時(shí)自NCBI下載fasta和genbank文件的問題,簡(jiǎn)單記錄自己用到的代碼。
以下載http://biopython-cn.readthedocs.io/zh_CN/latest/cn/chr17.html教程中提到的鼠疫桿菌 Yersinia pestis biovar Microtus 的pPCP1質(zhì)粒元數(shù)據(jù)文件NC_005816.gb為例

from Bio import Entrez
from Bio import SeqIO
import os
Entrez.email = "mingyan24@126.com"
hd1 = Entrez.efetch(db="nucleotide",id=['NC_005816'],rettype='gb')
seq = SeqIO.read(hd1,'gb')
fw = open('NC_005816.gb','w')
SeqIO.write(seq,fw,'gb')
fw.close()
os.getcwd()

下載好的文件就存放在os.getcwd()輸出的路徑下,下載fasta格式的序列只需要將gb更改為fasta即可(郵箱地址可以替換為自己的郵箱)
下載fasta序列

from Bio import Entrez
from Bio import SeqIO
import os
Entrez.email = "mingyan24@126.com"
hd1 = Entrez.efetch(db="nucleotide",id=['NC_005816'],rettype='fasta')
seq = SeqIO.read(hd1,'fasta')
fw = open('NC_005816.fasta','w')
SeqIO.write(seq,fw,'fasta')
fw.close()
os.getcwd()

第二部分:將genbank格式文件轉(zhuǎn)換成gff3格式文件

最近發(fā)現(xiàn)了一個(gè)python模塊 bcbio-gff 用來解析gff3文件(解析gff3還沒有想明白怎么用)。同時(shí)可以非常方便的將genbank格式的文件轉(zhuǎn)換為gff3格式,暫時(shí)還沒有想到會(huì)有什么用處,不過以后可能會(huì)用到,記錄在這里
自己windows電腦上安裝的是Anaconda3,所以直接在dos命令下通過easy_install bcbio-gff即可安裝

easy_install bcbio-gff

以上一步下載的genbank文件為例,轉(zhuǎn)換成gff3格式

from BCBio import GFF
from Bio import SeqIO
if_file = "NC_005816.gb"
out_file = "NC_005813.gff3"
in_handle = open(in_file)
out_handle = open(out_file,"w")
GFF.write(SeqIO.parse(in_handle,'genbank'),out_handle)
in_handle.close()
out_handle.close()

最后推薦一個(gè)網(wǎng)址,下載pdf格式的電子書可以嘗試一下

www.ebook777.com

更新

20181201

第三部分:從NCBI批量下載fasta格式的葉綠體基因組序列

自己之前寫了腳本完成這個(gè)任務(wù),主要使用的是biopython模塊,最近在學(xué)習(xí)Dendropy這個(gè)模塊,也可以完成同樣的事情,簡(jiǎn)單記錄(應(yīng)該更新在簡(jiǎn)單的python腳本批量下載葉綠體基因組序列這篇文章下的,但是因?yàn)閷戇@篇文章的時(shí)候沒有用markdown語法(因?yàn)槟菚r(shí)還沒有學(xué)會(huì)markdown的基本語法),所以更新的時(shí)候也用不了markdown)

  • 還是將accession number整理到文件里,一行一個(gè)
KY818915
KX499859
KX499861
KX499863
MH394390
NC_031163
NC_034909
NC_035625
NC_035671
NC_036368
  • 腳本
import sys
from dendropy.interop import genbank
fr = open(sys.argv[1],'r')
acc_num = []
for line in fr:
    acc_num.append(line.strip())
fr.close()
print(acc_num)
print(str(len(acc_num))+" cp genome will be downloaded!")
gb_dna = genbank.GenBankDna(ids = acc_num)
char_matrix = gb_dna.generate_char_matrix(label_components = ["organism"])
print(char_matrix.write_to_path("Malus_cp_genome.fasta",schema="fasta"))
print("The download process is done!")
  • 用法
python .\Download_cp_genome_from_NCBI_using_Dendropy.py .\accession_number.txt
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容