[Bioperl-l] A couple Eutilities questions

Warren Gallin wgallin at ualberta.ca
Thu Sep 27 22:51:12 EDT 2007

I've just started using Bio::DB::Eutilities and I have encountered  
two things that seem like problems.

I am using the latest (retrieved Wednesday September 26, 2007) CVS  
version, running in an Apple Xserver.

Problem 1:  When I execute the following code:

#Create new EUTILS object for retrieving sets of entries, given an  
array of accession numbers
	my $gpeptfactory = Bio::DB::EUtilities -> new(	-eutil => 'efetch',
													-db => 'protein',
													-rettype =>'genbank',
													-id => \@pro_acc) ;
	my $file = 'temp_hold.gb';
	$gpeptfactory -> get_Response(-file => $file);
	my $retr_seq = Bio::SeqIO->new(	-file => $file,
                             		-format => 'genbank');

I get the following warning, consistently:

Use of uninitialized value in concatenation (.) or string at /Library/ 
Perl/5.8.1/Bio/DB/GenericWebAgent.pm line 92.

Also, about half the time I get a crash with the following error  

------------- EXCEPTION: Bio::Root::Exception -------------
MSG: Response Error
Bad Gateway
STACK: Error::throw
STACK: Bio::Root::Root::throw /Library/Perl/5.8.1/Bio/Root/Root.pm:357
STACK: Bio::DB::GenericWebAgent::get_Response /Library/Perl/5.8.1/Bio/ 
STACK: gb_update_v4.pl:118

The other half of the time the script runs fine through to the end.   
I have no idea whether the crash is related to the warning or not.  I  
looked at the line where the warning is generated, and it appears to  
be the "new" method for the GenericWebAgent.pm  .  I can't see how  
the call to Eutilities is can be passing an undefined value through  
to this method.

Problem #2:

When the code runs, I retrieve an incorrect record.  I am retrieving  
using accessions, and accession I51532 retrieves two records.  One is  
the record I am after, an ion channel protein, the other comes from a  
patent application; the problem is that, although the accession  
number for the unwanted record is AAB76204, the LOCUS entry in the  
record is I51532.

So, is it possible that the efetch function is collecting on the  
basis of LOCUS, not ACCESSION?  I realize that the two are almost  
always the same, but not apparently in this case.

Any advice and/or explanation is appreciated.

Warren Gallin

More information about the Bioperl-l mailing list