use of dr.evomodel.bigfasttree.ghosttree.CorporealTreeModel in project beast-mcmc by beast-dev.
the class CladeAwareSubtreePruneRegraft method getRelevantClade.
private CladeRef getRelevantClade(NodeRef nodeRef) {
if (isGhostTree) {
// TODO test this branch
GhostTreeModel ghostTreeModel = ((GhostTreeModel) tree);
CorporealTreeModel corporealTreeModel = ghostTreeModel.getCorporealTreeModel();
if (((GhostTreeModel) tree).hasCorporealCounterPart(nodeRef)) {
NodeRef corporealNode = ghostTreeModel.getCorporealCounterPart(nodeRef);
if (corporealTreeModel.isRoot(corporealNode)) {
return cladeModel.getClade(corporealNode);
} else {
return cladeModel.getClade(corporealTreeModel.getParent(corporealNode));
}
} else if (ghostTreeModel.getNextCorporealDescendent(nodeRef) != null) {
NodeRef corporealNode = ghostTreeModel.getNextCorporealDescendent(nodeRef);
if (corporealTreeModel.isRoot(corporealNode)) {
return cladeModel.getClade(corporealNode);
} else {
return cladeModel.getClade(corporealTreeModel.getParent(corporealNode));
}
} else {
if (tree.isRoot(nodeRef)) {
return cladeModel.getClade(corporealTreeModel.getRoot());
}
return getRelevantClade(tree.getParent(nodeRef));
}
} else {
return cladeModel.getClade(tree.getParent(nodeRef));
}
}
Aggregations