Physics-Informed Gaussian Process Regression for Linear PDE Solvers
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.
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 |
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).
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-gpIf you've already cloned it without submodules, you can fetch them afterward by doing:
cd linpde-gp
git submodule update --init --recursiveStart the container (builds if needed and runs in the background):
./docker-run.sh runOpen a shell inside the running container:
./docker-run.sh shellRun tests:
./docker-run.sh testStart Jupyter Notebook (accessible on your host at http://localhost:8888):
./docker-run.sh jupyterTip: 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 stopClean up everything (container, image, and volumes like pip cache):
./docker-run.sh clean- Your project directory is mounted into the container at
/app, so local code edits are immediately available inside the container. - Ports
8888(Jupyter) and8000are published by default; adjustdocker-compose.ymlif 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 downIf 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 .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}
}Released under the MIT License.