package test.beast.evolution.speciation; import org.junit.Test; import beast.core.parameter.RealParameter; import beast.evolution.alignment.Alignment; import beast.evolution.speciation.BirthDeathGernhard08Model; import beast.evolution.tree.Tree; import junit.framework.TestCase; import test.beast.BEASTTestCase; public class BirthDeathGernhard08ModelTest extends TestCase { @Test public void testJC69Likelihood() throws Exception { // Set up JC69 model: uniform freqs, kappa = 1, 0 gamma categories Alignment data = BEASTTestCase.getAlignment(); Tree tree = BEASTTestCase.getTree(data); RealParameter birthDiffRate = new RealParameter("1.0"); RealParameter relativeDeathRate = new RealParameter("0.5"); RealParameter originHeight = new RealParameter("0.1"); BirthDeathGernhard08Model likelihood = new BirthDeathGernhard08Model(); likelihood.initByName("type", "unscaled", "tree", tree, "birthDiffRate", birthDiffRate, "relativeDeathRate", relativeDeathRate); double logP = 0; logP = likelihood.calculateLogP(); // -3.520936119641363 assertEquals(logP, 2.5878899503981287, BEASTTestCase.PRECISION); likelihood.initByName("type", "timesonly", "tree", tree, "birthDiffRate", birthDiffRate, "relativeDeathRate", relativeDeathRate); logP = likelihood.calculateLogP(); assertEquals(logP, 9.16714116240823, BEASTTestCase.PRECISION); likelihood.initByName("type", "oriented", "tree", tree, "birthDiffRate", birthDiffRate, "relativeDeathRate", relativeDeathRate); logP = likelihood.calculateLogP(); assertEquals(logP, 4.379649419626184, BEASTTestCase.PRECISION); likelihood.initByName("type", "labeled", "tree", tree, "birthDiffRate", birthDiffRate, "relativeDeathRate", relativeDeathRate); logP = likelihood.calculateLogP(); assertEquals(logP, 1.2661341104158121, BEASTTestCase.PRECISION); likelihood.initByName("type", "labeled", "tree", tree, "birthDiffRate", birthDiffRate, "relativeDeathRate", relativeDeathRate, "originHeight", originHeight); logP = likelihood.calculateLogP(); assertEquals(logP, 8.41413452832378, BEASTTestCase.PRECISION); } }