# Creates BioPerl input sequence stream. my $in_seq = Bio::SeqIO->new(-file => "<$input_file", -format => $seq_format ); # Extracting sequences from stream. print("- reading and translating sequences...\n"); my $seq_counter = 0; my $unique_count = 0; my @translated_seqs; while (my $seq = $in_seq->next_seq()) { $seq_counter++; print("-\tsequences read: $seq_counter\r"); my $temp_seq; # Translates sequence and stores the translated sequences if they do not # contain any stop codons. # Reading frames 1, 2 and 3. $temp_seq = $seq->translate(); $temp_seq->display_id("test_id-$unique_count"); $unique_count++; push(@translated_seqs, $temp_seq) unless ($temp_seq->seq() =~ /\*+/); $temp_seq = $seq->translate(-frame => 1); $temp_seq->display_id("test_id-$unique_count"); $unique_count++; push(@translated_seqs, $temp_seq) unless ($temp_seq->seq() =~ /\*+/); $temp_seq = $seq->translate(-frame => 2); $temp_seq->display_id("test_id-$unique_count"); $unique_count++; push(@translated_seqs, $temp_seq) unless ($temp_seq->seq() =~ /\*+/); # Creates the reverse complement sequence. my $rc_seq = $seq->revcom(); # Reading frames -1, -2, and -3 $temp_seq = $rc_seq->translate(); $temp_seq->display_id("test_id-$unique_count"); $unique_count++; push(@translated_seqs, $temp_seq) unless ($temp_seq->seq() =~ /\*+/); $temp_seq = $rc_seq->translate(-frame => 1); $temp_seq->display_id("test_id-$unique_count"); $unique_count++; push(@translated_seqs, $temp_seq) unless ($temp_seq->seq() =~ /\*+/); $temp_seq = $rc_seq->translate(-frame => 2); $temp_seq->display_id("test_id-$unique_count"); $unique_count++; push(@translated_seqs, $temp_seq) unless ($temp_seq->seq() =~ /\*+/); } # Blasting... my @params = (-program => 'blastp', -database => '/share/raid1/database/ftp.ncbi.nih.gov/blast/db/20090602/nr', -expectation => '200000', -Word => '2', -Matrix => 'PAM30', -Gapcost => '9.1', -FilterString => 'F', _READMETHOD => 'blasttable' , -m => '8', -outfile => 'blast.out'); my $blaster = Bio::Tools::Run::StandAloneBlast->new(@params); my $blast_report = $blaster->blastall(@translated_seqs); # Parsing results my $result = $blast_report->next_result(); my $hit = $result->next_hit();