brainpy-largescale

brainpy-largescale depends on brainpy


Keywords
brainpy, largescale, computational, neuroscience, brain-inspired, computation, dynamical, systems, differential, equations, brain, modeling, dynamics, programming
License
Apache-2.0
Install
pip install brainpy-largescale==0.1.2

Documentation

brainpy-largescale

Run BrainPy in multiple processes.

brainpy-largescale depends on BrainPy and brainpy-lib, use the following instructions to install brainpy package.

Install

Only support Linux

pip install brainpy-largescale

Import

import brainpy as bp
import bpl

Set platform

bpl.set_platform('cpu')

only support cpu.

Create population

Use Leaky Integrate-and-Fire (LIF)

a = bpl.neurons.LIF(300, V_rest=-60., V_th=-50., V_reset=-60., tau=20., tau_ref=5.)
b = bpl.neurons.LIF(100, V_rest=-60., V_th=-50., V_reset=-60., tau=20., tau_ref=5.)

Create synapse

d = bpl.synapses.Exponential(a, b, bp.conn.FixedProb(0.4, seed=123), g_max=10, tau=5., delay_step=1)

Construct network

net = bpl.Network(a, b, d)
net.build()

Add input

add current input

inputs = [bpl.device.Input(a, 20), bpl.device.Input(b, 10)]

Add spike monitor

monitor_spike = bpl.device.Monitor([a, b], bpl.device.MonitorKey.spike)

Add volt monitor

monitor_volt = bpl.device.Monitor([b], bpl.device.MonitorKey.volt)
monitors = [monitor_spike, monitor_volt]

Add spike and volt callback

def spike(a: List[Tuple[int, float]]):
  if a:
    print(a)


def volt(a: List[Tuple[int, float, float]]):
  # print(a)
  pass

Run

runner = bpl.runner.DSRunner(
  net,
  monitors=monitors,
  inputs=inputs,
  jit=False,
  spike_callback=spike,
  volt_callback=volt,
)
runner.run(10.)

Visualization

import matplotlib.pyplot as plt

if 'spike' in runner.mon:
  bp.visualize.raster_plot(runner.mon.ts, runner.mon['spike'], show=True)

License

Apache License, Version 2.0