GithubHelp home page GithubHelp logo

cnm's Introduction

CNM

CNM: Cluster-based network modeling

Description

CNM is a Python package for modeling of dynamical systems.

Cluster-based network modeling is a data-driven methodology for modeling nonlinear dynamical systems. The approach is developed within the network science and statistical physics frameworks. Cluster-based network modelling yields a deterministic stochastic gray-box model with adaptive coarse-graining resolution.

This method constitutes a novel automatable approach in data-driven nonlinear dynamical modeling and online control, opening up examples in cardiology, seismology, turbulence, etc. Details of the method are presented in Fernex ("Cluster-based network modeling: toward automated robust modeling of complex dynamical systems"). The model is accurate and inherently robust, as the state will never leave the network, thus allowing accurate long-term predictions.

These various features are demonstrated on the provided examples, that include the Lorenz attractor, the Kolmogorov flow, and a high-dimensional actuated turbulent boundary layer. The different examples are specially selected to highlight the various capabilities of the method.

Installation and dependencies

Downloading the source

The official distribution is on GitHub, and you can clone the repository using

git clone https://github.com/fernexda/cnm.git

Dependencies

CNM requires the packages numpy, matplotlib, sklearn and tqdm. The examples require additionally scipy. The code is tested for Python 3 and not compatibility for Python 2 is guaranteed. The dependencies can be installed using

pip install -r requirements.txt

Getting started

The examples are the best place to start. They are located in examples/ and include:

  1. The Lorenz system (lorenz.py)
  2. The Rössler attractor (roessler.py)
  3. An electrocardiogram signal (ecg.py)
  4. The dissipation energy of the Kolmogorov flow (kolmogorov.py)
  5. An actuated turbulent boundary layer (boundary_layer.py)

The necessary data for these systems is either created directly by integrating the ODE (for the Lorenz and Rössler systems), or read from example/data/.

To run CNM on the Lorenz system, simply go into the examples/ folder and run

python lorenz.py

This will create the data, run CNM and generate the relevant plots.

Getting help

If you encounter any issues using CNM, please use the repository's issue tracker. Consider the following steps before and when opening a new issue:

  1. Have you searched for similar issues that may have been already reported? The issue tracker has a filter function to search for keywords in open issues.
  2. Click on the green New issue button in the upper right corner, and describe your problem as detailed as possible. The issue should state what the problem is, what the expected behavior should be, and, maybe, suggest a solution. Note that you can also attach files or images to the issue.
  3. Select a suitable label from the drop-down menu called Labels.
  4. Click on the green Submit new issue button and wait for a reply.

Reference

TODO: add citeable reference

License

CNM is GPL-3.0-licensed; refer to the LICENSE file for more information.

cnm's People

Contributors

fernexda avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.