public static void keepLeafesAndPruneTree(Tree tree, Collection<TreeNode> toKeep) { boolean deleted = true; while (deleted) { deleted = false; for (TreeNode node : tree.getLeaves()) { if (node.getLabel() == null || !toKeep.contains(node)) { tree.removeVertex(node); deleted = true; } } } pruneDegreeOneNodes(tree); }
public static void removeSubtreeFromTree(List<TreeNode> toRemove, Tree tree, boolean sumEdgeWeight, boolean useParentWeight) { // remove for (TreeNode treeNode : toRemove) { if (treeNode.isLeaf()) { tree.removeVertex(treeNode); } else { List<TreeNode> subtreeNodes = new ArrayList<TreeNode>(); // remove complete subtree for (TreeNode node : treeNode.depthFirstIterator()) { subtreeNodes.add(node); } for (TreeNode subtreeNode : subtreeNodes) { tree.removeVertex(subtreeNode); } tree.removeVertex(treeNode); } } // remove leaves with no labels List<TreeNode> inner = new ArrayList<TreeNode>(); for (TreeNode treeNode : tree.vertices()) { if (treeNode.isLeaf() && (treeNode.getLabel() == null || treeNode.getLabel().length() == 0)) { inner.add(treeNode); } } for (TreeNode treeNode : inner) { tree.removeVertex(treeNode); } // prune the tree pruneDegreeOneNodes(tree, sumEdgeWeight, useParentWeight); }
supertree.removeVertex(cladeToCheck); } else { TreeUtils.pruneInnerNode(cladeToCheck, supertree, false);
supertree.removeVertex(cladeNodeToCheck); } else { TreeUtils.pruneInnerNode(cladeNodeToCheck, supertree, false);
/** * remove the taxon with the given label and prune the tree * * @param merge merge label * @param taxa the taxa * @param trees pruned trees */ protected void removeAndPrune(String merge, List<String> taxa, List<Tree> trees) { for (Tree tree : trees) { for (TreeNode node : tree.vertices()) { if (node.getLabel() != null && taxa.contains(node.getLabel()) && !node.getLabel().equals(merge)) { // remove TreeNode parent = node.getParent(); tree.removeVertex(node); } } TreeUtils.pruneDegreeOneNodes(tree, sumEdgeWeightsWhenPruning, USE_PARENT_WEIGHT); } }
t1.addEdge(parent, child); t1.removeVertex(node);
t.removeSubtree(node); } else { t.removeVertex(node);
public static Tree deleteRootNode(Tree sourceTree, boolean clone) { if (clone) sourceTree = sourceTree.cloneTree(); TreeNode r = sourceTree.getRoot(); if (r.childCount() == 2) { List<TreeNode> children = r.getChildren(); sourceTree.removeVertex(r); TreeNode c1 = children.get(0); TreeNode c2 = children.get(1); if (c1.isInnerNode()) { sourceTree.addEdge(c1, c2); sourceTree.setRoot(c1); } else if (c2.isInnerNode()) { sourceTree.addEdge(c2, c1); sourceTree.setRoot(c2); } else { System.out.println("Could not unroot tree. Tree seems not to be a tree!"); return null; } } return sourceTree; }
t1.addEdge(parent, child); t1.removeVertex(node);
t.removeVertex(t.getRoot()); t.setRoot(child);
tree.removeVertex(currentRoot);
t.removeVertex(newNode); } else if (newNode.childCount() == 1) { TreeNode child = newNode.getChildAt(0); t.removeVertex(newNode); if (parent != null) {
t.removeVertex(newNode); } else if (newNode.childCount() == 1 && newNode.getLabel() == null) { TreeNode child = newNode.getChildAt(0); t.removeVertex(newNode); if (parent != null) { t.addEdge(parent, child);
double weight_parent = node.getDistanceToParent(); double weight_child = child.getDistanceToParent(); tree.removeVertex(node); if (parent != null) { Edge<TreeNode> e = tree.addEdge(parent, child);
tree.removeVertex(n); TreeNode np = new TreeNode(); tree.addVertex(np);