package test.dr.evolution; import dr.evolution.datatype.Nucleotides; import dr.evolution.tree.*; import dr.evolution.util.Taxa; import dr.evomodel.tree.BackboneNodeFilter; import test.dr.inference.trace.TraceCorrelationAssert; /** * @author Marc A. Suchard */ public class FilteredTreeTraitTest extends TraceCorrelationAssert { public FilteredTreeTraitTest(String name) { super(name); } public void setUp() throws Exception { super.setUp(); // NewickImporter importer = new NewickImporter("((1:1.0,2:1.0):1.0,3:2.0);"); // tree = importer.importTree(null); createAlignment(PRIMATES_TAXON_SEQUENCE, Nucleotides.INSTANCE); tree = createPrimateTreeModel(); treeTraitProvider = new TreeTraitProvider.Helper(); dummyTrait = new TreeTrait.D() { public String getTraitName() { return "one"; } public Intent getIntent() { return Intent.NODE; } public Double getTrait(Tree tree, NodeRef node) { return 1.0; } }; } public void testInternalFilter() { TreeTrait filteredTrait = new TreeTrait.FilteredD(dummyTrait, new TreeNodeFilter.ExternalInternalNodeFilter(false, true)); treeTraitProvider.addTrait(filteredTrait); TreeTrait sumTrait = new TreeTrait.SumOverTreeD(filteredTrait); treeTraitProvider.addTrait(sumTrait); System.out.println("InternalFilter Test"); StringBuffer buffer = new StringBuffer(); TreeUtils.newick(tree, tree.getRoot(), false, TreeUtils.BranchLengthType.LENGTHS_AS_TIME, null, // format null, // branchRates, new TreeTraitProvider[]{treeTraitProvider}, null, //idMap, buffer); System.out.println("Tree: " + buffer.toString()); double traitValue = (Double) sumTrait.getTrait(tree, null); System.out.println("Trait: " + traitValue); assertEquals(traitValue, 5.0); } public void testBackboneFilter() { Taxa taxonList = new Taxa(); taxonList.addTaxon(taxa[0]); taxonList.addTaxon(taxa[1]); TreeTrait backboneFilter = new TreeTrait.FilteredD(dummyTrait, new BackboneNodeFilter("backbone", tree, taxonList, true, true)); treeTraitProvider.addTrait(backboneFilter); TreeTrait sumTrait = new TreeTrait.SumOverTreeD(backboneFilter); treeTraitProvider.addTrait(sumTrait); System.out.println("BackboneFilter Test"); StringBuffer buffer = new StringBuffer(); TreeUtils.newick(tree, tree.getRoot(), false, TreeUtils.BranchLengthType.LENGTHS_AS_TIME, null, // format null, // branchRates, new TreeTraitProvider[]{treeTraitProvider}, null, //idMap, buffer); System.out.println("Tree: " + buffer.toString()); double traitValue = (Double) sumTrait.getTrait(tree, null); System.out.println("Trait: " + traitValue); assertEquals(traitValue, 7.0); // TODO Get real result } Tree tree; TreeTrait dummyTrait; TreeTraitProvider.Helper treeTraitProvider; }