JAL-4134 - refactor tree calculation code to work with binaryNode base type.
[jalview.git] / src / jalview / analysis / TreeBuilder.java
index 0601dd9..78dc37f 100644 (file)
@@ -23,6 +23,7 @@ package jalview.analysis;
 import jalview.api.analysis.ScoreModelI;
 import jalview.api.analysis.SimilarityParamsI;
 import jalview.datamodel.AlignmentView;
+import jalview.datamodel.BinaryNode;
 import jalview.datamodel.CigarArray;
 import jalview.datamodel.SeqCigar;
 import jalview.datamodel.SequenceI;
@@ -61,9 +62,9 @@ public abstract class TreeBuilder
 
   protected double rj;
 
-  SequenceNode maxdist;
+  BinaryNode maxdist;
 
-  SequenceNode top;
+  BinaryNode top;
 
   double maxDistValue;
 
@@ -121,7 +122,7 @@ public abstract class TreeBuilder
    * 
    * @return DOCUMENT ME!
    */
-  double findHeight(SequenceNode nd)
+  double findHeight(BinaryNode nd)
   {
     if (nd == null)
     {
@@ -130,7 +131,7 @@ public abstract class TreeBuilder
 
     if ((nd.left() == null) && (nd.right() == null))
     {
-      nd.height = ((SequenceNode) nd.parent()).height + nd.dist;
+      nd.height = ((BinaryNode) nd.parent()).height + nd.dist;
 
       if (nd.height > maxheight)
       {
@@ -145,7 +146,7 @@ public abstract class TreeBuilder
     {
       if (nd.parent() != null)
       {
-        nd.height = ((SequenceNode) nd.parent()).height + nd.dist;
+        nd.height = ((BinaryNode) nd.parent()).height + nd.dist;
       }
       else
       {
@@ -153,8 +154,8 @@ public abstract class TreeBuilder
         nd.height = (float) 0.0;
       }
 
-      maxheight = findHeight((SequenceNode) (nd.left()));
-      maxheight = findHeight((SequenceNode) (nd.right()));
+      maxheight = findHeight((BinaryNode) (nd.left()));
+      maxheight = findHeight((BinaryNode) (nd.right()));
     }
 
     return maxheight;
@@ -166,7 +167,7 @@ public abstract class TreeBuilder
    * @param nd
    *          DOCUMENT ME!
    */
-  void reCount(SequenceNode nd)
+  void reCount(BinaryNode nd)
   {
     ycount = 0;
     // _lycount = 0;
@@ -180,7 +181,7 @@ public abstract class TreeBuilder
    * @param nd
    *          DOCUMENT ME!
    */
-  void _reCount(SequenceNode nd)
+  void _reCount(BinaryNode nd)
   {
     // if (_lycount<_lylimit)
     // {
@@ -196,11 +197,11 @@ public abstract class TreeBuilder
     if ((nd.left() != null) && (nd.right() != null))
     {
 
-      _reCount((SequenceNode) nd.left());
-      _reCount((SequenceNode) nd.right());
+      _reCount(nd.left());
+      _reCount((BinaryNode) nd.right());
 
-      SequenceNode l = (SequenceNode) nd.left();
-      SequenceNode r = (SequenceNode) nd.right();
+      BinaryNode l = nd.left();
+      BinaryNode r = nd.right();
 
       nd.count = l.count + r.count;
       nd.ycount = (l.ycount + r.ycount) / 2;
@@ -218,7 +219,7 @@ public abstract class TreeBuilder
    * 
    * @return DOCUMENT ME!
    */
-  public SequenceNode getTopNode()
+  public BinaryNode getTopNode()
   {
     return top;
   }
@@ -310,7 +311,7 @@ public abstract class TreeBuilder
    * 
    * @param nd
    */
-  void findMaxDist(SequenceNode nd)
+  void findMaxDist(BinaryNode nd)
   {
     if (nd == null)
     {
@@ -329,8 +330,8 @@ public abstract class TreeBuilder
     }
     else
     {
-      findMaxDist((SequenceNode) nd.left());
-      findMaxDist((SequenceNode) nd.right());
+      findMaxDist((BinaryNode) nd.left());
+      findMaxDist((BinaryNode) nd.right());
     }
   }
 
@@ -417,8 +418,8 @@ public abstract class TreeBuilder
     sn.setLeft((node.elementAt(i)));
     sn.setRight((node.elementAt(j)));
 
-    SequenceNode tmpi = (node.elementAt(i));
-    SequenceNode tmpj = (node.elementAt(j));
+    BinaryNode tmpi = (node.elementAt(i));
+    BinaryNode tmpj = (node.elementAt(j));
 
     findNewDistances(tmpi, tmpj, dist);
 
@@ -440,8 +441,8 @@ public abstract class TreeBuilder
    * Computes and stores new distances for nodei and nodej, given the previous
    * distance between them
    */
-  protected abstract void findNewDistances(SequenceNode nodei,
-          SequenceNode nodej, double previousDistance);
+  protected abstract void findNewDistances(BinaryNode nodei,
+          BinaryNode nodej, double previousDistance);
 
   /**
    * Calculates and saves the distance between the combination of cluster(i) and