diff --git a/CHANGELOG.md b/CHANGELOG.md index 63331bf..3aff93d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.16.0] - 2026-10-15 + +Mass-action reaction-network datasets under +`koopman_graph.datasets.reaction`, with exact oracle references +(equilibria, conservation laws, Jacobian spectra and timescales) for +checking whether a learned latent operator recovers kinetic timescales +and respects conservation. `ReactionNetworkBenchmark` is the only new +name in `koopman_graph.datasets`; the root `__all__`, homogeneous +scientific defaults, and the linear latent operator contract are +unchanged (`koopman=None` still selects `"pernode"`). SciPy and Cantera +stay optional behind the new `[reaction]` / `[cantera]` extras. +`FORMAT_VERSION` stays 1. + ### Added -- `koopman_graph.datasets.reaction` skeleton: module docstring, empty - `__all__`, placeholder submodules, and a `data/` directory for packaged - JSON. Not exported from `koopman_graph.datasets` or the root `__all__`. +- `koopman_graph.datasets.reaction` subpackage (pure PyTorch unless an + optional extra is used) with the modules below and packaged FAIR cards + under `reaction/data/`. Its names are exported from the subpackage; + only `ReactionNetworkBenchmark` is added to `koopman_graph.datasets`, + and the root `__all__` is unchanged. - `koopman_graph.datasets.reaction.system`: frozen `ReactionSystem` (reactant / product stoichiometry, mass-action rates and right-hand side, stoichiometric matrix, linearity check, optional element matrix and @@ -1289,6 +1304,7 @@ claimed wall-time percentages. - Built-in benchmarks: synthetic diffusion, 2D grid, IEEE 118-bus, and METR-LA traffic loaders - Sphinx documentation, Jupyter tutorials, pytest suite with CI, and Apache-2.0 packaging for PyPI +[0.16.0]: https://github.com/tjkessler/KoopmanGraph/compare/0.15.0...0.16.0 [0.15.0]: https://github.com/tjkessler/KoopmanGraph/compare/0.14.0...0.15.0 [0.14.0]: https://github.com/tjkessler/KoopmanGraph/compare/0.13.0...0.14.0 [0.13.0]: https://github.com/tjkessler/KoopmanGraph/compare/0.12.0...0.13.0 diff --git a/CITATION.cff b/CITATION.cff index 3ceffaf..7299488 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -13,8 +13,8 @@ authors: repository-code: "https://github.com/tjkessler/KoopmanGraph" url: "https://koopmangraph.readthedocs.io/" license: Apache-2.0 -version: 0.15.0 -date-released: 2026-08-19 +version: 0.16.0 +date-released: 2026-10-15 doi: 10.5281/zenodo.22045904 identifiers: - type: doi diff --git a/README.md b/README.md index 6180190..839791b 100644 --- a/README.md +++ b/README.md @@ -154,10 +154,11 @@ Featured tutorials: [01 synthetic](https://github.com/tjkessler/KoopmanGraph/blo - [Installation](https://koopmangraph.readthedocs.io/en/latest/installation.html) — dependencies, install paths, and CI platforms - [CLI](https://koopmangraph.readthedocs.io/en/latest/cli.html) — `koopman-graph train` / `predict` / `benchmark` config workflow - [SECURITY.md](SECURITY.md) — supported versions and checkpoint trust boundaries -- What’s new in 0.15.0: opt-in closed-form identification, identity-bound - benchmark manifests, polynomial graph filters, Nyquist / conditioning - diagnostics, and graph-state / cochain / matrix-free MVPs — defaults - unchanged vs 0.14.0; see [CHANGELOG.md](CHANGELOG.md). +- What’s new in 0.16.0: mass-action reaction-network datasets + (`ReactionNetworkBenchmark`, `koopman_graph.datasets.reaction`) with + oracle equilibria, conservation laws, and kinetic timescales; optional + `[reaction]` (SciPy stiff solvers) and `[cantera]` extras — defaults + unchanged vs 0.15.0; see [CHANGELOG.md](CHANGELOG.md). ## Related software @@ -182,7 +183,7 @@ If you use KoopmanGraph in research, please cite: publisher = {Zenodo}, doi = {10.5281/zenodo.22045904}, url = {https://github.com/tjkessler/KoopmanGraph}, - version = {0.15.0}, + version = {0.16.0}, } ``` diff --git a/SECURITY.md b/SECURITY.md index 526384c..0397b61 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,7 +7,7 @@ Security updates are provided for the **latest published release** of | Version lineage | Security updates | | --------------- | ---------------- | -| Latest PyPI release (currently the 0.15.x line) | Supported | +| Latest PyPI release (currently the 0.16.x line) | Supported | | Older published majors/minors | Not regularly backported | Check the installed version with: diff --git a/docs/source/index.rst b/docs/source/index.rst index 0b1f156..69be0b8 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -7,13 +7,15 @@ space, a learned linear operator advances those states, and a matching decoder reconstructs physical node features for multi-step forecasting and spectral analysis. -Version **0.15.0** is an integration increment on the 0.14 stack: opt-in -closed-form identification, identity-bound benchmark manifests, -polynomial graph filters, Nyquist / conditioning diagnostics, and -labeled research MVPs (graph-state closure, cochain dynamics, -matrix-free algebra, residual-tube MPC). Homogeneous scientific -defaults and the linear latent operator contract are unchanged -relative to 0.14.0 (factory ``koopman=None`` still selects +Version **0.16.0** adds mass-action reaction-network datasets +(:class:`~koopman_graph.datasets.ReactionNetworkBenchmark` and +:mod:`koopman_graph.datasets.reaction`) whose FAIR cards carry oracle +equilibria, conservation laws, and Jacobian timescales, for checking +whether a learned latent operator recovers kinetic timescales and +respects conservation. SciPy stiff solvers and Cantera mechanisms stay +behind the optional ``[reaction]`` / ``[cantera]`` extras. Homogeneous +scientific defaults and the linear latent operator contract are +unchanged relative to 0.15.0 (factory ``koopman=None`` still selects ``"pernode"``; ``sparsity="dense"``; AMP off). ``FORMAT_VERSION`` stays 1. See :doc:`capabilities` for the full inventory, :doc:`limitations` for the honesty ceilings, and :doc:`architecture` diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 1bda019..7320769 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -252,8 +252,8 @@ version with the tag you intend; see PyPI and ``CHANGELOG.md``): .. code-block:: bash - pip install koopman-graph==0.15.0 - # or: uv pip install koopman-graph==0.15.0 + pip install koopman-graph==0.16.0 + # or: uv pip install koopman-graph==0.16.0 YAML CLI configs from PyPI: diff --git a/paper.bib b/paper.bib index 8422aa2..931776f 100644 --- a/paper.bib +++ b/paper.bib @@ -213,7 +213,7 @@ @misc{koopmangraph2026 publisher = {Zenodo}, doi = {10.5281/zenodo.22045904}, url = {https://doi.org/10.5281/zenodo.22045904}, - version = {0.15.0} + version = {0.16.0} } @inproceedings{Azencot2020, diff --git a/src/koopman_graph/__init__.py b/src/koopman_graph/__init__.py index f301826..d6a14b0 100644 --- a/src/koopman_graph/__init__.py +++ b/src/koopman_graph/__init__.py @@ -169,4 +169,4 @@ "__version__", "compute_spectrum", ] -__version__ = "0.15.0" +__version__ = "0.16.0"