Skip to content
bydeng01Public

Repository files navigation

LinPDE-GP with Linear Operator Inequality Constraints

Physics-Informed Gaussian Process Regression for Linear PDE Solvers

Python License: MIT CI arXiv arXiv Docker


This fork builds on the original linpde-gp framework in two directions.

Research extensions:

  • Inequality-constrained GP-PDE solvers: linear inequality constraints such as bounds, monotonicity and no-arbitrage conditions on top of the PDE posterior, with applications to option pricing and air quality
  • Helmholtz equation support, including the Helmholtz operator and related components
  • An application to in vivo brain magnetic resonance elastography (MRE)

Maintenance and reproducibility:

  • Updates to the software and submodules for modern dependencies
  • A maintained Docker build

The original framework accompanies "Physics-Informed Gaussian Process Regression Generalizes Linear PDE Solvers"; see the original repository.

Projects

The projects share the installation below. Each guide describes the method, data requirements, and reproduction commands.

Project Status Guide
Helmholtz equation & Brain MRE — physics-informed GP solver for the inhomogeneous Helmholtz BVP (real & complex, 1D/2D/3D) with FDM/PINN baselines, and its application to in vivo brain magnetic resonance elastography Open-source docs/HELMHOLTZ.md
Inequality-constrained GP-PDE — equality (PDE + BC) and inequality (e.g. monotonicity) constraints via gp_constr Open-source experiments/linpde_gp_constrained/README.md

Submodules

This project depends on two Git submodules:

Submodule Description
probnum Probabilistic numerics library (forked for compatibility)
gp_constr Gaussian processes with linear operator inequality constraints

Both are fetched automatically when you clone with --recurse-submodules (see below).

Getting Started

Usage (Docker)

Prerequisites: Install Docker (with Docker Compose). On macOS/Windows, Docker Desktop already includes Compose.

Clone with submodules (if you haven't already):

git clone --recurse-submodules https://github.com/bydeng01/linpde-gp.git
cd linpde-gp

If you've already cloned it without submodules, you can fetch them afterward by doing:

cd linpde-gp
git submodule update --init --recursive

Quick Start (recommended)

Start the container (builds if needed and runs in the background):

./docker-run.sh run

Open a shell inside the running container:

./docker-run.sh shell

Run tests:

./docker-run.sh test

Start Jupyter Notebook (accessible on your host at http://localhost:8888):

./docker-run.sh jupyter

Tip: If Jupyter asks for a token, show the container logs to find the URL:

docker-compose logs -f linpde-gp

Stop the container:

./docker-run.sh stop

Clean up everything (container, image, and volumes like pip cache):

./docker-run.sh clean

Notes

  • Your project directory is mounted into the container at /app, so local code edits are immediately available inside the container.
  • Ports 8888 (Jupyter) and 8000 are published by default; adjust docker-compose.yml if you need different ports.
Manual Docker Compose equivalents
# Build
docker-compose build

# Run (detached)
docker-compose up -d

# Shell
docker-compose exec linpde-gp /bin/bash

# Stop
docker-compose down

Usage (Local)

If you prefer to work without Docker, install the submodules as editable packages after cloning:

pip install -e ./probnum
pip install -e ./gp_constr
pip install -e .

Citation

If you use or refer to the inequality-constrained GP-PDE module in this fork, please cite our paper.

@misc{deng2026constrainedprobabilisticnumericsgaussian,
      title={Constrained Probabilistic Numerics: Gaussian Process Solvers for Linear PDEs under Linear Inequality Constraints}, 
      author={Boyuan Deng and Kshitiz Upadhyay and Michael Shields},
      year={2026},
      eprint={2610.13804},
      archivePrefix={arXiv},
      primaryClass={stat.ML},
      url={https://arxiv.org/abs/2610.13804}, 
}

If you use or refer to the Helmholtz equation module or the brain MRE application in this fork, please cite our paper.

@misc{deng2026operatorinformedgaussianprocessescomplex,
      title={Operator-Informed Gaussian Processes for Complex Helmholtz Wavefields: From Synthetic Benchmarks to In Vivo Brain Elastography}, 
      author={Boyuan Deng and Kshitiz Upadhyay and Michael Shields},
      year={2026},
      eprint={2607.14193},
      archivePrefix={arXiv},
      primaryClass={stat.ML},
      url={https://arxiv.org/abs/2607.14193}, 
}

If you use this software, please cite the original publication:

@misc{Pfoertner2022LinPDEGP,
  author = {Pf\"ortner, Marvin and Steinwart, Ingo and Hennig, Philipp and Wenger, Jonathan},
  title = {Physics-Informed Gaussian Process Regression Generalizes Linear PDE Solvers},
  year = {2022},
  publisher = {arXiv},
  doi = {10.48550/arxiv.2212.12474},
  url = {https://arxiv.org/abs/2212.12474}
}

License

Released under the MIT License.

Releases

Packages

Used by

Contributors

Languages