An educational MLOps project for physics-informed neural operators. The first prototype uses experimental particle image velocimetry (PIV) measurements of a cylinder wake.
The project is intentionally being built in small vertical slices. The current slice downloads the source dataset reproducibly and inspects its structure. We also have a notebook that trains a graph neural operator on the AirfRANS dataset, scaffolded for Databricks and MLflow (see below).
The prototype uses the Shang--Tu Particle image velocimetry (PIV) data of flow past a cylinder dataset:
- source: https://doi.org/10.5281/zenodo.20765567
- acquisition: planar PIV in a recirculating water channel
- conditions: cylinder Reynolds number 413, sampled at 20 Hz
- fields:
u,v,x, andy - download size: approximately 1.1 GB
The original data is not committed to Git. Its URL and published MD5 checksum
are recorded in configs/prototype.yaml.
This project uses uv to manage Python, the local virtual environment, and locked dependencies. After installing uv, run:
uv syncThe committed .python-version selects Python 3.12, while uv.lock records
the exact dependency resolution. You do not need to activate .venv; use
uv run to execute commands in the managed environment.
Download the dataset (this transfers approximately 1.1 GB):
uv run python scripts/download_data.py --config configs/prototype.yamlInspect the downloaded MATLAB file and write a machine-readable report:
uv run python scripts/inspect_data.py --config configs/prototype.yamlRun the fast tests:
uv run pytestThe repository covers data provenance, checksum verification, structural inspection, and an initial AirfRANS training notebook scaffold. Full training validation, physics losses, containers, and deployment remain future work.
notebooks/airfrans_gno_databricks.ipynb
trains a graph neural operator on the AirfRANS dataset using PyTorch, Databricks,
and MLflow. It includes a radius graph integral model, simulation-level
training/validation split, train-only normalization, a training loop, metrics,
and best-checkpoint logging.
This is scaffolding and has not been run end to end. Import the notebook into
Databricks, attach a PyTorch-capable ML runtime, install airfrans, and stage
the extracted dataset in a Unity Catalog Volume. Set the data_root and
experiment widgets before running. The notebook documents the expected data
layout, permissions, remaining work, and optional local execution. Its training
dependencies are separate from the existing uv environment and lockfile.
AirfRANS is a separate airfoil simulation dataset from the cylinder-wake PIV prototype above. The notebook does not download data automatically.