JAL-2805 added getter in trees for retrieving all node sequences
[jalview.git] / src / jalview / ext / archaeopteryx / Tree.java
index 12dd8c7..76808e8 100644 (file)
@@ -1,5 +1,6 @@
 package jalview.ext.archaeopteryx;
 
+import jalview.datamodel.SequenceI;
 import jalview.ext.treeviewer.TreeFrameI;
 import jalview.ext.treeviewer.TreeI;
 import jalview.ext.treeviewer.TreeNodeI;
@@ -15,10 +16,15 @@ 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;
@@ -146,5 +152,31 @@ public class Tree implements TreeI
             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;
+  }
 
 }