package test.dr.evomodel.treelikelihood; import dr.evolution.datatype.Nucleotides; import dr.evolution.alignment.SitePatterns; import dr.evolution.alignment.AscertainedSitePatterns; /** * @author Marc A. Suchard */ public class AscertainmentCorrectedLikelihoodTest extends SequenceLikelihoodTest { public AscertainmentCorrectedLikelihoodTest(String name) { super(name); } public void setUp() throws Exception { super.setUp(); format.setMaximumFractionDigits(5); int numTaxa = PRIMATES_TAXON_SEQUENCE[0].length; System.err.println("nTaxa = " + numTaxa); createAlignmentWithAllUniquePatterns(PRIMATES_TAXON_SEQUENCE, Nucleotides.INSTANCE); treeModel = createPrimateTreeModel(); } public void testAllPatterns() { SitePatterns patterns = new SitePatterns(alignment, null, 0, -1, 1, true); System.out.println("Using " + patterns.getPatternCount() + " patterns"); double total = computeSumOfPatterns(patterns); System.out.println("Total of all (uncorrected) probabilities = " + total); assertEquals("uncorrected", 1.0, total, tolerance); } public void testMissingPatterns() { SitePatterns patterns = new SitePatterns(alignment, null, 10, -1, 1, true); System.out.println("Using " + patterns.getPatternCount() + " patterns"); double total = computeSumOfPatterns(patterns); System.out.println("Total of 10 missing (uncorrected) probabilities = " + total); assertEquals("uncorrected", 0.78287044, total, tolerance); } public void testCorrectedPatterns() { AscertainedSitePatterns patterns = new AscertainedSitePatterns(alignment, null, 0, -1, 1, -1, -1, // Include from/to 0, 9 // Exclude from/to ); System.out.println("Using " + patterns.getPatternCount() + " patterns, with " + patterns.getExcludePatternCount() + " excluded"); double total = computeSumOfPatterns(patterns); System.out.println("Total of 10 missing (corrected) probabilities = " + total); assertEquals("uncorrected", 1.0, total, tolerance); } }