GithubHelp home page GithubHelp logo

nico-curti / sysdyn Goto Github PK

View Code? Open in Web Editor NEW
7.0 0.0 1.0 2.06 MB

System Dynamics script utilities

Home Page: https://nico-curti.github.io/SysDyn

License: GNU General Public License v3.0

C++ 51.44% Python 40.72% CMake 6.38% PowerShell 0.45% Shell 0.28% Cython 0.72%
system-dynamics homework examples biophysics systems-biology

sysdyn's Introduction

Authors Project Build Status Latest Version License
N. Curti SysDyn Linux/MacOs : Travis
Windows : appveyor
version License: GPL v3

Systems Dynamics Functions and Examples

The project is developed as tutorial for the courses Complex System, Numerical Methods and Physical Methods of Biology at the University of Bologna.

Several methods about Systems Dynamics research are shown from the simplest integration schemes, to a series of more advanced topics. For the major part of codes you can find both the Python and C++ versions: the simplest algorithms are written in Python, while the most computational expensive ones are written (only) in C++.

Documentation

  • Metropolis-Hastings Algorithm: Simple example of Monte Carlo algorithm for the computation of $\pi$. Starting from a naive implementation, we show a series of incremental refinements of the Python code, for the computational performances improvement. At the end of the example you can find also a (faster) C++ implementation of the algorithm based on multi-threading computation (ref. here).

  • Rate Equations: Introduction about mathematical background of kinetic rate equations, starting from the zero-order kinetic to the more advanced conversion systems. For each example, the Python code is provided with a description of the fundamental steps. At the end of each sub-section, we show the corresponding C++ implementation (a putative implementation!) (ref. zero-order & first-order)

  • Michaelis-Menten: Description of the Michaelis-Menten equations system. In this example we introduce the Runge-Kutta integration scheme, providing a possible implementation of it in the C++ version of the code (ref. here). The RK method will be used in next examples, showing also a Python implementation of it.

  • Lotka Volterra: Description and implementation of the Lotka Volterra model. In this example we introduce the basis of the Symbolic Computation for the stability analysis of the Lotka-Volterra system. For this example no C++ implementation is provided, since a simple edit of the Michaelis-Menten code can lead to the Lotka-Volterra integration.

  • Chemical Master Equation: Description of the mathematical background of Chemical Master Equation. In this example we introduce the Gillespie Algorithm for the integration of CME models, TODO

  • Brusselator: Description of the Brusselator kinetic system. In this example we combine together all the techniques that we have seen up to now, performing a complete analysis of the system for both the deterministic and stochastic version of the model. At the end of the example, the extension to 2D (with the integration of diffusion coefficients) is showed, leading to the creation of Turing patterns.

Installation

C++ version

To build the C++ scripts:

git clone https://github.com/Nico-Curti/SysDyn.git
cd SysDyn
mkdir build
cd build
cmake ..
cmake --build . --target install --config Release

NOTE: make sure to have a c++ compiler which supports the minimum standard required! If some troubles occur, you can follow the instruction at intrphysycom page to configure your machine; for issues related to softwares installation, you can use the scripts in ShUt if you are looking for no root users solutions.

Python version

To use the python scripts install the prerequisites:

python -m pip install -r prerequisites.txt

Contributions

Any contribution is more than welcome. Just fill an issue or a pull request and I will check ASAP!

Authors

License

The SysDyn package is licensed under the GPLv3 License.

Citation

If you have found SysDyn helpful in your research, please consider citing the project repository

@misc{SysDyn,
  author = {Curti, Nico},
  title = {SysDyn - System Dynamics functions and examples},
  year = {2021},
  publisher = {GitHub},
  howpublished = {\url{https://github.com/Nico-Curti/SysDyn}},
}

sysdyn's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

sofiraponi

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.