Neuron models

PyNN provides a library of neuron models that have been standardized so as to give the same results (within certain limits of numerical accuracy) on different backends. Each model is represented by a “cell type” class.

It is also possible to use simulator-specific neuron models, which we call “native” cell types. Of course, such models will only work with one specific backend simulator.

Note

the development version has some support for specifying cell types using the NineML and NeuroML formats, but this is not yet available in the current release.

Standard cell types

Base class

All standard cell types inherit from the following base class, and have the same methods, as listed below.

class StandardCellType(**parameters)[source]

Bases: StandardModelType, BaseCellType

Base class for standardized cell model classes.

get_schema()

Returns the model schema: i.e. a mapping of parameter names to allowed parameter types.

classmethod get_parameter_names()

Return the names of the parameters of this model.

get_native_names(*names)

Return a list of native parameter names for a given model.

classmethod has_parameter(name)

Does this model have a parameter with the given name?

translate(parameters, copy=True)

Translate standardized model parameters to simulator-specific parameters.

reverse_translate(native_parameters)

Translate simulator-specific model parameters to standardized parameters.

simple_parameters()

Return a list of parameters for which there is a one-to-one correspondance between standard and native parameter values.

scaled_parameters()

Return a list of parameters for which there is a unit change between standard and native parameter values.

computed_parameters()

Return a list of parameters whose values must be computed from more than one other parameter.

describe(template='modeltype_default.txt', engine='default')

Returns a human-readable description of the cell or synapse type.

The output may be customized by specifying a different template togther with an associated template engine (see pyNN.descriptions).

If template is None, then a dictionary containing the template context will be returned.

Simple integrate-and-fire neurons

class IF_cond_exp(**parameters)[source]

Bases: StandardCellType

Leaky integrate and fire model with fixed threshold and exponentially-decaying post-synaptic conductance.

injectable = True
conductance_based = True
default_parameters = {'cm': 1.0, 'e_rev_E': 0.0, 'e_rev_I': -70.0, 'i_offset': 0.0, 'tau_m': 20.0, 'tau_refrac': 0.1, 'tau_syn_E': 5.0, 'tau_syn_I': 5.0, 'v_reset': -65.0, 'v_rest': -65.0, 'v_thresh': -50.0}
recordable = ['spikes', 'v', 'gsyn_exc', 'gsyn_inh']
default_initial_values = {'gsyn_exc': 0.0, 'gsyn_inh': 0.0, 'v': -65.0}
units = {'cm': 'nF', 'e_rev_E': 'mV', 'e_rev_I': 'mV', 'gsyn_exc': 'uS', 'gsyn_inh': 'uS', 'i_offset': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_syn_E': 'ms', 'tau_syn_I': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_thresh': 'mV'}
class IF_cond_alpha(**parameters)[source]

Bases: StandardCellType

Leaky integrate and fire model with fixed threshold and alpha-function- shaped post-synaptic conductance.

injectable = True
conductance_based = True
default_parameters = {'cm': 1.0, 'e_rev_E': 0.0, 'e_rev_I': -70.0, 'i_offset': 0.0, 'tau_m': 20.0, 'tau_refrac': 0.1, 'tau_syn_E': 0.3, 'tau_syn_I': 0.5, 'v_reset': -65.0, 'v_rest': -65.0, 'v_thresh': -50.0}
recordable = ['spikes', 'v', 'gsyn_exc', 'gsyn_inh']
default_initial_values = {'gsyn_exc': 0.0, 'gsyn_inh': 0.0, 'v': -65.0}
units = {'cm': 'nF', 'e_rev_E': 'mV', 'e_rev_I': 'mV', 'gsyn_exc': 'uS', 'gsyn_inh': 'uS', 'i_offset': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_syn_E': 'ms', 'tau_syn_I': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_thresh': 'mV'}
class IF_curr_exp(**parameters)[source]

Bases: StandardCellType

