void set_tprob_genmap(hmm_t *hmm, uint32_t prev_pos, uint32_t pos, void *data, double *tprob) { args_t *args = (args_t*) data; double ci = get_genmap_rate(args, pos - prev_pos, pos); MAT(tprob,2,STATE_HW,STATE_AZ) *= ci; MAT(tprob,2,STATE_AZ,STATE_HW) *= ci; MAT(tprob,2,STATE_AZ,STATE_AZ) = 1 - MAT(tprob,2,STATE_HW,STATE_AZ); MAT(tprob,2,STATE_HW,STATE_HW) = 1 - MAT(tprob,2,STATE_AZ,STATE_HW); }
void set_tprob_genmap(hmm_t *hmm, uint32_t prev_pos, uint32_t pos, void *data) { args_t *args = (args_t*) data; double ci = get_genmap_rate(args, pos - prev_pos, pos); MAT(hmm->curr_tprob,2,STATE_HW,STATE_HW) *= 1-ci; MAT(hmm->curr_tprob,2,STATE_HW,STATE_AZ) *= ci; MAT(hmm->curr_tprob,2,STATE_AZ,STATE_HW) *= ci; MAT(hmm->curr_tprob,2,STATE_AZ,STATE_AZ) *= 1-ci; }