#include #include "Ribosome.h" #include using namespace std; // Converts a trinucleotide codon into the IUPAC amino acid symbol. Will return // a '?" character if the input is not correct, but no fancy checking is used // here under the expectation the Codon class does data validation char Ribosome::translate(string codon) { char AA = '?'; switch (codon[0]) { case 'A': switch (codon[1]) { case 'A': switch (codon[2]) { case 'A': AA = 'K'; break; case 'C': AA = 'N'; break; case 'G': AA = 'K'; break; case 'T': AA = 'N'; break; } break; case 'C': switch (codon[2]) { case 'A': AA = 'T'; break; case 'C': AA = 'T'; break; case 'G': AA = 'T'; break; case 'T': AA = 'T'; break; } break; case 'G': switch (codon[2]) { case 'A': AA = 'R'; break; case 'C': AA = 'S'; break; case 'G': AA = 'R'; break; case 'T': AA = 'S'; break; } break; case 'T': switch (codon[2]) { case 'A': AA = 'I'; break; case 'C': AA = 'I'; break; case 'G': AA = 'M'; break; case 'T': AA = 'I'; break; } break; } break; case 'C': switch (codon[1]) { case 'A': switch (codon[2]) { case 'A': AA = 'Q'; break; case 'C': AA = 'H'; break; case 'G': AA = 'Q'; break; case 'T': AA = 'H'; break; } break; case 'C': switch (codon[2]) { case 'A': AA = 'P'; break; case 'C': AA = 'P'; break; case 'G': AA = 'P'; break; case 'T': AA = 'P'; break; } break; case 'G': switch (codon[2]) { case 'A': AA = 'R'; break; case 'C': AA = 'R'; break; case 'G': AA = 'R'; break; case 'T': AA = 'R'; break; } break; case 'T': switch (codon[2]) { case 'A': AA = 'L'; break; case 'C': AA = 'L'; break; case 'G': AA = 'L'; break; case 'T': AA = 'L'; break; } break; } break; case 'G': switch (codon[1]) { case 'A': switch (codon[2]) { case 'A': AA = 'E'; break; case 'C': AA = 'D'; break; case 'G': AA = 'E'; break; case 'T': AA = 'D'; break; } break; case 'C': switch (codon[2]) { case 'A': AA = 'A'; break; case 'C': AA = 'A'; break; case 'G': AA = 'A'; break; case 'T': AA = 'A'; break; } break; case 'G': AA = 'G'; break; case 'T': AA = 'V'; break; } break; case 'T': switch (codon[1]) { case 'A': switch (codon[2]) { case 'A': AA = '*'; break; case 'C': AA = 'Y'; break; case 'G': AA = '*'; break; case 'T': AA = 'Y'; break; } break; case 'C': AA = 'S'; break; case 'G': switch (codon[2]) { case 'A': AA = '*'; break; case 'C': AA = 'C'; break; case 'G': AA = 'W'; break; case 'T': AA = 'C'; break; } break; case 'T': switch (codon[2]) { case 'A': AA = 'L'; break; case 'C': AA = 'F'; break; case 'G': AA = 'L'; break; case 'T': AA = 'F'; break; } break; } break; } return (AA); }