[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