当我运行以下内容时;
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"]
我知道必须有一种更简便的方法来为这些结果中的元素建立索引。如果在那里有人可以帮助我,我将非常感激。
最佳答案
如果需要的是序列,则可以通过更改rettype
参数而不是以“ xml”格式查询它,而以(例如)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"
并使用"gb"
进行解析,以genbank格式下载它。 。您可以在示例here中了解有关此内容的更多信息。关于python - 如何浏览Biopython Entrez提取的结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25623954/