skbio.tree.TreeNode.bifurcate#

TreeNode.bifurcate(insert_length=None, 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.

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