Skip to main content

aa_similarity/
lib.rs

1/*! # Substitution matrices for use in protein sequence analysis and alignment.
2
3This crate implements the trait `Similarity` which provide the `similarity()` function for each substitution matrix. Similarity data from <ftp://ftp.ncbi.nih.gov/blast/matrices/> is parsed and creates a match between all possible combination of 2 amino acids.
4
5```rust
6use aa_similarity::{Blosum62, Blosum65, Similarity, AminoAcid};
7use std::convert::TryFrom;
8# use std::error::Error;
9# fn test_lib() -> Result<(), Box<dyn std::error::Error>> {
10
11// from AminoAcid
12assert_eq!(
13    Blosum65::similarity(AminoAcid::GlutamicAcid, AminoAcid::AsparticAcid),
14    2
15);
16
17// from char
18let ala = AminoAcid::try_from('A')?;
19let tyr = AminoAcid::try_from('Y')?;
20
21assert_eq!(Blosum62::similarity(ala, tyr), -2);
22
23# Ok(())
24# }
25# test_lib().unwrap()
26```
27*/
28// #![warn(clippy::all, clippy::pedantic, clippy::nursery, clippy::cargo)]
29#![allow(clippy::match_same_arms, clippy::too_many_lines)]
30
31pub use aa_name::AminoAcid;
32
33pub trait Similarity {
34    /// Returns the similarity score between 2 amino acids
35    fn similarity(lhs: AminoAcid, rhs: AminoAcid) -> i16;
36}
37
38include!(concat!(env!("OUT_DIR"), "/generated_matrices.rs"));