A reservoir computer and chaotic systems package
Project description
Reservoir computers and Chaotic Systems
This package contains an ode based reservoir computer for learning time series data. The package also includes functions for generating and plotting time series data for three chaotic systems.
Installation
The package is hosted on PyPi and can be installed with pip:
pip install rescomp
Alternatively, users can download the repository and add the location of the repo to their Python path.
Import the package with import rescomp as rc
Chaotic Systems
Currently, we support code to generate time series on three chaotic attractors. Time series can be generated with the orbit
function and plotted in 3D with plot3d
or in 2D with plot2d
. (Plots are displayed in a random color so call the plot function again or supply color(s) to the keyword argument if it looks bad.)
- Thomas' cyclically symmetric attractor
t, U = rc.orbit("thomas", duration=1000, dt=0.1)
fig = rc.plot3d(U)
- The Rossler attractor
t, U = rc.orbit("rossler", duration=100, dt=0.01)
fig = rc.plot3d(U)
- The Lorenz attractor
t, U = rc.orbit("lorenz", duration=100, dt=0.01)
fig = rc.plot3d(U)
Reservoir Computer Class
The package contains two options for reservoir computers: ResComp
and DrivenResComp
. The driven reservoir computers are still in beta stage but can be used for designing control algorithms [1]. Here is an example of learning and predicting Thomas' cyclically symetric attractor:
Train and Test
The train_test_orbit
function returns training and testing sequences on the attractor. The test sequence immidiately follows the training sequence.
tr, Utr, ts, Uts = rc.train_test_orbit("thomas", duration=1000, dt=0.1)
Initialize the default reservoir computer and train on the test data with:
rcomp_default = rc.ResComp()
rcomp_default.train(tr, Utr)
Take the final state of the reservoir nodes and allow it to continue to evolve to predict what happens next.
r0 = rcomp_default.r0
pre = rcomp_default.predict(ts, r0=r0)
fig = rc.plot3d(pre)
This doesn't look much like Thomas' attractor, suggesting that these parameters are not optimal.
Reservoir Hyperparameters
Optimized hyper parameters for each system are included in the package. Initialize a reservoir with optimized hyper parameters as follows:
hyper_parameters = rc.SYSTEMS["thomas"]["rcomp_params"]
rcomp = rc.ResComp(**hyper_parameters)
Train and predict as before.
rcomp.train(tr, Utr)
r0 = rcomp.r0
pre = rcomp.predict(ts, r0=r0)
fig = rc.plot3d(pre)
This prediction looks much more like Thomas' attractor.
Conclusion
Most high level functions are well documented in the source code and should describe the variables clearly. Good luck!
[1] Griffith, A., Pomerance, A., Gauthier, D.. Forecasting Chaotic Systems with Very Low Connectivity Reservoir Computers (2019)
Project details
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
File details
Details for the file rescomp-0.1.0.tar.gz
.
File metadata
- Download URL: rescomp-0.1.0.tar.gz
- Upload date:
- Size: 216.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20201009 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5adb7130046004b97cac6a77165fba9a519c07aa7cec5088b033d0cf4b1ee74 |
|
MD5 | 1f1f2227cbaf016318156ad6e9b22210 |
|
BLAKE2b-256 | 5e142d96ae514446dbf81a6d771682c6335115b5e9dd23fee9e48bdca14ac675 |
File details
Details for the file rescomp-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: rescomp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20201009 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b3e2aa06df3073ec1a0913ef883f17439910461058405df3119102c8ac9fad6 |
|
MD5 | 01b8798bba06a9bf606041ec64e6bd94 |
|
BLAKE2b-256 | 4a02ba38c72e6ca92b7e2e06566b237257a81c9c6db56af3434a04c21346a3e4 |