Skip to main content

BrainPy: Brain Dynamics Programming in Python

Project description

Header image of BrainPy - brain dynamics programming in Python.

Supported Python Version LICENSE Documentation PyPI version Build Status

:clap::clap: CHEERS: A new version of BrainPy (>=2.0.0, long term support) has been released! :clap::clap:

Why use BrainPy

BrainPy is an integrative framework for computational neuroscience and brain-inspired computation based on the Just-In-Time (JIT) compilation (built on top of JAX). Core functions provided in BrainPy includes

  • JIT compilation for class objects.
  • Numerical solvers for ODEs, SDEs, and others.
  • Dynamics simulation tools for various brain objects, like neurons, synapses, networks, soma, dendrites, channels, and even more.
  • Dynamics analysis tools for differential equations, including phase plane analysis and bifurcation analysis, and linearization analysis.
  • Seamless integration with deep learning models.
  • And more ......

BrainPy is designed to effectively satisfy your basic requirements:

  • Pythonic: BrainPy is based on Python language and has a Pythonic coding style.
  • Flexible and transparent: BrainPy endows the users with full data/logic flow control. Users can code any logic they want with BrainPy.
  • Extensible: BrainPy allows users to extend new functionality just based on Python code. Almost every part of the BrainPy system can be extended to be customized.
  • Efficient: All codes in BrainPy can be just-in-time compiled (based on JAX) to run on CPU, GPU, or TPU devices, thus guaranteeing its running efficiency.

How to use BrainPy

Step 1: installation

BrainPy is based on Python (>=3.6), and the following packages are required to be installed to use BrainPy: numpy >= 1.15, matplotlib >= 3.4, and jax >= 0.2.10 (how to install jax?)

BrainPy can be installed on Linux (Ubuntu 16.04 or later), macOS (10.12 or later), and Windows platforms. Use the following instructions to install brainpy:

pip install brain-py -U

For the full installation details please see documentation: Quickstart/Installation

Step 2: useful links

Step 3: inspirational examples

Here we list several examples of BrainPy. For more detailed examples and tutorials please see BrainModels or BrainPy-Examples.

Neuron models

See brainmodels.neurons to find more.

Synapse models

See brainmodels.synapses to find more.

Network models

Dynamics training

Low-dimensional dynamics analysis

High-dimensional dynamics analysis

Citing BrainPy

A nascent version of BrainPy was described in a paper that appeared at ICONIP 2021. We're currently working on covering BrainPy's ideas and capabilities in a more comprehensive and up-to-date paper.

If you use BrainPy for your published research, you can cite BrainPy with:

Wang, C., Jiang, Y., Liu, X., Lin, X., Zou, X., Ji, Z., & Wu, S. (2021, December). A Just-In-Time Compilation Approach for Neural Dynamics Simulation. In International Conference on Neural Information Processing (pp. 15-26). Springer, Cham.

or,

@inproceedings{wang2021just,
  title={A Just-In-Time Compilation Approach for Neural Dynamics Simulation},
  author={Wang, Chaoming and Jiang, Yingqian and Liu, Xinyu and Lin, Xiaohan and Zou, Xiaolong and Ji, Zilong and Wu, Si},
  booktitle={International Conference on Neural Information Processing},
  pages={15--26},
  year={2021},
  organization={Springer}
}

BrainPy 1.x

If you are using brainpy==1.x, you can find documentation, examples, and models through the following links:

The changes from brainpy==1.x to brainpy==2.x can be inspected through API documentation: release notes.

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

brain-py-2.0.1.tar.gz (623.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page