[Bioperl-l] StandAloneBlast->blastall array of Bio::Seq objects

Chris Fields cjfields at uiuc.edu
Thu Dec 14 12:03:12 EST 2006


On Dec 14, 2006, at 10:34 AM, Andrew Stewart wrote:

> Thanks for the reply, Sendu.
>
> So I've tried passing a reference to an array of Seq objects with the
> following code...
> 	
> 	push @blast_run, $factory->blastall(\@query);  # where @query is an
> array of Bio::Seq objects
>
> (In case you're wondering, I'm pushing the report into an array of
> reports because I'm running several instances of blastall with
> different parameters each time.)
>
> ....and it throws me the following exception...
>
> ------------- EXCEPTION: Bio::Root::Exception -------------
> MSG: blastall call crashed: 11 /common/bin/blastall -p  blastp  -d  "/
> common/data/BACILLUS.pep"  -i  /tmp/Z69hzaqEbR  -o  /tmp/02Zja7AF3E
>
> STACK: Error::throw
> STACK: Bio::Root::Root::throw /sw/lib/perl5/5.8.6/Bio/Root/Root.pm:328
> STACK: Bio::Tools::Run::StandAloneBlast::_runblast /sw/lib/
> perl5/5.8.6/Bio/Tools/Run/StandAloneBlast.pm:759
> STACK: Bio::Tools::Run::StandAloneBlast::_generic_local_blast /sw/lib/
> perl5/5.8.6/Bio/Tools/Run/StandAloneBlast.pm:706
> STACK: Bio::Tools::Run::StandAloneBlast::blastall /sw/lib/perl5/5.8.6/
> Bio/Tools/Run/StandAloneBlast.pm:557
> STACK: main::run_blastall ./new_blast_script.pl:215
> STACK: ./new_blast_script.pl:115
> -----------------------------------------------------------
>
> And % more -Nl 759 /path/to/Bio/Tools/Run/StandAloneBlast.pm  
> returns...
> 757         my $status = system($commandstring);
> 758
> 759         $self->throw("$executable call crashed: $? $commandstring
> \n")
> 760           unless ($status==0) ;
>
> So it looks like the system call isn't returning a happy $status.  At
> this point I'm pretty much stuck, though.  Blastall works just fine
> if I only send it a single Seq object.  Looking at _setinput, it
> appears a reference to an array of Seq objects should end up creating
> a multi-fasta file.  The only possibilities I can think of to explain
> this is...
>
> - The -i file isn't be created for some reason when an (ref to) array
> of Seqs is passed
> - There is something wrong with the -i file that is created and sent
> to blastall.
> - Something else is wrong with the $commandstring being sent to the
> system call.
>
> Does anyone see something here that I don't?

The error pops up when the executable returns a bad status, so maybe  
it's choking on too many input sequences (i.e. Bioperl is doing  
everything correctly, but you are attempting to BLAST too many  
sequences in one go).  How many sequences are you attempting to use  
as input?  What happens when you use fewer input sequences?

chris




More information about the Bioperl-l mailing list