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
From within R:
install.packages("devtools")
library(devtools)
install_github("glmgen/genlasso")
install_github("khabbazian/l1ou")
Windows users will first need to install Rtools.
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")'
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.