[Bioperl-l] trying to save blast hit sequences to fasta file

Jay Hannah jay at jays.net
Wed Aug 1 09:30:50 EDT 2007


On Wed, 1 Aug 2007, Alicia Amadoz wrote:
> Hi, I have tried what you suggested and I get also some errors.
> With this code,
>
> my $seq_out = Bio::SearchIO->new("-file" => ">$fasfilename", "-format"
> => "fasta");
> while(my $result = $blast_report->next_result()) {
>   while(my $hit = $result->next_hit()) {
>      while(my $hsp = $hit->next_hsp()) {
> 	my $hseq = $hsp->hit_string();
>        $hseq =~ s/-//g; #### remove the gap within the aligment
>        my $hseq_obj = Bio::Seq->new(-display_id => $id, -seq => $hseq);
>        $seq_out->write_seq($hseq_obj);
>      }
>   }
> }
>
> I have the following error:
>
> Can't locate object method "write_seq" via package "Bio::SearchIO::fasta"

You don't want to write_seq() to a SearchIO, you want to write_seq() to a 
SeqIO. Try this:

my $seq_out = Bio::SeqIO->new(-file => ">$fasfilename", -format => "fasta");
while(my $result = $blast_report->next_result()) {
    while(my $hit = $result->next_hit()) {
       while(my $hsp = $hit->next_hsp()) {
 	my $hseq = $hsp->hit_string();
         $hseq =~ s/-//g; #### remove the gap within the aligment
         my $hseq_obj = Bio::Seq->new(-display_id => $id, -seq => $hseq);
         $seq_out->write_seq($hseq_obj);
       }
    }
}

(Untested.)

HTH,

Jay Hannah
http://clab.ist.unomaha.edu/CLAB/index.php/User:Jhannah


More information about the Bioperl-l mailing list