Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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},
}
```

Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
16 changes: 9 additions & 7 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
4 changes: 2 additions & 2 deletions docs/source/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
2 changes: 1 addition & 1 deletion paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion src/koopman_graph/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,4 @@
"__version__",
"compute_spectrum",
]
__version__ = "0.15.0"
__version__ = "0.16.0"
Loading