skbio.tree.TreeNode.bifurcate#

TreeNode.bifurcate(insert_length=None, include_self=True, uncache=True)[source]#

Convert the tree into a bifurcating tree.

All nodes that have more than two children will have additional intermediate nodes inserted to ensure that every node has only two children.

Parameters:
insert_lengthint, optional

The branch length assigned to all inserted nodes.

include_selfbool, optional

If False, will not convert the current node. This is useful for keeping an unrooted tree unrooted. Default is True.

Added in version 0.6.3.

uncachebool, optional

Whether to clear caches of the tree if present (default: True). See details.

Added in version 0.6.3.

Notes

This method does not modify single-child nodes. These nodes can be collapsed using prune prior to this method to create a strictly bifurcating tree.

This method modifies the subtree under the current node.

Examples

>>> from skbio import TreeNode
>>> tree = TreeNode.read(["((a,b,g,h)c,(d,e)f)root;"])
>>> print(tree.ascii_art())
                    /-a
                   |
                   |--b
          /c-------|
         |         |--g
         |         |
-root----|          \-h
         |
         |          /-d
          \f-------|
                    \-e
>>> tree.bifurcate()
>>> print(tree.ascii_art())
                    /-h
          /c-------|
         |         |          /-g
         |          \--------|
         |                   |          /-a
-root----|                    \--------|
         |                              \-b
         |
         |          /-d
          \f-------|
                    \-e