X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FBinaryNode.java;h=624c2b9af0bd01e32df0ff8b8a94e00ae49a2f5f;hb=HEAD;hp=c0ff0e4e642f623369b0f33f25947608f6d71e97;hpb=f4766a7bbcfae845fc95923b01fa14ff83d589ff;p=jalview.git diff --git a/src/jalview/datamodel/BinaryNode.java b/src/jalview/datamodel/BinaryNode.java index c0ff0e4..624c2b9 100755 --- a/src/jalview/datamodel/BinaryNode.java +++ b/src/jalview/datamodel/BinaryNode.java @@ -20,27 +20,50 @@ */ package jalview.datamodel; +import java.awt.Color; + /** - * DOCUMENT ME! + * Represent a node in a binary tree * - * @author $author$ + * @author $mclamp (probably!)$ * @version $Revision$ */ -public class BinaryNode +public class BinaryNode { - Object element; + T element; String name; - BinaryNode left; + BinaryNode left; - BinaryNode right; + BinaryNode right; - BinaryNode parent; + BinaryNode parent; - /** DOCUMENT ME!! */ + /** Bootstrap value */ public int bootstrap; + /** DOCUMENT ME!! */ + public double dist; + + /** DOCUMENT ME!! */ + public int count; + + /** DOCUMENT ME!! */ + public double height; + + /** DOCUMENT ME!! */ + public float ycount; + + /** DOCUMENT ME!! */ + public Color color = Color.black; + + /** + * if true, node is created to simulate polytomy between parent and its 3 or + * more children + */ + public boolean dummy = false; + /** * Creates a new BinaryNode object. */ @@ -48,6 +71,7 @@ public class BinaryNode { left = right = parent = null; bootstrap = 0; + dist = 0; } /** @@ -60,13 +84,28 @@ public class BinaryNode * @param name * DOCUMENT ME! */ - public BinaryNode(Object element, BinaryNode parent, String name) + public BinaryNode(T element, BinaryNode parent, String name, + double dist) { + this(); this.element = element; this.parent = parent; this.name = name; + this.dist = dist; + } + + public BinaryNode(T element, BinaryNode parent, String name, + double dist, int bootstrap) + { + this(element, parent, name, dist); + this.bootstrap = bootstrap; + } - left = right = null; + public BinaryNode(T val, BinaryNode parent, String name, double dist, + int bootstrap, boolean dummy) + { + this(val, parent, name, dist, bootstrap); + this.dummy = dummy; } /** @@ -74,7 +113,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public Object element() + public T element() { return element; } @@ -87,7 +126,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public Object setElement(Object v) + public T setElement(T v) { return element = v; } @@ -97,7 +136,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public BinaryNode left() + public BinaryNode left() { return left; } @@ -110,7 +149,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public BinaryNode setLeft(BinaryNode n) + public BinaryNode setLeft(BinaryNode n) { return left = n; } @@ -120,7 +159,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public BinaryNode right() + public BinaryNode right() { return right; } @@ -133,7 +172,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public BinaryNode setRight(BinaryNode n) + public BinaryNode setRight(BinaryNode n) { return right = n; } @@ -143,7 +182,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public BinaryNode parent() + public BinaryNode parent() { return parent; } @@ -156,7 +195,7 @@ public class BinaryNode * * @return DOCUMENT ME! */ - public BinaryNode setParent(BinaryNode n) + public BinaryNode setParent(BinaryNode n) { return parent = n; } @@ -178,7 +217,7 @@ public class BinaryNode * setChild(null), or detach() for this. * */ - public void SetChildren(BinaryNode leftchild, BinaryNode rightchild) + public void SetChildren(BinaryNode leftchild, BinaryNode rightchild) { if (leftchild != null) { @@ -200,7 +239,7 @@ public class BinaryNode * * @return BinaryNode The detached node. */ - public BinaryNode detach() + public BinaryNode detach() { if (this.parent != null) { @@ -228,9 +267,9 @@ public class BinaryNode * * @return BinaryNode */ - public BinaryNode ascendLeft() + public BinaryNode ascendLeft() { - BinaryNode c = this; + BinaryNode c = this; do { @@ -247,9 +286,9 @@ public class BinaryNode * * @return BinaryNode */ - public BinaryNode ascendRight() + public BinaryNode ascendRight() { - BinaryNode c = this; + BinaryNode c = this; do { @@ -300,4 +339,45 @@ public class BinaryNode { return bootstrap; } + + /** + * @param dummy + * true if node is created for the representation of polytomous trees + */ + public boolean isDummy() + { + return dummy; + } + + /** + * DOCUMENT ME! + * + * @param newstate + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public boolean setDummy(boolean newstate) + { + boolean oldstate = dummy; + dummy = newstate; + + return oldstate; + } + + /** + * ascends the tree but doesn't stop until a non-dummy node is discovered. + * + */ + public BinaryNode AscendTree() + { + BinaryNode c = this; + + do + { + c = c.parent(); + } while ((c != null) && c.dummy); + + return c; + } }