def test_forward_with_hmmlearn(self): r = np.random.randn obs = [np.array([[-600 + r(), 100 + r()], [-300 + r(), 200 + r()], [0 + r(), 300 + r()]]) for _ in xrange(10)] hmm = GaussianHMM(n_components=3) hmm.fit(obs) # Calculcate fwdlattice using hmmlearn algorithm framelogprob = hmm._compute_log_likelihood(obs[0]) start = timeit.default_timer() _, fwdlattice1 = hmm._do_forward_pass(framelogprob) print('hmmlearn took %fs' % (timeit.default_timer() - start)) # Calculate fwdlattice using fhmm algorithm with #chains = 1. This should yield the exact same results start = timeit.default_timer() fwdlattice2 = np.zeros(fwdlattice1.shape) fhmmc._forward(obs[0].shape[0], 1, hmm.n_components, [(x,) for x in xrange(hmm.n_components)], hmm._log_startprob.reshape(1, 3), hmm._log_transmat.reshape(1, 3, 3), framelogprob, fwdlattice2) print('fhmm took %fs' % (timeit.default_timer() - start)) self.assertTrue(np.allclose(fwdlattice1, fwdlattice2))