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

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.1
File Size Uploaded
jaxgsa-1.1.1.tar.gz 5.3 MB Details

Built distribution (wheel)

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

Total release size: 5.8 MB

Release files / jaxgsa-1.1.1.tar.gz

Download URL jaxgsa-1.1.1.tar.gz
Size 5.3 MB
Tags Source
SHA-256 checksum
How to use checksums
ca2638f605806a62200c0f002c0ce03101f6cbe7b8f71fd3b84fc58ed160138d
BLAKE2b-256 checksum
How to use checksums
dcfb4d1dc5b8db21d713d3f1626f96e2030db09c8e8fcd648b89d77555eee129
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.1-py3-none-any.whl

Download URL jaxgsa-1.1.1-py3-none-any.whl
Size 519.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4e46ae6e246b85928b2c777f7ec57c9c4d1f60c9de5496d8b1d84b1a90530383
BLAKE2b-256 checksum
How to use checksums
c77115ab2e7970f1336540b2c055802c64065c191456e847ea6223e79642c6d8
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

This release

1.1.1 This release

2 release files

1.1.0

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