1

当我运行以下命令时;

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)

我得到了一个很难搜索的“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"]

我知道必须有一种更简单的方法来索引这些结果中的元素。如果有人可以帮我解决这个问题,我将非常感激。

4

1 回答 1

2

如果您想要的是序列,那么不要以“xml”格式查询它,而是通过更改参数以(例如) FASTA 格式查询它。然后就像使用SeqIOrettype解析它一样简单。

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"您可以在此处的示例中了解更多信息。

于 2014-09-02T13:00:10.303 回答