d06339eb4800088e8fbd0aed296b259c3e4ad3f1
[jalview.git] / src / jalview / ext / archaeopteryx / Tree.java
1 package jalview.ext.archaeopteryx;
2
3 import jalview.ext.treeviewer.ExternalTreeFrame;
4 import jalview.ext.treeviewer.ExternalTreeI;
5 import jalview.ext.treeviewer.ExternalTreeNodeI;
6
7 import java.util.Iterator;
8
9 import org.forester.archaeopteryx.Archaeopteryx;
10 import org.forester.phylogeny.Phylogeny;
11 import org.forester.phylogeny.PhylogenyMethods;
12 import org.forester.phylogeny.PhylogenyNode;
13
14 public class Tree implements ExternalTreeI
15 {
16   private final Phylogeny tree;
17
18   public Tree(Phylogeny aptxTree)
19   {
20     tree = aptxTree;
21   }
22
23
24   @Override
25   public ExternalTreeNodeI getRoot()
26   {
27     ExternalTreeNodeI root = new TreeNode(tree.getRoot());
28     return root;
29   }
30
31   @Override
32   public void setTreeName(String name)
33   {
34     tree.setName(name);
35
36   }
37
38   @Override
39   public ExternalTreeNodeI getNodeWithName(String name)
40   {
41     return new TreeNode(tree.getNode(name));
42
43   }
44
45   @Override
46   public String[] getAllLeafNames()
47   {
48     return tree.getAllExternalNodeNames();
49   }
50
51   @Override
52   public void setRerootable(boolean b)
53   {
54     tree.setRerootable(b);
55
56   }
57
58   @Override
59   public void setRooted(boolean b)
60   {
61     tree.setRooted(b);
62
63   }
64
65   @Override
66   public boolean isEmpty()
67   {
68     return tree.isEmpty();
69   }
70
71   @Override
72   public String getTreeName()
73   {
74     return tree.getName();
75   }
76
77   @Override
78   public void setRoot(ExternalTreeNodeI rootNode)
79   {
80     PhylogenyNode treeRoot = new PhylogenyNode(rootNode.getNodeName());
81     // expand this
82     tree.setRoot(treeRoot);
83
84   }
85
86   @Override
87   public double getHeight(boolean adjustForCollapsedSubtrees)
88   {
89     return tree.calculateHeight(adjustForCollapsedSubtrees);
90   }
91
92   @Override
93   public Iterator<ExternalTreeNodeI> iterateInPreOrder()
94   {
95     Iterator<ExternalTreeNodeI> iter = new TreeIterator(
96             tree.iteratorPreorder());
97     return iter;
98   }
99
100   @Override
101   public Iterator<ExternalTreeNodeI> iterateInLevelOrder()
102   {
103     Iterator<ExternalTreeNodeI> iter = new TreeIterator(
104             tree.iteratorLevelOrder());
105     return iter;
106   }
107
108   @Override
109   public Iterator<ExternalTreeNodeI> iterateInPostOrder()
110   {
111     Iterator<ExternalTreeNodeI> iter = new TreeIterator(
112             tree.iteratorPostorder());
113     return iter;
114   }
115
116   @Override
117   public ExternalTreeNodeI getFurthestNode()
118   {
119     PhylogenyNode furthestNode = PhylogenyMethods
120             .calculateNodeWithMaxDistanceToRoot(tree);
121     return new TreeNode(furthestNode);
122   }
123
124   @Override
125   public ExternalTreeFrame createInstanceFromTree(String instanceTitle)
126   {
127     return new AptxFrame(Archaeopteryx.createApplication(tree,
128             AptxInit.APTX_CONFIG,
129             instanceTitle));
130   }
131 }