#!/usr/bin/perl -w use strict; my %C = ( 'AAA' => 'K', 'AAC' => 'N', 'AAG' => 'K', 'AAT' => 'N', 'ACA' => 'T', 'ACC' => 'T', 'ACG' => 'T', 'ACT' => 'T', 'AGA' => 'R', 'AGC' => 'S', 'AGG' => 'R', 'AGT' => 'S', 'ATA' => 'I', 'ATC' => 'I', 'ATG' => 'M', 'ATT' => 'I', 'CAA' => 'Q', 'CAC' => 'H', 'CAG' => 'Q', 'CAT' => 'H', 'CCA' => 'P', 'CCC' => 'P', 'CCG' => 'P', 'CCT' => 'P', 'CGA' => 'R', 'CGC' => 'R', 'CGG' => 'R', 'CGT' => 'R', 'CTA' => 'L', 'CTC' => 'L', 'CTG' => 'L', 'CTT' => 'L', 'GAA' => 'E', 'GAC' => 'D', 'GAG' => 'E', 'GAT' => 'D', 'GCA' => 'A', 'GCC' => 'A', 'GCG' => 'A', 'GCT' => 'A', 'GGA' => 'G', 'GGC' => 'G', 'GGG' => 'G', 'GGT' => 'G', 'GTA' => 'V', 'GTC' => 'V', 'GTG' => 'V', 'GTT' => 'V', 'TAA' => '*', 'TAC' => 'Y', 'TAG' => '*', 'TAT' => 'Y', 'TCA' => 'S', 'TCC' => 'S', 'TCG' => 'S', 'TCT' => 'S', 'TGA' => '*', 'TGC' => 'C', 'TGG' => 'W', 'TGT' => 'C', 'TTA' => 'L', 'TTC' => 'F', 'TTG' => 'L', 'TTT' => 'F' ); my %R = ( A => ['A'], C => ['C'], G => ['G'], T => ['T'], K => ['G', 'T'], M => ['A', 'C'], R => ['G', 'A'], Y => ['T', 'C'], W => ['A', 'T'], S => ['G', 'C'], B => ['C', 'T', 'G'], D => ['A', 'G', 'T'], H => ['A', 'C', 'T'], V => ['A', 'C', 'G'], N => ['A', 'C', 'G', 'T'], ); my @alphabet = split(//,"ACGTRYKMWSBDHVN"); print "my \%Codon = (\n"; my $i = 0; foreach my $x (@alphabet) { foreach my $y (@alphabet) { foreach my $z (@alphabet) { my @codons = codify($x, $y, $z); my @aa; foreach my $codon (@codons) {push @aa, $C{$codon}} my $first = $aa[0]; my $same = 1; foreach my $test (@aa) { if ($test ne $first) {$same = 0; last} } if ($same) { print "\t'$x$y$z' => '$first',"; $i++; print "\n" if $i % 4 == 0; } } } } print ");\n"; sub codify { my ($x, $y, $z) = @_; my @codons; foreach my $n1 (@{$R{$x}}) { foreach my $n2 (@{$R{$y}}) { foreach my $n3 (@{$R{$z}}) { push @codons, "$n1$n2$n3"; } } } return @codons; }