Как мне перемещаться по результатам выборки Biopython Entrez?

Когда я запускаю следующее;

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"]

Я знаю, что должен быть более простой способ индексации элементов в этих результатах. Если кто-то там может протянуть мне руку с этим, я был бы очень признателен.


person James Draper    schedule 02.09.2014    source источник


Ответы (1)


Если вам нужна последовательность, то вместо того, чтобы запрашивать ее в формате «xml», запросите ее (например) в формат FASTA, изменив аргумент rettype. Затем достаточно проанализировать его с помощью 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". Вы можете узнать больше об этом в примере здесь.

person David Robinson    schedule 02.09.2014