Differentiable continuation and bifurcation analysis in JAX.
JaxCont turns an equilibrium continuation sweep into a JAX program. Follow
branches through folds with pseudo-arclength continuation, detect and refine
fold/Hopf events, and compose the analysis with jax.jit, jax.vmap, and
automatic differentiation.
Why JaxCont?
- Transform the whole analysis. Batch ensembles of branches with
vmapand differentiate bifurcation locations for inverse design. - Stay on the branch. Adaptive pseudo-arclength continuation passes folds; natural continuation is available when the parameter remains regular.
- See and validate the result. Plot stability-aware bifurcation diagrams and eigenvalue trajectories with JaxCont events plus MatCont, BifurcationKit, or analytic reference markers.
The current surface supports equilibrium and periodic-orbit continuation,
their principal codimension-one events, direct codimension-two point
solvers, two-parameter continuation (fold/Hopf curves with their own
codimension-two events), and infinitesimal phase response curves (iPRC,
prc_curve, cross-validated against MatCont) plus their parameter-derivative
sensitivity (dPRC, dprc_curve, validated independently -- MatCont does not
compute this quantity). Branch switching and general connecting-orbit/BVP
workflows remain future work.
JaxCont's branch (blue) traced independently over MatCont 7.6's reference (orange) — more cases, including known limitations, in the MatCont validation suite.
Installation
JaxCont requires Python 3.11 or newer.
pip install jaxcont
See the JAX installation guide when selecting CPU, GPU, or TPU support.
Quick start
Continue u² + p = 0 through its fold at p = 0:
import jax.numpy as jnp
import matplotlib.pyplot as plt
import jaxcont as jc
def saddle_node(u, p, args):
return u**2 + p
problem = jc.bif_problem(
saddle_node,
u0=jnp.array([1.0]),
p0=-1.0,
state_names=["u"],
param_name="p",
)
result = jc.continuation(
problem,
p_span=(-1.0, 0.2),
settings=jc.ContinuationPar(ds=0.03, max_steps=200),
events=[jc.Fold()],
)
print([(event.kind, event.p) for event in result.events])
result.plot(annotate=True, title="Saddle-node bifurcation")
plt.show()
The same result can drive a stability-spectrum plot:
from jaxcont.viz import plot_eigenvalues
plot_eigenvalues(result, shade_stability=True)
Explore
- Documentation home
- Quickstart
- Example gallery
example_03_van_der_pol.py— Hopf crossing with JaxCont and MatCont markersexample_06_vmap_sweep.py— batched continuation withvmapexample_07_differentiable.py— differentiable bifurcation analysisexamples/MatCont— reproducible analytic, MATLAB/MatCont and JaxCont validation cases
Development
git clone https://github.com/Ziaeemehr/JaxCont.git
cd JaxCont
python -m pip install -e ".[dev]"
python -m pytest
Contributions are welcome; see CONTRIBUTING.md, the roadmap, and the MatCont validation suite.
Citation
If JaxCont supports your research, please cite the archived release. Full
citation metadata (including both DOIs) is in CITATION.cff --
GitHub renders a "Cite this repository" button from it automatically.
@software{ziaeemehr_jaxcont_2026,
author = {Ziaeemehr, Abolfazl},
title = {JaxCont: Differentiable Continuation and Bifurcation Analysis in JAX},
year = {2026},
version = {0.3.1},
doi = {10.5281/zenodo.21812717},
url = {https://github.com/Ziaeemehr/JaxCont}
}
JaxCont is distributed under the MIT License.
Metadata
Release files for jaxcont 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jaxcont-0.4.0.tar.gz | 158.4 kB | With provenance | Details for jaxcont-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jaxcont-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for jaxcont-0.4.0-py3-none-any.whl |
Total release size: 256.0 kB
Release files / jaxcont-0.4.0.tar.gz
| Download URL | jaxcont-0.4.0.tar.gz |
|---|---|
| Size | 158.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2c16f52eaf5f9d315102a89bb417886a75ad43d55d60e8dedb2afd06aa0e2c1
|
|
BLAKE2b-256 checksum How to use checksums |
96ca29dd6cbf80f6cb99ba3f9cb8ba85921343eb19b0014781416b2ea430c49f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency logRelease files / jaxcont-0.4.0-py3-none-any.whl
| Download URL | jaxcont-0.4.0-py3-none-any.whl |
|---|---|
| Size | 97.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fa3c4193b79cac1ce41ef86dba5a8c3ecfd045ba6eb60217c314753f86228d0e
|
|
BLAKE2b-256 checksum How to use checksums |
cd70ae50d7504f8e6a3a069f5cec9b428cf7862087540cd9d667d0615da5613f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency logSecurity for jaxcont 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for jaxcont-0.4.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.