jebl.evolution.trees
Class GreedyUnrootedConsensusTreeBuilder
java.lang.Object
   jebl.evolution.trees.ConsensusTreeBuilder<Tree>
jebl.evolution.trees.ConsensusTreeBuilder<Tree>
       jebl.evolution.trees.GreedyUnrootedConsensusTreeBuilder
jebl.evolution.trees.GreedyUnrootedConsensusTreeBuilder
- All Implemented Interfaces: 
- TreeBuilder<Tree>
- public final class GreedyUnrootedConsensusTreeBuilder 
- extends ConsensusTreeBuilder<Tree>
Builds greedy consensus tree given a set of unrooted trees.
 
 Each edge in a tree "supports" a split, i.e. the partition of the taxa into two clades
 (which you get by deleting the edge). A Majority consensus tree is built by finding
 clades appearing in at least 50% of the trees or more. A Greedy consensus tree is a
 refinement of a Majority tree where the splits are sorted by amount of support, and are
 applied in order only if they are compatible (consistent) with the tree at that
 stage. A user supplied threshold gives a lower bound on amount of support.  If set t0
 50% the Greedy method reduces to the majority consensus tree. At 100% it reduces to the
 Strict consensus tree.
 
 The implementation is relatively simple but tricky in parts. Each tree is scanned, and
 support for each split/clade is collected in one table. The clade is represented by a
 bitset, which always contains the (arbitrary) first node. The scan is made by going
 over all nodes ordered in such a way that the subtree of exactly one edge of the node
 has been completely scanned, so the node "knows" the set of tips of that subtree without
 needing to re-scan the tree.
 
 After all trees are scanned an initial consensus tree is constructed with one root and
 all tips as children. The split set is scanned in order of decreasing support, and each
 supported clade refines the tree by creating a new descendant for the node containing
 the clade and re-attaching the clade to that new node. This is done only if the split
 is compatible with the tree, i.e.  only if the split is completely contained in a proper
 subset of descendants of one node. This process continues until only clades with support
 lower that the threshold are left.
 
 The length of the consensus tree branches is computed from the average over all trees
 containing the clade. The lengths of tip branches are computed by averaging over all
 trees.
 
 While the consensus tree is logically unrooted, we generate a rooted tree because we
 can store attributes such as support only for nodes.
- Author:
- Joseph Heled
 
 
 
 
 
 
| Methods inherited from class java.lang.Object | 
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
 
build
public final Tree build()
-