A unified interface for probabilistic inference in JAX + Equinox
Project description
Inferix: An (experimental) unified interface for probabilistic inference in JAX + Equinox
| Inferix | |
|---|---|
| Author | Gary Allen |
| Homepage | github.com/gvcallen/inferix |
NB: This library is in very early stages, and is likely not currently functional.
Installation
Inferix can be installed using pip directly:
pip install inferix
Motivation
In the JAX ecosystem, you typically have to choose between two extremes for Bayesian inference:
- Lower-level drivers (like BlackJAX), where you have to manually manage while-loops, PRNG keys, buffers, and algorithmic states.
- High-level Probabilistic Programming Languages (PPLs) (like NumPyro or jaxns), which are user-friendly but requiring rewriting your model using their specific domain-specific languages and distribution primitives.
The goal of Inferix is to be a middle option that mirrors the API of Optimistix. It is designed for engineers and scientists who already have a forward likelihood and prior model written in pure JAX (perhaps using Equinox), and just want to sample from it without managing boilerplate or adopting a heavy PPL framework.
Inferix wraps low-level algorithms in a unified interface (inferix.mcmc_sample or inferix.nested_sample) and handles any XLA-compiled control flow, reparameterizations and data packaging. Current kernels include JAX-native NUTS and Nested Slice Sampling (via BlackJAX).
import jax
import jax.numpy as jnp
import inferix
# 1. Define your target functions (Pure JAX)
def my_likelihood(theta, args):
# e.g., A physics-based model
return ...
def my_prior_transform(u, args):
# A mapping from the uniform unit hypercube coordinates u to physical parameters theta
return ...
# 2. Instantiate your sampler of choice e.g. inferix.NUTS or inferix.NSS
sampler = inferix.NSS(num_delete=10, num_inner_steps=20, logZ_convergence=1e-3)
# 3. Execute the run
key = jax.random.key(42)
result = inferix.nested_sample(
log_likelihood_fn=my_likelihood,
prior_transform_fn=my_prior_transform,
sampler=sampler,
key=key,
)
# 4. Access the results
print(f"Final log-Evidence (logZ): {result.logZ} ± {result.logZ_err}")
print(f"Num samples: {result.samples.shape[0]}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file inferix-0.1.10.tar.gz.
File metadata
- Download URL: inferix-0.1.10.tar.gz
- Upload date:
- Size: 3.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0023a7ad97e9c976de452cf7fbe6bc1aaa7121d5e853a0e8ce33cad2032575e
|
|
| MD5 |
5accb43dc1d83a67cd0f9310c80317e7
|
|
| BLAKE2b-256 |
25d1951b7a9e92b88371627f9b8d0a9b0be88bf0e760cddd8c2e635e75c28aa6
|
Provenance
The following attestation bundles were made for inferix-0.1.10.tar.gz:
Publisher:
publish.yml on gvcallen/inferix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
inferix-0.1.10.tar.gz -
Subject digest:
f0023a7ad97e9c976de452cf7fbe6bc1aaa7121d5e853a0e8ce33cad2032575e - Sigstore transparency entry: 1361565197
- Sigstore integration time:
-
Permalink:
gvcallen/inferix@f6865c8fbce5ad12249afe777c0f9a6e97344f24 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/gvcallen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6865c8fbce5ad12249afe777c0f9a6e97344f24 -
Trigger Event:
push
-
Statement type:
File details
Details for the file inferix-0.1.10-py3-none-any.whl.
File metadata
- Download URL: inferix-0.1.10-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2b4b3277b155dac26794e1bcf5571b4f09c40d8dffd39c9a266fdb84fad7482
|
|
| MD5 |
094b4adedfcdf8838e8ed33272fde639
|
|
| BLAKE2b-256 |
c5b82174f8dc4807272a493852cb81c69282059c804a77948ebb6c5dce0d0ac9
|
Provenance
The following attestation bundles were made for inferix-0.1.10-py3-none-any.whl:
Publisher:
publish.yml on gvcallen/inferix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
inferix-0.1.10-py3-none-any.whl -
Subject digest:
d2b4b3277b155dac26794e1bcf5571b4f09c40d8dffd39c9a266fdb84fad7482 - Sigstore transparency entry: 1361565211
- Sigstore integration time:
-
Permalink:
gvcallen/inferix@f6865c8fbce5ad12249afe777c0f9a6e97344f24 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/gvcallen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6865c8fbce5ad12249afe777c0f9a6e97344f24 -
Trigger Event:
push
-
Statement type: