Networks of spiking neurons: a review of tools and strategies (Brette et al. 2007)

 Download zip file   Auto-launch 
Help downloading and running models
This package provides a series of codes that simulate networks of spiking neurons (excitatory and inhibitory, integrate-and-fire or Hodgkin-Huxley type, current-based or conductance-based synapses; some of them are event-based). The same networks are implemented in different simulators (NEURON, GENESIS, NEST, NCS, CSIM, XPP, SPLIT, MVAspike; there is also a couple of implementations in SciLab and C++). The codes included in this package are benchmark simulations; see the associated review paper (Brette et al. 2007). The main goal is to provide a series of benchmark simulations of networks of spiking neurons, and demonstrate how these are implemented in the different simulators overviewed in the paper. See also details in the enclosed file Appendix2.pdf, which describes these different benchmarks. Some of these benchmarks were based on the Vogels-Abbott model (Vogels TP and Abbott LF 2005).
1 . Vogels TP, Abbott LF (2005) Signal propagation and logic gating in networks of integrate-and-fire neurons. J Neurosci 25:10786-95 [PubMed]
2 . Brette R, Rudolph M, Carnevale T, Hines M, Beeman D, Bower JM, Diesmann M, Morrison A, Goodman PH, Harris FC, Zirpe M, Natschl├Ąger T, Pecevski D, Ermentrout B, Djurfeldt M, Lansner A, Rochel O, Vieville T, Muller E, Davison AP, El Boustani S, Destexhe A (2007) Simulation of networks of spiking neurons: a review of tools and strategies. J Comput Neurosci 23:349-98 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire leaky neuron;
Gap Junctions:
Simulation Environment: NEURON; GENESIS; NEST; C or C++ program; XPP; CSIM; NCS; SPLIT; MVASpike; SciLab; Brian; PyNN; Python;
Model Concept(s): Activity Patterns; Methods;
Implementer(s): Carnevale, Ted [Ted.Carnevale at]; Hines, Michael [Michael.Hines at]; Davison, Andrew [Andrew.Davison at]; Destexhe, Alain [Destexhe at]; Ermentrout, Bard []; Brette R; Bower, James; Beeman, Dave; Diesmann M; Morrison A ; Goodman PH; Harris Jr, FC; Zirpe M ; Natschlager T ; Pecevski D ; Djurfeldt M; Lansner, Anders [ala at]; Rochel O ; Vieville T ; Muller E ; El Boustani, Sami [elboustani at]; Rudolph M ;
// COBARungeKutta
// This Scilab code is an implementation of a benchmark described
// in the following review paper:
// Simulation of networks of spiking neurons: A review of tools and strategies (2006).
// Brette, Rudolph, Carnevale, Hines, Beeman, Bower, Diesmann, Goodman, Harris, Zirpe,
// Natschläger, Pecevski, Ermentrout, Djurfeldt, Lansner, Rochel, Vibert, Alvarez, Muller,
// Davison, El Boustani and Destexhe.
// Journal of Computational Neuroscience
// Benchmark 1: random network of integrate-and-fire neurons with exponential synaptic conductances
// Clock-driven implementation with Runge-Kutta integration
// (second order)
// (no spike time interpolation)
// The simulation takes about 100s on my PC
// ---------------------
// Romain Brette (June 2006)

// Parameters
Ne=3200; // Number of excitatory neurons
Ni=800; // Number of inhibitory neurons
N=Ne+Ni; // Total number of neurons
conProba=0.02; // Connection probability
taum=20; // Membrane time constant (ms)
taue=5; // Excitatory synaptic time constant
taui=10; // Inhibitory synaptic time constant
Vt = 10; // threshold, relative to rest (mV)
Vr = 0; // reset (mV)
Ee = 0+60; // excitatory reversal potential (relative to rest)
Ei = -80+60; // inhibitory reversal potential
dt=0.1; // time step
we=6/10; // excitatory synaptic weight (relative to gl)
wi=67/10; // inhibitory synaptic weight
duration=1000;  // duration of the simulation (ms)
refrac=5; // refractory period
stimulation=-1; // duration of the initial stimulation (<0: no stimulation)

// State variables (membrane potential, excitatory current, inhibitory current)
if stimulation<0
  // No stimulation: the network must already be in an irregular state
M=S; // intermediate states

// Connectivity matrix: 2% connectivity with unitary weights
// This is a sparse matrix (otherwise it is too big and slow)

// Last spike times - for refractory period

// Simulation for 1000 ms
printf("Starting simulation...\n");
allspikes=[]; // Contains spikes (neuron,time)
while t<duration
  // STATE UPDATES (with Runge-Kutta II)
  // Midpoint estimation
  // State update

  // Excitatory stimulation at 1000 Hz
  if t<stimulation

  // Refractory period

  // Excitatory neurons
  spikes=find(S(1:Ne,1)>Vt); // List of neurons that meet threshold condition
  S(:,2)=S(:,2)+we*(sum(W(:,spikes),'c')); // Update the state of targets
  // Inhibitory neurons

  // Reset neurons after spiking
  LS(spikes)=t; // Time of last spike
  S(spikes,1)=Vr; // Reset membrane potential
  // Store spike times
  allspikes=[allspikes;spikes',ones(spikes')*t]; // Each row is (neuron number,spike time)

// Display the computation time

// Display the spikes
clf; // Clear the display

Loading data, please wait...