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,