Skip to main content

JaxCont

Differentiable continuation and bifurcation analysis in JAX.

Tests Documentation Status PyPI MIT License DOI

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.

📖 Read the full documentation

Why JaxCont?

  • Transform the whole analysis. Batch ensembles of branches with vmap and 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.

Cubic S-curve: JaxCont vs MatCont 7.6, folds overlaid

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

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)

Source distribution for jaxcont 0.4.0
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)

Table of built distributions (wheels) for jaxcont 0.4.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

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