Legend:
Library
Module
Module type
Parameter
Class
Class type
Abstract representations of codons and genetic codes
Codons are triplets of nucleotides that encode amino acids in a coding sequence. The correspondance between codons and amino acids is called a genetic code and several have been observed in living beings.
This module includes an implementation for the universal genetic code as well as functions to work with genetic codes specified by the NCBI (this NCBI page).
The module also defines types and functions to manipulate codons and nucleotides.
This type represents a genetic code as specified this NCBI page.
Each genetic code is identified by a unique integer identifier and has a label describing its origin. It is associated with a string representing the amino acids encoded by the codons.
to_string c returns a string representation of codon c
Example:
let codon_option = Codon.of_string "ATG" in
match codon_option with
| Some codon -> assert (Codon.to_string codon = "ATG")
| None -> failwith "Invalid codon string"
In this example, the codon is converted to its string representation. The string representation is then compared to the expected value.
neighbours p q tests if codons p and q are neighbors that is, if they differ by exactly one nucleotide. If so, the function returns the index of the differing nucleotide and the nucleotides themselves; it returns None if the codons are not neighbors.
Example:
let codon_p = Codon.of_string "ATA" in
let codon_q = Codon.of_string "ATG" in
match Codon.neighbours codon_p codon_q with
| Some (index, nucleotide_p, nucleotide_q) ->
assert (index = 2);
assert (nucleotide_p = Nucleotide.A);
assert (nucleotide_q = Nucleotide.G)
| None -> failwith "Codons are not neighbors"
In this example, the codons are compared to find the index of the differing nucleotide and the nucleotides themselves. The index and nucleotides are then compared to the expected values.