jebl.evolution.trees
Class TransformedRootedTree

java.lang.Object
  extended by jebl.evolution.trees.FilteredRootedTree
      extended by jebl.evolution.trees.TransformedRootedTree
All Implemented Interfaces:
Graph, RootedTree, Tree, Attributable

public class TransformedRootedTree
extends FilteredRootedTree

This RootedTree class wraps another RootedTree and transforms the branch lengths and node heights using various functions. Currently implemented are equal lengths (all branch lengths are 1.0) and cladogram (the height of a node is proportional to the number of external nodes). Note that all these functions are recalculated on the fly for every call to getHeight and getLength and it may be desirable to precalculate them.

Author:
Andrew Rambaut

Nested Class Summary
static class TransformedRootedTree.Transform
           
 
Nested classes/interfaces inherited from interface jebl.evolution.graphs.Graph
Graph.NoEdgeException, Graph.Utils
 
Field Summary
 
Fields inherited from class jebl.evolution.trees.FilteredRootedTree
source
 
Constructor Summary
TransformedRootedTree(RootedTree source, TransformedRootedTree.Transform transform)
           
 
Method Summary
 double getHeight(Node node)
           
 double getLength(Node node)
           
 boolean hasHeights()
           
 boolean hasLengths()
           
 
Methods inherited from class jebl.evolution.trees.FilteredRootedTree
conceptuallyUnrooted, getAdjacencies, getAttribute, getAttributeMap, getAttributeNames, getChildren, getEdge, getEdgeLength, getEdges, getEdges, getExternalEdges, getExternalNodes, getInternalEdges, getInternalNodes, getNode, getNodes, getNodes, getNodes, getParent, getRootNode, getSource, getTaxa, getTaxon, isExternal, isRoot, removeAttribute, setAttribute
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TransformedRootedTree

public TransformedRootedTree(RootedTree source,
                             TransformedRootedTree.Transform transform)
Method Detail

hasHeights

public boolean hasHeights()
Specified by:
hasHeights in interface RootedTree
Overrides:
hasHeights in class FilteredRootedTree
Returns:
Whether this tree has node heights available

getHeight

public double getHeight(Node node)
Specified by:
getHeight in interface RootedTree
Overrides:
getHeight in class FilteredRootedTree
Parameters:
node - the node whose height is being requested.
Returns:
the height of the given node. The height will be less than the parent's height and greater than it children's heights.

hasLengths

public boolean hasLengths()
Specified by:
hasLengths in interface RootedTree
Overrides:
hasLengths in class FilteredRootedTree
Returns:
Whether this tree has branch lengths available

getLength

public double getLength(Node node)
Specified by:
getLength in interface RootedTree
Overrides:
getLength in class FilteredRootedTree
Parameters:
node - the node whose branch length (to its parent) is being requested.
Returns:
the length of the branch to the parent node (0.0 if the node is the root).