当我运行以下内容时;
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"]
我知道必须有一种更简单的方法来索引这些结果中的元素。如果那里的任何人可以帮我一把,我非常感激。
答案 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中了解有关详情。