# Trees

## Loading a tree from a file and visualizing it with `ascii_art()`

## Writing a tree to a file

## Getting the individual nodes of a tree by name

## Getting the name of a node (or a tree)

## The object type of a tree and its nodes is the same

## Working with the nodes of a tree

Get all the nodes, tips and edges

only the terminal nodes (tips)

for internal nodes (edges) we can use Newick format to simplify the output

## Getting the path between two tips or edges (connecting edges)

## Getting the distance between two nodes

## Getting the last common ancestor (LCA) for two nodes

## Getting all the ancestors for a node

## Getting all the children for a node

## Getting all the distances for a tree

We also show how to select a subset of distances involving just one species.

## Getting the two nodes that are farthest apart

## Get the nodes within a given distance

## Rerooting trees

### At a named node

### At the midpoint

### Near a given tip

## Tree representations

### Newick format

### XML format

## Tree traversal

Here is the example tree for reference:

### Preorder

### Postorder

## Selecting subtrees

### One way to do it

## Tree manipulation methods

### Pruning the tree

Remove internal nodes with only one child. Create new connections and branch lengths (if tree is a PhyloNode) to reflect the change.

### Create a full unrooted copy of the tree

### Transform tree into a bifurcating tree

Add internal nodes so that every node has 2 or fewer children.

### Transform tree into a balanced tree

Using a balanced tree can substantially improve performance of likelihood calculations. Note that the resulting tree has a different orientation with the effect that specifying clades or stems for model parameterisation should be done using the “outgroup_name” argument.

### Test two trees for same topology

Branch lengths don’t matter.

### Calculate each node’s maximum distance to a tip

Sets each node’s “TipDistance” attribute to be the distance from that node to its most distant tip.

### Scale branch lengths in place to integers for ascii output

### Get tip-to-tip distances

Get a distance matrix between all pairs of tips and a list of the tip nodes.

### Compare two trees using tip-to-tip distance matrices

Score ranges from 0 (minimum distance) to 1 (maximum distance). The default is to use Pearson’s correlation, in which case a score of 0 means that the Pearson’s correlation was perfectly good (1), and a score of 1 means that the Pearson’s correlation was perfectly bad (-1).

Note: automatically strips out the names that don’t match.