OpenPRC: A Unified Open-Source Framework for Physics-to-Task Evaluation in Physical Reservoir Computing
Organizations: Department of Mechanical Engineering, Virginia Tech, Blacksburg, VA, USA · Department of Philosophy, Virginia Tech, Blacksburg, VA, USA · Department of Computer Science, Virginia Tech, Blacksburg, VA, USA
Abstract
Physical Reservoir Computing (PRC) leverages the intrinsic nonlinear dynamics of physical substrates, mechanical, optical, spintronic, and beyond, as fixed computational reservoirs, offering a compelling paradigm for energy-efficient and embodied machine learning. However, the practical workflow for developing and evaluating PRC systems remains fragmented: existing tools typically address only isolated parts of the pipeline, such as substrate-specific simulation, digital reservoir benchmarking, or readout training. What is missing is a unified framework that can represent both high-fidelity simulated trajectories and real experimental measurements through the same data interface, enabling reproducible evaluation, analysis, and physics-aware optimization across substrates and data sources. We present OpenPRC, an open-source Python framework that fills this gap through a schema-driven physics-to-task pipeline built around five modules: a GPU-accelerated hybrid RK4-PBD physics engine (demlat), a video-based experimental ingestion layer (openprc.vision), a modular learning layer (reservoir), information-theoretic analysis and benchmarking tools (analysis), and physics-aware optimization (optimize). A universal HDF5 schema enforces reproducibility and interoperability, allowing GPU-simulated and experimentally acquired trajectories to enter the same downstream workflow without modification. Demonstrated capabilities include simulations of Origami tessellations, video-based trajectory extraction from a physical reservoir, and a common interface for standardized PRC benchmarking, correlation diagnostics, and capacity analysis. The longer-term vision is to serve as a standardizing layer for the PRC community, compatible with external physics engines including PyBullet, PyElastica, and MERLIN.
Figures & tables
| Tool | Primary scope | Physics sim. | Experimental data | RC analysis | Optimization |
|---|---|---|---|---|---|
| MERLIN/MERLIN2 | Non-rigid origami mechanics | limited | |||
| PyElastica | Cosserat rod simulation | limited | |||
| ReservoirPy | Digital RC benchmarking | limited | |||
| ORC | Digital RC in JAX | limited | |||
| PRCpy | PRC-oriented data workflow | ||||
| OpenPRC | Unified physical PRC workflow |
| File | Producer | Consumers | Key content |
| geometry.h5 | User / optimize | demlat | Node coordinates , masses , bar connectivity , hinge connectivity , stiffness, rest lengths, damping |
| signals.h5 | User / optimize | demlat | Named time series or ; signal timestep |
| config.json | User / optimize | demlat | Simulation duration, integrator settings, actuator wiring, export options |
| simulation.h5 | demlat / openprc.vision | reservoir , analysis | Node positions , velocities, bar strains , hinge angles , energies |
| readout.h5 | reservoir | analysis , optimize | Readout weights , predictions , NMSE, NRMSE |
| metrics.h5 | analysis | optimize , User | Memory-capacity profiles, IPC matrix, PCA variance, kernel rank |
Reservoir Computing
Reservoir computing uses recurrent dynamical systems to transform temporal inputs into features that support efficient learning with simple readouts.
See all 107 papers