Skip to main content

bayesmith

A Bayesian model is a graph of operators. Deterministic operators propagate dependence; probabilistic operators contribute a conditional density. Together they are the joint distribution.

bayesmith makes that graph explicit and inspectable, and then uses its structure to choose how the model is fitted — an exact solve where the structure permits one, NUTS where it does not.

block 0  {x}          Wiener exact        (linear_in checked, 3 scales)
block 1  {z}          enumerate 4 states
block 2  {sigma, nu}  NUTS (numpyro)      no exact structure found

The model tells you how it will be fitted, before it is fitted.

What bayesmith is not

It is not another probabilistic programming language. Distributions, MCMC kernels, variational inference and transforms all come from NumPyro. bayesmith is the dispatch layer above them, and every line in it must answer "why can NumPyro not do this?"

What it owns, because a trace-based PPL structurally cannot:

  • Structural exact inference — conjugate / Wiener / GCR / GLS solves, and exact enumeration of discrete latents, selected per subgraph.
  • Streaming evidence — square-root information factors combined exactly across datasets and observing epochs.
  • Diagnostics on the graph — identifiability, prior sensitivity, and linearity checking of the declarations the dispatcher relies on.

Declarations such as linear_in are claims about the model, not hints, so they are checked rather than trusted: a node declared linear is probed at three scales before any exact solve is allowed to use it.

Status

0.1.0, the first release. Published so other packages can depend on it by name. Alpha in the classifier's sense: the API may still move.

Implemented and tested, 1163 tests: the graph core with plates and joint log-density; the NumPyro bridge, so any graph is runnable through NUTS; structural dispatch with the linear-Gaussian exact solves; exact enumeration of discrete latents; streaming evidence as square-root information factors; and graph diagnostics for identifiability, prior sensitivity and linearity.

Two things the page above describes that 0.1.0 does not do yet. Stated here because a front page is a claim, and finding out afterwards is worse than reading it now:

  • Enumeration is not dispatcher-selected. bayesmith.exact.discrete computes the exact marginal and the posterior marginals over declared discrete latents, and reads the Discrete(n) support declaration to do it — but classify does not yet route a discrete subgraph to it. The block 1 {z} enumerate 4 states line above is therefore a design sketch rather than a transcript; call the module directly.
  • Forward-backward is not implemented, so a chain of T discrete latents costs n ** T by enumeration rather than T * n**2. Enumeration refuses past a budget rather than hanging, and names the count it would have visited.

License

MIT

Download files

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

Source Distribution

bayesmith-0.1.0.tar.gz (539.7 kB view details)

Uploaded Source

Built Distribution

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

bayesmith-0.1.0-py3-none-any.whl (218.9 kB view details)

Uploaded Python 3

File details

Details for the file bayesmith-0.1.0.tar.gz.

File metadata

  • Download URL: bayesmith-0.1.0.tar.gz
  • Upload date:
  • Size: 539.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bayesmith-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1ebf9b491794cdd82221d24f64b105b83fb4b7292a8fbdae303c63fa8c7490f3
MD5 ff150fd0117f710962bdb5bf39a1feeb
BLAKE2b-256 a40f271dc73477f92b22e6bb05110ff7f893c3c440b2f999192415e32ccc6a30

See more details on using hashes here.

Provenance

The following attestation bundles were made for bayesmith-0.1.0.tar.gz:

Publisher: publish.yml on zzhang0123/bayesmith

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

File details

Details for the file bayesmith-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bayesmith-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 218.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bayesmith-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 754a0ea548a7f197ee57469ad8a0032bba7ee9a739c02b032dcd54b9dd490b1b
MD5 154365cbcfc562613ea2919bbb566a5a
BLAKE2b-256 8d41e473f9570a4a344d241b0fd807db066d6602366f47b488b1c04e31640490

See more details on using hashes here.

Provenance

The following attestation bundles were made for bayesmith-0.1.0-py3-none-any.whl:

Publisher: publish.yml on zzhang0123/bayesmith

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

Release history Release notifications | RSS feed

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

This release

0.1.0 This release

2 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