001    package calhoun.analysis.crf.test;
002    
003    import org.apache.commons.logging.Log;
004    import org.apache.commons.logging.LogFactory;
005    
006    import calhoun.analysis.crf.features.supporting.phylogenetic.PhylogeneticTreeFelsensteinOrder;
007    import calhoun.analysis.crf.features.supporting.phylogenetic.RootedBinaryPhylogeneticTree;
008    import calhoun.util.AbstractTestCase;
009    
010    public class NewickTreeManipulationTest extends AbstractTestCase {
011            private static final Log log = LogFactory.getLog(CRFIOTest.class);
012            boolean debug = log.isDebugEnabled();
013            
014            public void testAspTree() throws Exception {
015                    String treeStr = "(((AC2:1.0,(NF2:1.0,AF2:1.0):1.0):1.0,((AFL2:1.0,A_oryzae_RIB40:1.0):1.0,AT1:1.0):1.0):1.0,AN1:1.0):0.0;";
016                    RootedBinaryPhylogeneticTree tree = new RootedBinaryPhylogeneticTree(treeStr);  
017                    assertEquals(7, tree.getNumSpecies());
018            }
019            
020            public void testBigTree() throws Exception {
021                    RootedBinaryPhylogeneticTree RBPT = ExampleTrees.bigTree();     
022                    RBPT.summarize_tree();
023                    
024                    String[]  selected = new String[]{"elephant","human","mouse","dog","snufalupagus"};
025                    
026                    RootedBinaryPhylogeneticTree subtree = RBPT.subtree(selected);
027                    subtree.summarize_tree();       
028            }
029            
030            public void testCryptoTree() throws Exception {
031                    RootedBinaryPhylogeneticTree RBPT = ExampleTrees.crypto5();     
032                    RBPT.summarize_tree();
033                    
034                    String[] msaOrder = new String[]{"cnDT","cnDS","cnAB","cnBB","cnBV"};
035                    PhylogeneticTreeFelsensteinOrder fo = RBPT.getFelsensteinOrder(msaOrder);
036                    
037                    fo.summarize();
038                    
039            }
040            
041            public void testEncodeSpeciesFromBigTree() throws Exception {
042                    RootedBinaryPhylogeneticTree RBPT = ExampleTrees.bigTreeForEncode();    
043                    RBPT.summarize_tree();
044    
045                    String[] speciesList = new String[]{"hg17","hedgehog","shrew","baboon","tenrec",
046                                    "owl_monkey","rfbat","dusky_titi","chimp","zebrafish","platypus","cow",
047                                    "mouse","macaque","chicken","elephant","colobus_monkey","marmoset",
048                                    "mouse_lemur","armadillo","rat","tetraodon","rabbit","monodelphis",
049                                    "galago","xenopus","dog","fugu"};
050                    
051                    RootedBinaryPhylogeneticTree subtree = RBPT.subtree(speciesList);
052                    subtree.summarize_tree();       
053                    
054                    System.out.println("Now computing a Felsenstein ordering for the subtree:");
055                    subtree.getFelsensteinOrder(speciesList).summarize();
056                    
057            }
058            
059    }