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/tests/expected/dnaCodonTest src/lib/tests/expected/dnaCodonTest new file mode 100644 index 00000000000..b5a40a02ad7 --- /dev/null +++ src/lib/tests/expected/dnaCodonTest @@ -0,0 +1,10 @@ +code 1 Standard M**GQ* +code 2 Vertebrate Mitochondrial MW*GQ* +code 6 Ciliate Nuclear; Dasycladacean Nuclear; Hexamita Nuclear M*QGQQ +tga stop standard=1 mito=0 +id 11 name=Bacterial, Archaeal and Plant Plastid +name Standard id=1 +id 999 isNull=1 name Bogus isNull=1 +default(standard) translateSome=M +default(mito) translateSome=MW +lookupCodon(tga) after reset=0