1 package jalview.ext.archaeopteryx;
3 import jalview.ext.treeviewer.ExternalTreeFrame;
4 import jalview.ext.treeviewer.ExternalTreeI;
5 import jalview.ext.treeviewer.ExternalTreeNodeI;
7 import java.util.Iterator;
9 import org.forester.archaeopteryx.Archaeopteryx;
10 import org.forester.phylogeny.Phylogeny;
11 import org.forester.phylogeny.PhylogenyMethods;
12 import org.forester.phylogeny.PhylogenyNode;
14 public class Tree implements ExternalTreeI
16 private final Phylogeny tree;
20 tree = new Phylogeny();
22 public Tree(Phylogeny aptxTree)
29 private void wrapAllTreeNodes()
31 for (Iterator<PhylogenyNode> iterator = tree
32 .iteratorPostorder(); iterator.hasNext();)
34 PhylogenyNode foresterNode = iterator.next();
35 ExternalTreeNodeI treeNode = TreeNode
36 .getUniqueWrapper(foresterNode);
42 public ExternalTreeNodeI getRoot()
44 ExternalTreeNodeI root = TreeNode.getUniqueWrapper(tree.getRoot());
49 public void setTreeName(String name)
56 public ExternalTreeNodeI getNodeWithName(String name)
58 return TreeNode.getUniqueWrapper(tree.getNode(name));
63 public String[] getAllLeafNames()
65 return tree.getAllExternalNodeNames();
69 public void setRerootable(boolean b)
71 tree.setRerootable(b);
76 public void setRooted(boolean b)
83 public boolean isEmpty()
85 return tree.isEmpty();
89 public String getTreeName()
91 return tree.getName();
95 public void setRoot(ExternalTreeNodeI rootNode)
97 PhylogenyNode treeRoot = TreeNode.unwrapNode(rootNode);
98 tree.setRoot(treeRoot);
104 public double getHeight(boolean adjustForCollapsedSubtrees)
106 return tree.calculateHeight(adjustForCollapsedSubtrees);
110 public Iterator<ExternalTreeNodeI> iterateInPreOrder()
112 Iterator<ExternalTreeNodeI> iter = new TreeIterator(
113 tree.iteratorPreorder());
118 public Iterator<ExternalTreeNodeI> iterateInLevelOrder()
120 Iterator<ExternalTreeNodeI> iter = new TreeIterator(
121 tree.iteratorLevelOrder());
126 public Iterator<ExternalTreeNodeI> iterateInPostOrder()
128 Iterator<ExternalTreeNodeI> iter = new TreeIterator(
129 tree.iteratorPostorder());
134 public ExternalTreeNodeI getFurthestNode()
136 PhylogenyNode furthestNode = PhylogenyMethods
137 .calculateNodeWithMaxDistanceToRoot(tree);
138 return TreeNode.getUniqueWrapper(furthestNode);
142 public ExternalTreeFrame createInstanceFromTree(String instanceTitle)
144 return new AptxFrame(Archaeopteryx.createApplication(tree,
145 AptxInit.APTX_CONFIG,