[Bioperl-l] Remote Blast and Report

Jason Stajich jason at bioperl.org
Mon Mar 2 01:19:50 UTC 2009


I think $rc is already a Bio::SearchIO object - you shouldn't have to  
instantiate a Bio::SearchIO object that is what the -readmethod in the  
@params at the top is for.

Try printing ref($ref) to see what it is.

-js
On Mar 1, 2009, at 4:51 PM, Ocar Campos wrote:

> 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.
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l

Jason Stajich
jason at bioperl.org






More information about the Bioperl-l mailing list