[Bioperl-l] BLASTing with a seqio/seq object...

Sendu Bala bix at sendu.me.uk
Tue Nov 28 07:39:29 EST 2006

Samantha Thompson wrote:
> Hi,
> I am trying to learn bioperl and I'm attempting a few basic thing! I 
> seem to be ok with reading in and outputting sequences and files now I 
> am trying to do a simple BLAST search using a sequence (a sequence 
> object in fact). The code I am attempting to run is at the bottom of the 
> message...
> I am probably making a dumb mistake and don't understand the 
> capabilities of the objects well enough, but the info for the 
> remoteblast->submit_blast function says that it can take sequences as an 
> argument, I've also tried sending the fasta file name containing my 
> sequence as an argument to submit_blast,  with the same result.... I 
> have also tried sending $seqio_obj->next_seq...........  i.e the 
> following error message displayed on my terminal:
> Can't call method "submit_blast" on an undefined value at bioptest2.pl 
> line 22, <GEN0> line 1.

Always start your perl scripts with 'use strict;'. This will help you 
find and fix the main problem with your script, that you made a 
RemoteBlast object and stored it as $remote_blast, but then tried to use 
submit_blast() on $remoteBlast which doesn't exist.

I've rewritten your code below:

use strict;
> use Bio::Seq;
> use Bio::SeqIO;
> use Bio::Tools::Run::RemoteBlast;
> use Bio::SearchIO;
> #seq bit
# $seq_obj = Bio::Seq->new(-format => 'fasta');
# above line doesn't do anything, $seq_obj gets overwritten below
my $seqio_obj = Bio::SeqIO->new(-file => 
"/biol/people/mres/st537/MalEfasta.txt", -format => 'fasta');
my $seq_obj = $seqio_obj->next_seq;
> #blast bit
my $remote_blast = Bio::Tools::Run::RemoteBlast->new(-prog => 'blastp', 
-db => 'nr', -expect => '1e-15' );

# submit_blast takes the sequence object, not the sequence string
my $blastreturn_obj = $remote_blast->submit_blast($seq_obj);

More information about the Bioperl-l mailing list