如何导航Biopython Entrez efetch的结果?

时间:2014-09-02 12:55:38

标签: python python-2.7 biopython ncbi

当我运行以下内容时;

from Bio.Blast import NCBIWWW
from Bio import Entrez, SeqIO
Entrez.email = "A.N.Other@example.com"
handle = Entrez.efetch(db="Protein", id= "75192198", rettype = "xml")
record = Entrez.read(handle)

我找回了#34; 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 个答案:

答案 0 :(得分:2)

如果您想要的是序列,那么而不是在" 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格式下载它。用"gb"解析。您可以在示例here中了解有关详情。