Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inferix-0.1.10.tar.gz (3.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inferix-0.1.10-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

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

Hashes for inferix-0.1.10.tar.gz
Algorithm Hash digest
SHA256 f0023a7ad97e9c976de452cf7fbe6bc1aaa7121d5e853a0e8ce33cad2032575e
MD5 5accb43dc1d83a67cd0f9310c80317e7
BLAKE2b-256 25d1951b7a9e92b88371627f9b8d0a9b0be88bf0e760cddd8c2e635e75c28aa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for inferix-0.1.10.tar.gz:

Publisher: publish.yml on gvcallen/inferix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for inferix-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 d2b4b3277b155dac26794e1bcf5571b4f09c40d8dffd39c9a266fdb84fad7482
MD5 094b4adedfcdf8838e8ed33272fde639
BLAKE2b-256 c5b82174f8dc4807272a493852cb81c69282059c804a77948ebb6c5dce0d0ac9

See more details on using hashes here.

Provenance

The following attestation bundles were made for inferix-0.1.10-py3-none-any.whl:

Publisher: publish.yml on gvcallen/inferix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page