General Information

Basic features of PyRates:

  • Frontend:
    • implement models via a frontend of your choice: YAML or Python

    • create basic mathematical building blocks (i.e. differential equations and algebraic equations) and use them to define a networks of nodes connected by edges

    • create hierarchical networks by connecting networks via edges

  • Backend:
    • choose from a number of different backends

    • NumPy backend for dynamical systems modeling on CPUs via Python

    • Tensorflow and PyTorch backends for parameter optimization via gradient descent and dynamical systems modeling on GPUs

    • Julia backend for dynamical system modeling in Julia, via tools such as DifferentialEquations.jl

    • Fortran backend for dynamical systems modeling via Fortran 90 and interfacing the parameter continuation software Auto-07p

  • Other features:
    • perform quick numerical simulations via a single function call

    • choose between different numerical solvers

    • perform parameter sweeps over multiple parameters at once

    • generate backend-specific run functions that evaluate the vector field of your dynamical system

    • Implement dynamic edge equations that include scalar dealys or delay distributions (delay distributions are automatically translated into gamma-kernel convolutions)

    • choose from various pre-implemented dynamical systems that can be directly used for simulations or integrated into custom models


If you use PyRates, please cite:

Gast, R., Knösche, T. R. & Kennedy, A. (2023). PyRates - A Code-Generation Tool for Dynamical Systems Modeling. arXiv:2302.03763.

Gast, R., Rose, D., Salomon, C., Möller, H. E., Weiskopf, N., & Knösche, T. R. (2019). PyRates-A Python framework for rate-based neural simulations. PloS one, 14(12), e0225900.


If you have questions, problems or suggestions regarding PyRates, please contact Richard Gast.


PyRates is an open-source project that everyone is welcome to contribute to. Check out our GitHub repository for all the source code, open issues etc. and send us a pull request, if you would like to contribute something to our software.