package jalview.ext.archaeopteryx;
-import jalview.ext.treeviewer.ExternalTreeFrame;
-import jalview.ext.treeviewer.ExternalTreeI;
-import jalview.ext.treeviewer.ExternalTreeNodeI;
+import jalview.datamodel.SequenceI;
+import jalview.ext.treeviewer.TreeFrameI;
+import jalview.ext.treeviewer.TreeI;
+import jalview.ext.treeviewer.TreeNodeI;
import java.util.Iterator;
import org.forester.phylogeny.PhylogenyMethods;
import org.forester.phylogeny.PhylogenyNode;
-public class Tree implements ExternalTreeI
+public class Tree implements TreeI
{
private final Phylogeny tree;
+ // alternative to static maps in TreeNode
+ // private Map<PhylogenyNode, TreeNodeI> originalNodes = new HashMap<>(500);
+ // private Map<TreeNodeI, PhylogenyNode> wrappedNodes = new HashMap<>(500);
+
public Tree()
{
tree = new Phylogeny();
}
+
public Tree(Phylogeny aptxTree)
{
tree = aptxTree;
.iteratorPostorder(); iterator.hasNext();)
{
PhylogenyNode foresterNode = iterator.next();
- ExternalTreeNodeI treeNode = TreeNode
+ TreeNodeI treeNode = TreeNode
.getUniqueWrapper(foresterNode);
}
}
@Override
- public ExternalTreeNodeI getRoot()
+ public TreeNodeI getRoot()
{
- ExternalTreeNodeI root = TreeNode.getUniqueWrapper(tree.getRoot());
+ TreeNodeI root = TreeNode.getUniqueWrapper(tree.getRoot());
return root;
}
}
@Override
- public ExternalTreeNodeI getNodeWithName(String name)
+ public TreeNodeI getNodeWithName(String name)
{
return TreeNode.getUniqueWrapper(tree.getNode(name));
}
@Override
- public void setRoot(ExternalTreeNodeI rootNode)
+ public void setRoot(TreeNodeI rootNode)
{
PhylogenyNode treeRoot = TreeNode.unwrapNode(rootNode);
tree.setRoot(treeRoot);
}
@Override
- public Iterator<ExternalTreeNodeI> iterateInPreOrder()
+ public Iterator<TreeNodeI> iterateInPreOrder()
{
- Iterator<ExternalTreeNodeI> iter = new TreeIterator(
+ Iterator<TreeNodeI> iter = new TreeIterator(
tree.iteratorPreorder());
return iter;
}
@Override
- public Iterator<ExternalTreeNodeI> iterateInLevelOrder()
+ public Iterator<TreeNodeI> iterateInLevelOrder()
{
- Iterator<ExternalTreeNodeI> iter = new TreeIterator(
+ Iterator<TreeNodeI> iter = new TreeIterator(
tree.iteratorLevelOrder());
return iter;
}
@Override
- public Iterator<ExternalTreeNodeI> iterateInPostOrder()
+ public Iterator<TreeNodeI> iterateInPostOrder()
{
- Iterator<ExternalTreeNodeI> iter = new TreeIterator(
+ Iterator<TreeNodeI> iter = new TreeIterator(
tree.iteratorPostorder());
return iter;
}
@Override
- public ExternalTreeNodeI getFurthestNode()
+ public TreeNodeI getFurthestNode()
{
PhylogenyNode furthestNode = PhylogenyMethods
.calculateNodeWithMaxDistanceToRoot(tree);
}
@Override
- public ExternalTreeFrame createInstanceFromTree(String instanceTitle)
+ public TreeFrameI createTreeViewerFromTree(String instanceTitle)
{
return new AptxFrame(Archaeopteryx.createApplication(tree,
AptxInit.APTX_CONFIG,
instanceTitle));
}
+ @Override
+ public SequenceI[] getNodeSequences()
+ {
+ SequenceI[] treeSeqs = new SequenceI[tree.getNodeCount()];
+ Iterator<TreeNodeI> iter = iterateInPreOrder();
+ int i = 0;
+ while (iter.hasNext())
+ {
+ SequenceI nodeSeq = iter.next().getSequence();
+ treeSeqs[i++] = nodeSeq;
+ }
+ return treeSeqs;
+ }
+
+ @Override
+ public TreeNodeI[] getAllNodes()
+ {
+ TreeNodeI[] treeNodes = new TreeNodeI[tree.getNodeCount()];
+ Iterator<TreeNodeI> iter = iterateInPreOrder();
+ int i = 0;
+ while (iter.hasNext())
+ {
+ treeNodes[i++] = iter.next();
+ }
+ return treeNodes;
+ }
}