def test_log_likelihood_cn_partial_phi(self): cn, h, l, phi, r, x = self.generate_simple_data() emission = likelihood.NegBinLikelihood() emission.h = h emission.phi = phi emission.r = r def evaluate_log_likelihood(phi, x, l, cn): emission.phi = phi return np.sum(emission.log_likelihood(x, l, cn)) def evaluate_log_likelihood_partial_phi(phi, x, l, cn): emission.phi = phi return emission._log_likelihood_partial_phi(x, l, cn)[:, 0] remixt.tests.utils.assert_grad_correct( evaluate_log_likelihood, evaluate_log_likelihood_partial_phi, phi, x, l, cn)
def test_learn_phi(self): experiment = load_test_experiment() emission = likelihood.NegBinLikelihood() emission.h = experiment.h emission.phi = experiment.phi emission.r = experiment.negbin_r N = experiment.l.shape[0] M = experiment.h.shape[0] prior = cn_model.CopyNumberPrior(N, M, perfect_cn_prior(experiment.cn)) prior.set_lengths(experiment.l) model = cn_model.HiddenMarkovModel(N, M, emission, prior) phi_init = experiment.phi + experiment.phi * 0.02 * np.random.randn(*experiment.phi.shape) estimator = em.ExpectationMaximizationEstimator(num_em_iter=1) estimator.learn_param(model, 'phi', phi_init)
def evaluate_log_likelihood_partial_h(h, x, l, cn, phi): emission = likelihood.NegBinLikelihood() emission.h = h emission.phi = phi emission.r = r return emission._log_likelihood_partial_h(x, l, cn)