2014-09-02 44 views
1

當我運行以下;如何瀏覽Biopython Entrez efetch的結果?

from Bio.Blast import NCBIWWW 
from Bio import Entrez, SeqIO 
Entrez.email = "[email protected]" 
handle = Entrez.efetch(db="Protein", id= "75192198", rettype = "xml") 
record = Entrez.read(handle) 

我找回了一個真正難以搜索的「Bio.Entrez.Parser.DictionaryElement」。如果我想說的是得到氨基酸序列,我必須輸入類似的東西;

record["Bioseq-set_seq-set"][0]["Seq-entry_seq"]["Bioseq"]["Bioseq_inst"]["Seq-inst"]["Seq-inst_seq-data"]["Seq-data"]["Seq-data_iupacaa"]["IUPACaa"] 

我知道必須有一個更簡單的方法來索引這些結果中的元素。如果有人能幫我一把,我會非常感激。

回答

1

如果你想要的是序列,那麼不用以「xml」格式查詢它,而是通過更改rettype參數在(例如)FASTA format中查詢它。然後就像使用SeqIO解析它一樣簡單。

handle = Entrez.efetch(db="Protein", id= "75192198", rettype = "fasta") 

for r in SeqIO.parse(handle, "fasta"): 
    print r.id, r.seq 

這工作,因爲handle的內容是這樣的:

print handle.read() 
# >gi|75192198|sp|Q9MAH8.1|TCP3_ARATH RecName: Full=Transcription factor TCP3 
# MAPDNDHFLDSPSPPLLEMRHHQSATENGGGCGEIVEVQGGHIVRSTGRKDRHSKVCTAKGPRDRRVRLS 
# APTAIQFYDVQDRLGFDRPSKAVDWLITKAKSAIDDLAQLPPWNPADTLRQHAAAAANAKPRKTKTLISP 
# PPPQPEETEHHRIGEEEDNESSFLPASMDSDSIADTIKSFFPVASTQQSYHHQPPSRGNTQNQDLLRLSL 
# QSFQNGPPFPNQTEPALFSGQSNNQLAFDSSTASWEQSHQSPEFGKIQRLVSWNNVGAAESAGSTGGFVF 
# ASPSSLHPVYSQSQLLSQRGPLQSINTPMIRAWFDPHHHHHHHQQSMTTDDLHHHHPYHIPPGIHQSAIP 
# GIAFASSGEFSGFRIPARFQGEQEEHGGDNKPSSASSDSRH 

如果你還是想一些其他的元信息(如轉錄因子的基因中的結合位點,或者在分類學生物體),您也可以通過給出參數rettype="gb"並使用​​解析,以genbank格式下載它。您可以在示例here中瞭解更多信息。