1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
use utils::*; pub type InitHlDeltaFes = Vec<FreeEnergy>; pub type SpecialHlDeltaFes = HashMap<Seq, FreeEnergy, Hasher>; pub const MIN_HL_LEN: usize = 3; pub const MIN_SPAN_OF_INDEX_PAIR_CLOSING_HL: usize = MIN_HL_LEN + 2; pub const MIN_LOOP_LEN_4_LOG_EXTRAPOLATION_OF_INIT_HL_DELTA_FE: usize = 10; pub const COEFFICENT_4_LOG_EXTRAPOLATION_OF_INIT_HL_DELTA_FE: FreeEnergy = 1.75 * GAS_CONST * TEMPERATURE; pub const HL_UU_OR_GA_FIRST_MISMATCH_BONUS_DELTA_FE: FreeEnergy = -0.9; pub const HL_GG_FIRST_MISMATCH_BONUS_DELTA_FE: FreeEnergy = -0.8; pub const HL_SPECIAL_GU_CLOSURE_BONUS_DELTA_FE: FreeEnergy = -2.2; pub const HL_OF_3_CS_PENALTY_DELTA_FE: FreeEnergy = 1.5; pub const COEFFICENT_4_ALL_C_HL_DELTA_FE: FreeEnergy = 0.3; pub const CONST_4_ALL_C_HL_DELTA_FE: FreeEnergy = 1.6; lazy_static! { pub static ref INIT_HL_DELTA_FES: InitHlDeltaFes = { let mut init_hl_delta_fes = vec![0., 0., 0., 5.4, 5.6, 5.7, 5.4, 6.0, 5.5, 6.4]; let len_of_init_hl_delta_fes = init_hl_delta_fes.len(); let basic_init_hl_delta_fe = init_hl_delta_fes[MIN_LOOP_LEN_4_LOG_EXTRAPOLATION_OF_INIT_HL_DELTA_FE - 1]; for i in len_of_init_hl_delta_fes .. MAX_LOOP_LEN_4_LOG_EXTRAPOLATION_OF_INIT_LOOP_DELTA_FE { init_hl_delta_fes.push(basic_init_hl_delta_fe + (COEFFICENT_4_LOG_EXTRAPOLATION_OF_INIT_HL_DELTA_FE * fast_ln(i as FreeEnergy / (MIN_LOOP_LEN_4_LOG_EXTRAPOLATION_OF_INIT_HL_DELTA_FE - 1) as FreeEnergy)) / KILO); } init_hl_delta_fes }; pub static ref SPECIAL_HL_DELTA_FES: SpecialHlDeltaFes = { [ (String::from("CAACG").into_bytes(), 6.8), (String::from("GUUAC").into_bytes(), 6.9), (String::from("CUACGG").into_bytes(), -10.7), (String::from("CUCCGG").into_bytes(), -12.9), (String::from("CUUCGG").into_bytes(), -15.3), (String::from("CUUUGG").into_bytes(), -6.8), (String::from("CCAAGG").into_bytes(), -10.3), (String::from("CCCAGG").into_bytes(), -8.9), (String::from("CCGAGG").into_bytes(), -6.6), (String::from("CCUAGG").into_bytes(), -3.5), (String::from("CCACGG").into_bytes(), -3.3), (String::from("CCGCGG").into_bytes(), -7.5), (String::from("CCUCGG").into_bytes(), -13.9), (String::from("CUAAGG").into_bytes(), -7.6), (String::from("CUCAGG").into_bytes(), -6.6), (String::from("CUUAGG").into_bytes(), -6.2), (String::from("CUGCGG").into_bytes(), -10.7), (String::from("CAACGG").into_bytes(), 6.9), (String::from("ACAGUGCU").into_bytes(), -12.8), (String::from("ACAGUGAU").into_bytes(), -11.4), (String::from("ACAGUGUU").into_bytes(), -15.4), (String::from("ACAGUACU").into_bytes(), -16.8), ].iter().cloned().collect() }; }