[Bioperl-l] StandAloneBlast->blastall array of Bio::Seq objects
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
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: 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
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
- 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
- Something else is wrong with the $commandstring being sent to the
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:
>> $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);
>> $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.
Research Assistant, Genomics Team
Navy Medical Research Center (NMRC)
Biological Defense Research Directorate (BDRD)
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