/** * Delegates to {@link #removeEdge(TreeNode, TreeNode)} */ public void removeEdge(TreeNode n1, TreeNode n2, EdgeType type) { removeEdge(n1, n2); }
/** * Inserts node to specific position. Shifts any subsequent nodes to the right. * * @param tree the tree * @param i the position */ private static void insertNode(Tree tree, TreeNode parent, TreeNode node, int i) { if (i < 0) { throw new IndexOutOfBoundsException("Index is smaller than 0"); } ArrayList<TreeNode> children = parent.getChildren(); children.add(i, node); tree.addVertex(node); for (TreeNode child : parent.getChildren()) { tree.removeEdge(parent, child); } for (TreeNode child : children) { tree.addEdge(parent, child); } }
System.out.println("Error!!!!!!!!!!!!!"); TreeNode pp = p.getParent(); supertree.removeEdge(p, toLiftUp); supertree.addEdge(pp, toLiftUp); leafMap.get(p).removeAll(set);
private Tree addCompatibleCladesToBackboneTree(Tree backboneTree, Collection<Bipartition> partitionsToInsert) { for (Bipartition partition : partitionsToInsert) { Set<TreeNode> leafes = new HashSet<>(); for (int i = partition.partition.nextSetBit(0); i >= 0; i = partition.partition.nextSetBit(i + 1)) { leafes.add(indexToLeaf1.get(i)); } TreeNode lca = backboneTree.findLeastCommonAncestor(new ArrayList<>(leafes)); TreeNode nuLca = new TreeNode(); backboneTree.addVertex(nuLca); for (TreeNode child : lca.getChildren()) { TreeNode leaf; if (child.isInnerNode()) { leaf = child.depthFirstIterator().iterator().next(); } else { leaf = child; } if (leafes.contains(leaf)) { backboneTree.removeEdge(lca, child); backboneTree.addEdge(nuLca, child); } } backboneTree.addEdge(lca, nuLca); } return backboneTree; }
System.out.println("ERROR!!!!!!!!1"); supertree.removeEdge(p, toLiftUp); supertree.addEdge(pp, toLiftUp); leafMap.get(p).removeAll(entry.getKey());
t1.removeEdge(node, child); t1.addEdge(parent, child);
private static void connectParent(Tree tree, TreeNode newRoot, TreeNode parent, double weight) { TreeNode next = parent.getParent(); double nextWeight = 1; if (next != null) { nextWeight = tree.getEdge(next, parent).getWeight(); tree.removeEdge(next, parent); } tree.addEdge(newRoot, parent).setWeight(weight); if (next != null) { connectParent(tree, parent, next, nextWeight); } }
t.addEdge(nuLcaParent, lca); t.addEdge(lcaParent, nuLcaParent); t.removeEdge(lcaParent, lca); lca = nuLcaParent;
tree.removeEdge(current, e1); tree.removeEdge(current, e2); tree.removeEdge(treeNode, e1); tree.removeEdge(treeNode, e2); tree.removeEdge(treeNode, e1); tree.removeEdge(treeNode, e2);
private static void stepUp(Tree tree, TreeNode child, TreeNode parent, String oldChildLabel) { TreeNode newParent = parent.getParent(); String newOldLabel = parent.getLabel(); double weight = child.getDistanceToParent(); tree.removeEdge(parent, child); tree.addEdge(child, parent).setWeight(weight); parent.setLabel(oldChildLabel); if (newParent != null) { stepUp(tree, parent, newParent, newOldLabel); } }
tree.addVertex(parent); TreeNode lcaParent = lca.getParent(); tree.removeEdge(lcaParent, lca); tree.addEdge(lcaParent, parent); tree.addEdge(parent, lca);
t1.removeEdge(node, child); t1.addEdge(parent, child); t1.removeEdge(lca, child); t1.addEdge(nuLca, child);
tree.removeEdge(target.getParent(), target); tree.addEdge(currentRoot, target).setWeight(w); tree.removeEdge(source.getParent(), source); w = otherRootChildren.get(rchild); if (rchild.getEdgeToParent() != null) { tree.removeEdge(rchild.getParent(), rchild);
/** * Reroot tree with the new root placed at the incomming edge of the given outgroup * * @param tree the tree * @param outgroup the outgroup taxon */ public static void rerootToOutgroup(Tree tree, TreeNode outgroup, double edgeLengthToOutgroup) { TreeNode parent = outgroup.getParent(); if (parent == null) return; TreeNode newRoot = new TreeNode(); // add outgroup to new root tree.addVertex(newRoot); double oldWeight = tree.getEdge(parent, outgroup).getWeight(); tree.removeEdge(parent, outgroup); final Edge<TreeNode> edge = tree.addEdge(newRoot, outgroup); edge.setWeight(edgeLengthToOutgroup); // connect parent connectParent(tree, newRoot, parent, oldWeight - edgeLengthToOutgroup); tree.setRoot(newRoot); pruneDegreeOneNodes(tree); }