Discrete event simulation in the NEURON environment (Hines and Carnevale 2004)

 Download zip file 
Help downloading and running models
A short introduction to how "integrate and fire" cells are implemented in NEURON. Network simulations that use only artificial spiking cells are extremely efficient, with runtimes proportional to the total number of synaptic inputs received and independent of the number of cells or problem time.
1 . Hines ML, Carnevale NT (2004) Discrete event simulation in the NEURON environment. Neurocomputing 58-60:1117-1122
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s):
Gap Junctions:
Simulation Environment: NEURON;
Model Concept(s): Tutorial/Teaching; Methods;
Implementer(s): Hines, Michael [Michael.Hines at Yale.edu];
Hines, M.L. and Carnevale, N.T. Discrete event simulation in the
NEURON environment Neurocomputing 58-60:1117-1122, 2004.

The response of many types of integrate and fire cells to synaptic input
can be computed analytically and their threshold crossing either
computed analytically or approximated to high accuracy via Newton
approximation.  The NEURON simulation environment simulates networks of
such artificial spiking neurons using discrete event simulation
techniques in which computations are performed only when events are
received.  Thus computation time is proportional only to the number of
events delivered and is independent of the number of cells or problem

The first two panels of figure 1 are reproduced using the
fixed step method.

When the variable time step method is
selected the third panel looks quite different from the figure
after NEURON version 5.7.71 due to an improvment in NetStim.
The old version of NetStim sent a self-event
to itself .1 ms after each spike event so that it could reset a spike
variable used for plotting. The new version is more efficient
since it no longer sends this
extra event to itself and no longer manages the spike variable.
(Spike times are best recorded using NetCon.record(Vector).)
Therefore, even in the original figure the apparently
abrupt increases in IntFire1[0].M are not discontinuous but merely
the value of IntFire1[0].M after a 0.1 ms interval.
One can reproduce the third panel by creating another
IntFire1 cell, connecting NetCon's to it from the three NetStim's
and setting 0.1 ms delays for them. This will force the extra
returns from fadvance().

Note that fadvance() returns before the delivery of an event and,
for POINT_PROCESS models, after the delivery of an event. However
ARTIFICIAL_CELL models do not cause re-initialization
of the Cvode integrator when an event is delivered to them and therefore
fadvance() returns before but not after the delivery of the event.
Therefore if one wishes to capture the 0 interval discontinuities, one can
change ARTIFICIAL_CELL to POINT_PROCESS but at the cost of purposeless
Cvode initialization.

Loading data, please wait...