OpenReservoirComputing: GPU-Accelerated Reservoir Computing in JAX

OpenReservoirComputing: GPU-Accelerated Reservoir Computing in JAX - Published in JOSS (2026)

https://github.com/jan-williams/openreservoircomputing

Science Score: 87.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 7 days ago · JSON representation

Repository

Differentiable, efficient, and extensible reservoir computing models for forecasting, control, and classification, all in JAX

Basic Info
Statistics
  • Stars: 12
  • Watchers: 2
  • Forks: 3
  • Open Issues: 0
  • Releases: 4
Created over 1 year ago · Last pushed 7 days ago
Metadata Files
Readme Contributing License Codeowners

README.md

ORC Logo

ORC: Open Reservoir Computing

CI codecov

ORC is the one-stop-shop for performant reservoir computing in jax. Key high-level features include - Modular design for mixing and matching layers and reservoir drivers (or creating your own!) - Continuous, discrete, serial, and parallel implementations

Installation

The easiest way to get started with ORC is to install from PyPI: bash pip install OpenReservoirComputing

If you're interested in the latest, unreleased version or in contributing, you can install from source. Please see the Contribution guidelines below for more details.

Quick start example

Below is a minimal quick-start example to train your first RC with ORC. It leverages the built-in data library to integrate the Lorenz63 ODE before training and forecasting with ORC.

```python import jax

ORC models often perform much better with float64 enabled

jax.config.update("jaxenablex64", True) import orc

integrate the Lorenz system

U,t = orc.data.lorenz63(tN=100, dt=0.01)

train-test split

testperc = 0.2 splitidx = int((1 - testperc) * U.shape[0]) Utrain = U[:splitidx, :] ttrain = t[:splitidx] Utest = U[splitidx:, :] ttest = t[split_idx:]

Initialize and train the ESN

esn = orc.forecaster.ESNForecaster(datadim=3, resdim=400) esn, R = orc.forecaster.trainRCForecaster(esn, Utrain)

Forecast!

Upred = esn.forecast(fcastlen=Utest.shape[0], resstate=R[-1]) # feed in the last reservoir state seen in training ```

To visualize the forecast and compare it to the test data, we can use orc.utils.visualization: python orc.utils.visualization.plot_time_series( [U_test, U_pred], (t_test - t_test[0]), # start time at 0 state_var_names=["$u_1$", "$u_2$", "$u_3$"], time_series_labels=["True", "Predicted"], line_formats=["-", "r--"], x_label= r"$t$", ) plt.show()

ORC Logo

jit, vmap, grad...

ORC models are built on top of Equinox, and as a result we strongly recommend the use of Equinox transforms eqx.filter_{jit, vmap, grad} over jax.{jit, vmap, grad}. For more details, please check out the JAX JIT Compatibility example notebook.

Contribution guidelines

First off, thanks for helping out! We appreciate your willingness to contribute! To get started, clone the repo and install the developer dependencies of ORC.

bash git clone https://github.com/Jan-Williams/OpenReservoirComputing.git

From the root directory of the repository, create an editable install for your given hardware.

CPU: bash pip install -e ".[dev]"

GPU: bash pip install -e ".[dev, gpu]"

The main branch is protected from direct changes. If you would like to make a change please create a new branch and work on your new feature. After you are satisfied with your changes, please run our testing suite to ensure all is working well. We also expect new tests to be written for all changes if additions are made. The tests can be simply run from the root directory of the repository with bash pytest Followed by a formatting check bash ruff check and a type annotation check bash ty check

Finally, submit your changes as a pull request! When you submit the PR, please request reviews from both @dtretiak and @Jan-Williams, we will try to get back to you as soon as possible. When you submit the PR, the above tests will automatically be run on your proposed changes through Github Actions, so it is best to get everything tested first before submitting!

Owner

  • Login: Jan-Williams
  • Kind: user

JOSS Publication

OpenReservoirComputing: GPU-Accelerated Reservoir Computing in JAX
Published
July 06, 2026
Volume 11, Issue 123, Page 10486
Authors
Jan P. Williams ORCID
Department of Mechanical Engineering, University of Washington, USA
Dima Tretiak ORCID
Department of Mechanical Engineering, University of Washington, USA
Steven L. Brunton ORCID
Department of Mechanical Engineering, University of Washington, USA
J. Nathan Kutz ORCID
Department of Applied Mathematics, University of Washington, USA, Department of Electrical and Computer Engineering, University of Washington, USA, Autodesk Research, London, UK
Krithika Manohar ORCID
Department of Mechanical Engineering, University of Washington, USA
Editor
Neea Rusch ORCID
Tags
JAX reservoir computing echo state networks time-series forecasting chaotic systems

GitHub Events

Total
  • Release event: 1
  • Delete event: 14
  • Pull request event: 5
  • Issues event: 1
  • Watch event: 3
  • Issue comment event: 3
  • Push event: 44
  • Create event: 11
Last Year
  • Release event: 1
  • Delete event: 14
  • Pull request event: 5
  • Issues event: 1
  • Watch event: 3
  • Issue comment event: 3
  • Push event: 44
  • Create event: 11

Issues and Pull Requests

Last synced: about 2 months ago

All Time
  • Total issues: 0
  • Total pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: 10 minutes
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.67
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: 10 minutes
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.67
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • Jan-Williams (3)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 43 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 5
  • Total maintainers: 1
pypi.org: openreservoircomputing

GPU accelerated implementations of common RC architectures

  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 43 Last month
Rankings
Dependent packages count: 7.9%
Average: 26.2%
Dependent repos count: 44.5%
Maintainers (1)
Last synced: 19 days ago