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

Andrew Stewart stewarta at nmrc.navy.mil
Thu Dec 14 11:34:43 EST 2006

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 returns...
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?


On Dec 14, 2006, at 9:10 AM, Sendu Bala wrote:

> Andrew Stewart wrote:
>> I am trying to StandAloneBlast->blastall an array or Bio::Seq   
>> objects.  The documentation claims that blastall can be passed a  
>> file  name,
> You're referring to 'In addition, sequence input may be in the form  
> of either a Bio::Seq object or or an array of Bio::Seq objects'? I  
> agree its not clear, but supplying a reference to an array is still  
> supplying an array. Anyway, I'll clarify it.
> In any case, the usage for the method is what you should pay  
> attention to:
>> Usage:
>> 	$seq_array_ref = \@seq_array;  # where @seq_array is an array of   
>> Bio::Seq objects
>> 	$blast_report = $factory->blastall(\@seq_array);
>> Should this be...
>> $report = $factory->blastall(@seq_array);
>> or
>> $report = $factory->blastall(\@seq_array);
>> ???
> It should be exactly what it says. A reference to the array.
>> And if you are blastall'ing an array of Seq objects, then does   
>> blastall just return one big blast report or should I be expecting  
>> an  array of blast reports?
> Returns : Reference to a Blast object or BPlite object
>            containing the blast report.
> That means, just one big object, not an array.

Andrew Stewart
Research Assistant, Genomics Team
Navy Medical Research Center (NMRC)
Biological Defense Research Directorate (BDRD)
BDRD Annex
12300 Washington Avenue, 2nd Floor
Rockville, MD 20852

email: stewarta at nmrc.navy.mil
phone: 301-231-6700 Ext 270

More information about the Bioperl-l mailing list