Releases: tjkessler/KoopmanGraph
Releases · tjkessler/KoopmanGraph
Release list
0.3.0
New public APIs (Phase 6)
- Structural stability —
schur,dissipative, andlyapunovKoopman parameterizations withstability_certificate()for long-horizon rollouts (distinct from softodo+ eigenloss) - Continuous-time dynamics —
ContinuousKoopmanOperator,dynamics_mode="continuous", irregular timestamps, andpredict_atvia matrix-exponential / Van Loan integration - Online adaptation —
RecursiveKoopmanAdapterandGraphKoopmanModel.adapt_stepfor RLS updates with a frozen encoder - Physics-informed observables — hybrid lifting (
physics_preset/ customphysics_lifting_fn) concatenated with GNN latents - Dynamical similarity —
spectrum_distance,koopman_std,dynamical_similarity,detect_anomaly, andcalibrate_anomaly_thresholdviakoopman_graph.analysis - RL environment —
GraphKoopmanEnv/to_latent_envwith optional[rl]extra for Gymnasium / Stable-Baselines3
Spec alignment & hardening (Phase 7)
- Notebook scope fixes (continuous-time / METR-LA narrative), ODO vs structural stability docs, continuous RLS fidelity notes
- Partial observation masks, topology-shock adaptation demo, regime clustering, custom physics-lifting examples
- Stability/inverse certificate tests, continuous-time
delta_tin the RL env, anomaly threshold calibration helper
Architectural consistency (Phase 8)
- Shared operator contracts, shared rollout primitives, optional
koopman=injection, frozen result types, and thin public façade - Capability-oriented package layout (
training,data,operators,nn,analysis,baselines) with deep-import shim hard cut - Tutorial scientific claim↔result integrity across notebooks (IEEE 118, METR-LA, epidemic, RL, physics-informed)
- Spectrum plot axis focus (
limits="unit_disk"vs"data") and ≥90% coverage gate for the release surface
Documentation & packaging
- Version 0.3.0; checkpoint
FORMAT_VERSION2 with v1 migration - README, Sphinx quickstart/API, and
paper.mdupdated for the v0.3 surface - Sixteen tutorial notebooks with CI nbmake coverage
Install
pip install koopman-graph==0.3.00.2.0
New public APIs
- Spectral analysis (
analysis.py) —KoopmanSpectrum,compute_spectrum,decode_mode_shapes, andGraphKoopmanModel.spectrum()with continuous-time growth rates/frequencies fromtime_step - Model persistence (
serialization.py) —GraphKoopmanModel.save/loadwith architecture config; optional best-epoch checkpointing infit - Evaluation (
metrics.py,data.py) —TemporalSplit/temporal_split, per-horizon MAE/RMSE/MAPE viaevaluate_forecast, andGraphKoopmanModel.evaluate - Operator stability (
operator.py,losses.py) — spectrally constrained ODO parameterization,EigenvalueRegularizationLoss, optimized backward-consistency inverse - Edge weights — end-to-end
edge_weightsupport in data, GCN encoder/decoder, model, and METR-LA benchmark - Classical baselines (
baselines.py) —DMDBaseline,EDMDBaseline,DMDcBaselinewithfit/predictand spectral integration - Control inputs — Koopman-with-control (
Bmatrix), per-timestep controls onGraphSnapshotSequence, control-awarefit/predict/evaluate - Dynamic topology — opt-in per-snapshot
edge_indexwith hold-last-known rollout convention - Advanced training (
training.py) — LR schedulers, per-termFitHistory, multi-trajectoryfit, rollout start indices, andWindowSamplerwindowed mini-batching
Documentation & release prep
- Version bumped to 0.2.0 (
__init__.py,CITATION.cff,paper.bib) - README, paper.md, and Sphinx docs updated to describe v0.2 capabilities
- Tutorial notebooks refactored: IEEE 118 (controls), METR-LA (baselines + evaluation + throughput), epidemic (dynamic topology), spectrum (packaged API), stability (ODO/eigenloss)
Tests
- 98 new tests across
test_analysis,test_baselines,test_control,test_metrics,test_serialization, and expanded existing suites - 379 tests passing locally
0.1.0 - Initial release
Add PyPI trusted-publishing release workflow (TASK-400). Prepare koopman-graph for versioned PyPI releases via OIDC, with packaging metadata, install docs, and release policy. Co-authored-by: Cursor <cursoragent@cursor.com>