[Bioperl-l] StandAloneBlast->blastall array of Bio::Seq objects
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/
> STACK: Bio::Tools::Run::StandAloneBlast::_generic_local_blast /sw/lib/
> STACK: Bio::Tools::Run::StandAloneBlast::blastall /sw/lib/perl5/5.8.6/
> 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
> 757 my $status = system($commandstring);
> 759 $self->throw("$executable call crashed: $? $commandstring
> 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?
More information about the Bioperl-l