2014-09-02 3 views
1

Когда я запускаю следующее;Как мне перемещаться по результатам биофайла Entrez efetch?

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

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

ответ

1

Если вам нужна последовательность, то вместо запроса в формате «xml» запросите его (например) FASTA format, изменив аргумент 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 

Если вы все еще хотите некоторые другие мета-информации (например, сайтов связывания транскрипционных факторов в пределах гена, или систематике организм), вы также можете скачать его в формате genbank, указав аргумент rettype="gb" и разобравшись с "gb". Вы можете узнать больше об этом в примере here.