skbio.tree.TreeNode.unrooted_move#
- TreeNode.unrooted_move(branch_attrs={'length', 'support'}, uncache=True)[source]#
Walk the tree unrooted-style and rearrange it.
Added in version 0.6.2.
Changed in version 0.6.3: The underlying algorithm is now iterative instead of recursive, therefore won’t be constrained by Python’s maximum recursion limit when working with large trees. Parameter
parent
was removed as it is no longer needed.- Parameters:
- parentTreeNode or None
Direction of walking (from parent to self). If specified, walking to the parent will be prohibited.
- branch_attrsset of str, optional
Attributes of
TreeNode
objects that should be considered as branch attributes during the operation.- uncachebool, optional
Whether to clear caches of the tree if present (default: True). See
details
.Added in version 0.6.3.
See also
Notes
This method walks a tree from a given node in an unrooted style (i.e., directions of branches are not assumed). It rerranges the tree such that the given node becomes the root node and all other nodes are re-positioned accordingly, whereas the topology remains the same.
This method manipulates the tree in place. There is no return value. The new tree should be referred to by the node where the operation started, as it has become the new root node.
Examples
>>> from skbio import TreeNode >>> tree = TreeNode.read(["((a,(b,c)d)e,(f,g)h)i;"]) >>> new_root = tree.find('d') >>> new_root.unrooted_move() >>> print(new_root) (b,c,(a,((f,g)h)i)e)d;