[Bioperl-l] problems with: Bio::Tools::Run::RemoteBlast

bertrand beckert bertrand.beckert at gmail.com
Tue Oct 17 14:52:36 UTC 2006


hi,

I am running a large number of blasts via a connexion to ncbi blast
page ('http://www.ncbi.nlm.nih.gov/blast/Blast.cgi').
I try to use 'Bio::Tools::Run::RemoteBlast' but unfortunately I have
some problems. I make a simple example with only one sequence in
order to understand how work this module. This is my simple input
file, a DNA sequence in fasta form:

>test
TTTTGATGAGGCGCATCAATCATGAGTAAAGTTTAGATTACTGTCTGCTAACAGCTGAAT
TTGAAAGGGTGCGATGCCGAAGCGATTATAATAGCAGTTATAATTTGTTGGACTTTTTGG
TTAAGAGCTGAGAGTTTGTCATTATTTAAAAATAATGGAGTGCATCACTTGTA

I have made some modification of the example available in doc of bioperl.
It give me a RID which contain the results of my blast but I have a
problem with the "$result=$factory->retrieve_blast($rid)" in my script.
In the documentation it wrote that $result=$factory->retrieve_blast
($rid) return when it work a Bio::Tools::Bplite or Bio::Tools::Blast
object. In my case it returns a Bio::SearchIO::blast... I don't
understand why I don't have the good type of object return (see PART I).

I also try to resolve the problem by replace the foreach loop in my
script by a new one in order to explore the blast page result but it
also don't work (see part II).

could you help me please. Thank you

Bertrand Beckert.

PART I:

Here is my script with a little annotation and also the shell window
printing:
------------------------------------------------------------------------
#!/usr/bin/perl -w
use Bio::Tools::Run::RemoteBlast;
use Bio::SearchIO;
sub blast {
my $prog='blastn';
my $db='refseq_genomic';
my $e_val='1e-10';
my $Input='Seq.fasta';
my @params = ('-prog' =>  $prog, '-data' =>  $db, '-expect' =>
$e_val, '-readmethod' => 'SearchIO');
my $factory = Bio::Tools::Run::RemoteBlast->new(@params);
#changes parameters
$Bio::Tools::Run::RemoteBlast::HEADER{'ENTREZ_QUERY'}='Bacteria [ORGN]';
$Bio::Tools::Run::RemoteBlast::HEADER{'MATRIX_NAME'}='BLOSUM25';
$factory->submit_blast($Input);
print STDERR "waiting...\n";
while (my @rids=$factory->each_rid) {
          print "my rid: ", at rids,"\n";
     #return me the ID of the submited blast i.e. RID:
1161079157-766-185099855365.BLASTQ2
     #this page contains the result of my blast...
             foreach my $rid (@rids) {
                         $result=$factory->retrieve_blast($rid);
        #line in order to understand what type of object is
return by
retrieve_blast
                 print "rc:", $result,"\n";

                        }
            }
        }

&blast;
------------------------------------------------------------------------

here you can see the shell window:

bbeckert at tatooine:~/Script_perl$ ./test.pl
waiting...
my rid: 1161079157-766-185099855365.BLASTQ2
rc:Bio::SearchIO::blast=HASH(0x890bc54)
my rid: 1161079157-766-185099855365.BLASTQ2
rc:Bio::SearchIO::blast=HASH(0x890bc30)
my rid: 1161079157-766-185099855365.BLASTQ2
rc:Bio::SearchIO::blast=HASH(0x89eb7f4)
my rid: 1161079157-766-185099855365.BLASTQ2
rc:Bio::SearchIO::blast=HASH(0x8a2cc74)
my rid: 1161079157-766-185099855365.BLASTQ2
...
my rid: 1161079157-766-185099855365.BLASTQ2
Parsing of undecoded UTF-8 will give garbage when decoding entities
at /usr/share/perl5/LWP/Protocol.pm line 137.
rc:Bio::SearchIO::blast=HASH(0x886bbac)
my rid: 1161079157-766-185099855365.BLASTQ2
Parsing of undecoded UTF-8 will give garbage when decoding entities
at /usr/share/perl5/LWP/Protocol.pm line 137.
rc:Bio::SearchIO::blast=HASH(0x89eb5f0)
my rid: 1161079157-766-185099855365.BLASTQ2
Parsing of undecoded UTF-8 will give garbage when decoding entities
at /usr/share/perl5/LWP/Protocol.pm line 137.
rc:Bio::SearchIO::blast=HASH(0x8a2d2d4)
my rid: 1161079157-766-185099855365.BLASTQ2
Parsing of undecoded UTF-8 will give garbage when decoding entities
at /usr/share/perl5/LWP/Protocol.pm line 137.
rc:Bio::SearchIO::blast=HASH(0x84fa054)
...

PARTII:

I also try to resolve the problem by replace the foreach loop in my
script by:
------------------------------------------------------------------------

foreach my $rid (@rids) {
                 while(1) {
                 $result=$factory->retrieve_blast($rid)->next_result();
                 print "rc:", $result,"\n";
                 if ($result) {
                 print  $result->num_hits(),"\n";
                 }
------------------------------------------------------------------------

With tis loop I could explore the result Blast page. that is what I
obtain in the shell window:

bbeckert at tatooine:~/Script_perl$ ./test.pl
waiting...
my rid: 1161088606-9905-123050755601.BLASTQ4
Use of uninitialized value in print at ./retrieve_blast.pl line 30.
rc:
Use of uninitialized value in print at ./retrieve_blast.pl line 30.
rc:
Parsing of undecoded UTF-8 will give garbage when decoding entities
at /usr/share/perl5/LWP/Protocol.pm line 137.
rc:Bio::Search::Result::BlastResult=HASH(0x84fb8b8)
0
Parsing of undecoded UTF-8 will give garbage when decoding entities
at /usr/share/perl5/LWP/Protocol.pm line 137.
rc:Bio::Search::Result::BlastResult=HASH(0x84fba8c)
0
Parsing of undecoded UTF-8 will give garbage when decoding entities
at /usr/share/perl5/LWP/Protocol.pm line 137.
rc:Bio::Search::Result::BlastResult=HASH(0x84fb834)




----
-- 
Berrtrand BECKERT
PhD student
IBMC - UPR 9002 du CNRS - ARN
15, rue Rene Descartes
F-67084 STRASBOURG Cedex
b.beckert at ibmc.u-strasbg.fr
bertrand.beckert at gmail.com



More information about the Bioperl-l mailing list