EchoStateNetwork
Echo state networks / reservoir computing in pure numpy. One class,
EchoStateNetwork: ridge-regression training with chaotic recycle validation
(contiguous runs or ragged dwell segments), parametric inputs, optional Bayesian
hyperparameter search (scikit-optimize), closed-loop prediction, and Jacobians
for data assimilation. For spatially extended systems, the parallel layout
(patch_size, halo, periodic) runs one reservoir per patch of neighbouring
sites (Pathak et al. 2018), with shared matrices and a position for every
reservoir row, which covariance localization requires; see the
parallel ESN page.
This is the single shared reservoir core behind
qlrom (quantized-local ESN families) and
romda (real-time ESN forecasting and
bias-aware data assimilation).
Documentation: https://andreanovoa.github.io/EchoStateNetwork/
Tutorials
tutorials/01_echo_state_network.ipynb— train an ESN on the Lorenz 63 system, with full and partial observability.tutorials/02_parametric_esn.ipynb— one reservoir conditioned on a physical parameter, forecasting at unseen parameter values.tutorials/05_parallel_esn_kuramoto_sivashinsky.ipynb— global, parallel (shared matrices) and local (independent patches) networks on the Kuramoto–Sivashinsky equation.tutorials/06_esn_architectures.ipynb— drawings of the architectures that the constructor keywords build, a gallery and an interactive explorer (ipywidgets).
Install
pip install echostatenetwork # core (numpy/scipy/matplotlib)
pip install "echostatenetwork[opt]" # + scikit-optimize for Bayesian hyperparameter search
pip install -e ".[dev]" # development
Quickstart
import numpy as np
from echostatenetwork import EchoStateNetwork
y = my_time_series # (Nt, N_dim)
esn = EchoStateNetwork(y, dt=0.01, N_units=200, t_train=40.0, t_val=4.0)
esn.train([y])
u_wash, r = ... # see docstrings: washout then closed loop
Citation
If this package contributes to your work, please cite the software archive on Zenodo:
@software{novoa_echostatenetwork,
author = {Nóvoa, Andrea},
title = {echostatenetwork: echo state networks in pure numpy},
publisher = {Zenodo},
doi = {10.5281/zenodo.23266679},
url = {https://doi.org/10.5281/zenodo.23266679},
}
and the paper that introduced chaotic recycle validation, which train() employs by
default:
@article{racca2021robust,
author = {Racca, Alberto and Magri, Luca},
title = {Robust optimization and validation of echo state networks for learning chaotic dynamics},
journal = {Neural Networks},
volume = {142},
pages = {252--268},
year = {2021},
doi = {10.1016/j.neunet.2021.05.004},
url = {https://doi.org/10.1016/j.neunet.2021.05.004},
}
Acknowledgements
This repository is based on alberacca/Echo-State-Networks, the reference implementation of the recycle-validation echo state network by Racca & Magri (2021). The parallel layout follows Pathak et al. (2018) and Vlachas et al. (2020).
- Pathak, J., Hunt, B., Girvan, M., Lu, Z., & Ott, E. (2018). Model-free prediction of large spatiotemporally chaotic systems from data: a reservoir computing approach. Physical Review Letters, 120, 024102. doi:10.1103/PhysRevLett.120.024102
- Vlachas, P. R., Pathak, J., Hunt, B. R., Sapsis, T. P., Girvan, M., Ott, E., & Koumoutsakos, P. (2020). Backpropagation algorithms and reservoir computing in recurrent neural networks for the forecasting of complex spatiotemporal dynamics. Neural Networks, 126, 191-217. doi:10.1016/j.neunet.2020.02.016
Metadata
Release files for echostatenetwork 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| echostatenetwork-0.2.1.tar.gz | 60.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| echostatenetwork-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 108.0 kB
Release files / echostatenetwork-0.2.1.tar.gz
| Download URL | echostatenetwork-0.2.1.tar.gz |
|---|---|
| Size | 60.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f9f6639026ee3fddf7339524eba2b610c141a51d242f59c3494e9dc69440e87
|
|
BLAKE2b-256 checksum How to use checksums |
158af6ed6206bbc00d408bd577d6a5ea2cbafee245631167a1755e239aff5629
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / echostatenetwork-0.2.1-py3-none-any.whl
| Download URL | echostatenetwork-0.2.1-py3-none-any.whl |
|---|---|
| Size | 47.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e349fa21a9a82f839a387427caf83b45bbfa2c595a40ebea76805457d02bbc0
|
|
BLAKE2b-256 checksum How to use checksums |
872bdd29d8bd570df57860c844a62ab71527cfb9a699125f78e06772e7f366ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency log