A python package for evolution operator learning
Project description
kooplearn is a Python library to learn evolution operators — also known as Koopman or Transfer operators — from data. kooplearn models can:
- Predict the evolution of states and observables.
- Estimate the eigenvalues and eigenfunctions of the learned evolution operators.
- Compute the dynamic mode decomposition of states and observables.
- Learn neural-network representations $x_t \mapsto \varphi(x_t)$ for evolution operators.
Why Choosing kooplearn?
-
It is easy to use and strictly adheres to the scikit-learn API.
-
Kernel estimators are state-of-the-art:
kooplearnimplements the Reduced Rank Regressor from Kostic et al. 2022, which is provably better than the classical kernel DMD in estimating eigenvalues and eigenfunctions.- It also implements Nyström estimators and randomized estimators randomized for blazingly fast kernel learning.
-
Includes representation-learning losses (implemented both in Pytorch and JAX) to train neural-network Koopman embeddings.
-
Offers a collection of datasets for benchmarking evolution-operator learning algorithms.
Installation
To install the core version of kooplearn:
pip
pip install kooplearn
uv
uv add kooplearn
To enable neural-network representations using kooplearn.torch or kooplearn.jax:
pip
# Torch
pip install "kooplearn[torch]"
# JAX
pip install "kooplearn[jax]"
uv
# Torch
uv add "kooplearn[torch]"
# JAX
uv add "kooplearn[jax]"
Contributing
We welcome contributions from the community! If you're interested in contributing to kooplearn, please follow these steps:
- Fork the repository on GitHub.
- Clone your forked repository to your local machine.
- Create a new branch for your feature or bug fix:
git checkout -b feature/your-feature-nameorgit checkout -b bugfix/issue-number. - Make your changes and commit them with descriptive commit messages.
- Push your changes to your forked repository.
- Create a pull request from your branch to the
mainbranch of the original repository. - Provide a clear title and description for your pull request, including any relevant information about the changes you've made.
We appreciate your contributions and will review your pull request as soon as possible. Thank you for helping improve kooplearn!
License
This project is licensed under the MIT License.
Main contributors
kooplearn is an joint effort between teams at the Italian Institute of Technology in Genoa and the École polytechnique in Paris. The main contributors to the project are (in alphabetical order):
- Vladimir Kostic
- Karim Lounici
- Giacomo Meanti
- Erfan Mirzaei
- Pietro Novelli
- Daniel Ordonez
- Grégoire Pacreau
- Massimiliano Pontil
- Giacomo Turri
The mantainer of this repo is Pietro Novelli.
We hope you find kooplearn useful for your dynamical systems analysis. If you encounter any issues or have suggestions for improvements, please don't hesitate to raise an issue. Happy coding!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kooplearn-2.0.0rc1.tar.gz.
File metadata
- Download URL: kooplearn-2.0.0rc1.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58f1cb0f712a063f034b0dcd18b9315a79fff618626387a23002d834383705e8
|
|
| MD5 |
21d66333d4b99cadb3c0229902ec593e
|
|
| BLAKE2b-256 |
5c298e63cca86ff5d64d548205843457dd6c49376fb279c4a93a88aa3128d20c
|
File details
Details for the file kooplearn-2.0.0rc1-py3-none-any.whl.
File metadata
- Download URL: kooplearn-2.0.0rc1-py3-none-any.whl
- Upload date:
- Size: 76.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17be83472f7c4ad992f918139273e5428883bc1ac197caa84d6f7437101dc120
|
|
| MD5 |
b66c9eb7bcd92d74cc8a7f715c73c51c
|
|
| BLAKE2b-256 |
3a0dd89b260ce4525880b90fa995003272a65135aeee4890474f666e2e0e4c8b
|