Skip to content

A lightweight Python framework combining Reservoir Computing with Unscented Kalman Filtering (RCUKF) for data-driven state estimation in nonlinear and chaotic systems.

Notifications You must be signed in to change notification settings

Opt-n-Est-Lab/RCUKF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RCUKF: Reservoir Computing with Unscented Kalman Filtering

License Python

RCUKF is a hybrid framework that combines Reservoir Computing (RC) and the Unscented Kalman Filter (UKF) for robust, data-driven state estimation in nonlinear dynamical systems. This approach avoids explicit modeling of system dynamics and is especially powerful for chaotic and partially observed systems.


📘 Features

  • ✅ Model-free learning using Reservoir Computing (Echo State Network)
  • ✅ Filtering with Unscented Kalman Filter
  • ✅ No backpropagation: fast training using ridge regression
  • ✅ Supports chaotic systems like Lorenz, Rössler, Mackey-Glass
  • ✅ Plug-and-play modular design

🗂️ Project Structure

RCUKF/
├── benchmarks/ # RC vs RCUKF RMSE comparison and plots
├── data_gen/ # Noisy synthetic data generators
├── demos/ # End-to-end implementations of RCUKF
├── rcukfpy/ # Core implementation (RC, UKF, RCUKF)
├── utils/ # RMSE calculator and helper utils
├── LICENSE
└── README.md


🚀 Getting Started

1. Clone the repository

git clone https://github.com/kmranrg/rcukf.git
cd rcukf

2. Install dependencies

pip install numpy matplotlib

🔬 Usage

🔁 Run a benchmark

Compare RC-only vs RC+UKF on the Lorenz system:

python -m benchmarks.RC_vs_RCplusUKF_Lorenz

Other systems:

python -m benchmarks.RC_vs_RCplusUKF_Rossler
python -m benchmarks.RC_vs_RCplusUKF_MackeyGlass

🧪 Run an end-to-end demo

python demos.RCplusUKF_LorenzImplementation
python demos.RCplusUKF_MackeyGlassImplementation
python demos.RCplusUKF_RosslerImplementation

🧠 How It Works

  • ReservoirComputer: Trains a readout model to approximate system dynamics.
  • UnscentedKalmanFilter: Uses sigma points to filter noisy observations.
  • RC_UKF: Wraps both modules to predict system state using data + measurements.

📁 Module Overview

Module Description
rcukfpy/RC.py Echo State Network (Reservoir Computer)
rcukfpy/UKF.py UKF implementation for nonlinear state estimation
rcukfpy/RCplusUKF.py Combines RC and UKF into a hybrid state estimator
data_gen/*.py Noisy time series generators (Lorenz, Rossler, etc.)
utils/compute_error.py RMSE computation per dimension
benchmarks/*.py Compare RMSE of RC-only vs RC+UKF
demos/*.py Full pipeline demos (training + filtering + plots)

🤝 Contributing

Pull requests are welcome! Please open an issue first to discuss any major changes or improvements.

Developed with ❤️ by Kumar Anurag Website | LinkedIn

About

A lightweight Python framework combining Reservoir Computing with Unscented Kalman Filtering (RCUKF) for data-driven state estimation in nonlinear and chaotic systems.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages