const DNA_ASCII_TO_2BIT: [u8; 256] = {
let mut result = [255; 256];
result[b'A' as usize] = 0;
result[b'a' as usize] = 0;
result[b'C' as usize] = 1;
result[b'c' as usize] = 1;
result[b'G' as usize] = 2;
result[b'g' as usize] = 2;
result[b'T' as usize] = 3;
result[b't' as usize] = 3;
result[b'U' as usize] = 3;
result[b'u' as usize] = 3;
result
};
pub const AA3_TO_AA1_VEC: &[(&str, &str)] = &[
("Ala", "A"),
("Arg", "R"),
("Asn", "N"),
("Asp", "D"),
("Cys", "C"),
("Gln", "Q"),
("Glu", "E"),
("Gly", "G"),
("His", "H"),
("Ile", "I"),
("Leu", "L"),
("Lys", "K"),
("Met", "M"),
("Phe", "F"),
("Pro", "P"),
("Ser", "S"),
("Thr", "T"),
("Trp", "W"),
("Tyr", "Y"),
("Val", "V"),
("Xaa", "X"),
("Ter", "*"),
("Sec", "U"),
];
const DNA_TO_AA1_LUT_VEC: &[(&str, &str)] = &[
("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"),
// caveat lector
("TGA", "*"),
("TGC", "C"),
("TGG", "W"),
("TGT", "C"),
("TTA", "L"),
("TTC", "F"),
("TTG", "L"),
("TTT", "F"),
// degenerate codons
("AAR", "K"),
("AAY", "N"),
("ACB", "T"),
("ACD", "T"),
("ACH", "T"),
("ACK", "T"),
("ACM", "T"),
("ACN", "T"),
("ACR", "T"),
("ACS", "T"),
("ACV", "T"),
("ACW", "T"),
("ACY", "T"),
("AGR", "R"),
("AGY", "S"),
("ATH", "I"),
("ATM", "I"),
("ATW", "I"),
("ATY", "I"),
("CAR", "Q"),
("CAY", "H"),
("CCB", "P"),
("CCD", "P"),
("CCH", "P"),
("CCK", "P"),
("CCM", "P"),
("CCN", "P"),
("CCR", "P"),
("CCS", "P"),
("CCV", "P"),
("CCW", "P"),
("CCY", "P"),
("CGB", "R"),
("CGD", "R"),
("CGH", "R"),
("CGK", "R"),
("CGM", "R"),
("CGN", "R"),
("CGR", "R"),
("CGS", "R"),
("CGV", "R"),
("CGW", "R"),
("CGY", "R"),
("CTB", "L"),
("CTD", "L"),
("CTH", "L"),
("CTK", "L"),
("CTM", "L"),
("CTN", "L"),
("CTR", "L"),
("CTS", "L"),
("CTV", "L"),
("CTW", "L"),
("CTY", "L"),
("GAR", "E"),
("GAY", "D"),
("GCB", "A"),
("GCD", "A"),
("GCH", "A"),
("GCK", "A"),
("GCM", "A"),
("GCN", "A"),
("GCR", "A"),
("GCS", "A"),
("GCV", "A"),
("GCW", "A"),
("GCY", "A"),
("GGB", "G"),
("GGD", "G"),
("GGH", "G"),
("GGK", "G"),
("GGM", "G"),
("GGN", "G"),
("GGR", "G"),
("GGS", "G"),
("GGV", "G"),
("GGW", "G"),
("GGY", "G"),
("GTB", "V"),
("GTD", "V"),
("GTH", "V"),
("GTK", "V"),
("GTM", "V"),
("GTN", "V"),
("GTR", "V"),
("GTS", "V"),
("GTV", "V"),
("GTW", "V"),
("GTY", "V"),
("MGA", "R"),
("MGG", "R"),
("MGR", "R"),
("TAR", "*"),
("TAY", "Y"),
("TCB", "S"),
("TCD", "S"),
("TCH", "S"),
("TCK", "S"),
("TCM", "S"),
("TCN", "S"),
("TCR", "S"),
("TCS", "S"),
("TCV", "S"),
("TCW", "S"),
("TCY", "S"),
("TGY", "C"),
("TRA", "*"),
("TTR", "L"),
("TTY", "F"),
("YTA", "L"),
("YTG", "L"),
("YTR", "L"),
];
/// Translation table for selenocysteine.
const DNA_TO_AA1_SEC_VEC: &[(&str, &str)] = &[
("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"),
// caveat lector
("TGA", "U"),
("TGC", "C"),
("TGG", "W"),
("TGT", "C"),
("TTA", "L"),
("TTC", "F"),
("TTG", "L"),
("TTT", "F"),
// degenerate codons
("AAR", "K"),
("AAY", "N"),
("ACB", "T"),
("ACD", "T"),
("ACH", "T"),
("ACK", "T"),
("ACM", "T"),
("ACN", "T"),
("ACR", "T"),
("ACS", "T"),
("ACV", "T"),
("ACW", "T"),
("ACY", "T"),
("AGR", "R"),
("AGY", "S"),
("ATH", "I"),
("ATM", "I"),
("ATW", "I"),
("ATY", "I"),
("CAR", "Q"),
("CAY", "H"),
("CCB", "P"),
("CCD", "P"),
("CCH", "P"),
("CCK", "P"),
("CCM", "P"),
("CCN", "P"),
("CCR", "P"),
("CCS", "P"),
("CCV", "P"),
("CCW", "P"),
("CCY", "P"),
("CGB", "R"),
("CGD", "R"),
("CGH", "R"),
("CGK", "R"),
("CGM", "R"),
("CGN", "R"),
("CGR", "R"),
("CGS", "R"),
("CGV", "R"),
("CGW", "R"),
("CGY", "R"),
("CTB", "L"),
("CTD", "L"),
("CTH", "L"),
("CTK", "L"),
("CTM", "L"),
("CTN", "L"),
("CTR", "L"),
("CTS", "L"),
("CTV", "L"),
("CTW", "L"),
("CTY", "L"),
("GAR", "E"),
("GAY", "D"),
("GCB", "A"),
("GCD", "A"),
("GCH", "A"),
("GCK", "A"),
("GCM", "A"),
("GCN", "A"),
("GCR", "A"),
("GCS", "A"),
("GCV", "A"),
("GCW", "A"),
("GCY", "A"),
("GGB", "G"),
("GGD", "G"),
("GGH", "G"),
("GGK", "G"),
("GGM", "G"),
("GGN", "G"),
("GGR", "G"),
("GGS", "G"),
("GGV", "G"),
("GGW", "G"),
("GGY", "G"),
("GTB", "V"),
("GTD", "V"),
("GTH", "V"),
("GTK", "V"),
("GTM", "V"),
("GTN", "V"),
("GTR", "V"),
("GTS", "V"),
("GTV", "V"),
("GTW", "V"),
("GTY", "V"),
("MGA", "R"),
("MGG", "R"),
("MGR", "R"),
("TAR", "*"),
("TAY", "Y"),
("TCB", "S"),
("TCD", "S"),
("TCH", "S"),
("TCK", "S"),
("TCM", "S"),
("TCN", "S"),
("TCR", "S"),
("TCS", "S"),
("TCV", "S"),
("TCW", "S"),
("TCY", "S"),
("TGY", "C"),
("TRA", "*"),
("TTR", "L"),
("TTY", "F"),
("YTA", "L"),
("YTG", "L"),
("YTR", "L"),
];
/// Vertebrate mitochondrial code, cf. https://en.wikipedia.org/wiki/Vertebrate_mitochondrial_code
const DNA_TO_AA1_CHRMT_VERTEBRATE_VEC: &[(&str, &str)] = &[
("AAA", "K"),
("AAC", "N"),
("AAG", "K"),
("AAT", "N"),
("ACA", "T"),
("ACC", "T"),
("ACG", "T"),
("ACT", "T"),
// caveat lector
("AGA", "*"),
("AGC", "S"),
// caveat lector
("AGG", "*"),
("AGT", "S"),
// caveat lector
("ATA", "M"),
("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"),
// caveat lector
("TGA", "W"),
("TGC", "C"),
("TGG", "W"),
("TGT", "C"),
("TTA", "L"),
("TTC", "F"),
("TTG", "L"),
("TTT", "F"),
// degenerate codons
("AAR", "K"),
("AAY", "N"),
("ACB", "T"),
("ACD", "T"),
("ACH", "T"),
("ACK", "T"),
("ACM", "T"),
("ACN", "T"),
("ACR", "T"),
("ACS", "T"),
("ACV", "T"),
("ACW", "T"),
("ACY", "T"),
("AGR", "R"),
("AGY", "S"),
("ATH", "I"),
("ATM", "I"),
("ATW", "I"),
("ATY", "I"),
("CAR", "Q"),
("CAY", "H"),
("CCB", "P"),
("CCD", "P"),
("CCH", "P"),
("CCK", "P"),
("CCM", "P"),
("CCN", "P"),
("CCR", "P"),
("CCS", "P"),
("CCV", "P"),
("CCW", "P"),
("CCY", "P"),
("CGB", "R"),
("CGD", "R"),
("CGH", "R"),
("CGK", "R"),
("CGM", "R"),
("CGN", "R"),
("CGR", "R"),
("CGS", "R"),
("CGV", "R"),
("CGW", "R"),
("CGY", "R"),
("CTB", "L"),
("CTD", "L"),
("CTH", "L"),
("CTK", "L"),
("CTM", "L"),
("CTN", "L"),
("CTR", "L"),
("CTS", "L"),
("CTV", "L"),
("CTW", "L"),
("CTY", "L"),
("GAR", "E"),
("GAY", "D"),
("GCB", "A"),
("GCD", "A"),
("GCH", "A"),
("GCK", "A"),
("GCM", "A"),
("GCN", "A"),
("GCR", "A"),
("GCS", "A"),
("GCV", "A"),
("GCW", "A"),
("GCY", "A"),
("GGB", "G"),
("GGD", "G"),
("GGH", "G"),
("GGK", "G"),
("GGM", "G"),
("GGN", "G"),
("GGR", "G"),
("GGS", "G"),
("GGV", "G"),
("GGW", "G"),
("GGY", "G"),
("GTB", "V"),
("GTD", "V"),
("GTH", "V"),
("GTK", "V"),
("GTM", "V"),
("GTN", "V"),
("GTR", "V"),
("GTS", "V"),
("GTV", "V"),
("GTW", "V"),
("GTY", "V"),
("MGA", "R"),
("MGG", "R"),
("MGR", "R"),
("TAR", "*"),
("TAY", "Y"),
("TCB", "S"),
("TCD", "S"),
("TCH", "S"),
("TCK", "S"),
("TCM", "S"),
("TCN", "S"),
("TCR", "S"),
("TCS", "S"),
("TCV", "S"),
("TCW", "S"),
("TCY", "S"),
("TGY", "C"),
("TRA", "*"),
("TTR", "L"),
("TTY", "F"),
("YTA", "L"),
("YTG", "L"),
("YTR", "L"),
];
const IUPAC_AMBIGUITY_CODES: [u8; 13] = *b"BDHVNUWSMKRYZ";