a1489c0fc1c99793e499e3915bc346b581664ad4 max Wed Jul 8 02:37:20 2026 -0700 Add support for all NCBI alternative genetic codes to dnautil Adds struct geneticCode plus the full set of NCBI translation tables (from gc.prt) so DNA can be translated with any genetic code, not just the Standard and Vertebrate Mitochondrial codes that were hardcoded. New API: geneticCodeForId/geneticCodeForName, lookupCodonInCode, isStopCodonInCode, dnaTranslateSomeInCode (explicit-handle, reentrant), and setDefaultGeneticCode for the process-global default. lookupCodon and friends are unchanged in behavior, still defaulting to the Standard code. The genetic code data lives in the auto-generated lib/geneticCodeTable.h, produced by oneShot/dnaGeneticCodes/dnaGeneticCodes.py from NCBI's gc.prt. Added a unit test under lib/tests. refs #16550 diff --git src/lib/geneticCodeTable.h src/lib/geneticCodeTable.h new file mode 100644 index 00000000000..edad29917dc --- /dev/null +++ src/lib/geneticCodeTable.h @@ -0,0 +1,92 @@ +/* geneticCodeTable.h - the NCBI genetic codes (translation tables). + * + * AUTO-GENERATED from NCBI's gc.prt - do not edit by hand. To refresh: + * src/oneShot/dnaGeneticCodes/dnaGeneticCodes.py > src/lib/geneticCodeTable.h + * + * Included by dnautil.c, which defines struct geneticCode. Each aa/starts + * string is 64 chars in codonTable[] order; in aa '*' is a stop codon, in + * starts 'M' is an alternative start codon. */ + +static struct geneticCode geneticCodes[] = { + { 1, "Standard", + "FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "---M------**--*----M---------------M----------------------------"}, + { 2, "Vertebrate Mitochondrial", + "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSS**VVVVAAAADDEEGGGG", + "----------**--------------------MMMM----------**---M------------"}, + { 3, "Yeast Mitochondrial", + "FFLLSSSSYY**CCWWTTTTPPPPHHQQRRRRIIMMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------**----------------------MM---------------M------------"}, + { 4, "Mold Mitochondrial; Protozoan Mitochondrial; Coelenterate Mitochondrial; Mycoplasma; Spiroplasma", + "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "--MM------**-------M------------MMMM---------------M------------"}, + { 5, "Invertebrate Mitochondrial", + "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSSSSVVVVAAAADDEEGGGG", + "---M------**--------------------MMMM---------------M------------"}, + { 6, "Ciliate Nuclear; Dasycladacean Nuclear; Hexamita Nuclear", + "FFLLSSSSYYQQCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "--------------*--------------------M----------------------------"}, + { 9, "Echinoderm Mitochondrial; Flatworm Mitochondrial", + "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNNKSSSSVVVVAAAADDEEGGGG", + "----------**-----------------------M---------------M------------"}, + {10, "Euplotid Nuclear", + "FFLLSSSSYY**CCCWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------**-----------------------M----------------------------"}, + {11, "Bacterial, Archaeal and Plant Plastid", + "FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "---M------**--*----M------------MMMM---------------M------------"}, + {12, "Alternative Yeast Nuclear", + "FFLLSSSSYY**CC*WLLLSPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------**--*----M---------------M----------------------------"}, + {13, "Ascidian Mitochondrial", + "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSSGGVVVVAAAADDEEGGGG", + "---M------**----------------------MM---------------M------------"}, + {14, "Alternative Flatworm Mitochondrial", + "FFLLSSSSYYY*CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNNKSSSSVVVVAAAADDEEGGGG", + "-----------*-----------------------M----------------------------"}, + {15, "Blepharisma Macronuclear", + "FFLLSSSSYY*QCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------*---*--------------------M----------------------------"}, + {16, "Chlorophycean Mitochondrial", + "FFLLSSSSYY*LCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------*---*--------------------M----------------------------"}, + {21, "Trematode Mitochondrial", + "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNNKSSSSVVVVAAAADDEEGGGG", + "----------**-----------------------M---------------M------------"}, + {22, "Scenedesmus obliquus Mitochondrial", + "FFLLSS*SYY*LCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "------*---*---*--------------------M----------------------------"}, + {23, "Thraustochytrium Mitochondrial", + "FF*LSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "--*-------**--*-----------------M--M---------------M------------"}, + {24, "Rhabdopleuridae Mitochondrial", + "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSSKVVVVAAAADDEEGGGG", + "---M------**-------M---------------M---------------M------------"}, + {25, "Candidate Division SR1 and Gracilibacteria", + "FFLLSSSSYY**CCGWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "---M------**-----------------------M---------------M------------"}, + {26, "Pachysolen tannophilus Nuclear", + "FFLLSSSSYY**CC*WLLLAPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------**--*----M---------------M----------------------------"}, + {27, "Karyorelict Nuclear", + "FFLLSSSSYYQQCCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "--------------*--------------------M----------------------------"}, + {28, "Condylostoma Nuclear", + "FFLLSSSSYYQQCCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------**--*--------------------M----------------------------"}, + {29, "Mesodinium Nuclear", + "FFLLSSSSYYYYCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "--------------*--------------------M----------------------------"}, + {30, "Peritrich Nuclear", + "FFLLSSSSYYEECC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "--------------*--------------------M----------------------------"}, + {31, "Blastocrithidia Nuclear", + "FFLLSSSSYYEECCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "----------**-----------------------M----------------------------"}, + {32, "Balanophoraceae Plastid", + "FFLLSSSSYY*WCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG", + "---M------*---*----M------------MMMM---------------M------------"}, + {33, "Cephalodiscidae Mitochondrial", + "FFLLSSSSYYY*CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSSKVVVVAAAADDEEGGGG", + "---M-------*-------M---------------M---------------M------------"}, +};