Skip to content

Releases: tjkessler/KoopmanGraph

0.3.0

Choose a tag to compare

@tjkessler tjkessler released this 17 Jul 03:02

New public APIs (Phase 6)

  • Structural stabilityschur, dissipative, and lyapunov Koopman parameterizations with stability_certificate() for long-horizon rollouts (distinct from soft odo + eigenloss)
  • Continuous-time dynamicsContinuousKoopmanOperator, dynamics_mode="continuous", irregular timestamps, and predict_at via matrix-exponential / Van Loan integration
  • Online adaptationRecursiveKoopmanAdapter and GraphKoopmanModel.adapt_step for RLS updates with a frozen encoder
  • Physics-informed observables — hybrid lifting (physics_preset / custom physics_lifting_fn) concatenated with GNN latents
  • Dynamical similarityspectrum_distance, koopman_std, dynamical_similarity, detect_anomaly, and calibrate_anomaly_threshold via koopman_graph.analysis
  • RL environmentGraphKoopmanEnv / to_latent_env with 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_t in 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_VERSION 2 with v1 migration
  • README, Sphinx quickstart/API, and paper.md updated for the v0.3 surface
  • Sixteen tutorial notebooks with CI nbmake coverage

Install

pip install koopman-graph==0.3.0

0.2.0

Choose a tag to compare

@tjkessler tjkessler released this 12 Jul 05:10
3731a2d

New public APIs

  • Spectral analysis (analysis.py) — KoopmanSpectrum, compute_spectrum, decode_mode_shapes, and GraphKoopmanModel.spectrum() with continuous-time growth rates/frequencies from time_step
  • Model persistence (serialization.py) — GraphKoopmanModel.save / load with architecture config; optional best-epoch checkpointing in fit
  • Evaluation (metrics.py, data.py) — TemporalSplit / temporal_split, per-horizon MAE/RMSE/MAPE via evaluate_forecast, and GraphKoopmanModel.evaluate
  • Operator stability (operator.py, losses.py) — spectrally constrained ODO parameterization, EigenvalueRegularizationLoss, optimized backward-consistency inverse
  • Edge weights — end-to-end edge_weight support in data, GCN encoder/decoder, model, and METR-LA benchmark
  • Classical baselines (baselines.py) — DMDBaseline, EDMDBaseline, DMDcBaseline with fit / predict and spectral integration
  • Control inputs — Koopman-with-control (B matrix), per-timestep controls on GraphSnapshotSequence, control-aware fit / predict / evaluate
  • Dynamic topology — opt-in per-snapshot edge_index with hold-last-known rollout convention
  • Advanced training (training.py) — LR schedulers, per-term FitHistory, multi-trajectory fit, rollout start indices, and WindowSampler windowed 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

Choose a tag to compare

@tjkessler tjkessler released this 11 Jul 01:54
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>