use Getopt::Std; my %opts; getopts('f:',\%opts); my $a = 1; my $seq = ""; my @dna; my $name; my $frame = $opts{f} || "all"; unless ($frame eq "all"){if($frame < 0 || $frame >2){die("frame must be between 0 and 2 or \"all\"\n") }} my %aa = (); while(<>) { $a = (( />/) ? 1 : 0); if($a == 0) { chomp; $seq = $seq . $_; # @dna = ($seq =~ /(...)/g); } else { if ($frame eq "all"){ for (my $FRAME=0; $FRAME<3; $FRAME++){ &translate($seq,$FRAME) unless $. == 1; } $name = $_; chomp $name; $seq = ""; } } } if ($frame eq "all"){ for (my $FRAME=0; $FRAME<3; $FRAME++){&translate($seq,$FRAME)} }; sub translate { my @prot; my $frame=$_[1]; my $seq=$_[0]; $aa{GCA} = "A"; $aa{GCC} = "A"; $aa{GCG} = "A"; $aa{GCT} = "A"; $aa{TGC} = "C"; $aa{TGT} = "C"; $aa{GAC} = "D"; $aa{GAT} = "D"; $aa{GAA} = "E"; $aa{GAG} = "E"; $aa{TTC} = "F"; $aa{TTT} = "F"; $aa{GGA} = "G"; $aa{GGC} = "G"; $aa{GGG} = "G"; $aa{GGT} = "G"; $aa{CAC} = "H"; $aa{CAT} = "H"; $aa{ATA} = "I"; $aa{ATC} = "I"; $aa{ATT} = "I"; $aa{AAA} = "K"; $aa{AAG} = "K"; $aa{TTA} = "L"; $aa{TTG} = "L"; $aa{CTA} = "L"; $aa{CTC} = "L"; $aa{CTG} = "L"; $aa{CTT} = "L"; $aa{ATG} = "M"; $aa{AAC} = "N"; $aa{AAT} = "N"; $aa{CCA} = "P"; $aa{CCC} = "P"; $aa{CCG} = "P"; $aa{CCT} = "P"; $aa{CAA} = "Q"; $aa{CAG} = "Q"; $aa{AGA} = "R"; $aa{AGG} = "R"; $aa{CGA} = "R"; $aa{CGC} = "R"; $aa{CGG} = "R"; $aa{CGT} = "R"; $aa{AGC} = "S"; $aa{AGT} = "S"; $aa{TCA} = "S"; $aa{TCC} = "S"; $aa{TCG} = "S"; $aa{TCT} = "S"; $aa{ACA} = "T"; $aa{ACC} = "T"; $aa{ACG} = "T"; $aa{ACT} = "T"; $aa{GTA} = "V"; $aa{GTC} = "V"; $aa{GTG} = "V"; $aa{GTT} = "V"; $aa{TGG} = "W"; $aa{TAC} = "Y"; $aa{TAT} = "Y"; #$aa{taa} = "!"; $aa{tag} = "#"; $aa{tga} = "@"; $aa{TAA} = "*"; $aa{TAG} = "*"; $aa{TGA} = "U"; $aa{gca} = "A"; $aa{gcc} = "A"; $aa{gcg} = "A"; $aa{gct} = "A"; $aa{tgc} = "C"; $aa{tgt} = "C"; $aa{gac} = "D"; $aa{gat} = "D"; $aa{gaa} = "E"; $aa{gag} = "E"; $aa{ttc} = "F"; $aa{ttt} = "F"; $aa{gga} = "G"; $aa{ggc} = "G"; $aa{ggg} = "G"; $aa{ggt} = "G"; $aa{cac} = "H"; $aa{cat} = "H"; $aa{ata} = "I"; $aa{atc} = "I"; $aa{att} = "I"; $aa{aaa} = "K"; $aa{aag} = "K"; $aa{tta} = "L"; $aa{ttg} = "L"; $aa{cta} = "L"; $aa{ctc} = "L"; $aa{ctg} = "L"; $aa{ctt} = "L"; $aa{atg} = "M"; $aa{aac} = "N"; $aa{aat} = "N"; $aa{cca} = "P"; $aa{ccc} = "P"; $aa{ccg} = "P"; $aa{cct} = "P"; $aa{caa} = "Q"; $aa{cag} = "Q"; $aa{aga} = "R"; $aa{agg} = "R"; $aa{cga} = "R"; $aa{cgc} = "R"; $aa{cgg} = "R"; $aa{cgt} = "R"; $aa{agc} = "S"; $aa{agt} = "S"; $aa{tca} = "S"; $aa{tcc} = "S"; $aa{tcg} = "S"; $aa{tct} = "S"; $aa{aca} = "T"; $aa{acc} = "T"; $aa{acg} = "T"; $aa{act} = "T"; $aa{gta} = "V"; $aa{gtc} = "V"; $aa{gtg} = "V"; $aa{gtt} = "V"; $aa{tgg} = "W"; $aa{tac} = "Y"; $aa{tat} = "Y"; #$aa{taa} = "!"; $aa{tag} = "#"; $aa{tga} = "@"; $aa{taa} = "*"; $aa{tag} = "*"; $aa{tga} = "U"; $seq =~ s/^.{$frame}//; @dna= ($seq =~ /(...)/g); for (my $i=0; $i