biotite.sequence.phylo.TreeNode¶

class
biotite.sequence.phylo.
TreeNode
(child1=None, child2=None, child1_distance=None, child2_distance=None, index=None)¶ Bases:
object
TreeNode objects are part of a rooted tree (e.g. alignment guide tree). There are two TreeNode subtypes:
Leaf node  Cannot have child nodes but has an index referring to an arraylike reference object.
Intermediate node  Has child nodes but no reference index
This type is determined by the time of the object’s creation.
Every TreeNode has a reference to its parent node. A root node is node without a parent node, that is finalized using as_root(). The call of this function prevents that a the node can be used as child.
TreeNode objects are semiimmutable: The child nodes or the reference index are fixed at the time of creation. Only the parent can be set once, when the parent node is created. TreeNode objects that are finalized using as_root() are completely immutable.
All object properties are readonly.
 Parameters
 children: arraylike object of TreeNode, length=n, optional
The children of this node. As this causes the creation of an intermediate node, this parameter cannot be used in combination with index.
 distances: arraylike object of float, length=n, optional
The distances of the child nodes to this node. Must be set if children is set.
 index: int, optional
Index to a reference arraylike object (e.g. list of sequences or labels). Must be a positive integer. As this causes the creation of a leaf node, this parameter cannot be used in combination with the other parameters.
Examples
>>> leaf1 = TreeNode(index=0) >>> leaf2 = TreeNode(index=1) >>> leaf3 = TreeNode(index=2) >>> inter = TreeNode([leaf1, leaf2], [5.0, 7.0]) >>> root = TreeNode([inter, leaf3], [3.0, 10.0]) >>> print(root) ((0:5.0,1:7.0):3.0,2:10.0):0.0
 Attributes
 parentTreeNode
The parent node. None if node has no parent.
 childrentuple of TreeNode
The child nodes. None if node is a leaf node.
 indexint
The index to a reference arraylike object. None if node is not a leaf node.
 distancefloat
Distance to parent node. None if parent is Ǹone.

as_root
()¶ Convert the node into a root node.
When a root node is used as child parameter in the construction of a potential parent node, a TreeError is raised.

copy
()¶ Create a deep copy of this TreeNode.
The copy includes this node, its reference index and deep copies of its child nodes. The parent node and the distance to it is not included.

distance_to
(node, topological=False)¶ Get the distance of this node to another node.
The distance is the sum of all distances from this and the other node to the lowest common ancestor.
 Parameters
 nodeTreeNode
The second node for distance calculation.
 Returns
 distancefloat
The distance of this node to node.
 Raises
 TreeError
If the nodes have no common ancestor.
Examples
>>> leaf1 = TreeNode(index=0) >>> leaf2 = TreeNode(index=1) >>> leaf3 = TreeNode(index=2) >>> inter = TreeNode([leaf1, leaf2], [5.0, 7.0]) >>> root = TreeNode([inter, leaf3], [3.0, 10.0]) >>> print(leaf1.distance_to(leaf2)) 12.0 >>> print(leaf1.distance_to(leaf3)) 18.0

static
from_newick
(newick, labels=None)¶ Create a node and all its child nodes from a Newick notation.
 Parameters
 newickstr
The Newick notation to create the node from.
 labelslist of str, optional
If the Newick notation contains labels, that are not parseable into reference indices, i.e. they are not integers, this parameter can be provided to convert these labels into reference indices. The corresponding index is the position of the label in the provided list.
 Returns
 nodeTreeNode
The tree node parsed from the Newick notation.
 distancefloat
Distance of the node to its parent. If the newick notation does not provide a distance, it is set to 0 by default.
Notes
The provided Newick notation must not have a terminal semicolon. If you have a Newick notation that covers an entire tree, you may use the same method in the Tree class instead. Keep in mind that the TreeNode class does support any labels on intermediate nodes. If the string contains such labels, they are discarded.

get_indices
()¶ Get an array of reference indices that leaf nodes of this node contain.
This method identifies all leaf nodes, which have this node as ancestor and puts the contained indices into an array. If this node is a leaf node itself, the array contains the reference index of this node as single element.
 Returns
 indicesndarray, dtype=int32
The reference indices of direct and indirect child leaf nodes of this node.
Examples
>>> leaf0 = TreeNode(index=0) >>> leaf1 = TreeNode(index=1) >>> leaf2 = TreeNode(index=2) >>> leaf3 = TreeNode(index=3) >>> intr0 = TreeNode([leaf0, leaf2], [0, 0]) >>> intr1 = TreeNode([leaf1, leaf3], [0, 0]) >>> root = TreeNode([intr0, intr1], [0, 0]) >>> print(leaf0.get_indices()) [0] >>> print(intr0.get_indices()) [0 2] >>> print(intr1.get_indices()) [1 3] >>> print(root.get_indices()) [0 2 1 3]

get_leaf_count
()¶ ” get_leaf_count()
Get the number of direct or indirect leaves of this ńode.
This method identifies all leaf nodes, which have this node as ancestor. If this node is a leaf node itself, 1 is returned.

get_leaves
()¶ Get a list of leaf nodes that are direct or indirect child nodes of this node.
This method identifies all leaf nodes, which have this node as ancestor. If this node is a leaf node itself, the list contains this node as single element.
 Returns
 leaf_nodeslist
The leaf nodes, that are direct or indirect child nodes of this node.

is_leaf
()¶ Check if the node is a leaf node.
 Returns
 is_leafbool
True if the node is a leaf node, false otherwise.

is_root
()¶ Check if the node is a root node.
 Returns
 is_rootbool
True if the node is a root node, false otherwise.

lowest_common_ancestor
(node)¶ Get the lowest common ancestor of this node and another node.
 Parameters
 nodeTreeNode
The node to get the lowest common ancestor with.
 Returns
 ancestorTreeNode or None
The lowest common ancestor. None if the nodes have no common ancestor, i.e. they are not in the same tree

to_newick
(labels=None, include_distance=True)¶ Obtain the node represented in Newick notation.
The terminal semicolon is not included.
 Parameters
 labelsiterable object of str
The labels the indices in the leaf nodes refer to
 include_distancebool
If true, the distances are displayed in the newick notation, otherwise they are omitted.
 Returns
 newickstr
The Newick notation of the node.
Examples
>>> leaf1 = TreeNode(index=0) >>> leaf2 = TreeNode(index=1) >>> leaf3 = TreeNode(index=2) >>> inter = TreeNode([leaf1, leaf2], [5.0, 7.0]) >>> root = TreeNode([inter, leaf3], [3.0, 10.0]) >>> print(root.to_newick()) ((0:5.0,1:7.0):3.0,2:10.0):0.0 >>> print(root.to_newick(include_distance=False)) ((0,1),2) >>> labels = ["foo", "bar", "foobar"] >>> print(root.to_newick(labels=labels, include_distance=False)) ((foo,bar),foobar)