Expand description
§Amino acid translation tables
This module provides traits for implementing amino acid translation tables.
Enable the translation feature in Cargo.toml:
[dependencies]
bio-seq = { version="0.13", features=["translation"] }§Examples
The standard genetic code is provided as a translation::STANDARD constant:
use bio_seq::prelude::*;
use bio_seq::translation::STANDARD;
use bio_seq::translation::TranslationTable;
let seq = dna!("AATTTGTGGGTTCGTCTGCGGCTCCGCCCTTAGTACTATGAGGACGATCAGCACCATAAGAACAAA");
let aminos: Seq<Amino> = seq
.windows(3)
.map(|codon| STANDARD.to_amino(&codon))
.collect::<Seq<Amino>>();
assert_eq!(
aminos,
Seq::<Amino>::try_from("NIFLCVWGGVFSRVSLCARGALSPRAPPLL*SVYTLYM*ERGDTRDISQSAHTPHI*KRENTQK").unwrap()
);
Custom translation tables can be implemented from associative datastructures:
use bio_seq::prelude::*;
use bio_seq::translation::{TranslationTable, TranslationError};
struct Mitochondria;
impl TranslationTable<Dna, Amino> for Mitochondria {
fn to_amino(&self, codon: &SeqSlice<Dna>) -> Amino {
if codon == dna!("AGA") {
Amino::X
} else if codon == dna!("AGG") {
Amino::X
} else if codon == dna!("ATA") {
Amino::M
} else if codon == dna!("TGA") {
Amino::W
} else {
Amino::unsafe_from_bits(Into::<u8>::into(codon))
}
}
fn to_codon(&self, _amino: Amino) -> Result<Seq<Dna>, TranslationError> {
unimplemented!()
}
}
let seq: Seq<Dna> =
dna!("AATTTGTGGGTTCGTCTGCGGCTCCGCCCTTAGTACTATGAGGACGATCAGCACCATAAGAACAAA").into();
let aminos: Seq<Amino> = seq
.windows(3)
.map(|codon| Mitochondria.to_amino(&codon))
.collect::<Seq<Amino>>();
assert_eq!(seq.len() - 2, aminos.len());
for (x, y) in aminos.into_iter().zip(
Seq::<Amino>::try_from(
"NIFLCVWGGVFSRVSLCARGALSPRAPPLL*SVYTLYMWE*GDTRDISQSAHTPHM*K*ENTQK",
)
.unwrap()
.into_iter(),
) {
assert_eq!(x, y)
}§Errors
Translation tables may not be complete or they may be ambiguous
Structs§
- Codon
Table - A customisable translation table
Enums§
- Translation
Error - Error conditions for codon/amino acid translation
Constants§
Traits§
- Partial
Translation Table - A partial translation table where not all triples of characters map to amino acids
- Translation
Table - A codon translation table where all codons map to amino acids