BrainPy

BrainPy is a lightweight framework based on the latest Just-In-Time (JIT) compilers (especially Numba). The goal of BrainPy is to provide a unified simulation and analysis framework for neuronal dynamics with the feature of high flexibility and efficiency. BrainPy is flexible because it endows the users with the fully data/logic flow control. BrainPy is efficient because it supports JIT acceleration on CPUs and GPUs.

speed

speed_scaling

Installation

Install BrainPy using conda:

> conda install brainpy -c brainpy

Install BrainPy using pip:

> pip install git+https://github.com/PKU-NIP-Lab/BrainPy
> # or
> pip install git+https://git.openi.org.cn/OpenI/BrainPy
> # or
> pip install -e git://github.com/PKU-NIP-Lab/[email protected]

The following packages need to be installed to use BrainPy:

  • Python >= 3.7
  • NumPy >= 1.13
  • SymPy >= 1.2
  • Numba >= 0.50.0
  • Matplotlib >= 3.0

Neurodynamics simulation

HH Neuron Model

The Hodgkin–Huxley model, or conductance-based model, is a mathematical model that describes how action potentials in neurons are initiated and propagated. It is a set of nonlinear differential equations that approximates the electrical characteristics of excitable cells such as neurons and cardiac myocytes.

AMPA Synapse Model

AMPA synapse model.

Gamma Oscillation Model

Implementation of the paper: Wang, Xiao-Jing, and György Buzsáki. “Gamma oscillation by synaptic inhibition in a hippocampal interneuronal network model.” Journal of neuroscience 16.20 (1996): 6402-6413.

E/I Balance Network

Continuous-attractor Network

Implementation of the paper: Si Wu, Kosuke Hamaguchi, and Shun-ichi Amari. "Dynamics and computation of continuous attractors." Neural computation 20.4 (2008): 994-1025.

More neuron examples please see bpmodels/neurons;

More synapse examples please see bpmodels/synapses;

More network examples please see brainpy-examples/networks and brainpy-examples/from_papers.

Neurodynamics analysis

Phase Plane Analysis

Phase plane analysis of the INa,p+-IK model, where "input" is 50., and "Vn_half" is -45..

Codimension 1 Bifurcation Analysis (1)

Codimension 1 bifurcation analysis of the INa,p+-IK model, in which "input" is varied in [0., 50.].

Codimension 2 Bifurcation Analysis (1)

Codimension 2 bifurcation analysis of a two-variable neuron model: the INa,p+-IK model, in which "input" is varied in [0., 50.], and "Vn_half" is varied in [-50, -40].

Codimension 1 Bifurcation Analysis (2)

Codimension 1 bifurcation analysis of FitzHugh Nagumo model, in which "a" is equal to 0.7, and "Iext" is varied in [0., 1.].

Codimension 2 Bifurcation Analysis (2)

Codimension 2 bifurcation analysis of FitzHugh Nagumo model, in which "a" is varied in [0.5, 1.0], and "Iext" is varied in [0., 1.].

More examples please see brainpy-examples/dynamics_analysis.

GitHub