Topological Distances Between Two Trees

This function computes the topological distance between two phylogenetic trees using different methods.

dist.topo(x, y, method = "PH85")
an object of class "phylo".
an object of class "phylo".
a character string giving the method to be used: either "PH85", or "score".

Two methods are available: the one by Penny and Hendy (1985), and the branch length score by Kuhner and Felsenstein (1994). The trees are always considered as unrooted.

The topological distance is defined as twice the number of internal branches defining different bipartitions of the tips (Penny and Hendy 1985). Rzhetsky and Nei (1992) proposed a modification of the original formula to take multifurcations into account.

The branch length score may be seen as similar to the previous distance but taking branch lengths into account. Kuhner and Felsenstein (1994) proposed to calculate the square root of the sum of the squared differences of the (internal) branch lengths defining similar bipartitions (or splits) in both trees.


  • a single numeric value.


The geodesic distance of Billera et al. (2001) has been disabled: see the package distory on CRAN.


Billera, L. J., Holmes, S. P. and Vogtmann, K. (2001) Geometry of the space of phylogenetic trees. Advances in Applied Mathematics, 27, 733--767.

Kuhner, M. K. and Felsenstein, J. (1994) Simulation comparison of phylogeny algorithms under equal and unequal evolutionary rates. Molecular Biology and Evolution, 11, 459--468.

Nei, M. and Kumar, S. (2000) Molecular evolution and phylogenetics. Oxford: Oxford University Press.

Penny, D. and Hendy, M. D. (1985) The use of tree comparison metrics. Systemetic Zoology, 34, 75--82.

Rzhetsky, A. and Nei, M. (1992) A simple method for estimating and testing minimum-evolution trees. Molecular Biology and Evolution, 9, 945--967.

See Also

read.tree to read tree files in Newick format, cophenetic.phylo, prop.part

  • dist.topo
ta <- rtree(30)
tb <- rtree(30)
dist.topo(ta, ta) # = 0
dist.topo(ta, tb) # This is unlikely to be 0 !
Documentation reproduced from package ape, version 2.6-3, License: GPL (>= 2)

Community examples

shivanis270@gmail.com at Dec 3, 2019 ape v3.0-9

dist.topo(tree1, tree2, method = "PH85")