Skip to main content

jaxgsa

Global sensitivity analysis in JAX

PyPI DOI CI Documentation jaxgsa studio License: BSD-3-Clause Python

jaxgsa helps you find which inputs drive variation in a model's output. You choose input distributions, evaluate your model at sample points, and use jaxgsa to estimate each input's effect. It does not run your model for you.

Why jaxgsa

  • Many outputs in one call. Time series and multi-output models are analysed in one compiled JAX call, not one Python loop per output. On 300 output slices, Sobol with second-order indices is 35x faster than SALib, and HDMR is about 1000x faster (benchmarks). For one scalar output, SALib is as fast or faster.
  • Gradients come free. DGSM gets model derivatives from JAX, and the estimator cores are differentiable, so an index can sit inside a larger JAX computation (differentiation guide).
  • Fourteen methods behind one interface. Variance-based, screening, moment-independent, kernel and surrogate methods share the same Problem, sample and result types.
  • Dependent inputs. Correlated, custom-sampled and categorical inputs are supported, with methods whose indices keep their meaning under dependence.
  • CPU, GPU or TPU. The same code runs on any device JAX supports.

Install

uv add jaxgsa

Python 3.12 or newer is required. If you do not use uv, install with pip install jaxgsa.

First analysis

This example uses the Ishigami test model, whose sensitivity indices are known. Save it as first_analysis.py and run uv run first_analysis.py:

import jaxgsa
from jaxgsa.benchmarks.ishigami import PROBLEM, evaluate

# Draw the structured input values Sobol analysis needs.
design = jaxgsa.sobol.sample(PROBLEM, n_samples=4096, seed=42, verbose=False)

# In your work, replace this call with your model evaluated at design.samples.
Y = evaluate(design.samples)

result = jaxgsa.sobol.analyze(design, Y, verbose=False)
print("S1:", result.S1)
print("ST:", result.ST)

S1 estimates how much output variation an input explains on its own. ST also counts its interactions with other inputs. For this run, x3 has S1 near zero but ST around 0.24: it matters through an interaction with x1. Looking at S1 alone would miss it. These numbers are estimates, so check their uncertainty before making a close decision.

The getting-started tutorial explains each step and how to interpret the result.

Choose a method

jaxgsa provides fourteen analysis methods. A useful starting point depends on the data you can collect and the question you want answered:

If you have… Start with… Why
Control over future model runs and independent inputs Sobol Quantify individual and total effects, plus pairwise interactions when needed.
Existing input and output pairs from a smooth model PCE Fit a surrogate and estimate variance-based effects; check the fit error.
A small budget and many inputs Morris Screen for inputs worth studying in more detail.
Correlated inputs Methods guide Choose a method whose indices have the meaning you need under dependence.

The methods guide covers all fourteen methods and their assumptions. The API reference gives signatures and result fields.

Scalar, multi-output, and time-series results are supported. Thirteen methods also accept output channels with separate, irregular time grids. See the multi-output and irregular-output examples.

More to read

jaxgsa studio

The separate jaxgsa studio runs ported analyses locally in the browser. Its source and development instructions are in web/. The Python package and documentation site have separate builds.

Develop

git clone https://github.com/DanielePessina/jaxgsa.git
cd jaxgsa
uv sync --extra dev
uv run pytest

See CONTRIBUTING.md. To run the docs locally:

npm --prefix docs install
npm --prefix docs run docs:dev

The repository also includes a coding agent skill covering the API and method-specific caveats.

Cite jaxgsa

For research, please cite jaxgsa and the primary paper for each sensitivity method (see the methods guide). For the software citation, use the general DOI 10.5281/zenodo.22099117, which covers all versions:

In BibTeX:

@software{pessina2026jaxgsa,
  author    = {Pessina, Daniele and Papathanasiou, Maria M.},
  title     = {jaxgsa: Global Sensitivity Analysis in JAX},
  year      = {2026},
  publisher = {Zenodo},
  doi       = {10.5281/zenodo.22099117},
  url       = {https://doi.org/10.5281/zenodo.22099117}
}

Or as a text citation:

Daniele Pessina and Maria M. Papathanasiou (2026). jaxgsa: Global Sensitivity Analysis in JAX. Zenodo. https://doi.org/10.5281/zenodo.22099117

To cite a specific release, use its version DOI instead. The Zenodo record lists the DOI of each release. See CITATION.cff for machine-readable citation metadata.

License

BSD-3-Clause. See LICENSE.

Metadata

Release files for jaxgsa 1.1.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 jaxgsa 1.1.0
File Size Uploaded
jaxgsa-1.1.0.tar.gz 5.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for jaxgsa 1.1.0
File Interpreter ABI Platform
jaxgsa-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 5.8 MB

Release files / jaxgsa-1.1.0.tar.gz

Download URL jaxgsa-1.1.0.tar.gz
Size 5.3 MB
Tags Source
SHA-256 checksum
How to use checksums
8dcb3cf10fd7fb57f52791e0339990946e8a94ee10c8d6e3b8a3624d955a4985
BLAKE2b-256 checksum
How to use checksums
1214d57b1d79b1d59a46195145315210a9b1c72027fed8061be7d4c89a360043
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 Oct 13, 2026.

Transparency log

Release files / jaxgsa-1.1.0-py3-none-any.whl

Download URL jaxgsa-1.1.0-py3-none-any.whl
Size 519.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dda24a42093f90069117eae8b9439f0783e3670809010f693eeb4a5f3d6f130b
BLAKE2b-256 checksum
How to use checksums
22b47fac2b013abd13f92aa8ae1ca93c48a04e85099f2fcccae09c75ef252b89
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 Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

1.1.1

2 release files

This release

1.1.0 This release

2 release files

1.0.2

2 release files

0.9.1

2 release files

0.9.0

2 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