- Phase-space IC sampling: training samples are no longer windows of a single origin-started orbit (which pinned every sample to the energy shell E = V0 = 2). Each potential now yields
NDIFFCONFIG=4orbits with stratified energy fraction u = (E - V(q0)) / (V0 - V(q0)) over [0.05, 0.35) / [0.35, 0.65) / [0.65, 0.95) / [0.95, 0.99). Sub-well libration and near-bottom regimes enter the training distribution (~23% of orbits cover less than 60% of the domain). - Explicit depth sampling: interior potential values are mapped to [V0 - D, V0 - 0.1] with D ~ U(0.5, 3.5) per sample, replacing batch-global min-max scaling (which made the depth distribution depend on batch composition).
- Confinement by construction: E < V0 guarantees orbits stay in [0, L], removing the boundary-rejection bias of the previous pipeline. Rejection counters are printed per filter.
- Metadata columns: parquet now carries
pid, b, l, depth, E0, uper sample for OOD analysis, regime-stratified evaluation, and leakage audits.scripts/validate_data.pychecks strata coverage, depth, and phase-space coverage. - Energy drift filter: evaluated on dense solver points relative to the per-potential energy scale (the old relative formula was unsafe for E0 < 0).
- pytorch_template migration (v0 -> current): adds
callbacks.py,checkpoint.py,provenance.py,cli.py,metrics.py; replacesconfig.py,main.py,pruner.py; rewritesutil.pyon the template base with the (V, t, q, p, ic) batch signature kept inTrainer. VaRONet variational path removed. New commands:python -m cli preflight/doctor/hpo_report. Resume via--resumeandlatest_model.pt. - configs/v1.33: run + opt configs for DeepONet/FNO/MambONet/TraONet with
data/criterion/wandbfields, HPO at 10 epochs (scheduler max_iter 10), seeds [89, 231, 928]. - Breaking: smoke mode added to data generator (
neural_hamilton 3 <n>); old datasets remain loadable but lack metadata columns and are on-shell (E = 2) only.
- Initial Condition (IC) Support: All models now require
(q0, p0)as input- New forward signature:
model(V, t, ic)whereic = (batch, 2) ICEmbeddingmodule added for conditioning- Additive conditioning in decoder:
x = x + ic_embed(ic)
- New forward signature:
- Autoregressive Long-term Prediction: Chain multiple windows using predicted endpoints
- New function:
autoregressive_predict(model, V, n_windows, ...)
- New function:
- Data Pipeline Updates:
load_data()now returns(V, t, q, p, ic)with IC extracted fromq[:, 0], p[:, 0]solvers.rsandtrue_trajectories.jluse actual IC from data (not origin)
- Build System:
just build-cargonow builds only required binaries (neural_hamilton, relevant, solvers) - Breaking Change: Existing checkpoints incompatible (new
ic_embedlayers)
- Total data = n * NDIFFCONFIG
- Batch size: 256
- Remove umap
- Introduce
NDIFFCONFIGto control the number of different time configurations per potential.- This version uses
NDIFFCONFIG=2by default, which means two different time configurations per potential.
- This version uses