double MarkovModel::loglike()const{ const Vec &icount(suf()->init()); const Mat &tcount(suf()->trans()); Vec logpi0(log(pi0())); Mat logQ(log(Q())); double ans= icount.dot(logpi0); ans+= el_mult_sum(tcount, logQ); return ans; }
double MarkovModel::loglike(const Vector &serialized_params)const{ const Vec &icount(suf()->init()); const Mat &tcount(suf()->trans()); int S = state_space_size(); TransitionProbabilityMatrix transition_probabilities(S); Vec logpi0(log(pi0())); Mat logQ(log(Q())); double ans= icount.dot(logpi0); ans+= el_mult_sum(tcount, logQ); return ans; }