/** * + test whether a clade is contained in this clade system (assuming the same leaf order) * * @param clade clade */ public boolean hasClade(boolean[] clade) { for (int i = 0; i < clades.length; i++) { if (SplitUtils.isSame(clade, clades[i])) return true; } return false; }
/** * get clade for internal node * * @param idGroup order of labels * @param internalNode Node * @param boolean[] clade */ public static void getClade(IdGroup idGroup, Node internalNode, boolean[] clade) { if (internalNode.isLeaf() || internalNode.isRoot()) { throw new IllegalArgumentException("Only internal nodes (and no root) nodes allowed"); } // make sure clade is reset for (int i = 0; i < clade.length; i++) { clade[i] = false; } // mark all leafs downstream of the node // AJD removed loop, as doesn't appear to be necessary SplitUtils.markNode(idGroup, internalNode, clade); }