1pub use rna_algos::utils::*;
2pub use rna_algos::mccaskill_algo::*;
3use std::f64::consts::LOG2_E;
4
5pub type StaFreeEnergy = LogProb;
6type LbapsWithBasePairs = HashMap<BasePair, LogProb, Hasher>;
7type LogGapProbsWithBases = HashMap<Base, LogProb, Hasher>;
8pub type BaseQuadruple = (Base, Base, Base, Base);
9type LbpapsWithBaseQuadruples = HashMap<BaseQuadruple, LogProb, Hasher>;
10type LbppsWithBasePairs = HashMap<BasePair, LogProb, Hasher>;
11type LnbppsWithBases = HashMap<Base, LogProb, Hasher>;
12#[derive(Debug)]
13pub struct StemParams {
14 pub lbaps_with_base_pairs: LbapsWithBasePairs,
15 pub logps_with_bases: LogGapProbsWithBases,
16 pub legps_with_bases: LogGapProbsWithBases,
17 pub lbpaps_with_base_quadruples: LbpapsWithBaseQuadruples,
18 pub lbpps_with_base_pairs: LbppsWithBasePairs,
19 pub lnbpps_with_bases: LnbppsWithBases,
20}
21pub type BaScoreMat = HashMap<BasePair, StaFreeEnergy>;
22pub type BpaScoreMat = HashMap<(BasePair, BasePair), StaFreeEnergy>;
23
24pub const SEQ_ALPHABET: [Base; 4] = [A, C, G, U];
25pub const PSEUDO_BASE: Base = '$' as Base;
26lazy_static! {
27 pub static ref RIBOSUM_85_60_BA_SCORE_MAT: BaScoreMat = {
28 [
29 (AA, 2.22), (AC, -1.86), (AG, -1.46), (AU, -1.39),
30 (CA, -1.86), (CC, 1.16), (CG, -2.48), (CU, -1.05),
31 (GA, -1.46), (GC, -2.48), (GG, 1.03), (GU, -1.74),
32 (UA, -1.39), (UC, -1.05), (UG, -1.74), (UU, 1.65),
33 ].iter().map(|(base_pair, ba_score)| {(*base_pair, ba_score / LOG2_E)}).collect()
34 };
35 pub static ref RIBOSUM_85_60_BPA_SCORE_MAT: BpaScoreMat = {
36 [
37 ((AU, AU), 4.49), ((AU, CG), 1.67), ((AU, GC), 2.70), ((AU, GU), 0.59), ((AU, UA), 1.61), ((AU, UG), -0.51),
38 ((CG, AU), 1.67), ((CG, CG), 5.36), ((CG, GC), 2.11), ((CG, GU), -0.27), ((CG, UA), 2.75), ((CG, UG), 1.32),
39 ((GC, AU), 2.70), ((GC, CG), 2.11), ((GC, GC), 5.62), ((GC, GU), 1.21), ((GC, UA), 1.6), ((GC, UG), -0.08),
40 ((GU, AU), 0.59), ((GU, CG), -0.27), ((GU, GC), 1.21), ((GU, GU), 3.47), ((GU, UA), -0.57), ((GU, UG), -2.09),
41 ((UA, AU), 1.61), ((UA, CG), 2.75), ((UA, GC), 1.6), ((UA, GU), -0.57), ((UA, UA), 4.97), ((UA, UG), 1.14),
42 ((UG, AU), -0.51), ((UG, CG), 1.32), ((UG, GC), -0.08), ((UG, GU), -2.09), ((UG, UA), 1.14), ((UG, UG), 3.36),
43 ].iter().map(|(base_quadruple, bpa_score)| {(*base_quadruple, bpa_score / LOG2_E)}).collect()
44 };
45}