[Biopython] Entrez.efetch
Olumide Olufuwa
olumideolufuwa at yahoo.com
Mon Apr 19 03:30:24 EDT 2010
Hello there,
I wrote a program, I am not awesome in biopython but this is what it does: The program code that
accepts user defined UNIPROT ID, retrieves the record using Entrez.efetch and then it
is parsed to obtain the Pubmed ID which i use to search Medline for Title, Abstract and other information about the entry.
The code is simply:
query_id=str(raw_input("please
enter your UNIPROT_ID: ")) #Request UNIPROT ID from user
Entrez.email="ludax5 at yahoo.com"
prothandle=Entrez.efetch(db="protein",
id=query_id, rettype="gb" #queries Protein DB with the given ID
#The
program returns an error here if a wrong ID is given. Details of the
error is given below
seq_record=SeqIO.read(prothandle, "gb")
for
record in seq_record.annotations['references']: # To obtain Pubmed id
from the seqrecord
key_word=record.pubmed_id
if key_word:
handle=Entrez.efetch(db="pubmed",
id=key_word, rettype="medline")
medRecords=Medline.parse(handle)
for rec in medRecords: #prints
title and Abstract
if rec.has_key('AB') and
rec.has_key('TI'):
print "TITLE: ",rec['TI']
print "ABSTRACT: ",rec['AB']
print ' '
THE
PROBLEM: The program gives an error if a wrong ID is entered or an ID
other than UNIPROT ID e.g PDB ID, GSS ID etc.
An Example Run with a wrong ID is shown below:
please enter your UNIPROT_ID:
1wio #A PDB ID is given instead
Traceback (most recent call last):
File "file.py", line 11, in
<module>
seq_record=SeqIO.read(prothandle, "gb")
File
"/usr/lib/python2.5/site-packages/Bio/SeqIO/__init__.py", line 522, in
read
raise ValueError("No records found in handle")
ValueError:
No records found in handle
I want to avoid this error, thus i
want the program to print "INCORRECT ID GIVEN" when a wrong or an
incorrect ID is given.
Thanks a lot.
lummy
More information about the Biopython
mailing list