Phylogenetic inference with pytorch and physher
Project description
torchtree-physher
About torchtree-physher
torchtree-physher is a python package providing fast gradient calculation implemented in physher for torchtree.
Getting Started
A C++ compiler such as g++ or clang++ is required.
On Debian-based systems, this can be installed via apt:
sudo apt install g++
On MacOS, it is recommended to use the latest version of clang++:
brew install llvm
The pybind11 library is also used for binding the C++ functionality to Python.
Dependencies
physher is a phylogenetic program written in C that provides C++ wrappers to compute the tree and coalescent likelihoods and their gradients under different models.
To build physher from source you can run
git clone https://github.com/4ment/physher
cmake -S physher/ -B physher/build -DBUILD_CPP_WRAPPER=on -DBUILD_TESTING=on
cmake --build physher/build/ --target install
Check it works (optional)
ctest --test-dir physher/build/
Installation
To build torchtree-physher from source you can run
git clone https://github.com/4ment/torchtree-physher
pip install torchtree-physher/
Check install
If the installation was successful, this command should print the version of the torchtree_physher library
python -c "import torchtree_physher;print(torchtree_physher.__version__)"
Command line arguments
The torchtree-physher plugin adds these arguments to the torchtree CLI:
torchtree-cli advi --help
...
--physher use physher
--physher_include_jacobian
include Jacobian of the node height transform in the node height gradient
--physher_disable_sse
disable SSE in physher
--physher_disable_coalescent
disable coalescent calculation by physher
--physher_site {weibull,gamma}
distribution for rate heterogeneity across sites
Features
Tree likelihood
Some types in the JSON configuration file have to be replaced in order to use the tree likelihood implementation of physher. You simply need to add torchtree_physher. before a model type. Here is a list of models implemented in this plugin:
TreeLikelihoodModel- Substitution models:
JC69HKYGTRGeneralNonSymmetricSubstitutionModel
- Tree models:
UnRootedTreeModelReparameterizedTimeTreeModel
- Clock models (optional):
StrictClockModelSimpleClockModel
- Site models:
ConstantSiteModelGammaSiteModelInvariantSiteModelWeibullSiteModel
Note that the type of every sub-model of the tree likelihood object (e.g. site, tree models...) has to be replaced.
For example if we want to use ADVI with an unrooted tree and a Weibull site model:
torchtree-cli advi -i data.fa -t data.tree -C 4 > data.json
sed -i -E 's/TreeLikelihoodModel/torchtree_physher.TreeLikelihoodModel/; s/UnRootedTreeModel/torchtree_physher.UnRootedTreeModel/; s/WeibullSiteModel/torchtree_physher.WeibullSiteModel/' data.json
torchtree data.json
The JSON file can be created directly using the --physher option:
torchtree-cli advi -i data.fa -t data.tree -C 4 --physher > data.json
Coalescent models
Here is a list of coalescent models implemented in this plugin:
ConstantCoalescentModelPiecewiseConstantCoalescentGridModel(aka skygrid)PiecewiseConstantCoalescentModel(aka skyride)PiecewiseLinearCoalescentGridModel
License
Distributed under the GPLv3 License. See LICENSE for more information.
Acknowledgements
torchtree-physher makes use of the following libraries and tools, which are under their own respective licenses:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file torchtree-physher-1.0.0.tar.gz.
File metadata
- Download URL: torchtree-physher-1.0.0.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f84064326b6e490871f0279243af62d78390bd6b67e2444d7825279f27323e9
|
|
| MD5 |
19931ccb574188d6b2089d88c4f7cfe7
|
|
| BLAKE2b-256 |
4af2aeef673bca12a5bc12a5d97895f9406e919c4dc39c63e2ac9a11ca8aee3a
|
File details
Details for the file torchtree_physher-1.0.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: torchtree_physher-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 176.9 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff497093f473c000c1e24ae25c76bda0f14161e8713a6117ff88e15669d46fda
|
|
| MD5 |
049951e05063a9950c5f32791b96f393
|
|
| BLAKE2b-256 |
ef418c3be80ab9227f7a871847190340d4223b1643fa2cf7af42c2bfd47c273d
|