Leaky integrate and fire model with fixed threshold and decaying-exponential post-synaptic current. (Separate synaptic currents for excitatory and inhibitory synapses.

injectable = True
conductance_based = False
default_parameters = {'cm': 1.0, 'i_offset': 0.0, 'tau_m': 20.0, 'tau_refrac': 0.1, 'tau_syn_E': 5.0, 'tau_syn_I': 5.0, 'v_reset': -65.0, 'v_rest': -65.0, 'v_thresh': -50.0}
recordable = ['spikes', 'v']
conductance_based = False
default_initial_values = {'isyn_exc': 0.0, 'isyn_inh': 0.0, 'v': -65.0}
units = {'cm': 'nF', 'i_offset': 'nA', 'isyn_exc': 'nA', 'isyn_inh': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_syn_E': 'ms', 'tau_syn_I': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_thresh': 'mV'}
class IF_curr_alpha(**parameters)[source]

Bases: StandardCellType

Leaky integrate and fire model with fixed threshold and alpha-function- shaped post-synaptic current.

injectable = True
conductance_based = False
default_parameters = {'cm': 1.0, 'i_offset': 0.0, 'tau_m': 20.0, 'tau_refrac': 0.1, 'tau_syn_E': 0.5, 'tau_syn_I': 0.5, 'v_reset': -65.0, 'v_rest': -65.0, 'v_thresh': -50.0}
recordable = ['spikes', 'v']
conductance_based = False
default_initial_values = {'isyn_exc': 0.0, 'isyn_inh': 0.0, 'v': -65.0}
units = {'cm': 'nF', 'i_offset': 'nA', 'isyn_exc': 'nA', 'isyn_inh': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_syn_E': 'ms', 'tau_syn_I': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_thresh': 'mV'}

Integrate-and-fire neurons with adaptation

class Izhikevich(**parameters)[source]

Bases: StandardCellType

Izhikevich spiking model with a quadratic non-linearity according to:

  1. Izhikevich (2003), IEEE transactions on neural networks, 14(6)

    dv/dt = 0.04*v^2 + 5*v + 140 - u + I du/dt = a*(b*v - u)

Synapses are modeled as Dirac delta currents (voltage step), as in the original model

NOTE: name should probably be changed to match standard nomenclature, e.g. QIF_cond_delta_etc_etc, although keeping “Izhikevich” as an alias would be good

injectable = True
conductance_based = False
default_parameters = {'a': 0.02, 'b': 0.2, 'c': -65.0, 'd': 2.0, 'i_offset': 0.0}
recordable = ['spikes', 'v', 'u']
conductance_based = False
voltage_based_synapses = True
default_initial_values = {'u': -14.0, 'v': -70.0}
units = {'a': '/ms', 'b': '/ms', 'c': 'mV', 'd': 'mV/ms', 'i_offset': 'nA', 'u': 'mV/ms', 'v': 'mV'}
class EIF_cond_exp_isfa_ista(**parameters)[source]

Bases: StandardCellType

Exponential integrate and fire neuron with spike triggered and sub-threshold adaptation currents (isfa, ista reps.) according to:

Brette R and Gerstner W (2005) Adaptive Exponential Integrate-and-Fire Model as an Effective Description of Neuronal Activity. J Neurophysiol 94:3637-3642

See also: IF_cond_exp_gsfa_grr, EIF_cond_alpha_isfa_ista

injectable = True
conductance_based = True
default_parameters = {'a': 4.0, 'b': 0.0805, 'cm': 0.281, 'delta_T': 2.0, 'e_rev_E': 0.0, 'e_rev_I': -80.0, 'i_offset': 0.0, 'tau_m': 9.3667, 'tau_refrac': 0.1, 'tau_syn_E': 5.0, 'tau_syn_I': 5.0, 'tau_w': 144.0, 'v_reset': -70.6, 'v_rest': -70.6, 'v_spike': -40.0, 'v_thresh': -50.4}
recordable = ['spikes', 'v', 'w', 'gsyn_exc', 'gsyn_inh']
default_initial_values = {'gsyn_exc': 0.0, 'gsyn_inh': 0.0, 'v': -70.6, 'w': 0.0}
units = {'a': 'nS', 'b': 'nA', 'cm': 'nF', 'delta_T': 'mV', 'e_rev_E': 'mV', 'e_rev_I': 'mV', 'gsyn_exc': 'uS', 'gsyn_inh': 'uS', 'i_offset': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_syn_E': 'ms', 'tau_syn_I': 'ms', 'tau_w': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_spike': 'mV', 'v_thresh': 'mV', 'w': 'nA'}
class EIF_cond_alpha_isfa_ista(**parameters)[source]

Bases: StandardCellType

Exponential integrate and fire neuron with spike triggered and sub-threshold adaptation currents (isfa, ista reps.) according to:

Brette R and Gerstner W (2005) Adaptive Exponential Integrate-and-Fire Model as an Effective Description of Neuronal Activity. J Neurophysiol 94:3637-3642

See also: IF_cond_exp_gsfa_grr, EIF_cond_exp_isfa_ista

injectable = True
conductance_based = True
default_parameters = {'a': 4.0, 'b': 0.0805, 'cm': 0.281, 'delta_T': 2.0, 'e_rev_E': 0.0, 'e_rev_I': -80.0, 'i_offset': 0.0, 'tau_m': 9.3667, 'tau_refrac': 0.1, 'tau_syn_E': 5.0, 'tau_syn_I': 5.0, 'tau_w': 144.0, 'v_reset': -70.6, 'v_rest': -70.6, 'v_spike': -40.0, 'v_thresh': -50.4}
recordable = ['spikes', 'v', 'w', 'gsyn_exc', 'gsyn_inh']
default_initial_values = {'gsyn_exc': 0.0, 'gsyn_inh': 0.0, 'v': -70.6, 'w': 0.0}
units = {'a': 'nS', 'b': 'nA', 'cm': 'nF', 'delta_T': 'mV', 'e_rev_E': 'mV', 'e_rev_I': 'mV', 'gsyn_exc': 'uS', 'gsyn_inh': 'uS', 'i_offset': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_syn_E': 'ms', 'tau_syn_I': 'ms', 'tau_w': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_spike': 'mV', 'v_thresh': 'mV', 'w': 'nA'}
class IF_cond_exp_gsfa_grr(**parameters)[source]

Bases: StandardCellType

Linear leaky integrate and fire model with fixed threshold, decaying-exponential post-synaptic conductance, conductance based spike-frequency adaptation, and a conductance-based relative refractory mechanism.

See: Muller et al (2007) Spike-frequency adapting neural ensembles: Beyond mean-adaptation and renewal theories. Neural Computation 19: 2958-3010.

See also: EIF_cond_alpha_isfa_ista

injectable = True
conductance_based = True
default_parameters = {'cm': 1.0, 'e_rev_E': 0.0, 'e_rev_I': -70.0, 'e_rev_rr': -75.0, 'e_rev_sfa': -75.0, 'i_offset': 0.0, 'q_rr': 3000.0, 'q_sfa': 15.0, 'tau_m': 20.0, 'tau_refrac': 0.1, 'tau_rr': 2.0, 'tau_sfa': 100.0, 'tau_syn_E': 5.0, 'tau_syn_I': 5.0, 'v_reset': -65.0, 'v_rest': -65.0, 'v_thresh': -50.0}
recordable = ['spikes', 'v', 'g_r', 'g_s', 'gsyn_exc', 'gsyn_inh']
default_initial_values = {'g_r': 0.0, 'g_s': 0.0, 'gsyn_exc': 0.0, 'gsyn_inh': 0.0, 'v': -65.0}
units = {'cm': 'nF', 'e_rev_E': 'mV', 'e_rev_I': 'mV', 'e_rev_rr': 'mV', 'e_rev_sfa': 'mV', 'g_r': 'nS', 'g_s': 'nS', 'gsyn_exc': 'uS', 'gsyn_inh': 'uS', 'i_offset': 'nA', 'q_rr': 'nS', 'q_sfa': 'nS', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_rr': 'ms', 'tau_sfa': 'ms', 'tau_syn_E': 'ms', 'tau_syn_I': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_thresh': 'mV'}

Spike sources

class SpikeSourcePoisson(**parameters)[source]

Bases: StandardCellType

Spike source, generating spikes according to a Poisson process.

injectable = False
conductance_based = True
default_parameters = {'duration': 10000000000.0, 'rate': 1.0, 'start': 0.0}
recordable = ['spikes']
injectable = False
receptor_types = ()
units = {'duration': 'ms', 'rate': 'Hz', 'start': 'ms'}
class SpikeSourceArray(**parameters)[source]

Bases: StandardCellType

Spike source generating spikes at the times given in the spike_times array.

injectable = False
conductance_based = True
default_parameters = {'spike_times': Sequence([])}
recordable = ['spikes']
injectable = False
receptor_types = ()
units = {'spike_times': 'ms'}
class SpikeSourceInhGamma(**parameters)[source]

Bases: StandardCellType

Spike source, generating realizations of an inhomogeneous gamma process, employing the thinning method.

See: Muller et al (2007) Spike-frequency adapting neural ensembles: Beyond mean-adaptation and renewal theories. Neural Computation 19: 2958-3010.

injectable = False
conductance_based = True
default_parameters = {'a': Sequence([1.]), 'b': Sequence([1.]), 'duration': 10000000000.0, 'start': 0.0, 'tbins': Sequence([0.])}
recordable = ['spikes']
injectable = False
receptor_types = ()
units = {'a': 'dimensionless', 'b': 's', 'duration': 'ms', 'start': 'ms', 'tbins': 'ms'}

Composed models

class PointNeuron(neuron, **post_synaptic_receptors)[source]

Bases: StandardCellType

injectable = True
conductance_based
property receptor_types

Built-in immutable sequence.

If no argument is given, the constructor returns an empty tuple. If iterable is specified the tuple is initialized from iterable’s items.

If the argument is a tuple, the return value is the same object.

property conductance_based

bool(x) -> bool

Returns True when the argument x is true, False otherwise. The builtins True and False are the only two instances of the class bool. The class bool is a subclass of the class int, and cannot be subclassed.

property recordable

Built-in mutable sequence.

If no argument is given, the constructor creates a new empty list. The argument must be an iterable if specified.

property scale_factors
property units
property default_initial_values

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s

(key, value) pairs

dict(iterable) -> new dictionary initialized as if via:

d = {} for k, v in iterable:

d[k] = v

dict(**kwargs) -> new dictionary initialized with the name=value pairs

in the keyword argument list. For example: dict(one=1, two=2)

simple_parameters()[source]

Return a list of parameters for which there is a one-to-one correspondance between standard and native parameter values.

scaled_parameters()[source]

Return a list of parameters for which there is a unit change between standard and native parameter values.

computed_parameters()[source]

Return a list of parameters whose values must be computed from more than one other parameter.

computed_parameters_include(parameter_names)[source]
class AdExp(**parameters)[source]

Bases: StandardCellTypeComponent

Exponential integrate and fire neuron with spike triggered and sub-threshold adaptation currents according to:

Brette R and Gerstner W (2005) Adaptive Exponential Integrate-and-Fire Model as an Effective Description of Neuronal Activity. J Neurophysiol 94:3637-3642

default_parameters = {'a': 4.0, 'b': 0.0805, 'cm': 0.281, 'delta_T': 2.0, 'i_offset': 0.0, 'tau_m': 9.3667, 'tau_refrac': 0.1, 'tau_w': 144.0, 'v_reset': -70.6, 'v_rest': -70.6, 'v_spike': -40.0, 'v_thresh': -50.4}
recordable = ['spikes', 'v', 'w']
injectable = True
default_initial_values = {'v': -70.6, 'w': 0.0}
units = {'a': 'nS', 'b': 'nA', 'cm': 'nF', 'delta_T': 'mV', 'i_offset': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'tau_w': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_spike': 'mV', 'v_thresh': 'mV', 'w': 'nA'}
class LIF(**parameters)[source]

Bases: StandardCellTypeComponent

Leaky integrate and fire neuron

default_parameters = {'cm': 1.0, 'i_offset': 0.0, 'tau_m': 20.0, 'tau_refrac': 0.1, 'v_reset': -65.0, 'v_rest': -65.0, 'v_thresh': -50.0}
recordable = ['spikes', 'v']
injectable = True
default_initial_values = {'v': -65.0}
units = {'cm': 'nF', 'i_offset': 'nA', 'tau_m': 'ms', 'tau_refrac': 'ms', 'v': 'mV', 'v_reset': 'mV', 'v_rest': 'mV', 'v_thresh': 'mV', 'w': 'nA'}
class CurrExpPostSynapticResponse(**parameters)[source]

Bases: StandardPostSynapticResponse

Post-synaptic response consisting of a step increase in synaptic current followed by exponential decay.

default_parameters = {'locations': 0.5, 'tau_syn': 5.0}
default_initial_values = {'isyn': 0.0}
units = {'isyn': 'nA'}
conductance_based = False
class CondExpPostSynapticResponse(**parameters)[source]

Bases: StandardPostSynapticResponse

Post-synaptic response consisting of a step increase in synaptic conductance followed by exponential decay.

default_parameters = {'e_syn': 0.0, 'locations': 0.5, 'tau_syn': 5.0}
default_initial_values = {'gsyn': 0.0}
units = {'gsyn': 'uS'}
conductance_based = True
class CondAlphaPostSynapticResponse(**parameters)[source]

Bases: StandardPostSynapticResponse

Post-synaptic response consisting of an “alpha-function”-shaped synaptic conductance:

g(t) = t * exp(1 - t/tau_syn)

(see A. Roth and M. C. W. van Rossum (2013) Modeling Synapses.

In: Computational Modeling Methods for Neuroscientists, MIT Press 2013, pp 139-160)

default_parameters = {'e_syn': 0.0, 'locations': 0.5, 'tau_syn': 5.0}
default_initial_values = {'gsyn': 0.0}
units = {'gsyn': 'uS'}
conductance_based = True
class CondBetaPostSynapticResponse(**parameters)[source]

Bases: StandardPostSynapticResponse

Post-synaptic response consisting of an beta-function-shaped synaptic conductance.

default_parameters = {'e_syn': 0.0, 'locations': 0.5, 'tau_decay': 1.7, 'tau_rise': 0.2}
default_initial_values = {'gsyn': 0.0}
units = {'gsyn': 'uS'}
conductance_based = True

Native cell types

Todo

WRITE THIS PART

Utility functions

list_standard_models()[source]

Return a list of all the StandardCellType classes available for this simulator.