Phylogenetics & Evolution

Lesson 4 of 13 · 11 min

Reading a Phylogenetic Tree

A phylogenetic tree is a hypothesis about how a set of sequences descend from shared ancestors, inferred from the columns of a multiple sequence alignment. Once your tree program hands you a result, the real skill is reading it correctly. This lesson covers tree anatomy, what each part does and does not tell you, and the Newick text format so you can read and write small trees by hand.

Parts of a tree

The tips, also called leaves or terminal nodes, are the taxa you compared, one per aligned sequence. Internal nodes are inferred common ancestors, and each branch, or edge, is a lineage connecting two nodes. The root is the single deepest ancestor of everything on the tree, and it is the one node that gives the tree a direction from past to present.

A clade, or monophyletic group, is an internal node together with every descendant it leads to, and nothing else. The two lineages emerging from one node are sister groups. When a node has three or more children instead of the usual two, it is a polytomy, which almost always means the data could not resolve the order of those splits rather than a true simultaneous divergence.

Two independent pieces of information live in a tree. The topology is the branching order, which tells you who shares a more recent common ancestor with whom, while branch length measures the amount of evolutionary change along a lineage, typically in substitutions per site. A cladogram draws only the topology with tips lined up and branch lengths meaningless, whereas a phylogram draws branch lengths to scale so that a longer branch means more inferred change.

A rooted tree has a root and therefore states which node is ancestral to which, giving the branches a direction in time. An unrooted tree shows the same relationships but stays silent about where the deepest split lies. The usual way to root a tree is outgroup rooting: you include one or more taxa known from independent evidence to fall outside your group of interest, and the root is placed on the branch that separates that outgroup from everything else.

The Newick format

Newick stores a tree as nested parentheses ending in a semicolon: a pair of parentheses groups the sisters descending from one internal node, commas separate siblings, a colon plus a number gives the branch length leading to a node, and a number placed right after a closing parenthesis is that clade's support value. Reading from the innermost parentheses outward walks you from the most recent groupings toward the root. The three lines below encode the same human, chimp, and gorilla grouping first as a bare cladogram, then as a phylogram with branch lengths, then as a four-taxon tree rooted with orangutan as the outgroup and carrying support values on its two clades.

text
((human,chimp),gorilla);
((human:0.006,chimp:0.007):0.003,gorilla:0.009);
(((human:0.006,chimp:0.007)95:0.003,gorilla:0.009)98:0.008,orangutan:0.018);
python
from io import StringIO
from Bio import Phylo

newick = "(((human:0.006,chimp:0.007)95:0.003,gorilla:0.009)98:0.008,orangutan:0.018);"
tree = Phylo.read(StringIO(newick), "newick")
Phylo.draw_ascii(tree)
                                           ______________________ human
                                __________|
  _____________________________|          |__________________________ chimp
 |                             |
_|                             |_________________________________ gorilla
 |
 |___________________________________________________________________ orangutan

Try it yourself: Write the Newick string for a tree where mouse and rat are sister taxa, that pair is sister to human, and chicken is the outgroup to all three. Then render it with the Bio.Phylo snippet above and confirm chicken sits alone on the deepest branch. One correct answer is (((mouse,rat),human),chicken); and adding branch lengths or support values is optional.