phyloTop provides tools for calculating and viewing topological properties of phylogenetic trees.

Installing phyloTop

To install the development version from github:

library(devtools)
install_github("michellekendall/phyloTop")

The stable version can be installed from CRAN using:

install.packages("phyloTop")

Then, to load the package, use:

library("phyloTop")

## Loading required package: ape

Content overview

The key functions available in phyloTop are:

Tree statistics and topological properties:

  • avgLadder: find the average ladder size in a tree

  • cherries: find the number of cherries in a tree

  • colless.phylo: find the Colless imbalance number of a tree

  • getDepths: find the depth of each node in a tree

  • ILnumber: find the number of nodes with exactly one tip child

  • ladderSizes: find the size of any “ladders” in a tree (consecutive nodes, each with exactly one tip child)

  • maxHeight: find the maximum height (equivalently, depth) of nodes in a tree

  • nConfig: find the sizes of all configurations (equivalently, clades) in a tree

  • nodeDepth: find the depth of a given node in a tree

  • nodeDepthFrac: find the fraction of nodes in a tree at a given depth

  • nodeImb: find the imbalance of a given node in a tree

  • nodeImbFrac: find the fraction of nodes in a tree with an imbalance of a given threshold or more

  • phyloTop: find a range of tree statistics for a list of trees (faster than calling each function individually)

  • pitchforks: find the number of pitchforks (clades of size three) in a tree

  • sackin.phylo: find the Sackin index of a tree

  • splitTop: find the split topology of a tree - the size of clades at a given depth

  • stairs: find the “staircase-ness” measures, as defined by Norstrom et al. 2012

  • treeImb: find the tree imbalance - the imbalance at each node

  • widths: find the number of nodes at each depth in a tree

Tree visualisation tools:

  • configShow: plot a tree, highlighting the configurations of a given size

  • ladderShow: plot a tree, highlighting the “ladders”

  • subtreeShow: plot a tree, highlighting the subtree(s) descending from the given node(s)

Simulating an epidemic and creating the corresponding genealogy:

  • makeEpiRecord: simulate an epidemiological record of infectors, infectees, infection times and recovery times

  • getLabGenealogy: create a genealogy from an epidemiological record

Examples

Tree statistics:

Apply tree statistic functions to a list of 10 random trees, each with 50 tips:

set.seed(123)
phyloTop(rmtree(10,50))

##    avgLadder cherries colless.phylo ILnumber maxHeight pitchforks sackin.phylo
## 1      0.000       19            82       12         9          9          312
## 2      2.167       16           120       18         9          7          330
## 3      2.500       19           192       12        12          6          394
## 4      2.333       16           139       18        11          9          345
## 5      2.000       18           150       14        10          8          358
## 6      2.333       17           105       16        11         10          321
## 7      2.333       19           112       12        10          5          330
## 8      2.333       15           229       20        13          9          421
## 9      3.000       17           121       16        11          7          331
## 10     3.000       16           181       18        12          7          377
##    stairs1 stairs2
## 1   0.5510  0.7257
## 2   0.5306  0.6752
## 3   0.5102  0.6907
## 4   0.6327  0.6487
## 5   0.5714  0.6880
## 6   0.6122  0.6649
## 7   0.5714  0.6696
## 8   0.6735  0.5760
## 9   0.6122  0.6487
## 10  0.6122  0.6237

Tree visualisation tools:

Plot a random tree with 20 tips, highlighting the the clade(s) descending from nodes 25 and 33:

subtreeShow(rtree(20),nodeList=c(25,33), mainCol="navy", subtreeCol="cyan", nodeLabelCol="cyan", edge.width=2)

Contributing / asking a question

Contributions are welcome via pull requests.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Questions, feature requests and bugs can be reported using the package’s issue system.