/l1ou

Detection of evolutionary shifts in Ornstein-Uhlenbeck models

Primary LanguageRGNU General Public License v2.0GPL-2.0

Tools for detecting past changes in the expected mean trait values and studying trait evolution from comparative data

The l1ou package provides functions to study trait evolution from comparative data and detect past changes in the expected mean trait values, as well as convergent evolution. It uses the Ornstein-Uhlenbeck process along a phylogenetic tree, which can model a changing adaptive landscape over time and over lineages.

Shifts can be detected from multiple traits, assuming that all traits shifted along the same lineages. Estimation is very fast thanks to lasso techniques, and the user can choose from multiple information criteria for model selection, including a phylognetic BIC. Citation:

  • M. Khabbazian, R. Kriebel, K. Rohe, and Cécile Ané. Fast and accurate detection of evolutionary shifts in Ornstein-Uhlenbeck models. Methods in Ecology and Evolution, 7(7):811–824. doi:10.1111/2041-210X.12534

Install using the devtools package

From within R:

install.packages("devtools")
library(devtools)
install_github("glmgen/genlasso")
install_github("khabbazian/l1ou")

Windows users will first need to install Rtools.

Install without the devtools package

To resolve dependencies, first install the following packages from CRAN, then the knitr package. From within R:

install.packages(c("igraph", "phylolm", "lars", "grplasso", "magic", "Rcpp"))
install.packages("knitr")

Download genlasso version 1.3 R package from CRAN archive (link). From within R:

 install.packages("genlasso_1.3.tar.gz", repos=NULL, type="source")

Now in the shell, with asterisks to be replaced with the correct version number:

git clone https://github.com/khabbazian/l1ou.git 
R CMD build l1ou 
R -e 'install.packages("l1ou_*.**.tar.gz")'

Version notes

major changes are indicated below.

  • v1.43 (2022-08-05): compatibility updates
  • v1.42 (2019-02-10): bug fix
  • v1.41 (2017-06-18): small bug fixes
  • v1.40 (2017-03-27):
    • intercept correctly handled after noise-whitening (results may change for variables with a mean far from 0)
    • bug fix in the function calculating the square-root (and inverse) of the phylogenetic covariance matrix.
  • v1.25: the penalty term in the AICc score now considers the intercept as a free variable. The change only affects the final value of the AICc score.
  • v1.23: "estimate_convergent_regimes" function accepts multiple traits.
  • v1.22:
    • the scores returned by "estimate_shift_configuration” function are now for the non-normalized, original data.
    • "estimate_shift_configuration" function also accepts multiple traits with missing values.