Skip to main content

gpvolve-v2

CI Documentation PyPI Python License Streamlit App

Markov-chain evolutionary dynamics on genotype-phenotype maps. Rust-accelerated.

gpvolve-v2 lifts a gpgraph-v2 GenotypePhenotypeGraph into a Markov state model and analyzes evolutionary dynamics on top of it. Given a fitness function and a fixation model (SSWM, Moran, McCandlish, Bloom DMS, weak-mutation), it builds a row-stochastic transition matrix and computes stationary distributions, relaxation timescales, mean first passage times, transition path theory committors and reactive flux, dominant pathways, stochastic walker trajectories, PCCA+ metastable sets, and fitness peaks.

Stationary distribution of the evolutionary Markov chain drawn on the genotype graph, node size and color set by stationary probability

This is a clean-break rewrite of harmslab/gpvolve (dormant since 2020) with selective architectural inspiration from the harmsm/gpvolve fork (dormant since 2022). The two hot paths that actually scaled badly in pure Python live in Rust via PyO3 + rayon: the stochastic walker sampler (~500x faster at 2^14 states) and the BiCGSTAB committor solver (~1700x faster at 2^14 vs scipy.sparse.linalg.spsolve). Everything else (transition matrix assembly, stationary distributions, TPT setup, PCCA+) stays in vectorized numpy/scipy where it already runs under a second on 2^14 maps. See benchmarks/README.md for the measured numbers and the rationale for what is and is not in Rust.

Try it in the browser

The Streamlit showcase tours every public surface interactively: MSM builder, TPT explorer, stochastic sampler with live ESS / R-hat, PCCA+ clustering, and a live Rust-vs-Python benchmark tab. Source under examples/streamlit/.

Why v2

  • Drops the dormant msmtools dependency. PCCA+ and TPT are reimplemented natively.
  • Fast where it matters. Walker sampling and the committor solver run in Rust with rayon parallelism; the rest stays in vectorized numpy/scipy.
  • Sound convergence. Stochastic path sampling stops on a real criterion (effective sample size + Gelman-Rubin R-hat), not a Euclidean distance heuristic.
  • Typed. Full type hints, mypy --strict in CI.
  • Modern tooling. uv + maturin + pyproject.toml. Releases via python-semantic-release. OIDC-based PyPI publishing.
  • Consumes the v2 family. Hard deps on gpmap-v2 and gpgraph-v2; speaks their locked SCHEMA.md contracts.

Rust versus pure-Python runtime for the walker sampler and committor solver across state-space sizes

Install

pip install gpvolve-v2

Or with uv:

uv add gpvolve-v2

Plotting support is optional. For matplotlib:

pip install "gpvolve-v2[plot]"

Optional simulation backends (SLiM, tskit):

pip install "gpvolve-v2[sim]"

Python 3.11+. Prebuilt wheels ship for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x64).

Status

Pre-release. See CHANGELOG.md for progress and docs/migration/from-v1.md for the v1 to v2 API map.

Metadata

Release files for gpvolve-v2 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gpvolve-v2 1.2.2
File Size Uploaded
gpvolve_v2-1.2.2.tar.gz 52.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for gpvolve-v2 1.2.2
File
gpvolve_v2-1.2.2-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
gpvolve_v2-1.2.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details
gpvolve_v2-1.2.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details
gpvolve_v2-1.2.2-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
gpvolve_v2-1.2.2-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 1.9 MB

Release files / gpvolve_v2-1.2.2.tar.gz

Download URL gpvolve_v2-1.2.2.tar.gz
Size 52.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a5f87ce79bb3458aacd203fbd1c58d56351ecf9bb0d16671a8e44afba6ddf713
BLAKE2b-256 checksum
How to use checksums
3cc713f4ad7700fc74637266e1b11dac0b8c38a750c9cddc079238a1315acc06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gpvolve_v2-1.2.2-cp311-abi3-win_amd64.whl

Download URL gpvolve_v2-1.2.2-cp311-abi3-win_amd64.whl
Size 262.1 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
660adcf7a7208bf58a445ee6fc6062510111c56a67139abbdcde66cab0d183c3
BLAKE2b-256 checksum
How to use checksums
33b5b0e203b88d20f7cfb421f4103b7582036edc3ebc688b5cd46ba349d241e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gpvolve_v2-1.2.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gpvolve_v2-1.2.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 435.0 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
46a911105e29d28d939ddaf8b768bb5289ac20a8518f0aa43297211267bf5e88
BLAKE2b-256 checksum
How to use checksums
689f74c7f5c32a5f41f12694b2cc8b6cd2d61802b1511e06fb8c287727ad1b50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gpvolve_v2-1.2.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL gpvolve_v2-1.2.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 424.1 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
acb80c6273158fe108d64569987652435c8c5e8c82b70da9a964c407a7ba5b25
BLAKE2b-256 checksum
How to use checksums
f42348ba25361bdbf9db9f3a874d2e295e3aa72bd2102457d7c6998dd397eae1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gpvolve_v2-1.2.2-cp311-abi3-macosx_11_0_arm64.whl

Download URL gpvolve_v2-1.2.2-cp311-abi3-macosx_11_0_arm64.whl
Size 380.1 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3cf30be82dda753becd9b1c0b303c1036b84735591eb98ec42699d4118342d26
BLAKE2b-256 checksum
How to use checksums
24c322e7a412e6b437e70e34e3b978d3ecd82e6555509c48fa0ecdd2e762bb9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gpvolve_v2-1.2.2-cp311-abi3-macosx_10_12_x86_64.whl

Download URL gpvolve_v2-1.2.2-cp311-abi3-macosx_10_12_x86_64.whl
Size 381.6 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7f05e08667398732cf44032082a7ca86d7f4d45cf0caddebc6624dae7b053de9
BLAKE2b-256 checksum
How to use checksums
77c4ce474d10cd789b27626ed3d3bca64d77f1b91e9bccbaec22c5ca58260bc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.2.2 This release

6 release files

1.2.1

6 release files

1.2.0

6 release files

1.1.0

6 release files

1.0.2

6 release files

1.0.1

6 release files

1.0.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page