Skip to main content

BITS for GAPS

CI codecov PyPI Docs

Bayesian Information-Theoretic Sampling for hierarchical GAussian Process Surrogates.

BITS for GAPS framework overview: a hierarchical Gaussian process surrogate (GAPS) places priors on the kernel hyperparameters; Bayesian information-theoretic sampling (BITS) repeatedly selects the next input by maximizing the predictive differential entropy and collects data there; the result is an information-optimal surrogate whose predictions average over the hyperparameter posterior.

Graphical abstract from the paper (© 2026 The Authors, CC BY 4.0).

A framework for information-theoretic sequential experimental design with Bayesian hierarchical Gaussian-process surrogates. Prior physical knowledge is encoded through priors on the GP hyperparameters; sampling is guided by maximizing the predictive differential entropy, so hyperparameter uncertainty (not just predictive variance) drives data acquisition.

Reference: K. D. Jones and A. W. Dowling, "BITS for GAPS: Bayesian Information-Theoretic Sampling for hierarchical GAussian Process Surrogates," Computers & Chemical Engineering 211 (2026) 109650. https://doi.org/10.1016/j.compchemeng.2026.109650

The paper is bundled in this repository so you can read the method alongside the code: paper/bits_for_gaps_paper.pdf. It is redistributed under CC BY 4.0 (© 2026 The Authors, published by Elsevier Ltd); the DOI above is the canonical citation.

Install

pip install bits_for_gaps

The core library is pure Python (GPflow / TensorFlow / NumPy / SciPy) with no Julia dependency. Julia + Clapeyron are only needed for the vle_distillation example, which isn't part of the PyPI package -- see "From source" below.

Supports Python 3.9-3.12. Python 3.13+ isn't available: this package depends on GPflow, and GPflow requires numpy<2 in every release -- no NumPy 1.x publishes a Python 3.13 wheel. That's an upstream constraint, not something this package can work around; see docs/installation.md for the full explanation.

macOS note: set export PYTHON_JULIACALL_HANDLE_SIGNALS=yes before importing juliacall, or Julia crashes with a bus error (SIGBUS).

From source (for examples/, paper/, and development)

git clone https://github.com/dowlinglab/bits_for_gaps
cd bits_for_gaps
conda env create -f environment.yml
conda activate bits_for_gaps
pip install -e ".[dev]"          # core + test tools
# pip install -e ".[dev,vle]"    # add the Julia/Clapeyron VLE example backend

Layout

src/bits_for_gaps/   the library (algorithm)
examples/            worked examples (incl. the paper's VLE/distillation case study)
paper/               scripts + reference metrics to reproduce the published figures
tests/               unit / integration / regression tests
docs/                Sphinx documentation (ReadTheDocs)

Quick test

pytest -q

To measure coverage locally (scoped to src/bits_for_gaps -- examples/, paper/, and tests/ are repo-only and excluded from the denominator):

pytest --cov=bits_for_gaps --cov-report=term-missing

Provenance

The research code behind the paper was originally developed in a private repository over the course of the study. It was then migrated here and reorganized into an installable, tested package: the algorithm was separated from the vapor–liquid-equilibrium case study, generalized to arbitrary input dimension, and covered by a test suite. That private repository holds only the development history — nothing you need to use this package or to reproduce the paper's figures is missing from this repository. The data the figure scripts read is committed here under paper/data/ (see paper/REPRODUCTION.md).

Docs

Full docs (installation, a pure-Python quickstart, theory notes, the VLE example, reproducing the paper's figures, and the API reference): https://bits-for-gaps.readthedocs.io

To build and browse locally instead:

pip install -e ".[docs]"
sphinx-build -W docs docs/_build/html
open docs/_build/html/index.html   # or your platform's equivalent

Metadata

Release files for bits-for-gaps 0.2.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 bits-for-gaps 0.2.0
File Size Uploaded
bits_for_gaps-0.2.0.tar.gz 36.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bits-for-gaps 0.2.0
File Interpreter ABI Platform
bits_for_gaps-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.3 kB

Release files / bits_for_gaps-0.2.0.tar.gz

Download URL bits_for_gaps-0.2.0.tar.gz
Size 36.5 kB
Tags Source
SHA-256 checksum
How to use checksums
190e674326c7c33aece9b19efab06a25fd47e1c180f34f529b29175feb84f728
BLAKE2b-256 checksum
How to use checksums
93ff096ad7a58a4133d87b1c69bb949543500de87675be2cfbdabd5b1a91c465
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 Aug 7, 2026.

Transparency log

Release files / bits_for_gaps-0.2.0-py3-none-any.whl

Download URL bits_for_gaps-0.2.0-py3-none-any.whl
Size 36.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1ed9149f122e9f83628c0c9bddd0b1c7462ada9a067947b28db1d43e5749edf1
BLAKE2b-256 checksum
How to use checksums
f7688d978155b8c2760bde40855c0c035fae19c30499b33365a8371f1bac9f08
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 Aug 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

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