| name | the-well |
| description | Download, load, explore, and benchmark The Well โ Polymathic AI's 15TB collection of 16 diverse physics-simulation datasets (fluid dynamics, MHD, acoustic scattering, active matter, supernovae, reaction-diffusion) for training and evaluating spatiotemporal ML surrogate / physics-foundation models. Use when the user mentions "The Well", "polymathic", "the_well", "WellDataset", "๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์
๋ฐ์ดํฐ์
", "PDE surrogate", "๋ฌผ๋ฆฌ ์๋ก๊ฒ์ดํธ ๋ชจ๋ธ", "๋ฌผ๋ฆฌ ํ์ด๋ฐ์ด์
๋ชจ๋ธ", "spatiotemporal simulation dataset", "neural PDE benchmark", "ํ์ต์ฉ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์
๋ฐ์ดํฐ", or wants to pick/stream/download a Well dataset, wire it into a PyTorch DataLoader, visualize a simulation rollout, or benchmark a surrogate model. Do NOT use for generic HuggingFace dataset loading (use hf-datasets), non-physics ML data, or CFD solver authoring. |
The Well โ Physics Simulation Datasets for ML
Polymathic AI's The Well: 15TB, 16 spatiotemporal physics-simulation datasets for
training/evaluating ML surrogate models. This skill routes a request to the cheapest path
that answers it โ stream a few frames for exploration, or download a split for training โ
and never assumes 15TB is on disk.
- Package:
the_well (PyPI), Python โฅ 3.10, PyTorch interface via WellDataset.
- Paper: arXiv:2412.00568 (NeurIPS 2024). Repo/docs: github.com/PolymathicAI/the_well.
- Data mirror: HuggingFace
polymathic-ai/* (streamable, no full download needed).
Full dataset list โ references/dataset-catalog.md. API/CLI details โ references/api-reference.md.
Model benchmarking โ references/benchmark-guide.md.
Step 1: Detect Runtime (never assume)
Run these and build the decision tree from the results. Prefer the repo canonical
interpreter (.venv/bin/python, 3.12) per this project's python-runtime rule.
PY=".venv/bin/python"; [ -x "$PY" ] || PY="python3"; $PY --version
$PY -c "import the_well, importlib.metadata as m; print('the_well', m.version('the_well'))" 2>/dev/null || echo "NO the_well"
$PY -c "import torch;print('torch',torch.__version__,'mps',torch.backends.mps.is_available(),'cuda',torch.cuda.is_available())" 2>/dev/null || echo "NO torch"
command -v the-well-download >/dev/null && echo "CLI ok" || echo "NO cli"
$PY -c "import huggingface_hub as h;print('hf', h.whoami()['name'])" 2>/dev/null || echo "NO hf-auth (public streaming still fine)"
df -h . | tail -1
Decision tree
| Detection result | Path |
|---|
NO the_well | Install: VIRTUAL_ENV="$PWD/.venv" uv pip install the_well (add [benchmark] only if benchmarking). Then re-run Step 1. |
NO torch | the_well pulls torch as a dep; the install above fixes it. On Apple Silicon, MPS is used automatically. |
| Goal = explore / few frames / visualize | Stream from HF (Step 3, Method B) โ zero full download. |
| Goal = train / repeated epochs / benchmark | Download the split (Step 3, Method A) โ check df -h first; splits range 6.9GBโ5.1TB. |
df headroom < requested dataset | Fall back to streaming or a smaller dataset/split; warn the user before any multi-GB pull. |
Exit gate: you know (a) interpreter, (b) whether the_well importable, (c) stream-vs-download, (d) disk headroom.
Step 2: Choose the Dataset & Split
Ask the user for a physical domain if not given; otherwise map their intent to a dataset
using references/dataset-catalog.md (16 datasets across fluids, MHD, astro, acoustics,
biology, reaction-diffusion). Defaults below keep the skill from stalling.
| Parameter | Default | Notes |
|---|
dataset | active_matter | Smallest well-rounded 2D set โ good first pull / demo. |
split | train | Also valid, test. |
base_path | hf://datasets/polymathic-ai/ | HF streaming root (no download). For local: data/the_well. |
mode | explore | explore โ stream+visualize; train โ download+DataLoader; benchmark โ hydra. |
n_preview_frames | 4 | Frames to pull for a quick look. |
If the user names a phenomenon ("turbulence", "supernova", "RayleighโBรฉnard", "MHD"),
resolve it via the catalog rather than guessing the exact dataset string.
Step 3: Acquire the Data
Pick ONE method from Step 1's decision tree. Do not download unless the goal needs repeated
access AND disk headroom is confirmed.
Method A โ Download a split (training / benchmarking)
the-well-download --base-path data/the_well --dataset active_matter --split train
Gate: confirm df -h headroom โฅ split size before running; echo the expected size to the user.
Method B โ Stream from HuggingFace (exploration / low disk)
No download. Point well_base_path at the HF root; frames are fetched lazily.
from the_well.data import WellDataset
ds = WellDataset(
well_base_path="hf://datasets/polymathic-ai/",
well_dataset_name="active_matter",
well_split_name="train",
)
Step 4: Load into a PyTorch Pipeline
from the_well.data import WellDataset
from torch.utils.data import DataLoader
ds = WellDataset(
well_base_path="data/the_well",
well_dataset_name="active_matter",
well_split_name="train",
)
loader = DataLoader(ds, batch_size=1, num_workers=2)
sample = next(iter(loader))
A sample is a dict (verified on active_matter, the_well==1.2.0):
input_fields / output_fields (T, H, W[, D], C), constant_scalars, boundary_conditions,
space_grid, input_time_grid, output_time_grid. Control the window with constructor kwargs
n_steps_input / n_steps_output (default 1/1), use_normalization=True, return_grid,
flatten_tensors, full_trajectory_mode. Field semantics per dataset โ
references/dataset-catalog.md; full kwarg list โ references/api-reference.md.
Gate: print sample tensor shapes and dtypes; confirm they match the expected dataset dims
before any heavy loop.
Step 5: Explore / Visualize (mode=explore)
Write a short script (native Write, then run with $PY) that pulls n_preview_frames, prints
field names + shapes, and renders a rollout to PNG/GIF. Keep to compositor-cheap matplotlib.
Save under outputs/the-well/{dataset}/. On macOS interactive sessions, open the final image
(per this repo's display-generated-images rule); skip open in headless/cron runs.
Gate: image exists and is > 5KB before reporting success.
Step 6: Benchmark a Surrogate (mode=benchmark, optional)
Only when the user wants model evaluation. Requires the_well[benchmark] (hydra, extra deps).
The repo ships SOTA baselines (e.g. FNO, U-Net variants) + a hydra train.py. Route to
references/benchmark-guide.md for config layout, model list, and metrics (VRMSE etc.).
Heavy runs โ dispatch to a subagent / GPU host, not the main context ([[loop-monitor-cost-guard]]).
Step 7: Respond to the User
Output these numbered sections:
- Selection โ dataset, split, domain (1 line), why it matched the request.
- Access method โ stream vs download, and disk cost (GB) if downloaded.
- What was produced โ tensor shapes of a sample, and file path(s) of any visualization.
- Next step โ one concrete follow-up (train loop, another dataset, benchmark).
- Provenance & license โ cite The Well (arXiv:2412.00568) and note dataset licensing must
be checked in the repo/HF card before redistribution (do not assert a license from memory).
Reference Files
references/dataset-catalog.md โ all 16 datasets: domain, dimensionality, fields, size tier, resolver keywords.
references/api-reference.md โ WellDataset params, the-well-download flags, streaming, normalization, metadata schema.
references/benchmark-guide.md โ hydra config layout, bundled models, metrics, GPU guidance.