-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Update README for version 2.x.x - Remove old makefiles - Add examples of json files
- Loading branch information
Showing
33 changed files
with
10,467 additions
and
8,845 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,66 +1,91 @@ | ||
physher | ||
======= | ||
# physher | ||
|
||
[![CMake](https://github.com/4ment/physher/actions/workflows/cmake.yml/badge.svg)](https://github.com/4ment/physher/actions/workflows/cmake.yml) | ||
[![License: GPL v2](https://img.shields.io/badge/License-GPLv2-blue.svg)](https://www.gnu.org/licenses/gpl-2.0) | ||
|
||
## About physher | ||
|
||
``physher`` is a program for estimating evolutionary rates and divergence times from genetic, amino acid, codon, and generic data. | ||
|
||
The current version of physher is incompatible with the first version. | ||
Documentation for installing physher1 can be found [here](https://github.com/4ment/physher/wiki/Install) and the manual is located [here](https://github.com/4ment/physher/wiki/Usage). | ||
|
||
Introduction | ||
------------ | ||
## Getting Started | ||
|
||
Physher is a maximum likelihood-based method for estimating evolutionary rates and divergence times from genetic, amino acid, codon, and generic data. Phylogenetic trees should be open with Figtree from this [website](http://tree.bio.ed.ac.uk/software/figtree/) or [Seqotron](https://github.com/4ment/seqotron/). | ||
A C compiler such as ``gcc`` or ``clang`` is required. It is also requires the [GSL] library. | ||
On Debian-based systems, dependencies can be installed via ``apt``: | ||
|
||
For more details about the configuration file and command line arguments see the [wiki](https://github.com/4ment/physher/wiki/Usage) | ||
```bash | ||
sudo apt install gcc gsl | ||
``` | ||
|
||
On MacOS, dependencies can be installed using a package manager such as [Homebrew](https://brew.sh). | ||
```bash | ||
brew install llvm gsl | ||
``` | ||
|
||
Features | ||
-------- | ||
Other package managers such as [conda](https://conda.io) and [MacPorts](https://www.macports.org) can also be used to install dependencies. | ||
|
||
* Substitution models: | ||
* Nucleotide: Reversible: GTR, HKY, K80, and JC69 + any models using encoding 00000 ... 01234. Non reversible: UREV (stationary) and NONSTAT (non stationary). | ||
* Codon: GY94. | ||
* Amino acid: Dayhoff, LG, and WAG. | ||
* General: custom state space (e.g. phylogeography). | ||
### Dependencies | ||
- [GSL] | ||
- [sse2neon] (already included in physher) | ||
|
||
* Rate heterogeneity among sites: | ||
* Gamma distributed. | ||
* Proportion of invariant site. | ||
### Installation | ||
|
||
To build ``physher`` from source you can run | ||
```bash | ||
git clone https://github.com/4ment/physher | ||
cmake -S physher/ -B physher/build | ||
cmake --build physher/build/ --target install | ||
``` | ||
|
||
### Check install | ||
If the installation was successful, this command should print the version of `physher` | ||
```bash | ||
physher | ||
``` | ||
|
||
* Molecular clock: | ||
* No clock | ||
* Strict clock: constant rate across lineages. | ||
* Local clock: monophyletic lineages evolve at the same rate. | ||
* Discrete clock: a discrete distribution of rates is assigned to lineages without any restriction on the rate distribution. | ||
|
||
* Search algorithms for clock models: | ||
* Greedy algorithm (local clock only). | ||
* Genetic algorithm (discrete clock only). | ||
|
||
* Topology search: | ||
* Nearest neighbor interchange (NNI) | ||
### Building C++ wrappers (optional) | ||
A subset of physher's functionalities is exposed in C++ wrappers. These wrappers are used in [torchtree](https://github.com/4ment/torchtree), a python program, through bindings and [torchtree-physher](https://github.com/4ment/torchtree-physher). | ||
A C++ compiler such as g++ or clang++ is required. Compilers can be installed using ``apt`` or ``homebrew`` | ||
|
||
* Confidence intervals | ||
* Non-parametric bootstrap (Normal and percentile) using _bootstrap_ program (only available for strict clock models). | ||
```bash | ||
git clone https://github.com/4ment/physher | ||
cmake -S physher/ -B physher/build -DBUILD_CPP_WRAPPER=on | ||
cmake --build physher/build/ --target install | ||
``` | ||
|
||
* Model averaging of divergence times and substitution rate | ||
* Using modelavg program (only available using the genetic algorithm with discrete clocks). | ||
### Testing (optional) | ||
|
||
```bash | ||
cmake -S physher/ -B physher/build -DBUILD_TESTING=on | ||
cmake --build physher/build/ --target install | ||
ctest --test-dir physher/build/ | ||
``` | ||
|
||
Getting started | ||
--------------- | ||
## Quick start | ||
```bash | ||
cd examples/fluA | ||
physher JC69-time-ELBO.json | ||
``` | ||
|
||
[Install physher](https://github.com/4ment/physher/wiki/Install) | ||
## physher in action | ||
|
||
[Online manual](https://github.com/4ment/physher/wiki/Usage) | ||
Some examples of projects using ``physher`` | ||
- [marginal-experiments](https://github.com/4ment/marginal-experiments): Evaluation of 19 dubious ways to compute marginal likelihood estimates. [10.1093/sysbio/syz046](https://doi.org/10.1093/sysbio/syz046). | ||
- [phylostan](https://github.com/4ment/phylostan/tree/master/examples): Comparison of phylostan and ``physher`` using variational inference. [10.1101/702944](https://doi.org/10.1101/702944). | ||
- [gradient-benchmark](https://github.com/4ment/gradient-benchmark): Benchmarking of automatic differentiation and analical gradients. [10.1093/gbe/evad099](https://doi.org/10.1093/gbe/evad099) | ||
- [torchtree-physher](https://github.com/4ment/torchtree-physher): Plugin provinding fast calculation of phylogenetic functions in ``physher`` to [torchtree]. | ||
|
||
## License | ||
|
||
Associated programs | ||
------------------------- | ||
Distributed under the GPLv2 License. See [LICENSE](LICENSE) for more information. | ||
|
||
* _bootstrap_: calculate confidence intervals using bootstrap trees generated by a strict clock with _physher_. Every tree need to have the same topology. | ||
* _simultron_: simulate nucleotide data given a fixed tree topology. | ||
* _modelavg_: model average of trees generated by genetic algorithm with a discrete clock. | ||
## Citing physher | ||
|
||
Fourment M and Holmes EC. Novel non-parametric models to estimate evolutionary rates and divergence times from heterochronous sequence data. _BMC Evolutionary Biology_, 2014. doi: [10.1186/s12862-014-0163-6](https://doi.org/10.1186/s12862-014-0163-6) | ||
|
||
Reference | ||
--------- | ||
|
||
Fourment M and Holmes EC. Novel non-parametric models to estimate evolutionary rates and divergence times from heterochronous sequence data. BMC Evolutionary Biology 14:163, 2014. | ||
[GSL]: https://www.gnu.org/software/gsl | ||
[sse2neon]: https://github.com/DLTcollab/sse2neon | ||
[torchtree]: https://github.com/4ment/torchtree |
Oops, something went wrong.