Translation involves the sequential recognition of triplets of adjacent nucleotides called codons. Since there are four different nucleotides, there are 4*4*4=64 possible codons. In the universal genetic code, 61 code for a specific amino acid, while the other three are stop codons. Given that there are 61 codons but only 20 amino acids, most amino acids are encoded by more than one codon. This degeneracy of the genetic code allows substitutions to occur in the DNA sequence that do not result in a change in the corresponding amino acid sequence. These substitutions are known as silent or synonymous substitutions, and are generally thought to be under relaxed selective pressure and more common than non-synonymous substitutions (i.e., those substitutions that do result in an amino acid change). Given the differential selective constraints that might be imposed on each codon position, a number of programs allow partitioning of a dataset according to codon position.

Some programs that allow use of codon substitution matrices are the following:

  • MrBayes
  • PAML
  • PAUP (manual specification of rates for each codon position)
  • PHYLIP (manual specification of rates for each codon position)
  • GARLI (tree inference using codon models)