[Bioperl-l] Remote Blast and Report

Ocar Campos ocarnorsk138 at gmail.com
Mon Mar 2 00:51:01 UTC 2009


Hello, I tried your script Russel, but I still got the same error in the
console, "Can't call method "query_name" on an undefined value at ./aer2.pl
line 39, <GEN4> line 185.", I didn't do anything to it, just copy/paste and
ran it. So what I assumed is that the object for the SearchIO module was not
initialized, so I created it, but now I get an Exeption while parsing the
report:


------------- EXCEPTION  -------------
MSG: Could not open Bio::SearchIO::blast=HASH(0x8bb79bc): Doesn't exist the
file or directory.
STACK Bio::Root::IO::_initialize_io
/usr/lib/perl5/site_perl/5.8.8/Bio/Root/IO.pm:273
STACK Bio::Root::IO::new /usr/lib/perl5/site_perl/5.8.8/Bio/Root/IO.pm:213
STACK Bio::SearchIO::new /usr/lib/perl5/site_perl/5.8.8/Bio/SearchIO.pm:135
STACK Bio::SearchIO::new /usr/lib/perl5/site_perl/5.8.8/Bio/SearchIO.pm:167
STACK toplevel ./aer2.pl:45

--------------------------------------

aer2.pl is my script, Any Idea what it could be?

The script:

#!/usr/bin/perl

use Bio::Tools::Run::RemoteBlast;
use Bio::SearchIO;
use Data::Dumper;

########HERE I SET THE PARAMETERS
$prog = "tblastx";
$db = "nr";
$e_val = "1e-10";

my @params = ( '-prog' => $prog,
        '-data' => $db,
        '-expect' => $e_val,
        '-readmethod' => 'SearchIO' );

my $remoteBlast = Bio::Tools::Run::RemoteBlast->new(@params);


########SELECT FILE AND RUN THE BLAST.
$infile = 'secuencia.fasta';
$r = $remoteBlast->submit_blast($infile);

 my $v = 1;

   print STDERR "waiting...\n" if( $v > 0 );  ########  WAIT FOR THE RESULTS
TO RETURN!!!!!
   while ( my @rids = $remoteBlast->each_rid )
   {
     foreach my $rid ( @rids )
     {
       my $rc = $remoteBlast->retrieve_blast($rid);  ###I RETRIEVE THE
REPORT.
       print $rc, "\n";                  ########ONLY FOR CHECKING
       if( !ref($rc) )
       {
         if( $rc < 0 )
         {
           $remoteBlast->remove_rid($rid);
         }
         print STDERR "." if ( $v > 0 );
         sleep 5;
       }
       else
       {
        ##########HERE I CREATE THE SEARCHIO OBJECT FOR WORKING WITH THE
REPORT
        $report = new Bio::SearchIO (-format => 'blast',
                                     -file   => $rc      #########$rc SHOULD
CONTAIN THE REPORT
                      );
        my $result = $report->next_result();
        #########SAVE THE OUTPUT
        my $filename = $result->query_name()."\.out";
        $remoteBlast->save_output($filename);
        $remoteBlast->remove_rid($rid);
        print "\nQuery Name: ", $result->query_name(), "\n";
        while ( my $hit = $result->next_hit )
        {
          next unless ( $v > 0);
          print "\thit name is ", $hit->name, "\n";
          while( my $hsp = $hit->next_hsp )
          {
            print "\t\tscore is ", $hsp->score, "\n";
          }
        }
       }
      }
    }


Thanks in advance.
Cheers.
O'car.



More information about the Bioperl-l mailing list