pub fn get_part_func_mats_2loop<T>(
pos_quadruple: &(T, T, T, T),
sta_part_func_mats: &StaPartFuncMats<T>,
is_forward: bool,
pos_pair_mat_set: &HashMap<(T, T), HashSet<(T, T), RandomState, Global>, RandomState, Global>,
ss_free_energy_mat_set_pair: &(&SsFreeEnergyMats<T>, &SsFreeEnergyMats<T>),
sta_fe_params: &StaFeParams<T>,
matchable_pos_sets_1: &HashMap<T, HashSet<T, RandomState, Global>, RandomState, Global>,
matchable_pos_sets_2: &HashMap<T, HashSet<T, RandomState, Global>, RandomState, Global>,
align_feature_score_sets: &AlignFeatureCountSets
) -> (HashMap<(T, T), f32, RandomState, Global>, HashMap<(T, T), f32, RandomState, Global>)where
T: Unsigned + PrimInt + Hash + FromPrimitive + Integer + Ord,