From 68868952922df6b86b41c5308f36d44b8e8dcaa0 Mon Sep 17 00:00:00 2001 From: Jessica Mitchell Date: Wed, 24 Oct 2018 11:45:44 +0200 Subject: [PATCH 1/5] refactor comment blocks --- models/poisson_generator.h | 87 ++++---- models/pp_pop_psc_delta.h | 169 +++++++-------- models/pp_psc_delta.h | 272 ++++++++++++------------ models/ppd_sup_generator.h | 57 +++-- models/pulsepacket_generator.h | 38 ++-- models/quantal_stp_connection.h | 108 +++++----- models/rate_connection_delayed.h | 27 +-- models/rate_connection_instantaneous.h | 29 +-- models/rate_neuron_ipn.h | 1 - models/rate_neuron_opn.h | 1 - models/rate_transformer_node.h | 2 +- models/siegert_neuron.h | 82 ++++---- models/sigmoid_rate.h | 57 ++--- models/sigmoid_rate_gg_1998.h | 59 +++--- models/sinusoidal_gamma_generator.h | 75 +++---- models/sinusoidal_poisson_generator.h | 74 +++---- models/spike_detector.h | 8 +- models/spike_dilutor.h | 16 +- models/spike_generator.h | 280 ++++++++++++------------- models/spin_detector.h | 9 +- models/static_connection.h | 41 ++-- models/static_connection_hom_w.h | 61 +++--- models/stdp_connection.h | 104 ++++----- models/stdp_connection_facetshw_hom.h | 201 +++++++++--------- models/stdp_connection_hom.h | 100 ++++----- models/stdp_dopa_connection.h | 136 ++++++------ models/stdp_pl_connection_hom.h | 64 +++--- models/stdp_triplet_connection.h | 121 +++++------ models/step_current_generator.h | 88 ++++---- models/tanh_rate.h | 40 ++-- models/threshold_lin_rate.h | 40 ++-- models/tsodyks2_connection.h | 100 +++++---- models/tsodyks_connection.h | 151 +++++++------ models/tsodyks_connection_hom.h | 167 ++++++++------- models/vogels_sprekeler_connection.h | 69 +++--- models/volume_transmitter.h | 20 +- models/weight_recorder.h | 19 +- 37 files changed, 1455 insertions(+), 1518 deletions(-) diff --git a/models/poisson_generator.h b/models/poisson_generator.h index 5114710954..b0d4190f00 100644 --- a/models/poisson_generator.h +++ b/models/poisson_generator.h @@ -40,66 +40,63 @@ namespace nest { -/*! Class poisson_generator simulates a large population - of randomly (Poisson) firing neurons. It replaces the old - neuron-intrinsic shot-noise generator -*/ - /** @BeginDocumentation Name: poisson_generator - simulate neuron firing with Poisson processes statistics. Description: - The poisson_generator simulates a neuron that is firing with Poisson - statistics, i.e. exponentially distributed interspike intervals. It will - generate a _unique_ spike train for each of it's targets. If you do not want - this behavior and need the same spike train for all targets, you have to use a - parrot neuron inbetween the poisson generator and the targets. + +The poisson_generator simulates a neuron that is firing with Poisson +statistics, i.e. exponentially distributed interspike intervals. It will +generate a _unique_ spike train for each of it's targets. If you do not want +this behavior and need the same spike train for all targets, you have to use a +parrot neuron inbetween the poisson generator and the targets. Parameters: - The following parameters appear in the element's status dictionary: - rate double - mean firing rate in Hz - origin double - Time origin for device timer in ms - start double - begin of device application with resp. to origin in ms - stop double - end of device application with resp. to origin in ms +The following parameters appear in the element's status dictionary: + +rate double - mean firing rate in Hz +origin double - Time origin for device timer in ms +start double - begin of device application with resp. to origin in ms +stop double - end of device application with resp. to origin in ms Sends: SpikeEvent Remarks: - A Poisson generator may, especially at high rates, emit more than one - spike during a single time step. If this happens, the generator does - not actually send out n spikes. Instead, it emits a single spike with - n-fold synaptic weight for the sake of efficiency. - - The design decision to implement the Poisson generator as a device - which sends spikes to all connected nodes on every time step and then - discards the spikes that should not have happened generating random - numbers at the recipient side via an event hook is twofold. - - On one hand, it leads to the saturation of the messaging network with - an enormous amount of spikes, most of which will never get delivered - and should not have been generated in the first place. - - On the other hand, a proper implementation of the Poisson generator - needs to provide two basic features: (a) generated spike trains - should be IID processes w.r.t. target neurons to which the generator - is connected and (b) as long as virtual_num_proc is constant, each - neuron should receive an identical Poisson spike train in order to - guarantee reproducibility of the simulations across varying machine - numbers. - - Therefore, first, as Network::get_network().send sends spikes to all the - recipients, differentiation has to happen in the hook, second, the - hook can use the RNG from the thread where the recipient neuron sits, - which explains the current design of the generator. For details, - refer to: - - http://ken.brainworks.uni-freiburg.de/cgi-bin/mailman/private/nest_developer/2011-January/002977.html + +A Poisson generator may, especially at high rates, emit more than one +spike during a single time step. If this happens, the generator does +not actually send out n spikes. Instead, it emits a single spike with +n-fold synaptic weight for the sake of efficiency. + +The design decision to implement the Poisson generator as a device +which sends spikes to all connected nodes on every time step and then +discards the spikes that should not have happened generating random +numbers at the recipient side via an event hook is twofold. + +On one hand, it leads to the saturation of the messaging network with +an enormous amount of spikes, most of which will never get delivered +and should not have been generated in the first place. + +On the other hand, a proper implementation of the Poisson generator +needs to provide two basic features: (a) generated spike trains +should be IID processes w.r.t. target neurons to which the generator +is connected and (b) as long as virtual_num_proc is constant, each +neuron should receive an identical Poisson spike train in order to +guarantee reproducibility of the simulations across varying machine +numbers. + +Therefore, first, as Network::get_network().send sends spikes to all the +recipients, differentiation has to happen in the hook, second, the +hook can use the RNG from the thread where the recipient neuron sits, +which explains the current design of the generator. For details, +refer to: + +http://ken.brainworks.uni-freiburg.de/cgi-bin/mailman/private/nest_developer/2011-January/002977.html SeeAlso: poisson_generator_ps, Device, parrot_neuron */ - class poisson_generator : public DeviceNode { diff --git a/models/pp_pop_psc_delta.h b/models/pp_pop_psc_delta.h index db62b8f630..c80b3652f6 100644 --- a/models/pp_pop_psc_delta.h +++ b/models/pp_pop_psc_delta.h @@ -34,129 +34,120 @@ #include "ring_buffer.h" #include "universal_data_logger.h" - namespace nest { - /** @BeginDocumentation - Name: pp_pop_psc_delta - Population of point process neurons with leaky - integration of delta-shaped PSCs. +Name: pp_pop_psc_delta - Population of point process neurons with leaky + integration of delta-shaped PSCs. - Description: +Description: - pp_pop_psc_delta is an effective model of a population of neurons. The - N component neurons are assumed to be spike response models with escape - noise, also known as generalized linear models. We follow closely the - nomenclature of [1]. The component neurons are a special case of - pp_psc_delta (with purely exponential rate function, no reset and no - random dead_time). All neurons in the population share the inputs that it - receives, and the output is the pooled spike train. +pp_pop_psc_delta is an effective model of a population of neurons. The +N component neurons are assumed to be spike response models with escape +noise, also known as generalized linear models. We follow closely the +nomenclature of [1]. The component neurons are a special case of +pp_psc_delta (with purely exponential rate function, no reset and no +random dead_time). All neurons in the population share the inputs that it +receives, and the output is the pooled spike train. - The instantaneous firing rate of the N component neurons is defined as +The instantaneous firing rate of the N component neurons is defined as - rate(t) = rho_0 * exp( (h(t) - eta(t))/delta_u ), + rate(t) = rho_0 * exp( (h(t) - eta(t))/delta_u ), - where h(t) is the input potential (synaptic delta currents convolved with - an exponential kernel with time constant tau_m), eta(t) models the effect - of refractoriness and adaptation (the neuron's own spike train convolved with - a sum of exponential kernels with time constants tau_eta), and delta_u - sets the scale of the voltages. +where h(t) is the input potential (synaptic delta currents convolved with +an exponential kernel with time constant tau_m), eta(t) models the effect +of refractoriness and adaptation (the neuron's own spike train convolved with +a sum of exponential kernels with time constants tau_eta), and delta_u +sets the scale of the voltages. - To represent a (homogeneous) population of N inhomogeneous renewal process - neurons, we can keep track of the numbers of neurons that fired a certain - number of time steps in the past. These neurons will have the same value of - the hazard function (instantaneous rate), and we draw a binomial random - number for each of these groups. This algorithm is thus very similar to - ppd_sup_generator and gamma_sup_generator, see also [2]. +To represent a (homogeneous) population of N inhomogeneous renewal process +neurons, we can keep track of the numbers of neurons that fired a certain +number of time steps in the past. These neurons will have the same value of +the hazard function (instantaneous rate), and we draw a binomial random +number for each of these groups. This algorithm is thus very similar to +ppd_sup_generator and gamma_sup_generator, see also [2]. - However, the adapting threshold eta(t) of the neurons generally makes the - neurons non-renewal processes. We employ the quasi-renewal approximation - [1], to be able to use the above algorithm. For the extension of [1] to - coupled populations see [3]. +However, the adapting threshold eta(t) of the neurons generally makes the +neurons non-renewal processes. We employ the quasi-renewal approximation +[1], to be able to use the above algorithm. For the extension of [1] to +coupled populations see [3]. - In effect, in each simulation time step, a binomial random number for each - of the groups of neurons has to be drawn, independent of the number of - represented neurons. For large N, it should be much more efficient than - simulating N individual pp_psc_delta models. +In effect, in each simulation time step, a binomial random number for each +of the groups of neurons has to be drawn, independent of the number of +represented neurons. For large N, it should be much more efficient than +simulating N individual pp_psc_delta models. - pp_pop_psc_delta emits spike events like other neuron models, but no more - than one per time step. If several component neurons spike in the time step, - the multiplicity of the spike event is set accordingly. Thus, to monitor - its output, the multiplicity of the spike events has to be taken into - account. Alternatively, the internal variable n_events gives the number of - spikes emitted in a time step, and can be monitored using a multimeter. +pp_pop_psc_delta emits spike events like other neuron models, but no more +than one per time step. If several component neurons spike in the time step, +the multiplicity of the spike event is set accordingly. Thus, to monitor +its output, the multiplicity of the spike events has to be taken into +account. Alternatively, the internal variable n_events gives the number of +spikes emitted in a time step, and can be monitored using a multimeter. - EDIT Nov 2016: pp_pop_psc_delta is now deprecated, because a new and - presumably much faster population model implementation is now available, see - gif_pop_psc_exp. +EDIT Nov 2016: pp_pop_psc_delta is now deprecated, because a new and +presumably much faster population model implementation is now available, see +gif_pop_psc_exp. - References: +References: - [1] Naud R, Gerstner W (2012) Coding and decoding with adapting neurons: - a population approach to the peri-stimulus time histogram. - PLoS Compututational Biology 8: e1002711. +[1] Naud R, Gerstner W (2012) Coding and decoding with adapting neurons: +a population approach to the peri-stimulus time histogram. +PLoS Compututational Biology 8: e1002711. - [2] Deger M, Helias M, Boucsein C, Rotter S (2012) Statistical properties - of superimposed stationary spike trains. Journal of Computational - Neuroscience 32:3, 443-463. +[2] Deger M, Helias M, Boucsein C, Rotter S (2012) Statistical properties +of superimposed stationary spike trains. Journal of Computational +Neuroscience 32:3, 443-463. - [3] Deger M, Schwalger T, Naud R, Gerstner W (2014) Fluctuations and - information filtering in coupled populations of spiking neurons with - adaptation. Physical Review E 90:6, 062704. +[3] Deger M, Schwalger T, Naud R, Gerstner W (2014) Fluctuations and +information filtering in coupled populations of spiking neurons with +adaptation. Physical Review E 90:6, 062704. - Parameters: +Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - N int - Number of represented neurons. - tau_m double - Membrane time constant in ms. - C_m double - Capacitance of the membrane in pF. - rho_0 double - Base firing rate in 1/s. - delta_u double - Voltage scale parameter in mV. - I_e double - Constant input current in pA. - tau_eta list of doubles - time constants of post-spike kernel - in ms. - val_eta list of doubles - amplitudes of exponentials in - post-spike-kernel in mV. - len_kernel double - post-spike kernel eta is truncated after - max(tau_eta) * len_kernel. +N int - Number of represented neurons. +tau_m double - Membrane time constant in ms. +C_m double - Capacitance of the membrane in pF. +rho_0 double - Base firing rate in 1/s. +delta_u double - Voltage scale parameter in mV. +I_e double - Constant input current in pA. +tau_eta list of doubles - time constants of post-spike kernel + in ms. +val_eta list of doubles - amplitudes of exponentials in + post-spike-kernel in mV. +len_kernel double - post-spike kernel eta is truncated after + max(tau_eta) * len_kernel. - The parameters correspond to the ones of pp_psc_delta as follows. +The parameters correspond to the ones of pp_psc_delta as follows. - c_1 = 0.0 - c_2 = rho_0 - c_3 = 1/delta_u - q_sfa = val_eta - tau_sfa = tau_eta - I_e = I_e + c_1 = 0.0 + c_2 = rho_0 + c_3 = 1/delta_u + q_sfa = val_eta + tau_sfa = tau_eta + I_e = I_e - dead_time = simulation resolution - dead_time_random = False - with_reset = False - t_ref_remaining = 0.0 + dead_time = simulation resolution + dead_time_random = False + with_reset = False + t_ref_remaining = 0.0 - Sends: SpikeEvent +Sends: SpikeEvent - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - Author: May 2014, Setareh, Deger +Author: May 2014, Setareh, Deger - SeeAlso: gif_pop_psc_exp, pp_psc_delta, ppd_sup_generator, - gamma_sup_generator +SeeAlso: gif_pop_psc_exp, pp_psc_delta, ppd_sup_generator, +gamma_sup_generator */ - -/** - * Population of point process neurons with leaky integration of delta-shaped - * PSCs. - */ - - class pp_pop_psc_delta : public Node { diff --git a/models/pp_psc_delta.h b/models/pp_psc_delta.h index 2b27d41dc3..683af75c14 100644 --- a/models/pp_psc_delta.h +++ b/models/pp_psc_delta.h @@ -39,145 +39,141 @@ namespace nest { /** @BeginDocumentation - Name: pp_psc_delta - Point process neuron with leaky integration of - delta-shaped PSCs. - - Description: - - pp_psc_delta is an implementation of a leaky integrator, where the potential - jumps on each spike arrival. It produces spike stochastically, and supports - spike-frequency adaptation, and other optional features. - - Spikes are generated randomly according to the current value of the - transfer function which operates on the membrane potential. Spike - generation is followed by an optional dead time. Setting with_reset to - true will reset the membrane potential after each spike. - - The transfer function can be chosen to be linear, exponential or a sum of - both by adjusting three parameters: - - rate = Rect[ c_1 * V' + c_2 * exp(c_3 * V') ], - - where the effective potential V' = V_m - E_sfa and E_sfa is called - the adaptive threshold. Here Rect means rectifier: - Rect(x) = {x if x>=0, 0 else} (this is necessary because negative rates are - not possible). - - By setting c_3 = 0, c_2 can be used as an offset spike rate for an otherwise - linear rate model. - - The dead time enables to include refractoriness. If dead time is 0, the - number of spikes in one time step might exceed one and is drawn from the - Poisson distribution accordingly. Otherwise, the probability for a spike - is given by 1 - exp(-rate*h), where h is the simulation time step. If - dead_time is smaller than the simulation resolution (time step), it is - internally set to the resolution. - - Note that, even if non-refractory neurons are to be modeled, a small value - of dead_time, like dead_time=1e-8, might be the value of choice since it - uses faster uniform random numbers than dead_time=0, which draws Poisson - numbers. Only for very large spike rates (> 1 spike/time_step) this will - cause errors. - - The model can optionally include an adaptive firing threshold. - If the neuron spikes, the threshold increases and the membrane potential - will take longer to reach it. - Here this is implemented by subtracting the value of the adaptive threshold - E_sfa from the membrane potential V_m before passing the potential to the - transfer function, see also above. E_sfa jumps by q_sfa when the neuron - fires a spike, and decays exponentially with the time constant tau_sfa - after (see [2] or [3]). Thus, the E_sfa corresponds to the convolution of the - neuron's spike train with an exponential kernel. - This adaptation kernel may also be chosen as the sum of n exponential - kernels. To use this feature, q_sfa and tau_sfa have to be given as a list - of n values each. - - The firing of pp_psc_delta is usually not a renewal process. For example, - its firing may depend on its past spikes if it has non-zero adaptation terms - (q_sfa). But if so, it will depend on all its previous spikes, not just the - last one -- so it is not a renewal process model. However, if "with_reset" - is True, and all adaptation terms (q_sfa) are 0, then it will reset - ("forget") its membrane potential each time a spike is emitted, which makes - it a renewal process model (where "rate" above is its hazard function, - also known as conditional intensity). - - pp_psc_delta may also be called a spike-response model with escape-noise [6] - (for vanishing, non-random dead_time). If c_1>0 and c_2==0, the rate is a - convolution of the inputs with exponential filters -- which is a model known - as a Hawkes point process (see [4]). If instead c_1==0, then pp_psc_delta is - a point process generalized linear model (with the canonical link function, - and exponential input filters) (see [5,6]). - - This model has been adapted from iaf_psc_delta. The default parameters are - set to the mean values given in [2], which have been matched to spike-train - recordings. Due to the many features of pp_psc_delta and its versatility, - parameters should be set carefully and conciously. - - - References: - - [1] Multiplicatively interacting point processes and applications to neural - modeling (2010) Stefano Cardanobile and Stefan Rotter, Journal of - Computational Neuroscience - - [2] Predicting spike timing of neocortical pyramidal neurons by simple - threshold models (2006) Jolivet R, Rauch A, Luescher H-R, Gerstner W. - J Comput Neurosci 21:35-49 - - [3] Pozzorini C, Naud R, Mensi S, Gerstner W (2013) Temporal whitening by - power-law adaptation in neocortical neurons. Nat Neurosci 16: 942-948. - (uses a similar model of multi-timescale adaptation) - - [4] Grytskyy D, Tetzlaff T, Diesmann M and Helias M (2013) A unified view - on weakly correlated recurrent networks. Front. Comput. Neurosci. 7:131. - - [5] Deger M, Schwalger T, Naud R, Gerstner W (2014) Fluctuations and - information filtering in coupled populations of spiking neurons with - adaptation. Physical Review E 90:6, 062704. - - [6] Gerstner W, Kistler WM, Naud R, Paninski L (2014) Neuronal Dynamics: - From single neurons to networks and models of cognition. - Cambridge University Press - - - Parameters: - - The following parameters can be set in the status dictionary. - - V_m double - Membrane potential in mV. - C_m double - Capacitance of the membrane in pF. - tau_m double - Membrane time constant in ms. - q_sfa double - Adaptive threshold jump in mV. - tau_sfa double - Adaptive threshold time constant in ms. - dead_time double - Duration of the dead time in ms. - dead_time_random bool - Should a random dead time be drawn after each - spike? - dead_time_shape int - Shape parameter of dead time gamma distribution. - t_ref_remaining double - Remaining dead time at simulation start. - with_reset bool - Should the membrane potential be reset after a - spike? - I_e double - Constant input current in pA. - c_1 double - Slope of linear part of transfer function in - Hz/mV. - c_2 double - Prefactor of exponential part of transfer function - in Hz. - c_3 double - Coefficient of exponential non-linearity of - transfer function in 1/mV. - - - Sends: SpikeEvent - - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - - Author: July 2009, Deger, Helias; January 2011, Zaytsev; May 2014, Setareh - - SeeAlso: pp_pop_psc_delta, iaf_psc_delta, iaf_psc_alpha, iaf_psc_exp, - iaf_psc_delta_canon +Name: pp_psc_delta - Point process neuron with leaky integration of + delta-shaped PSCs. + +Description: + +pp_psc_delta is an implementation of a leaky integrator, where the potential +jumps on each spike arrival. It produces spike stochastically, and supports +spike-frequency adaptation, and other optional features. + +Spikes are generated randomly according to the current value of the +transfer function which operates on the membrane potential. Spike +generation is followed by an optional dead time. Setting with_reset to +true will reset the membrane potential after each spike. + +The transfer function can be chosen to be linear, exponential or a sum of +both by adjusting three parameters: + + rate = Rect[ c_1 * V' + c_2 * exp(c_3 * V') ], + +where the effective potential V' = V_m - E_sfa and E_sfa is called +the adaptive threshold. Here Rect means rectifier: +Rect(x) = {x if x>=0, 0 else} (this is necessary because negative rates are +not possible). + +By setting c_3 = 0, c_2 can be used as an offset spike rate for an otherwise +linear rate model. + +The dead time enables to include refractoriness. If dead time is 0, the +number of spikes in one time step might exceed one and is drawn from the +Poisson distribution accordingly. Otherwise, the probability for a spike +is given by 1 - exp(-rate*h), where h is the simulation time step. If +dead_time is smaller than the simulation resolution (time step), it is +internally set to the resolution. + +Note that, even if non-refractory neurons are to be modeled, a small value +of dead_time, like dead_time=1e-8, might be the value of choice since it +uses faster uniform random numbers than dead_time=0, which draws Poisson +numbers. Only for very large spike rates (> 1 spike/time_step) this will +cause errors. + +The model can optionally include an adaptive firing threshold. +If the neuron spikes, the threshold increases and the membrane potential +will take longer to reach it. +Here this is implemented by subtracting the value of the adaptive threshold +E_sfa from the membrane potential V_m before passing the potential to the +transfer function, see also above. E_sfa jumps by q_sfa when the neuron +fires a spike, and decays exponentially with the time constant tau_sfa +after (see [2] or [3]). Thus, the E_sfa corresponds to the convolution of the +neuron's spike train with an exponential kernel. +This adaptation kernel may also be chosen as the sum of n exponential +kernels. To use this feature, q_sfa and tau_sfa have to be given as a list +of n values each. + +The firing of pp_psc_delta is usually not a renewal process. For example, +its firing may depend on its past spikes if it has non-zero adaptation terms +(q_sfa). But if so, it will depend on all its previous spikes, not just the +last one -- so it is not a renewal process model. However, if "with_reset" +is True, and all adaptation terms (q_sfa) are 0, then it will reset +("forget") its membrane potential each time a spike is emitted, which makes +it a renewal process model (where "rate" above is its hazard function, +also known as conditional intensity). + +pp_psc_delta may also be called a spike-response model with escape-noise [6] +(for vanishing, non-random dead_time). If c_1>0 and c_2==0, the rate is a +convolution of the inputs with exponential filters -- which is a model known +as a Hawkes point process (see [4]). If instead c_1==0, then pp_psc_delta is +a point process generalized linear model (with the canonical link function, +and exponential input filters) (see [5,6]). + +This model has been adapted from iaf_psc_delta. The default parameters are +set to the mean values given in [2], which have been matched to spike-train +recordings. Due to the many features of pp_psc_delta and its versatility, +parameters should be set carefully and conciously. + + +References: + +[1] Multiplicatively interacting point processes and applications to neural +modeling (2010) Stefano Cardanobile and Stefan Rotter, Journal of +Computational Neuroscience + +[2] Predicting spike timing of neocortical pyramidal neurons by simple +threshold models (2006) Jolivet R, Rauch A, Luescher H-R, Gerstner W. +J Comput Neurosci 21:35-49 + +[3] Pozzorini C, Naud R, Mensi S, Gerstner W (2013) Temporal whitening by +power-law adaptation in neocortical neurons. Nat Neurosci 16: 942-948. +(uses a similar model of multi-timescale adaptation) + +[4] Grytskyy D, Tetzlaff T, Diesmann M and Helias M (2013) A unified view +on weakly correlated recurrent networks. Front. Comput. Neurosci. 7:131. + +[5] Deger M, Schwalger T, Naud R, Gerstner W (2014) Fluctuations and +information filtering in coupled populations of spiking neurons with +adaptation. Physical Review E 90:6, 062704. + +[6] Gerstner W, Kistler WM, Naud R, Paninski L (2014) Neuronal Dynamics: +From single neurons to networks and models of cognition. +Cambridge University Press + + +Parameters: + +The following parameters can be set in the status dictionary. + +V_m double - Membrane potential in mV. +C_m double - Capacitance of the membrane in pF. +tau_m double - Membrane time constant in ms. +q_sfa double - Adaptive threshold jump in mV. +tau_sfa double - Adaptive threshold time constant in ms. +dead_time double - Duration of the dead time in ms. +dead_time_random bool - Should a random dead time be drawn after each + spike? +dead_time_shape int - Shape parameter of dead time gamma distribution. +t_ref_remaining double - Remaining dead time at simulation start. +with_reset bool - Should the membrane potential be reset after a + spike? +I_e double - Constant input current in pA. +c_1 double - Slope of linear part of transfer function in + Hz/mV. +c_2 double - Prefactor of exponential part of transfer function + in Hz. +c_3 double - Coefficient of exponential non-linearity of + transfer function in 1/mV. + + +Sends: SpikeEvent + +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest + +Author: July 2009, Deger, Helias; January 2011, Zaytsev; May 2014, Setareh + +SeeAlso: pp_pop_psc_delta, iaf_psc_delta, iaf_psc_alpha, iaf_psc_exp, +iaf_psc_delta_canon */ - -/** - * Point process neuron with leaky integration of delta-shaped PSCs. - */ class pp_psc_delta : public Archiving_Node { diff --git a/models/ppd_sup_generator.h b/models/ppd_sup_generator.h index 72f54987e7..fc985ccec0 100644 --- a/models/ppd_sup_generator.h +++ b/models/ppd_sup_generator.h @@ -37,6 +37,9 @@ #include "nest_types.h" #include "stimulating_device.h" +namespace nest +{ + /** @BeginDocumentation Name: ppd_sup_generator - simulate the superimposed spike train of a population of Poisson processes @@ -44,30 +47,32 @@ with dead time. Description: - The ppd_sup_generator generator simulates the pooled spike train of a - population of neurons firing independently with Poisson process with dead - time statistics. - The rate parameter can also be sine-modulated. The generator does not - initialize to equilibrium in this case, initial transients might occur. +The ppd_sup_generator generator simulates the pooled spike train of a +population of neurons firing independently with Poisson process with dead +time statistics. +The rate parameter can also be sine-modulated. The generator does not +initialize to equilibrium in this case, initial transients might occur. Parameters: - The following parameters appear in the element's status dictionary: - rate double - mean firing rate of the component processes, - default: 0 s^-1 - dead_time double - minimal time between two spikes of the component - processes, default: 0 ms - n_proc long - number of superimposed independent component - processes, default: 1 - frequency double - rate modulation frequency, default: 0 Hz - relative_amplitude double - relative rate modulation amplitude, default: 0 +The following parameters appear in the element's status dictionary: + +rate double - mean firing rate of the component processes, + default: 0 s^-1 +dead_time double - minimal time between two spikes of the component + processes, default: 0 ms +n_proc long - number of superimposed independent component + processes, default: 1 +frequency double - rate modulation frequency, default: 0 Hz +relative_amplitude double - relative rate modulation amplitude, default: 0 Remarks: - The generator has been published in Deger, Helias, Boucsein, Rotter (2011) - Statistical properties of superimposed stationary spike trains, - Journal of Computational Neuroscience. - URL: http://www.springerlink.com/content/u75211r381p08301/ - DOI: 10.1007/s10827-011-0362-8 + +The generator has been published in Deger, Helias, Boucsein, Rotter (2011) +Statistical properties of superimposed stationary spike trains, +Journal of Computational Neuroscience. +URL: http://www.springerlink.com/content/u75211r381p08301/ +DOI: 10.1007/s10827-011-0362-8 Authors: June 2009, Moritz Deger, Moritz Helias @@ -75,20 +80,6 @@ with dead time. SeeAlso: gamma_sup_generator, poisson_generator_ps, spike_generator, Device, StimulatingDevice */ - - -namespace nest -{ - -/** - * Generator of the spike output of a population of Poisson processes with dead - * time. - * - * This Poisson process with dead time superposition generator sends different - * spike trains to all its targets. - * - * @ingroup Devices - */ class ppd_sup_generator : public DeviceNode { diff --git a/models/pulsepacket_generator.h b/models/pulsepacket_generator.h index e4ba9dfba8..6f49ee3320 100644 --- a/models/pulsepacket_generator.h +++ b/models/pulsepacket_generator.h @@ -37,43 +37,39 @@ #include "node.h" #include "stimulating_device.h" - namespace nest { -//! class pulsepacket_generator -/*! Class pulsepacket_generator produces a spike train with - a gaussian distribution of spike times. -*/ - /** @BeginDocumentation Name: pulsepacket_generator - Generate sequence of Gaussian pulse packets. Description: - The pulsepacket_generator produces a spike train contains Gaussian pulse - packets centered about given times. A Gaussian pulse packet is - a given number of spikes with normal distributed random displacements - from the center time of the pulse. - It resembles the output of synfire groups of neurons. + +The pulsepacket_generator produces a spike train contains Gaussian pulse +packets centered about given times. A Gaussian pulse packet is +a given number of spikes with normal distributed random displacements +from the center time of the pulse. +It resembles the output of synfire groups of neurons. Parameters: - pulse_times double - Times of the centers of pulses in ms - activity int - Number of spikes per pulse - sdev double - Standard deviation of spike times in each pulse in ms + +pulse_times double - Times of the centers of pulses in ms +activity int - Number of spikes per pulse +sdev double - Standard deviation of spike times in each pulse in ms Remarks: - - All targets receive identical spike trains. - - New pulse packets are generated when activity or sdev are changed. - - Gaussian pulse are independently generated for each given - pulse-center time. - - Both standard deviation and number of spikes may be set at any time. - Pulses are then re-generated with the new values. + +- All targets receive identical spike trains. +- New pulse packets are generated when activity or sdev are changed. +- Gaussian pulse are independently generated for each given + pulse-center time. +- Both standard deviation and number of spikes may be set at any time. + Pulses are then re-generated with the new values. Sends: SpikeEvent SeeAlso: spike_generator, StimulatingDevice */ - class pulsepacket_generator : public Node { diff --git a/models/quantal_stp_connection.h b/models/quantal_stp_connection.h index 506a9cf072..382c7256d1 100644 --- a/models/quantal_stp_connection.h +++ b/models/quantal_stp_connection.h @@ -29,68 +29,62 @@ // Includes from nestkernel: #include "connection.h" +namespace nest +{ + /** @BeginDocumentation - Name: quantal_stp_synapse - Probabilistic synapse model with short term - plasticity. - - Description: - - This synapse model implements synaptic short-term depression and - short-term facilitation according to the quantal release model - described by Fuhrmann et al. [1] and Loebel et al. [2]. - - Each presynaptic spike will stochastically activate a fraction of - the available release sites. This fraction is binomialy - distributed and the release probability per site is governed by the - Fuhrmann et al. (2002) model. The solution of the differential - equations is taken from Maass and Markram 2002 [3]. - - The connection weight is interpreted as the maximal weight that can - be obtained if all n release sites are activated. - - Parameters: - The following parameters can be set in the status dictionary: - U double - Maximal fraction of available resources [0,1], - default=0.5 - u double - available fraction of resources [0,1], default=0.5 - p double - probability that a vesicle is available, default = 1.0 - n long - total number of release sites, default = 1 - a long - number of available release sites, default = n - tau_rec double - time constant for depression in ms, default=800 ms - tau_rec double - time constant for facilitation in ms, default=0 (off) - - - References: - [1] Fuhrmann, G., Segev, I., Markram, H., & Tsodyks, M. V. (2002). Coding of - temporal information by activity-dependent synapses. Journal of - neurophysiology, 87(1), 140-8. - [2] Loebel, A., Silberberg, G., Helbig, D., Markram, H., Tsodyks, - M. V, & Richardson, M. J. E. (2009). Multiquantal release underlies - the distribution of synaptic efficacies in the neocortex. Frontiers - in computational neuroscience, 3(November), 27. - doi:10.3389/neuro.10.027.2009 - [3] Maass, W., & Markram, H. (2002). Synapses as dynamic memory buffers. - Neural networks, 15(2), 155-61. - - Transmits: SpikeEvent - - FirstVersion: December 2013 - - Author: Marc-Oliver Gewaltig, based on tsodyks2_synapse - - SeeAlso: tsodyks2_synapse, synapsedict, stdp_synapse, static_synapse -*/ +Name: quantal_stp_synapse - Probabilistic synapse model with short term +plasticity. +Description: -/** - * Class representing a synapse with Tsodyks short term plasticity, based on the - * iterative formula. A suitable Connector containing these connections can be - * obtained from the template GenericConnector. - */ +This synapse model implements synaptic short-term depression and +short-term facilitation according to the quantal release model +described by Fuhrmann et al. [1] and Loebel et al. [2]. -namespace nest -{ +Each presynaptic spike will stochastically activate a fraction of +the available release sites. This fraction is binomialy +distributed and the release probability per site is governed by the +Fuhrmann et al. (2002) model. The solution of the differential +equations is taken from Maass and Markram 2002 [3]. + +The connection weight is interpreted as the maximal weight that can +be obtained if all n release sites are activated. +Parameters: + +The following parameters can be set in the status dictionary: +U double - Maximal fraction of available resources [0,1], + default=0.5 +u double - available fraction of resources [0,1], default=0.5 +p double - probability that a vesicle is available, default = 1.0 +n long - total number of release sites, default = 1 +a long - number of available release sites, default = n +tau_rec double - time constant for depression in ms, default=800 ms +tau_rec double - time constant for facilitation in ms, default=0 (off) + + +References: + + [1] Fuhrmann, G., Segev, I., Markram, H., & Tsodyks, M. V. (2002). Coding of + temporal information by activity-dependent synapses. Journal of + neurophysiology, 87(1), 140-8. + [2] Loebel, A., Silberberg, G., Helbig, D., Markram, H., Tsodyks, + M. V, & Richardson, M. J. E. (2009). Multiquantal release underlies + the distribution of synaptic efficacies in the neocortex. Frontiers + in computational neuroscience, 3(November), 27. + doi:10.3389/neuro.10.027.2009 + [3] Maass, W., & Markram, H. (2002). Synapses as dynamic memory buffers. + Neural networks, 15(2), 155-61. + +Transmits: SpikeEvent + +FirstVersion: December 2013 + +Author: Marc-Oliver Gewaltig, based on tsodyks2_synapse + +SeeAlso: tsodyks2_synapse, synapsedict, stdp_synapse, static_synapse +*/ template < typename targetidentifierT > class Quantal_StpConnection : public Connection< targetidentifierT > { diff --git a/models/rate_connection_delayed.h b/models/rate_connection_delayed.h index 04553b856b..e37bf4ccde 100644 --- a/models/rate_connection_delayed.h +++ b/models/rate_connection_delayed.h @@ -21,21 +21,30 @@ */ +#ifndef RATE_CONNECTION_DELAYED_H +#define RATE_CONNECTION_DELAYED_H + +#include "connection.h" + +namespace nest +{ + /** @BeginDocumentation Name: rate_connection_delayed - Synapse type for rate connections with delay. Description: - rate_connection_delayed is a connector to create connections with delay - between rate model neurons. - To create instantaneous rate connections please use - the synapse type rate_connection_instantaneous. +rate_connection_delayed is a connector to create connections with delay +between rate model neurons. + +To create instantaneous rate connections please use +the synapse type rate_connection_instantaneous. Transmits: DelayedRateConnectionEvent References: - Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., +Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., Bolten, M., Helias, M. and Diesmann, M. (2017). Integration of Continuous-Time Dynamics in a Spiking Neural Network Simulator. @@ -46,14 +55,6 @@ Author: David Dahmen, Jan Hahne, Jannis Schuecker SeeAlso: rate_connection_instantaneous, rate_neuron_ipn, rate_neuron_opn */ - -#ifndef RATE_CONNECTION_DELAYED_H -#define RATE_CONNECTION_DELAYED_H - -#include "connection.h" - -namespace nest -{ /** * Class representing a delayed rate connection. A rate_connection_delayed * has the properties weight, delay and receiver port. diff --git a/models/rate_connection_instantaneous.h b/models/rate_connection_instantaneous.h index 64fd883133..8aeb59bf2b 100644 --- a/models/rate_connection_instantaneous.h +++ b/models/rate_connection_instantaneous.h @@ -21,23 +21,32 @@ */ +#ifndef RATE_CONNECTION_INSTANTANEOUS_H +#define RATE_CONNECTION_INSTANTANEOUS_H + +#include "connection.h" + +namespace nest +{ + /** @BeginDocumentation Name: rate_connection_instantaneous - Synapse type for instantaneous rate connections. Description: - rate_connection_instantaneous is a connector to create - instantaneous connections between rate model neurons. - The value of the parameter delay is ignored for connections of - this type. To create rate connections with delay please use - the synapse type rate_connection_delayed. +rate_connection_instantaneous is a connector to create +instantaneous connections between rate model neurons. + +The value of the parameter delay is ignored for connections of +this type. To create rate connections with delay please use +the synapse type rate_connection_delayed. Transmits: InstantaneousRateConnectionEvent References: - Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., +Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., Bolten, M., Helias, M. and Diesmann, M. (2017). Integration of Continuous-Time Dynamics in a Spiking Neural Network Simulator. @@ -48,14 +57,6 @@ Author: David Dahmen, Jan Hahne, Jannis Schuecker SeeAlso: rate_connection_delayed, rate_neuron_ipn, rate_neuron_opn */ - -#ifndef RATE_CONNECTION_INSTANTANEOUS_H -#define RATE_CONNECTION_INSTANTANEOUS_H - -#include "connection.h" - -namespace nest -{ /** * Class representing a rate connection. A rate connection * has the properties weight and receiver port. diff --git a/models/rate_neuron_ipn.h b/models/rate_neuron_ipn.h index 645d35a521..17ad798154 100644 --- a/models/rate_neuron_ipn.h +++ b/models/rate_neuron_ipn.h @@ -41,7 +41,6 @@ #include "recordables_map.h" #include "universal_data_logger.h" - namespace nest { diff --git a/models/rate_neuron_opn.h b/models/rate_neuron_opn.h index 9e39188448..8363d664e6 100644 --- a/models/rate_neuron_opn.h +++ b/models/rate_neuron_opn.h @@ -41,7 +41,6 @@ #include "recordables_map.h" #include "universal_data_logger.h" - namespace nest { diff --git a/models/rate_transformer_node.h b/models/rate_transformer_node.h index 043df606b1..7bb6851666 100644 --- a/models/rate_transformer_node.h +++ b/models/rate_transformer_node.h @@ -41,7 +41,6 @@ #include "recordables_map.h" #include "universal_data_logger.h" - namespace nest { @@ -75,6 +74,7 @@ Receives: InstantaneousRateConnectionEvent, DelayedRateConnectionEvent Sends: InstantaneousRateConnectionEvent, DelayedRateConnectionEvent Parameters: + Only the parameter linear_summation and the parameters from the class Nonlinearities can be set in the status dictionary. diff --git a/models/siegert_neuron.h b/models/siegert_neuron.h index 8339c22d80..b04006db71 100644 --- a/models/siegert_neuron.h +++ b/models/siegert_neuron.h @@ -50,58 +50,56 @@ Name: siegert_neuron Description: - siegert_neuron is an implementation of a rate model with the - non-linearity given by the gain function of the - leaky-integrate-and-fire neuron with delta or exponentially decaying - synapses [2] and [3, their eq. 25]. The model can be used for a - mean-field analysis of spiking networks. +siegert_neuron is an implementation of a rate model with the +non-linearity given by the gain function of the +leaky-integrate-and-fire neuron with delta or exponentially decaying +synapses [2] and [3, their eq. 25]. The model can be used for a +mean-field analysis of spiking networks. - The model supports connections to other rate models with zero - delay, and uses the secondary_event concept introduced with the - gap-junction framework. +The model supports connections to other rate models with zero +delay, and uses the secondary_event concept introduced with the +gap-junction framework. Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - rate double - Rate (1/s) - tau double - Time constant in ms. - mean double - Additional constant input +rate double - Rate (1/s) +tau double - Time constant in ms. +mean double - Additional constant input - The following parameters can be set in the status directory and are - used in the evaluation of the gain function. Parameters as in - iaf_psc_exp/delta. +The following parameters can be set in the status directory and are +used in the evaluation of the gain function. Parameters as in +iaf_psc_exp/delta. - tau_m double - Membrane time constant in ms. - tau_syn double - Time constant of postsynaptic currents in ms. - t_ref double - Duration of refractory period in ms. - theta double - Threshold relative to resting potential in mV. - V_reset double - Reset relative to resting membrane potential in - mV. - -Notes: +tau_m double - Membrane time constant in ms. +tau_syn double - Time constant of postsynaptic currents in ms. +t_ref double - Duration of refractory period in ms. +theta double - Threshold relative to resting potential in mV. +V_reset double - Reset relative to resting membrane potential in + mV. References: - [1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., - Bolten, M., Helias, M. and Diesmann, M. (2017). - Integration of Continuous-Time Dynamics in a - Spiking Neural Network Simulator. - Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 - - [2] Fourcaud, N and Brunel, N. (2002). Dynamics of the firing - probability of noisy integrate-and-fire neurons, Neural computation, - 14:9, pp 2057--2110 - - [3] Schuecker, J., Diesmann, M. and Helias, M. (2015). - Modulated escape from a metastable state driven by colored noise. - Physical Review E 92:052119 - - [4] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., - Bolten, M., Frommer, A. and Diesmann, M. (2015). - A unified framework for spiking and gap-junction interactions - in distributed neuronal network simulations. - Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 +[1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., + Bolten, M., Helias, M. and Diesmann, M. (2017). + Integration of Continuous-Time Dynamics in a + Spiking Neural Network Simulator. + Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 + +[2] Fourcaud, N and Brunel, N. (2002). Dynamics of the firing + probability of noisy integrate-and-fire neurons, Neural computation, + 14:9, pp 2057--2110 + +[3] Schuecker, J., Diesmann, M. and Helias, M. (2015). + Modulated escape from a metastable state driven by colored noise. + Physical Review E 92:052119 + +[4] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., + Bolten, M., Frommer, A. and Diesmann, M. (2015). + A unified framework for spiking and gap-junction interactions + in distributed neuronal network simulations. + Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 Sends: DiffusionConnectionEvent diff --git a/models/sigmoid_rate.h b/models/sigmoid_rate.h index 831a0eb45d..d36e46d1c2 100644 --- a/models/sigmoid_rate.h +++ b/models/sigmoid_rate.h @@ -41,30 +41,31 @@ Name: sigmoid_rate - rate model with sigmoidal gain function Description: - sigmoid_rate is an implementation of a nonlinear rate model with input - function input(h) = g / ( 1. + exp( -beta * ( h - theta ) ) ). - Input transformation can either be applied to individual inputs - or to the sum of all inputs. +sigmoid_rate is an implementation of a nonlinear rate model with input +function input(h) = g / ( 1. + exp( -beta * ( h - theta ) ) ). +Input transformation can either be applied to individual inputs +or to the sum of all inputs. - The model supports connections to other rate models with either zero or - non-zero delay, and uses the secondary_event concept introduced with - the gap-junction framework. +The model supports connections to other rate models with either zero or +non-zero delay, and uses the secondary_event concept introduced with +the gap-junction framework. Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - rate double - Rate (unitless) - tau double - Time constant of rate dynamics in ms. - mean double - Mean of Gaussian white noise. - std double - Standard deviation of Gaussian white noise. - g double - Gain parameter. - beta double - Slope parameter. - theta double - Threshold. - linear_summation bool - Specifies type of non-linearity (see above). - rectify_output bool - Switch to restrict rate to values >= 0. +rate double - Rate (unitless) +tau double - Time constant of rate dynamics in ms. +mean double - Mean of Gaussian white noise. +std double - Standard deviation of Gaussian white noise. +g double - Gain parameter. +beta double - Slope parameter. +theta double - Threshold. +linear_summation bool - Specifies type of non-linearity (see above). +rectify_output bool - Switch to restrict rate to values >= 0. Note: + The boolean parameter linear_summation determines whether the input from different presynaptic neurons is first summed linearly and then transformed by a nonlinearity (true), or if the input from @@ -73,17 +74,17 @@ then summed up (false). Default is true. References: - [1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., - Bolten, M., Helias, M. and Diesmann, M. (2017). - Integration of Continuous-Time Dynamics in a - Spiking Neural Network Simulator. - Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 - - [2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., - Bolten, M., Frommer, A. and Diesmann, M. (2015). - A unified framework for spiking and gap-junction interactions - in distributed neuronal network simulations. - Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 +[1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., + Bolten, M., Helias, M. and Diesmann, M. (2017). + Integration of Continuous-Time Dynamics in a + Spiking Neural Network Simulator. + Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 + +[2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., + Bolten, M., Frommer, A. and Diesmann, M. (2015). + A unified framework for spiking and gap-junction interactions + in distributed neuronal network simulations. + Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 Sends: InstantaneousRateConnectionEvent, DelayedRateConnectionEvent diff --git a/models/sigmoid_rate_gg_1998.h b/models/sigmoid_rate_gg_1998.h index 72d8af2157..93cb3a1212 100644 --- a/models/sigmoid_rate_gg_1998.h +++ b/models/sigmoid_rate_gg_1998.h @@ -32,7 +32,6 @@ #include "rate_transformer_node.h" #include "rate_transformer_node_impl.h" - namespace nest { @@ -42,28 +41,29 @@ as defined in [1]. Description: - sigmoid_rate_gg_1998 is an implementation of a nonlinear rate model with - input function input(h) = ( g * h )^4 / ( .1^4 + ( g * h )^4 ). - Input transformation can either be applied to individual inputs - or to the sum of all inputs. +sigmoid_rate_gg_1998 is an implementation of a nonlinear rate model with +input function input(h) = ( g * h )^4 / ( .1^4 + ( g * h )^4 ). +Input transformation can either be applied to individual inputs +or to the sum of all inputs. - The model supports connections to other rate models with either zero or - non-zero delay, and uses the secondary_event concept introduced with - the gap-junction framework. +The model supports connections to other rate models with either zero or +non-zero delay, and uses the secondary_event concept introduced with +the gap-junction framework. Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - rate double - Rate (unitless) - tau double - Time constant of rate dynamics in ms. - mean double - Mean of Gaussian white noise. - std double - Standard deviation of Gaussian white noise. - g double - Gain parameter. - linear_summation bool - Specifies type of non-linearity (see above). - rectify_output bool - Switch to restrict rate to values >= 0. +rate double - Rate (unitless) +tau double - Time constant of rate dynamics in ms. +mean double - Mean of Gaussian white noise. +std double - Standard deviation of Gaussian white noise. +g double - Gain parameter. +linear_summation bool - Specifies type of non-linearity (see above). +rectify_output bool - Switch to restrict rate to values >= 0. Note: + The boolean parameter linear_summation determines whether the input from different presynaptic neurons is first summed linearly and then transformed by a nonlinearity (true), or if the input from @@ -72,21 +72,21 @@ then summed up (false). Default is true. References: - [1] Gancarz, G., & Grossberg, S. (1998). - A neural model of the saccade generator in the reticular formation. - Neural Networks, 11(7), 1159–1174. doi: 10.1016/S0893-6080(98)00096-3 +[1] Gancarz, G., & Grossberg, S. (1998). + A neural model of the saccade generator in the reticular formation. + Neural Networks, 11(7), 1159–1174. doi: 10.1016/S0893-6080(98)00096-3 - [2] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., - Bolten, M., Helias, M. and Diesmann, M. (2017). - Integration of Continuous-Time Dynamics in a - Spiking Neural Network Simulator. - Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 +[2] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., + Bolten, M., Helias, M. and Diesmann, M. (2017). + Integration of Continuous-Time Dynamics in a + Spiking Neural Network Simulator. + Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 - [3] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., - Bolten, M., Frommer, A. and Diesmann, M. (2015). - A unified framework for spiking and gap-junction interactions - in distributed neuronal network simulations. - Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 +[3] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., + Bolten, M., Frommer, A. and Diesmann, M. (2015). + A unified framework for spiking and gap-junction interactions + in distributed neuronal network simulations. + Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 Sends: InstantaneousRateConnectionEvent, DelayedRateConnectionEvent @@ -97,7 +97,6 @@ Author: Mario Senden, Jan Hahne, Jannis Schuecker SeeAlso: rate_connection_instantaneous, rate_connection_delayed */ - class nonlinearities_sigmoid_rate_gg_1998 { private: diff --git a/models/sinusoidal_gamma_generator.h b/models/sinusoidal_gamma_generator.h index 8c8c92754c..18181ede4f 100644 --- a/models/sinusoidal_gamma_generator.h +++ b/models/sinusoidal_gamma_generator.h @@ -44,58 +44,61 @@ namespace nest { + /** @BeginDocumentation - Name: sinusoidal_gamma_generator - Generates sinusoidally modulated gamma - spike trains. +Name: sinusoidal_gamma_generator - Generates sinusoidally modulated gamma + spike trains. - Description: - sinusoidal_gamma_generator generates sinusoidally modulated gamma spike - trains. By default, each target of the generator will receive a different - spike train. +Description: - The instantaneous rate of the process is given by +sinusoidal_gamma_generator generates sinusoidally modulated gamma spike +trains. By default, each target of the generator will receive a different +spike train. - f(t) = rate + amplitude sin ( 2 pi frequency t + phase * pi/180 ) +The instantaneous rate of the process is given by - Parameters: - The following parameters can be set in the status dictionary: + f(t) = rate + amplitude sin ( 2 pi frequency t + phase * pi/180 ) - rate double - Mean firing rate in spikes/second, default: 0 s^-1 - amplitude double - Firing rate modulation amplitude in spikes/second, - default: 0 s^-1 - frequency double - Modulation frequency in Hz, default: 0 Hz - phase double - Modulation phase in degree [0-360], default: 0 - order double - Gamma order (>= 1), default: 1 +Parameters: - individual_spike_trains bool - See note below, default: true +The following parameters can be set in the status dictionary: - Remarks: - - The gamma generator requires 0 <= amplitude <= rate. - - The state of the generator is reset on calibration. - - The generator does not support precise spike timing. - - You can use the multimeter to sample the rate of the generator. - - The generator will create different trains if run at different - temporal resolutions. +rate double - Mean firing rate in spikes/second, default: 0 s^-1 +amplitude double - Firing rate modulation amplitude in spikes/second, + default: 0 s^-1 +frequency double - Modulation frequency in Hz, default: 0 Hz +phase double - Modulation phase in degree [0-360], default: 0 +order double - Gamma order (>= 1), default: 1 - - Individual spike trains vs single spike train: - By default, the generator sends a different spike train to each of its - targets. If /individual_spike_trains is set to false using either - SetDefaults or CopyModel before a generator node is created, the generator - will send the same spike train to all of its targets. +individual_spike_trains bool - See note below, default: true - Receives: DataLoggingRequest +Remarks: - Sends: SpikeEvent +- The gamma generator requires 0 <= amplitude <= rate. +- The state of the generator is reset on calibration. +- The generator does not support precise spike timing. +- You can use the multimeter to sample the rate of the generator. +- The generator will create different trains if run at different + temporal resolutions. - References: Barbieri et al, J Neurosci Methods 105:25-37 (2001) +- Individual spike trains vs single spike train: + By default, the generator sends a different spike train to each of its + targets. If /individual_spike_trains is set to false using either + SetDefaults or CopyModel before a generator node is created, the generator + will send the same spike train to all of its targets. - FirstVersion: October 2007, May 2013 +Receives: DataLoggingRequest - Author: Hans E Plesser, Thomas Heiberg +Sends: SpikeEvent - SeeAlso: sinusoidal_poisson_generator, gamma_sup_generator -*/ +References: Barbieri et al, J Neurosci Methods 105:25-37 (2001) + +FirstVersion: October 2007, May 2013 +Author: Hans E Plesser, Thomas Heiberg + +SeeAlso: sinusoidal_poisson_generator, gamma_sup_generator +*/ /** * AC Gamma Generator. diff --git a/models/sinusoidal_poisson_generator.h b/models/sinusoidal_poisson_generator.h index 788323f3b9..f63b467095 100644 --- a/models/sinusoidal_poisson_generator.h +++ b/models/sinusoidal_poisson_generator.h @@ -36,57 +36,59 @@ namespace nest { + /** @BeginDocumentation - Name: sinusoidal_poisson_generator - Generates sinusoidally modulated Poisson - spike trains. +Name: sinusoidal_poisson_generator - Generates sinusoidally modulated Poisson + spike trains. - Description: - sinusoidal_poisson_generator generates sinusoidally modulated Poisson spike - trains. By default, each target of the generator will receive a different - spike train. +Description: - The instantaneous rate of the process is given by +sinusoidal_poisson_generator generates sinusoidally modulated Poisson spike +trains. By default, each target of the generator will receive a different +spike train. - f(t) = max(0, rate + amplitude sin ( 2 pi frequency t + phase * pi/180 )) - >= 0 +The instantaneous rate of the process is given by - Parameters: - The following parameters can be set in the status dictionary: + f(t) = max(0, rate + amplitude sin ( 2 pi frequency t + phase * pi/180 )) + >= 0 - rate double - Mean firing rate in spikes/second, default: 0 s^-1 - amplitude double - Firing rate modulation amplitude in spikes/second, - default: 0 s^-1 - frequency double - Modulation frequency in Hz, default: 0 Hz - phase double - Modulation phase in degree [0-360], default: 0 +Parameters: - individual_spike_trains bool - See note below, default: true +The following parameters can be set in the status dictionary: - Remarks: - - If amplitude > rate, firing rate is cut off at zero. In this case, the mean - firing rate will be less than rate. - - The state of the generator is reset on calibration. - - The generator does not support precise spike timing. - - You can use the multimeter to sample the rate of the generator. - - The generator will create different trains if run at different - temporal resolutions. +rate double - Mean firing rate in spikes/second, default: 0 s^-1 +amplitude double - Firing rate modulation amplitude in spikes/second, + default: 0 s^-1 +frequency double - Modulation frequency in Hz, default: 0 Hz +phase double - Modulation phase in degree [0-360], default: 0 - - Individual spike trains vs single spike train: - By default, the generator sends a different spike train to each of its - targets. If /individual_spike_trains is set to false using either - SetDefaults or CopyModel before a generator node is created, the generator - will send the same spike train to all of its targets. +individual_spike_trains bool - See note below, default: true - Receives: DataLoggingRequest +Remarks: +O- If amplitude > rate, firing rate is cut off at zero. In this case, the mean + firing rate will be less than rate. +- The state of the generator is reset on calibration. +- The generator does not support precise spike timing. +- You can use the multimeter to sample the rate of the generator. +- The generator will create different trains if run at different + temporal resolutions. - Sends: SpikeEvent +- Individual spike trains vs single spike train: + By default, the generator sends a different spike train to each of its + targets. If /individual_spike_trains is set to false using either + SetDefaults or CopyModel before a generator node is created, the generator + will send the same spike train to all of its targets. - FirstVersion: July 2006, Oct 2009, May 2013 +Receives: DataLoggingRequest - Author: Hans Ekkehard Plesser +Sends: SpikeEvent - SeeAlso: poisson_generator, sinusoidal_gamma_generator -*/ +FirstVersion: July 2006, Oct 2009, May 2013 +Author: Hans Ekkehard Plesser + +SeeAlso: poisson_generator, sinusoidal_gamma_generator +*/ class sinusoidal_poisson_generator : public DeviceNode { diff --git a/models/spike_detector.h b/models/spike_detector.h index bdc5c517d6..69fd6af3ae 100644 --- a/models/spike_detector.h +++ b/models/spike_detector.h @@ -33,11 +33,14 @@ #include "nest_types.h" #include "recording_device.h" -/** @BeginDocumentation +namespace nest +{ +/** @BeginDocumentation Name: spike_detector - Device for detecting single spikes. Description: + The spike_detector device is a recording device. It is used to record spikes from a single neuron, or from multiple neurons at once. Data is recorded in memory or to file as for all RecordingDevices. @@ -68,9 +71,6 @@ Receives: SpikeEvent SeeAlso: spike_detector, Device, RecordingDevice */ - -namespace nest -{ /** * Spike detector class. * diff --git a/models/spike_dilutor.h b/models/spike_dilutor.h index 2b1d717a64..9f230dcf22 100644 --- a/models/spike_dilutor.h +++ b/models/spike_dilutor.h @@ -38,16 +38,19 @@ namespace nest Name: spike_dilutor - repeats incoming spikes with a certain probability. Description: - The device repeats incoming spikes with a certain probability. - Targets will receive diffenrent spike trains. + +The device repeats incoming spikes with a certain probability. +Targets will receive diffenrent spike trains. Remarks: - In parallel simulations, a copy of the device is present on each process - and spikes are collected only from local sources. + +In parallel simulations, a copy of the device is present on each process +and spikes are collected only from local sources. Parameters: - The following parameters appear in the element's status dictionary: - p_copy double - Copy probability + +The following parameters appear in the element's status dictionary: +p_copy double - Copy probability Sends: SpikeEvent @@ -56,7 +59,6 @@ ported to Nest 2.6 by: Setareh, April 2015 SeeAlso: mip_generator */ - class spike_dilutor : public DeviceNode { diff --git a/models/spike_generator.h b/models/spike_generator.h index 4e330b43c1..60d89528fb 100644 --- a/models/spike_generator.h +++ b/models/spike_generator.h @@ -37,151 +37,149 @@ namespace nest { + /** @BeginDocumentation - Name: spike_generator - A device which generates spikes from an array with - spike-times. - - Synopsis: spike_generator Create -> gid - - Description: - A spike generator can be used to generate spikes at specific times - which are given to the spike generator as an array. - - Spike times are given in milliseconds, and must be sorted with the - earliest spike first. All spike times must be strictly in the future. - Trying to set a spike time in the past or at the current time step, - will cause a NEST error. Setting a spike time of 0.0 will also result - in an error. +Name: spike_generator - A device which generates spikes from an array with + spike-times. - Spike times may not coincide with a time step, i.e., are not a multiple - of the simulation resolution. Three options control how spike times that - do not coincide with a step are handled (see examples below): - - Multiple occurences of the same time indicate that more than one - event is to be generated at this particular time. - - Additionally, spike_weights can be set. This also is an array, - which contains one weight value per spike time. If set, the spikes - are delivered with the respective weight multiplied with the - weight of the connection. To disable this functionality, the - spike_weights array can be set to an empty array. - - /precise_times default: false - If false, spike times will be rounded to simulation steps, i.e., multiples - of the resolution. The rounding is controlled by the two other flags. - If true, spike times will not be rounded but represented exactly as a - combination of step and offset. This should only be used if all neurons - receiving the spike train can handle precise timing information. In this - case, the other two options are ignored. - - /allow_offgrid_spikes default: false - If false, spike times will be rounded to the nearest step if they are - less than tic/2 from the step, otherwise NEST reports an error. - If true, spike times are rounded to the nearest step if within tic/2 - from the step, otherwise they are rounded up to the *end* of the step. - - /shift_now_spikes default: false - This option is mainly for use by the PyNN-NEST interface. - If false, spike times rounded down to the current point in time will - be considered in the past and ignored. - If true, spike times that are rounded down to the current time step - are shifted one time step into the future. - - Note that GetStatus will report the spike times that the spike_generator - will actually use, i.e., for grid-based simulation the spike times rounded - to the appropriate point on the time grid. This means that GetStatus may - return different /spike_times values at different resolutions. - - Example: - spikegenerator << /spike_times [1.0 2.0 3.0] >> SetStatus - - Instructs the spike generator to generate events at 1.0, 2.0, and - 3.0 milliseconds, relative to the device-timer origin. - - Example: - Assume that NEST works with default resolution (step size) of 0.1ms - and default tic length of 0.001ms. Then, spikes times not falling - onto the grid will be handled as follows for different option settings: - - /spike_generator << /spike_times [1.0 1.9999 3.0001] >> Create - ---> spikes at steps 10 (==1.0ms), 20 (==2.0ms) and 30 (==3.0ms) - - /spike_generator << /spike_times [1.0 1.05 3.0001] >> Create - ---> error, spike time 1.05 not within tic/2 of step - - /spike_generator << /spike_times [1.0 1.05 3.0001] - /allow_offgrid_spikes true >> Create - ---> spikes at steps 10, 11 (mid-step time rounded up), - 30 (time within tic/2 of step moved to step) - - /spike_generator << /spike_times [1.0 1.05 3.0001] - /precise_times true >> Create - ---> spikes at step 10, offset 0.0; step 11, offset -0.05; - step 31, offset -0.0999 - - Assume we have simulated 10.0ms and simulation times is thus 10.0 (step 100). - Then, any spike times set, at this time, must be later than step 100. - - /spike_generator << /spike_times [10.0001] >> Create - ---> spike time is within tic/2 of step 100, rounded down to 100 thus - not in the future, spike will not be emitted - - /spike_generator << /spike_times [10.0001] /precise_times true >> Create - ---> spike at step 101, offset -0.0999 is in the future - - /spike_generator - << /spike_times [10.0001 11.0001] /shift_now_spikes true >> - Create - ---> spike at step 101, spike shifted into the future, and spike at step 110, - not shifted, since it is in the future anyways - - - Example: - spikegenerator - << /spike_times [1.0 2.0] /spike_weights [5.0 -8.0] >> - SetStatus - - Instructs the spike generator to generate an event with weight 5.0 - at 1.0 ms, and an event with weight -8.0 at 2.0 ms, relative to - the device-timer origin. - - spikegenerator << /spike_weights [] >> SetStatus - - Instructs the spike generator to generate events at 1.0, 2.0, and - 3.0 milliseconds, and use the weight of the connection. - - Parameters: - The following properties can be set in the status dictionary. - - origin double - Time origin for device timer in ms - start double - earliest possible time stamp of a spike to - be emitted in ms - stop double - earliest time stamp of a potential spike - event that is not emitted in ms - spike_times double array - spike-times in ms - spike_weights double array - corresponding spike-weights, the unit - depends on the receiver - spike_multiplicities int array - multiplicities of spikes, same length - as spike_times; mostly for debugging - - precise_times bool - see above - allow_offgrid_spikes bool - see above - shift_now_spikes bool - see above - - Sends: SpikeEvent - - Author: Gewaltig, Diesmann, Eppler +Synopsis: spike_generator Create -> gid - SeeAlso: Device, StimulatingDevice, testsuite::test_spike_generator -*/ +Description: -/** - * Emit spikes at given times. - * - * This emits spikes with offsets, i.e., is useful also for precise spikes. - * - * @ingroup Devices - */ +A spike generator can be used to generate spikes at specific times +which are given to the spike generator as an array. + +Spike times are given in milliseconds, and must be sorted with the +earliest spike first. All spike times must be strictly in the future. +Trying to set a spike time in the past or at the current time step, +will cause a NEST error. Setting a spike time of 0.0 will also result +in an error. + +Spike times may not coincide with a time step, i.e., are not a multiple +of the simulation resolution. Three options control how spike times that +do not coincide with a step are handled (see examples below): + +Multiple occurences of the same time indicate that more than one +event is to be generated at this particular time. + +Additionally, spike_weights can be set. This also is an array, +which contains one weight value per spike time. If set, the spikes +are delivered with the respective weight multiplied with the +weight of the connection. To disable this functionality, the +spike_weights array can be set to an empty array. + +/precise_times default: false + If false, spike times will be rounded to simulation steps, i.e., multiples + of the resolution. The rounding is controlled by the two other flags. + If true, spike times will not be rounded but represented exactly as a + combination of step and offset. This should only be used if all neurons + receiving the spike train can handle precise timing information. In this + case, the other two options are ignored. + +/allow_offgrid_spikes default: false + If false, spike times will be rounded to the nearest step if they are + less than tic/2 from the step, otherwise NEST reports an error. + If true, spike times are rounded to the nearest step if within tic/2 + from the step, otherwise they are rounded up to the *end* of the step. + +/shift_now_spikes default: false + This option is mainly for use by the PyNN-NEST interface. + If false, spike times rounded down to the current point in time will + be considered in the past and ignored. + If true, spike times that are rounded down to the current time step + are shifted one time step into the future. + +Note that GetStatus will report the spike times that the spike_generator +will actually use, i.e., for grid-based simulation the spike times rounded +to the appropriate point on the time grid. This means that GetStatus may +return different /spike_times values at different resolutions. + +Example: + +spikegenerator << /spike_times [1.0 2.0 3.0] >> SetStatus + +Instructs the spike generator to generate events at 1.0, 2.0, and +3.0 milliseconds, relative to the device-timer origin. + +Example: + +Assume that NEST works with default resolution (step size) of 0.1ms +and default tic length of 0.001ms. Then, spikes times not falling +onto the grid will be handled as follows for different option settings: + +/spike_generator << /spike_times [1.0 1.9999 3.0001] >> Create +---> spikes at steps 10 (==1.0ms), 20 (==2.0ms) and 30 (==3.0ms) + +/spike_generator << /spike_times [1.0 1.05 3.0001] >> Create +---> error, spike time 1.05 not within tic/2 of step + +/spike_generator << /spike_times [1.0 1.05 3.0001] + /allow_offgrid_spikes true >> Create +---> spikes at steps 10, 11 (mid-step time rounded up), + 30 (time within tic/2 of step moved to step) + +/spike_generator << /spike_times [1.0 1.05 3.0001] + /precise_times true >> Create +---> spikes at step 10, offset 0.0; step 11, offset -0.05; + step 31, offset -0.0999 + +Assume we have simulated 10.0ms and simulation times is thus 10.0 (step 100). +Then, any spike times set, at this time, must be later than step 100. + +/spike_generator << /spike_times [10.0001] >> Create +---> spike time is within tic/2 of step 100, rounded down to 100 thus + not in the future, spike will not be emitted + +/spike_generator << /spike_times [10.0001] /precise_times true >> Create +---> spike at step 101, offset -0.0999 is in the future + +/spike_generator + << /spike_times [10.0001 11.0001] /shift_now_spikes true >> +Create +---> spike at step 101, spike shifted into the future, and spike at step 110, + not shifted, since it is in the future anyways + + +Example: + +spikegenerator + << /spike_times [1.0 2.0] /spike_weights [5.0 -8.0] >> +SetStatus + +Instructs the spike generator to generate an event with weight 5.0 +at 1.0 ms, and an event with weight -8.0 at 2.0 ms, relative to +the device-timer origin. + +spikegenerator << /spike_weights [] >> SetStatus + +Instructs the spike generator to generate events at 1.0, 2.0, and +3.0 milliseconds, and use the weight of the connection. + +Parameters: + +The following properties can be set in the status dictionary. + +origin double - Time origin for device timer in ms +start double - earliest possible time stamp of a spike to + be emitted in ms +stop double - earliest time stamp of a potential spike + event that is not emitted in ms +spike_times double array - spike-times in ms +spike_weights double array - corresponding spike-weights, the unit + depends on the receiver +spike_multiplicities int array - multiplicities of spikes, same length + as spike_times; mostly for debugging + +precise_times bool - see above +allow_offgrid_spikes bool - see above +shift_now_spikes bool - see above + +Sends: SpikeEvent + +Author: Gewaltig, Diesmann, Eppler + +SeeAlso: Device, StimulatingDevice, testsuite::test_spike_generator +*/ class spike_generator : public DeviceNode { diff --git a/models/spin_detector.h b/models/spin_detector.h index 25b5bb01fb..6150139e8b 100644 --- a/models/spin_detector.h +++ b/models/spin_detector.h @@ -34,11 +34,14 @@ #include "nest_types.h" #include "recording_device.h" -/** @BeginDocumentation +namespace nest +{ +/** @BeginDocumentation Name: spin_detector - Device for detecting binary states in neurons. Description: + The spin_detector is a recording device. It is used to decode and record binary states from spiking activity from a single neuron, or from multiple neurons at once. A single spike signals the 0 state, two @@ -76,10 +79,6 @@ Receives: SpikeEvent SeeAlso: spike_detector, Device, RecordingDevice */ - - -namespace nest -{ /** * Spin detector class. * diff --git a/models/static_connection.h b/models/static_connection.h index d4dbf02991..e450a1389d 100644 --- a/models/static_connection.h +++ b/models/static_connection.h @@ -20,25 +20,6 @@ * */ - -/** @BeginDocumentation - Name: static_synapse - Synapse type for static connections. - - Description: - static_synapse does not support any kind of plasticity. It simply stores - the parameters target, weight, delay and receiver port for each connection. - - FirstVersion: October 2005 - Author: Jochen Martin Eppler, Moritz Helias - - Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, - DoubleDataEvent, DataLoggingRequest - - Remarks: Refactored for new connection system design, March 2007 - - SeeAlso: synapsedict, tsodyks_synapse, stdp_synapse -*/ - #ifndef STATICCONNECTION_H #define STATICCONNECTION_H @@ -48,13 +29,25 @@ namespace nest { -/** - * Class representing a static connection. A static connection has the - * properties weight, delay and receiver port. A suitable Connector containing - * these connections can be obtained from the template GenericConnector. - */ +/** @BeginDocumentation +Name: static_synapse - Synapse type for static connections. + +Description: + +static_synapse does not support any kind of plasticity. It simply stores +the parameters target, weight, delay and receiver port for each connection. +FirstVersion: October 2005 +Author: Jochen Martin Eppler, Moritz Helias + +Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, +DoubleDataEvent, DataLoggingRequest + +Remarks: Refactored for new connection system design, March 2007 + +SeeAlso: synapsedict, tsodyks_synapse, stdp_synapse +*/ template < typename targetidentifierT > class StaticConnection : public Connection< targetidentifierT > { diff --git a/models/static_connection_hom_w.h b/models/static_connection_hom_w.h index adb1d1c3f6..cc3ef8e6e6 100644 --- a/models/static_connection_hom_w.h +++ b/models/static_connection_hom_w.h @@ -20,52 +20,49 @@ * */ +#ifndef STATICCONNECTION_HOM_W_H +#define STATICCONNECTION_HOM_W_H + +// Includes from nestkernel: +#include "common_properties_hom_w.h" +#include "connection.h" + +namespace nest +{ /** @BeginDocumentation - Name: static_synapse_hom_w - Synapse type for static connections with - homogeneous weight. +Name: static_synapse_hom_w - Synapse type for static connections with +homogeneous weight. - Description: - static_synapse_hom_w does not support any kind of plasticity. It simply - stores the parameters delay, target, and receiver port for each connection - and uses a common weight for all connections. +Description: - Remarks: - The common weight for all connections of this model must be set by - SetDefaults on the model. If you create copies of this model using - CopyModel, each derived model can have a different weight. +static_synapse_hom_w does not support any kind of plasticity. It simply +stores the parameters delay, target, and receiver port for each connection +and uses a common weight for all connections. - Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, - DataLoggingRequest, DoubleDataEvent +Remarks: - Parameters: - No Parameters +The common weight for all connections of this model must be set by +SetDefaults on the model. If you create copies of this model using +CopyModel, each derived model can have a different weight. - References: - No References +Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, +DataLoggingRequest, DoubleDataEvent - FirstVersion: April 2008 +Parameters: - Author: Susanne Kunkel, Moritz Helias +No Parameters - SeeAlso: synapsedict, static_synapse -*/ +References: -#ifndef STATICCONNECTION_HOM_W_H -#define STATICCONNECTION_HOM_W_H +No References -// Includes from nestkernel: -#include "common_properties_hom_w.h" -#include "connection.h" +FirstVersion: April 2008 -namespace nest -{ +Author: Susanne Kunkel, Moritz Helias -/** - * Class representing a static connection. A static connection has the - * properties weight, delay and receiver port. A suitable Connector containing - * these connections can be obtained from the template GenericConnector. - */ +SeeAlso: synapsedict, static_synapse +*/ template < typename targetidentifierT > class StaticConnectionHomW : public Connection< targetidentifierT > { diff --git a/models/stdp_connection.h b/models/stdp_connection.h index ea27a32c4d..400e8989f8 100644 --- a/models/stdp_connection.h +++ b/models/stdp_connection.h @@ -23,75 +23,77 @@ #ifndef STDP_CONNECTION_H #define STDP_CONNECTION_H -/** @BeginDocumentation - Name: stdp_synapse - Synapse type for spike-timing dependent - plasticity. +// C++ includes: +#include - Description: - stdp_synapse is a connector to create synapses with spike time - dependent plasticity (as defined in [1]). Here the weight dependence - exponent can be set separately for potentiation and depression. +// Includes from nestkernel: +#include "common_synapse_properties.h" +#include "connection.h" +#include "connector_model.h" +#include "event.h" - Examples: - multiplicative STDP [2] mu_plus = mu_minus = 1.0 - additive STDP [3] mu_plus = mu_minus = 0.0 - Guetig STDP [1] mu_plus = mu_minus = [0.0,1.0] - van Rossum STDP [4] mu_plus = 0.0 mu_minus = 1.0 +// Includes from sli: +#include "dictdatum.h" +#include "dictutils.h" - Parameters: - tau_plus double - Time constant of STDP window, potentiation in ms - (tau_minus defined in post-synaptic neuron) - lambda double - Step size - alpha double - Asymmetry parameter (scales depressing increments as - alpha*lambda) - mu_plus double - Weight dependence exponent, potentiation - mu_minus double - Weight dependence exponent, depression - Wmax double - Maximum allowed weight +namespace nest +{ - Transmits: SpikeEvent +/** @BeginDocumentation +Name: stdp_synapse - Synapse type for spike-timing dependent +plasticity. - References: - [1] Guetig et al. (2003) Learning Input Correlations through Nonlinear - Temporally Asymmetric Hebbian Plasticity. Journal of Neuroscience +Description: - [2] Rubin, J., Lee, D. and Sompolinsky, H. (2001). Equilibrium - properties of temporally asymmetric Hebbian plasticity, PRL - 86,364-367 +stdp_synapse is a connector to create synapses with spike time +dependent plasticity (as defined in [1]). Here the weight dependence +exponent can be set separately for potentiation and depression. - [3] Song, S., Miller, K. D. and Abbott, L. F. (2000). Competitive - Hebbian learning through spike-timing-dependent synaptic - plasticity,Nature Neuroscience 3:9,919--926 +Examples: - [4] van Rossum, M. C. W., Bi, G-Q and Turrigiano, G. G. (2000). - Stable Hebbian learning from spike timing-dependent - plasticity, Journal of Neuroscience, 20:23,8812--8821 +multiplicative STDP [2] mu_plus = mu_minus = 1.0 +additive STDP [3] mu_plus = mu_minus = 0.0 +Guetig STDP [1] mu_plus = mu_minus = [0.0,1.0] +van Rossum STDP [4] mu_plus = 0.0 mu_minus = 1.0 - FirstVersion: March 2006 +Parameters: - Author: Moritz Helias, Abigail Morrison +tau_plus double - Time constant of STDP window, potentiation in ms + (tau_minus defined in post-synaptic neuron) +lambda double - Step size +alpha double - Asymmetry parameter (scales depressing increments as + alpha*lambda) +mu_plus double - Weight dependence exponent, potentiation +mu_minus double - Weight dependence exponent, depression +Wmax double - Maximum allowed weight - Adapted by: Philipp Weidel +Transmits: SpikeEvent - SeeAlso: synapsedict, tsodyks_synapse, static_synapse -*/ +References: -// C++ includes: -#include +[1] Guetig et al. (2003) Learning Input Correlations through Nonlinear + Temporally Asymmetric Hebbian Plasticity. Journal of Neuroscience -// Includes from nestkernel: -#include "common_synapse_properties.h" -#include "connection.h" -#include "connector_model.h" -#include "event.h" +[2] Rubin, J., Lee, D. and Sompolinsky, H. (2001). Equilibrium + properties of temporally asymmetric Hebbian plasticity, PRL + 86,364-367 -// Includes from sli: -#include "dictdatum.h" -#include "dictutils.h" +[3] Song, S., Miller, K. D. and Abbott, L. F. (2000). Competitive + Hebbian learning through spike-timing-dependent synaptic + plasticity,Nature Neuroscience 3:9,919--926 +[4] van Rossum, M. C. W., Bi, G-Q and Turrigiano, G. G. (2000). + Stable Hebbian learning from spike timing-dependent + plasticity, Journal of Neuroscience, 20:23,8812--8821 -namespace nest -{ +FirstVersion: March 2006 +Author: Moritz Helias, Abigail Morrison + +Adapted by: Philipp Weidel + +SeeAlso: synapsedict, tsodyks_synapse, static_synapse +*/ // connections are templates of target identifier type (used for pointer / // target index addressing) derived from generic connection template template < typename targetidentifierT > diff --git a/models/stdp_connection_facetshw_hom.h b/models/stdp_connection_facetshw_hom.h index aec42eed0c..103b5cfd02 100644 --- a/models/stdp_connection_facetshw_hom.h +++ b/models/stdp_connection_facetshw_hom.h @@ -23,105 +23,6 @@ #ifndef STDP_CONNECTION_FACETSHW_HOM_H #define STDP_CONNECTION_FACETSHW_HOM_H -/** @BeginDocumentation - Name: stdp_facetshw_synapse_hom - Synapse type for spike-timing dependent - plasticity using homogeneous parameters, - i.e. all synapses have the same parameters. - - Description: - stdp_facetshw_synapse is a connector to create synapses with spike-timing - dependent plasticity (as defined in [1]). - This connector is a modified version of stdp_synapse. - It includes constraints of the hardware developed in the FACETS (BrainScaleS) - project [2,3], as e.g. 4-bit weight resolution, sequential updates of groups - of synapses and reduced symmetric nearest-neighbor spike pairing scheme. For - details see [3]. - The modified spike pairing scheme requires the calculation of tau_minus_ - within this synapse and not at the neuron site via Kplus_ like in - stdp_connection_hom. - - Parameters: - Common properties: - tau_plus double - Time constant of STDP window, causal branch in ms - tau_minus_stdp double - Time constant of STDP window, anti-causal branch - in ms - Wmax double - Maximum allowed weight - - no_synapses long - total number of synapses - synapses_per_driver long - number of synapses updated at once - driver_readout_time double - time for processing of one synapse row - (synapse line driver) - readout_cycle_duration double - duration between two subsequent - updates of same synapse (synapse line - driver) - lookuptable_0 vector - three look-up tables (LUT) - lookuptable_1 vector - lookuptable_2 vector - configbit_0 vector - configuration bits for evaluation - function. For details see code in - function eval_function_ and [4] - (configbit[0]=e_cc, ..[1]=e_ca, - ..[2]=e_ac, ..[3]=e_aa). - Depending on these two sets of - configuration bits weights are updated - according LUTs (out of three: (1,0), - (0,1), (1,1)). For (0,0) continue - without reset. - configbit_1 vector - reset_pattern vector - configuration bits for reset behavior. - Two bits for each LUT (reset causal - and acausal). In hardware only (all - false; never reset) or (all true; - always reset) is allowed. - - Individual properties: - a_causal double - causal and anti-causal spike pair accumulations - a_acausal double - a_thresh_th double - two thresholds used in evaluation function. - No common property, because variation of analog - synapse circuitry can be applied here - a_thresh_tl double - synapse_id long - synapse ID, used to assign synapses to groups (synapse - drivers) - - Remarks: - The synapse IDs are assigned to each synapse in an ascending order (0,1,2, - ...) according their first presynaptic activity and is used to group synapses - that are updated at once. It is possible to avoid activity dependent synapse - ID assignments by manually setting the no_synapses and the synapse_id(s) - before running the simulation. The weights will be discretized after the - first presynaptic activity at a synapse. - - Common properties can only be set on the synapse model using SetDefaults. - - Transmits: SpikeEvent - - References: - [1] Morrison, A., Diesmann, M., and Gerstner, W. (2008). - Phenomenological models of synaptic plasticity based on - spike-timing, Biol. Cybern., 98,459--478 - - [2] Schemmel, J., Gruebl, A., Meier, K., and Mueller, E. (2006). - Implementing synaptic plasticity in a VLSI spiking neural - network model, In Proceedings of the 2006 International - Joint Conference on Neural Networks, pp.1--6, IEEE Press - - [3] Pfeil, T., Potjans, T. C., Schrader, S., Potjans, W., Schemmel, J., - Diesmann, M., & Meier, K. (2012). - Is a 4-bit synaptic weight resolution enough? - - constraints on enabling spike-timing dependent plasticity in neuromorphic - hardware. Front. Neurosci. 6 (90). - - [4] Friedmann, S. in preparation - - - FirstVersion: July 2011 - - Author: Thomas Pfeil (TP), Moritz Helias, Abigail Morrison - - SeeAlso: stdp_synapse, synapsedict, tsodyks_synapse, static_synapse -*/ - // C++ includes: #include @@ -132,6 +33,108 @@ namespace nest { +/** @BeginDocumentation +Name: stdp_facetshw_synapse_hom - Synapse type for spike-timing dependent + plasticity using homogeneous parameters, + i.e. all synapses have the same parameters. + +Description: + +stdp_facetshw_synapse is a connector to create synapses with spike-timing +dependent plasticity (as defined in [1]). +This connector is a modified version of stdp_synapse. +It includes constraints of the hardware developed in the FACETS (BrainScaleS) +project [2,3], as e.g. 4-bit weight resolution, sequential updates of groups +of synapses and reduced symmetric nearest-neighbor spike pairing scheme. For +details see [3]. +The modified spike pairing scheme requires the calculation of tau_minus_ +within this synapse and not at the neuron site via Kplus_ like in +stdp_connection_hom. + +Parameters: + +Common properties: +tau_plus double - Time constant of STDP window, causal branch in ms +tau_minus_stdp double - Time constant of STDP window, anti-causal branch + in ms +Wmax double - Maximum allowed weight + +no_synapses long - total number of synapses +synapses_per_driver long - number of synapses updated at once +driver_readout_time double - time for processing of one synapse row + (synapse line driver) +readout_cycle_duration double - duration between two subsequent + updates of same synapse (synapse line + driver) +lookuptable_0 vector - three look-up tables (LUT) +lookuptable_1 vector +lookuptable_2 vector +configbit_0 vector - configuration bits for evaluation + function. For details see code in + function eval_function_ and [4] + (configbit[0]=e_cc, ..[1]=e_ca, + ..[2]=e_ac, ..[3]=e_aa). + Depending on these two sets of + configuration bits weights are updated + according LUTs (out of three: (1,0), + (0,1), (1,1)). For (0,0) continue + without reset. +configbit_1 vector +reset_pattern vector - configuration bits for reset behavior. + Two bits for each LUT (reset causal + and acausal). In hardware only (all + false; never reset) or (all true; + always reset) is allowed. + +Individual properties: +a_causal double - causal and anti-causal spike pair accumulations +a_acausal double +a_thresh_th double - two thresholds used in evaluation function. + No common property, because variation of analog + synapse circuitry can be applied here +a_thresh_tl double +synapse_id long - synapse ID, used to assign synapses to groups (synapse + drivers) + +Remarks: + +The synapse IDs are assigned to each synapse in an ascending order (0,1,2, +...) according their first presynaptic activity and is used to group synapses +that are updated at once. It is possible to avoid activity dependent synapse +ID assignments by manually setting the no_synapses and the synapse_id(s) +before running the simulation. The weights will be discretized after the +first presynaptic activity at a synapse. + +Common properties can only be set on the synapse model using SetDefaults. + +Transmits: SpikeEvent + +References: + +[1] Morrison, A., Diesmann, M., and Gerstner, W. (2008). + Phenomenological models of synaptic plasticity based on + spike-timing, Biol. Cybern., 98,459--478 + +[2] Schemmel, J., Gruebl, A., Meier, K., and Mueller, E. (2006). + Implementing synaptic plasticity in a VLSI spiking neural + network model, In Proceedings of the 2006 International + Joint Conference on Neural Networks, pp.1--6, IEEE Press + +[3] Pfeil, T., Potjans, T. C., Schrader, S., Potjans, W., Schemmel, J., + Diesmann, M., & Meier, K. (2012). + Is a 4-bit synaptic weight resolution enough? - + constraints on enabling spike-timing dependent plasticity in neuromorphic + hardware. Front. Neurosci. 6 (90). + +[4] Friedmann, S. in preparation + + +FirstVersion: July 2011 + +Author: Thomas Pfeil (TP), Moritz Helias, Abigail Morrison + +SeeAlso: stdp_synapse, synapsedict, tsodyks_synapse, static_synapse +*/ // template class forward declaration required by common properties friend // definition template < typename targetidentifierT > diff --git a/models/stdp_connection_hom.h b/models/stdp_connection_hom.h index 66d3c42ac5..9259eb6c4d 100644 --- a/models/stdp_connection_hom.h +++ b/models/stdp_connection_hom.h @@ -23,72 +23,76 @@ #ifndef STDP_CONNECTION_HOM_H #define STDP_CONNECTION_HOM_H +// C++ includes: +#include + +// Includes from nestkernel: +#include "connection.h" + +namespace nest +{ + /** @BeginDocumentation - Name: stdp_synapse_hom - Synapse type for spike-timing dependent - plasticity using homogeneous parameters. +Name: stdp_synapse_hom - Synapse type for spike-timing dependent +plasticity using homogeneous parameters. - Description: - stdp_synapse_hom is a connector to create synapses with spike time - dependent plasticity (as defined in [1]). Here the weight dependence - exponent can be set separately for potentiation and depression. +Description: - Parameters controlling plasticity are identical for all synapses of the - model, reducing the memory required per synapse considerably. +stdp_synapse_hom is a connector to create synapses with spike time +dependent plasticity (as defined in [1]). Here the weight dependence +exponent can be set separately for potentiation and depression. - Examples: - multiplicative STDP [2] mu_plus = mu_minus = 1.0 - additive STDP [3] mu_plus = mu_minus = 0.0 - Guetig STDP [1] mu_plus = mu_minus = [0.0,1.0] - van Rossum STDP [4] mu_plus = 0.0 mu_minus = 1.0 + Parameters controlling plasticity are identical for all synapses of the + model, reducing the memory required per synapse considerably. - Parameters: - tau_plus double - Time constant of STDP window, potentiation in ms - (tau_minus defined in post-synaptic neuron) - lambda double - Step size - alpha double - Asymmetry parameter (scales depressing increments as - alpha*lambda) - mu_plus double - Weight dependence exponent, potentiation - mu_minus double - Weight dependence exponent, depression - Wmax double - Maximum allowed weight +Examples: - Remarks: - The parameters are common to all synapses of the model and must be set using - SetDefaults on the synapse model. +multiplicative STDP [2] mu_plus = mu_minus = 1.0 +additive STDP [3] mu_plus = mu_minus = 0.0 +Guetig STDP [1] mu_plus = mu_minus = [0.0,1.0] +van Rossum STDP [4] mu_plus = 0.0 mu_minus = 1.0 - Transmits: SpikeEvent +Parameters: - References: - [1] Guetig et al. (2003) Learning Input Correlations through Nonlinear - Temporally Asymmetric Hebbian Plasticity. Journal of Neuroscience +tau_plus double - Time constant of STDP window, potentiation in ms + (tau_minus defined in post-synaptic neuron) +lambda double - Step size +alpha double - Asymmetry parameter (scales depressing increments as + alpha*lambda) +mu_plus double - Weight dependence exponent, potentiation +mu_minus double - Weight dependence exponent, depression +Wmax double - Maximum allowed weight - [2] Rubin, J., Lee, D. and Sompolinsky, H. (2001). Equilibrium - properties of temporally asymmetric Hebbian plasticity, PRL - 86,364-367 +Remarks: - [3] Song, S., Miller, K. D. and Abbott, L. F. (2000). Competitive - Hebbian learning through spike-timing-dependent synaptic - plasticity,Nature Neuroscience 3:9,919--926 +The parameters are common to all synapses of the model and must be set using +SetDefaults on the synapse model. - [4] van Rossum, M. C. W., Bi, G-Q and Turrigiano, G. G. (2000). - Stable Hebbian learning from spike timing-dependent - plasticity, Journal of Neuroscience, 20:23,8812--8821 +Transmits: SpikeEvent - FirstVersion: March 2006 +References: - Author: Moritz Helias, Abigail Morrison +[1] Guetig et al. (2003) Learning Input Correlations through Nonlinear + Temporally Asymmetric Hebbian Plasticity. Journal of Neuroscience - SeeAlso: synapsedict, tsodyks_synapse, static_synapse -*/ +[2] Rubin, J., Lee, D. and Sompolinsky, H. (2001). Equilibrium + properties of temporally asymmetric Hebbian plasticity, PRL + 86,364-367 -// C++ includes: -#include +[3] Song, S., Miller, K. D. and Abbott, L. F. (2000). Competitive + Hebbian learning through spike-timing-dependent synaptic + plasticity,Nature Neuroscience 3:9,919--926 -// Includes from nestkernel: -#include "connection.h" +[4] van Rossum, M. C. W., Bi, G-Q and Turrigiano, G. G. (2000). + Stable Hebbian learning from spike timing-dependent + plasticity, Journal of Neuroscience, 20:23,8812--8821 -namespace nest -{ +FirstVersion: March 2006 +Author: Moritz Helias, Abigail Morrison + +SeeAlso: synapsedict, tsodyks_synapse, static_synapse +*/ /** * Class containing the common properties for all synapses of type * STDPConnectionHom. diff --git a/models/stdp_dopa_connection.h b/models/stdp_dopa_connection.h index b86ad699cc..dcdcb30129 100644 --- a/models/stdp_dopa_connection.h +++ b/models/stdp_dopa_connection.h @@ -23,73 +23,6 @@ #ifndef STDP_DOPA_CONNECTION_H #define STDP_DOPA_CONNECTION_H -/** @BeginDocumentation - - Name: stdp_dopamine_synapse - Synapse type for dopamine-modulated - spike-timing dependent plasticity. - - Description: - stdp_dopamine_synapse is a connection to create synapses with - dopamine-modulated spike-timing dependent plasticity (used as a - benchmark model in [1], based on [2]). The dopaminergic signal is a - low-pass filtered version of the spike rate of a user-specific pool - of neurons. The spikes emitted by the pool of dopamine neurons are - delivered to the synapse via the assigned volume transmitter. The - dopaminergic dynamics is calculated in the synapse itself. - - Examples: - /volume_transmitter Create /vol Set - /iaf_psc_alpha Create /pre_neuron Set - /iaf_psc_alpha Create /post_neuron Set - /iaf_psc_alpha Create /neuromod_neuron Set - /stdp_dopamine_synapse << /vt vol >> SetDefaults - neuromod_neuron vol Connect - pre_neuron post_neuron /stdp_dopamine_synapse Connect - - Parameters: - Common properties: - vt long - ID of volume_transmitter collecting the spikes - from the pool of dopamine releasing neurons and - transmitting the spikes to the synapse. A value of - -1 indicates that no volume transmitter has been - assigned. - A_plus double - Amplitude of weight change for facilitation - A_minus double - Amplitude of weight change for depression - tau_plus double - STDP time constant for facilitation in ms - tau_c double - Time constant of eligibility trace in ms - tau_n double - Time constant of dopaminergic trace in ms - b double - Dopaminergic baseline concentration - Wmin double - Minimal synaptic weight - Wmax double - Maximal synaptic weight - - Individual properties: - c double - eligibility trace - n double - neuromodulator concentration - - Remarks: - The common properties can only be set by SetDefaults and apply to all - synapses of the model. - - References: - [1] Potjans W, Morrison A and Diesmann M (2010). Enabling - functional neural circuit simulations with distributed - computing of neuromodulated plasticity. - Front. Comput. Neurosci. 4:141. doi:10.3389/fncom.2010.00141 - [2] Izhikevich, E.M. (2007). Solving the distal reward problem - through linkage of STDP and dopamine signaling. Cereb. Cortex, - 17(10), 2443-2452. - - Transmits: SpikeEvent - - Author: Susanne Kunkel - - Remarks: - - based on an earlier version by Wiebke Potjans - - major changes to code after code revision in Apr 2013 - - SeeAlso: volume_transmitter -*/ - // Includes from libnestutil: #include "numerics.h" @@ -103,6 +36,75 @@ namespace nest { +/** @BeginDocumentation +Name: stdp_dopamine_synapse - Synapse type for dopamine-modulated + spike-timing dependent plasticity. + +Description: + +stdp_dopamine_synapse is a connection to create synapses with +dopamine-modulated spike-timing dependent plasticity (used as a +benchmark model in [1], based on [2]). The dopaminergic signal is a +low-pass filtered version of the spike rate of a user-specific pool +of neurons. The spikes emitted by the pool of dopamine neurons are +delivered to the synapse via the assigned volume transmitter. The +dopaminergic dynamics is calculated in the synapse itself. + +Examples: + +/volume_transmitter Create /vol Set +/iaf_psc_alpha Create /pre_neuron Set +/iaf_psc_alpha Create /post_neuron Set +/iaf_psc_alpha Create /neuromod_neuron Set +/stdp_dopamine_synapse << /vt vol >> SetDefaults +neuromod_neuron vol Connect +pre_neuron post_neuron /stdp_dopamine_synapse Connect + +Parameters: + +Common properties: + vt long - ID of volume_transmitter collecting the spikes + from the pool of dopamine releasing neurons and + transmitting the spikes to the synapse. A value of + -1 indicates that no volume transmitter has been + assigned. + A_plus double - Amplitude of weight change for facilitation + A_minus double - Amplitude of weight change for depression + tau_plus double - STDP time constant for facilitation in ms + tau_c double - Time constant of eligibility trace in ms + tau_n double - Time constant of dopaminergic trace in ms + b double - Dopaminergic baseline concentration + Wmin double - Minimal synaptic weight + Wmax double - Maximal synaptic weight + +Individual properties: + c double - eligibility trace + n double - neuromodulator concentration + +Remarks: +The common properties can only be set by SetDefaults and apply to all +synapses of the model. + +References: + +[1] Potjans W, Morrison A and Diesmann M (2010). Enabling + functional neural circuit simulations with distributed + computing of neuromodulated plasticity. + Front. Comput. Neurosci. 4:141. doi:10.3389/fncom.2010.00141 +[2] Izhikevich, E.M. (2007). Solving the distal reward problem + through linkage of STDP and dopamine signaling. Cereb. Cortex, + 17(10), 2443-2452. + +Transmits: SpikeEvent + +Author: Susanne Kunkel + +Remarks: +- based on an earlier version by Wiebke Potjans +- major changes to code after code revision in Apr 2013 + +SeeAlso: volume_transmitter +*/ /** * Class containing the common properties for all synapses of type dopamine * connection. diff --git a/models/stdp_pl_connection_hom.h b/models/stdp_pl_connection_hom.h index e93acdec1d..06c6359f40 100644 --- a/models/stdp_pl_connection_hom.h +++ b/models/stdp_pl_connection_hom.h @@ -23,50 +23,52 @@ #ifndef STDP_PL_CONNECTION_HOM_H #define STDP_PL_CONNECTION_HOM_H -/** @BeginDocumentation - Name: stdp_pl_synapse_hom - Synapse type for spike-timing dependent - plasticity with power law implementation using homogeneous parameters, i.e. - all synapses have the same parameters. +// C++ includes: +#include - Description: - stdp_pl_synapse is a connector to create synapses with spike time - dependent plasticity (as defined in [1]). +// Includes from nestkernel: +#include "connection.h" +namespace nest +{ - Parameters: - tau_plus double - Time constant of STDP window, potentiation in ms - (tau_minus defined in post-synaptic neuron) - lambda double - Learning rate - alpha double - Asymmetry parameter (scales depressing increments as - alpha*lambda) - mu double - Weight dependence exponent, potentiation +/** @BeginDocumentation +Name: stdp_pl_synapse_hom - Synapse type for spike-timing dependent +plasticity with power law implementation using homogeneous parameters, i.e. +all synapses have the same parameters. - Remarks: - The parameters can only be set by SetDefaults and apply to all synapses of - the model. +Description: - References: - [1] Morrison et al. (2007) Spike-timing dependent plasticity in balanced - random networks. Neural Computation. +stdp_pl_synapse is a connector to create synapses with spike time +dependent plasticity (as defined in [1]). - Transmits: SpikeEvent - FirstVersion: May 2007 +Parameters: - Author: Abigail Morrison +tau_plus double - Time constant of STDP window, potentiation in ms + (tau_minus defined in post-synaptic neuron) +lambda double - Learning rate +alpha double - Asymmetry parameter (scales depressing increments as + alpha*lambda) +mu double - Weight dependence exponent, potentiation - SeeAlso: synapsedict, stdp_synapse, tsodyks_synapse, static_synapse -*/ +Remarks: -// C++ includes: -#include +The parameters can only be set by SetDefaults and apply to all synapses of +the model. -// Includes from nestkernel: -#include "connection.h" +References: +[1] Morrison et al. (2007) Spike-timing dependent plasticity in balanced + random networks. Neural Computation. -namespace nest -{ +Transmits: SpikeEvent + +FirstVersion: May 2007 +Author: Abigail Morrison + +SeeAlso: synapsedict, stdp_synapse, tsodyks_synapse, static_synapse +*/ /** * Class containing the common properties for all synapses of type * STDPConnectionHom. diff --git a/models/stdp_triplet_connection.h b/models/stdp_triplet_connection.h index 4b560c8d67..fa71dabbac 100644 --- a/models/stdp_triplet_connection.h +++ b/models/stdp_triplet_connection.h @@ -23,71 +23,74 @@ #ifndef STDP_TRIPLET_CONNECTION_H #define STDP_TRIPLET_CONNECTION_H -/** @BeginDocumentation - Name: stdp_triplet_synapse - Synapse type with spike-timing dependent - plasticity (triplets). - - Description: - stdp_triplet_synapse is a connection with spike time dependent - plasticity accounting for spike triplet effects (as defined in [1]). - - STDP examples: - pair-based Aplus_triplet = Aminus_triplet = 0.0 - triplet Aplus_triplet = Aminus_triplet = 1.0 - - Parameters: - tau_plus double - time constant of short presynaptic trace - - (tau_plus of [1]) - tau_plus_triplet double - time constant of long presynaptic trace - - (tau_x of [1]) - Aplus double - weight of pair potentiation rule - - (A_plus_2 of [1]) - Aplus_triplet double - weight of triplet potentiation rule - - (A_plus_3 of [1]) - Aminus double - weight of pair depression rule - (A_minus_2 of [1]) - Aminus_triplet double - weight of triplet depression rule - - (A_minus_3 of [1]) - Wmax double - maximum allowed weight - - States: - Kplus double: pre-synaptic trace (r_1 of [1]) - Kplus_triplet double: triplet pre-synaptic trace (r_2 of [1]) - - Transmits: SpikeEvent - - References: - [1] J.-P. Pfister & W. Gerstner (2006) Triplets of Spikes in a Model - of Spike Timing-Dependent Plasticity. The Journal of Neuroscience - 26(38):9673-9682; doi:10.1523/JNEUROSCI.1425-06.2006 - - Notes: - - Presynaptic traces r_1 and r_2 of [1] are stored in the connection as - Kplus and Kplus_triplet and decay with time-constants tau_plus and - tau_plus_triplet, respectively. - - Postsynaptic traces o_1 and o_2 of [1] are acquired from the post-synaptic - neuron states Kminus_ and triplet_Kminus_ which decay on time-constants - tau_minus and tau_minus_triplet, respectively. These two time-constants - can be set as properties of the postsynaptic neuron. - - This version implements the 'all-to-all' spike interaction of [1]. The - 'nearest-spike' interaction of [1] can currently not be implemented - without changing the postsynaptic archiving-node (clip the traces to a - maximum of 1). - - FirstVersion: Nov 2007 - - Author: Abigail Morrison, Eilif Muller, Alexander Seeholzer, Teo Stocco - Adapted by: Philipp Weidel - - SeeAlso: stdp_triplet_synapse_hpc, synapsedict, stdp_synapse, static_synapse -*/ - // C-header for math.h since copysign() is in C99 but not C++98 #include #include "connection.h" namespace nest { + +/** @BeginDocumentation +Name: stdp_triplet_synapse - Synapse type with spike-timing dependent + plasticity (triplets). + +Description: + +stdp_triplet_synapse is a connection with spike time dependent +plasticity accounting for spike triplet effects (as defined in [1]). + +STDP examples: + pair-based Aplus_triplet = Aminus_triplet = 0.0 + triplet Aplus_triplet = Aminus_triplet = 1.0 + +Parameters: + +tau_plus double - time constant of short presynaptic trace + - (tau_plus of [1]) +tau_plus_triplet double - time constant of long presynaptic trace + - (tau_x of [1]) +Aplus double - weight of pair potentiation rule + - (A_plus_2 of [1]) +Aplus_triplet double - weight of triplet potentiation rule + - (A_plus_3 of [1]) +Aminus double - weight of pair depression rule + (A_minus_2 of [1]) +Aminus_triplet double - weight of triplet depression rule + - (A_minus_3 of [1]) +Wmax double - maximum allowed weight + +States: + Kplus double: pre-synaptic trace (r_1 of [1]) + Kplus_triplet double: triplet pre-synaptic trace (r_2 of [1]) + +Transmits: SpikeEvent + +References: + +[1] J.-P. Pfister & W. Gerstner (2006) Triplets of Spikes in a Model + of Spike Timing-Dependent Plasticity. The Journal of Neuroscience + 26(38):9673-9682; doi:10.1523/JNEUROSCI.1425-06.2006 + +Notes: +- Presynaptic traces r_1 and r_2 of [1] are stored in the connection as + Kplus and Kplus_triplet and decay with time-constants tau_plus and + tau_plus_triplet, respectively. +- Postsynaptic traces o_1 and o_2 of [1] are acquired from the post-synaptic + neuron states Kminus_ and triplet_Kminus_ which decay on time-constants + tau_minus and tau_minus_triplet, respectively. These two time-constants + can be set as properties of the postsynaptic neuron. +- This version implements the 'all-to-all' spike interaction of [1]. The + 'nearest-spike' interaction of [1] can currently not be implemented + without changing the postsynaptic archiving-node (clip the traces to a + maximum of 1). + +FirstVersion: Nov 2007 + +Author: Abigail Morrison, Eilif Muller, Alexander Seeholzer, Teo Stocco +Adapted by: Philipp Weidel + +SeeAlso: stdp_triplet_synapse_hpc, synapsedict, stdp_synapse, static_synapse +*/ // connections are templates of target identifier type // (used for pointer / target index addressing) // derived from generic connection template diff --git a/models/step_current_generator.h b/models/step_current_generator.h index 547b54a611..acb7a125f1 100644 --- a/models/step_current_generator.h +++ b/models/step_current_generator.h @@ -21,48 +21,6 @@ */ -/** @BeginDocumentation - Name: step_current_generator - provides a piecewise constant DC input current - - Description: - The dc_generator provides a piecewise constant DC input to the - connected node(s). The amplitude of the current is changed at the - specified times. The unit of the current is pA. - - Parameters: - The following parameters can be set in the status dictionary: - amplitude_times list of doubles - Times at which current changes in ms - amplitude_values list of doubles - Amplitudes of step current current in - pA - allow_offgrid_times bool - Default false - If false, times will be rounded to the nearest step if they are - less than tic/2 from the step, otherwise NEST reports an error. - If true, times are rounded to the nearest step if within tic/2 - from the step, otherwise they are rounded up to the *end* of the - step. - - Note: - Times of amplitude changes must be strictly increasing after conversion - to simulation time steps. The option allow_offgrid_times may be - useful, e.g., if you are using randomized times for current changes - which typically would not fall onto simulation time steps. - - Examples: - The current can be altered in the following way: - /step_current_generator Create /sc Set - sc << /amplitude_times [0.2 0.5] /amplitude_values [2.0 4.0] >> SetStatus - - The amplitude of the DC will be 0.0 pA in the time interval [0, 0.2), - 2.0 pA in the interval [0.2, 0.5) and 4.0 from then on. - - Sends: CurrentEvent - - Author: Jochen Martin Eppler, Jens Kremkow - - SeeAlso: ac_generator, dc_generator, step_current_generator, Device, - StimulatingDevice -*/ - #ifndef STEP_CURRENT_GENERATOR_H #define STEP_CURRENT_GENERATOR_H @@ -80,6 +38,52 @@ namespace nest { + +/** @BeginDocumentation +Name: step_current_generator - provides a piecewise constant DC input current + +Description: + +The dc_generator provides a piecewise constant DC input to the +connected node(s). The amplitude of the current is changed at the +specified times. The unit of the current is pA. + +Parameters: + +The following parameters can be set in the status dictionary: +amplitude_times list of doubles - Times at which current changes in ms +amplitude_values list of doubles - Amplitudes of step current current in + pA +allow_offgrid_times bool - Default false + If false, times will be rounded to the nearest step if they are + less than tic/2 from the step, otherwise NEST reports an error. + If true, times are rounded to the nearest step if within tic/2 + from the step, otherwise they are rounded up to the *end* of the + step. + +Note: + +Times of amplitude changes must be strictly increasing after conversion +to simulation time steps. The option allow_offgrid_times may be +useful, e.g., if you are using randomized times for current changes +which typically would not fall onto simulation time steps. + +Examples: + +The current can be altered in the following way: +/step_current_generator Create /sc Set +sc << /amplitude_times [0.2 0.5] /amplitude_values [2.0 4.0] >> SetStatus + +The amplitude of the DC will be 0.0 pA in the time interval [0, 0.2), +2.0 pA in the interval [0.2, 0.5) and 4.0 from then on. + +Sends: CurrentEvent + +Author: Jochen Martin Eppler, Jens Kremkow + +SeeAlso: ac_generator, dc_generator, step_current_generator, Device, +StimulatingDevice +*/ class step_current_generator : public DeviceNode { diff --git a/models/tanh_rate.h b/models/tanh_rate.h index 80ceb5d90e..e6fb5de9e8 100644 --- a/models/tanh_rate.h +++ b/models/tanh_rate.h @@ -31,37 +31,38 @@ #include "rate_transformer_node.h" #include "rate_transformer_node_impl.h" - namespace nest { + /** @BeginDocumentation Name: tanh_rate - rate model with hyperbolic tangent non-linearity Description: - tanh_rate is an implementation of a nonlinear rate model with input function - input(h) = tanh(g * (h-theta)). - Input transformation can either be applied to individual inputs - or to the sum of all inputs. +tanh_rate is an implementation of a nonlinear rate model with input function +input(h) = tanh(g * (h-theta)). +Input transformation can either be applied to individual inputs +or to the sum of all inputs. - The model supports connections to other rate models with either zero or - non-zero delay, and uses the secondary_event concept introduced with - the gap-junction framework. +The model supports connections to other rate models with either zero or +non-zero delay, and uses the secondary_event concept introduced with +the gap-junction framework. Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - rate double - Rate (unitless) - tau double - Time constant of rate dynamics in ms. - mean double - Mean of Gaussian white noise. - std double - Standard deviation of Gaussian white noise. - g double - Gain parameter - theta double - Inflection point - linear_summation bool - Specifies type of non-linearity (see above) - rectify_output bool - Switch to restrict rate to values >= 0 +rate double - Rate (unitless) +tau double - Time constant of rate dynamics in ms. +mean double - Mean of Gaussian white noise. +std double - Standard deviation of Gaussian white noise. +g double - Gain parameter +theta double - Inflection point +linear_summation bool - Specifies type of non-linearity (see above) +rectify_output bool - Switch to restrict rate to values >= 0 Note: + The boolean parameter linear_summation determines whether the input from different presynaptic neurons is first summed linearly and then transformed by a nonlinearity (true), or if the input from @@ -70,13 +71,13 @@ then summed up (false). Default is true. References: - [1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., +[1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., Bolten, M., Helias, M. and Diesmann, M. (2017). Integration of Continuous-Time Dynamics in a Spiking Neural Network Simulator. Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 - [2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., +[2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., Bolten, M., Frommer, A. and Diesmann, M. (2015). A unified framework for spiking and gap-junction interactions in distributed neuronal network simulations. @@ -91,7 +92,6 @@ Author: David Dahmen, Jan Hahne, Jannis Schuecker SeeAlso: rate_connection_instantaneous, rate_connection_delayed */ - class nonlinearities_tanh_rate { private: diff --git a/models/threshold_lin_rate.h b/models/threshold_lin_rate.h index c12726b388..f4446e7166 100644 --- a/models/threshold_lin_rate.h +++ b/models/threshold_lin_rate.h @@ -34,36 +34,36 @@ #include "rate_transformer_node.h" #include "rate_transformer_node_impl.h" - namespace nest { + /** @BeginDocumentation Name: threshold_lin_rate - rate model with threshold-linear gain function Description: - threshold_lin_rate is an implementation of a nonlinear rate model with input - function input(h) = min( max( g * ( h - theta ), 0 ), alpha ). - Input transformation can either be applied to individual inputs - or to the sum of all inputs. +threshold_lin_rate is an implementation of a nonlinear rate model with input +function input(h) = min( max( g * ( h - theta ), 0 ), alpha ). +Input transformation can either be applied to individual inputs +or to the sum of all inputs. - The model supports connections to other rate models with either zero or - non-zero delay, and uses the secondary_event concept introduced with - the gap-junction framework. +The model supports connections to other rate models with either zero or +non-zero delay, and uses the secondary_event concept introduced with +the gap-junction framework. Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - rate double - Rate (unitless) - tau double - Time constant of rate dynamics in ms. - mean double - Mean of Gaussian white noise. - std double - Standard deviation of Gaussian white noise. - g double - Gain parameter - theta double - First Threshold - alpha double - Second Threshold - linear_summation bool - Specifies type of non-linearity (see above) - rectify_output bool - Switch to restrict rate to values >= 0 +rate double - Rate (unitless) +tau double - Time constant of rate dynamics in ms. +mean double - Mean of Gaussian white noise. +std double - Standard deviation of Gaussian white noise. +g double - Gain parameter +theta double - First Threshold +alpha double - Second Threshold +linear_summation bool - Specifies type of non-linearity (see above) +rectify_output bool - Switch to restrict rate to values >= 0 Note: The boolean parameter linear_summation determines whether the @@ -74,13 +74,13 @@ then summed up (false). Default is true. References: - [1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., +[1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., Bolten, M., Helias, M. and Diesmann, M. (2017). Integration of Continuous-Time Dynamics in a Spiking Neural Network Simulator. Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 - [2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., +[2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., Bolten, M., Frommer, A. and Diesmann, M. (2015). A unified framework for spiking and gap-junction interactions in distributed neuronal network simulations. diff --git a/models/tsodyks2_connection.h b/models/tsodyks2_connection.h index d2b15750bc..6fdaacd381 100644 --- a/models/tsodyks2_connection.h +++ b/models/tsodyks2_connection.h @@ -23,77 +23,71 @@ #ifndef TSODYKS2_CONNECTION_H #define TSODYKS2_CONNECTION_H +// C++ includes: +#include -/** @BeginDocumentation - Name: tsodyks2_synapse - Synapse type with short term plasticity. +// Includes from nestkernel: +#include "connection.h" - Description: - This synapse model implements synaptic short-term depression and short-term - facilitation according to [1] and [2]. It solves Eq (2) from [1] and - modulates U according to eq. (2) of [2]. +namespace nest +{ - This connection merely scales the synaptic weight, based on the spike history - and the parameters of the kinetic model. Thus, it is suitable for all types - of synaptic dynamics, that is current or conductance based. +/** @BeginDocumentation +Name: tsodyks2_synapse - Synapse type with short term plasticity. - The parameter A_se from the publications is represented by the - synaptic weight. The variable x in the synapse properties is the - factor that scales the synaptic weight. +Description: - Parameters: - The following parameters can be set in the status dictionary: - U double - probability of release increment (U1) [0,1], - default=0.5 - u double - Maximum probability of release (U_se) [0,1], - default=0.5 - x double - current scaling factor of the weight, default=U - tau_rec double - time constant for depression in ms, default=800 ms - tau_fac double - time constant for facilitation in ms, default=0 (off) +This synapse model implements synaptic short-term depression and short-term +facilitation according to [1] and [2]. It solves Eq (2) from [1] and +modulates U according to eq. (2) of [2]. - Remarks: +This connection merely scales the synaptic weight, based on the spike history +and the parameters of the kinetic model. Thus, it is suitable for all types +of synaptic dynamics, that is current or conductance based. - Under identical conditions, the tsodyks2_synapse produces - slightly lower peak amplitudes than the tsodyks_synapse. However, - the qualitative behavior is identical. The script - test_tsodyks2_synapse.py in the examples compares the two synapse - models. +The parameter A_se from the publications is represented by the +synaptic weight. The variable x in the synapse properties is the +factor that scales the synaptic weight. +Parameters: - References: - [1] Tsodyks, M. V., & Markram, H. (1997). The neural code between neocortical - pyramidal neurons depends on neurotransmitter release probability. - PNAS, 94(2), 719-23. - [2] Fuhrmann, G., Segev, I., Markram, H., & Tsodyks, M. V. (2002). Coding of - temporal information by activity-dependent synapses. Journal of - neurophysiology, 87(1), 140-8. - [3] Maass, W., & Markram, H. (2002). Synapses as dynamic memory buffers. - Neural networks, 15(2), 155-61. +The following parameters can be set in the status dictionary: +U double - probability of release increment (U1) [0,1], + default=0.5 +u double - Maximum probability of release (U_se) [0,1], + default=0.5 +x double - current scaling factor of the weight, default=U +tau_rec double - time constant for depression in ms, default=800 ms +tau_fac double - time constant for facilitation in ms, default=0 (off) - Transmits: SpikeEvent +Remarks: - FirstVersion: October 2011 +Under identical conditions, the tsodyks2_synapse produces +slightly lower peak amplitudes than the tsodyks_synapse. However, +the qualitative behavior is identical. The script +test_tsodyks2_synapse.py in the examples compares the two synapse +models. - Author: Marc-Oliver Gewaltig, based on tsodyks_synapse by Moritz Helias - SeeAlso: tsodyks_synapse, synapsedict, stdp_synapse, static_synapse -*/ +References: +[1] Tsodyks, M. V., & Markram, H. (1997). The neural code between neocortical + pyramidal neurons depends on neurotransmitter release probability. + PNAS, 94(2), 719-23. +[2] Fuhrmann, G., Segev, I., Markram, H., & Tsodyks, M. V. (2002). Coding of + temporal information by activity-dependent synapses. Journal of + neurophysiology, 87(1), 140-8. +[3] Maass, W., & Markram, H. (2002). Synapses as dynamic memory buffers. + Neural networks, 15(2), 155-61. -/** - * Class representing a synapse with Tsodyks short term plasticity, based on the - * iterative formula. A suitable Connector containing these connections can be - * obtained from the template GenericConnector. - */ +Transmits: SpikeEvent -// C++ includes: -#include +FirstVersion: October 2011 -// Includes from nestkernel: -#include "connection.h" - -namespace nest -{ +Author: Marc-Oliver Gewaltig, based on tsodyks_synapse by Moritz Helias +SeeAlso: tsodyks_synapse, synapsedict, stdp_synapse, static_synapse +*/ template < typename targetidentifierT > class Tsodyks2Connection : public Connection< targetidentifierT > { diff --git a/models/tsodyks_connection.h b/models/tsodyks_connection.h index 9adf2e4efe..9ffa5bc242 100644 --- a/models/tsodyks_connection.h +++ b/models/tsodyks_connection.h @@ -24,84 +24,6 @@ #define TSODYKS_CONNECTION_H -/** @BeginDocumentation - Name: tsodyks_synapse - Synapse type with short term plasticity. - - Description: - This synapse model implements synaptic short-term depression and short-term - facilitation according to [1]. In particular it solves Eqs (3) and (4) from - this paper in an exact manner. - - Synaptic depression is motivated by depletion of vesicles in the readily - releasable pool of synaptic vesicles (variable x in equation (3)). Synaptic - facilitation comes about by a presynaptic increase of release probability, - which is modeled by variable U in Eq (4). - The original interpretation of variable y is the amount of glutamate - concentration in the synaptic cleft. In [1] this variable is taken to be - directly proportional to the synaptic current caused in the postsynaptic - neuron (with the synaptic weight w as a proportionality constant). In order - to reproduce the results of [1] and to use this model of synaptic plasticity - in its original sense, the user therefore has to ensure the following - conditions: - - 1.) The postsynaptic neuron must be of type iaf_psc_exp or iaf_tum_2000, - because these neuron models have a postsynaptic current which decays - exponentially. - - 2.) The time constant of each tsodyks_synapse targeting a particular neuron - must be chosen equal to that neuron's synaptic time constant. In particular - that means that all synapses targeting a particular neuron have the same - parameter tau_psc. - - However, there are no technical restrictions using this model of synaptic - plasticity also in conjunction with neuron models that have a different - dynamics for their synaptic current or conductance. The effective synaptic - weight, which will be transmitted to the postsynaptic neuron upon occurrence - of a spike at time t is u(t)*x(t)*w, where u(t) and x(t) are defined in - Eq (3) and (4), w is the synaptic weight specified upon connection. - The interpretation is as follows: The quantity u(t)*x(t) is the release - probability times the amount of releasable synaptic vesicles at time t of the - presynaptic neuron's spike, so this equals the amount of transmitter expelled - into the synaptic cleft. - The amount of transmitter than relaxes back to 0 with time constant tau_psc - of the synapse's variable y. Since the dynamics of y(t) is linear, the - postsynaptic neuron can reconstruct from the amplitude of the synaptic - impulse u(t)*x(t)*w the full shape of y(t). The postsynaptic neuron, however, - might choose to have a synaptic current that is not necessarily identical to - the concentration of transmitter y(t) in the synaptic cleft. It may realize - an arbitrary postsynaptic effect depending on y(t). - - Parameters: - The following parameters can be set in the status dictionary: - U double - maximum probability of release [0,1] - tau_psc double - time constant of synaptic current in ms - tau_fac double - time constant for facilitation in ms - tau_rec double - time constant for depression in ms - x double - initial fraction of synaptic vesicles in the readily - releasable pool [0,1] - y double - initial fraction of synaptic vesicles in the synaptic - cleft [0,1] - - References: - [1] Tsodyks, Uziel, Markram (2000) Synchrony Generation in Recurrent Networks - with Frequency-Dependent Synapses. Journal of Neuroscience, vol 20 RC50 - - Transmits: SpikeEvent - - FirstVersion: March 2006 - - Author: Moritz Helias - - SeeAlso: synapsedict, stdp_synapse, static_synapse, iaf_psc_exp, iaf_tum_2000 -*/ - - -/** - * Class representing a synapse with Tsodyks short term plasticity. - * A suitable Connector containing these connections can be obtained from the - * template GenericConnector. - */ - // C++ includes: #include @@ -111,6 +33,79 @@ namespace nest { +/** @BeginDocumentation +Name: tsodyks_synapse - Synapse type with short term plasticity. + +Description: + +This synapse model implements synaptic short-term depression and short-term +facilitation according to [1]. In particular it solves Eqs (3) and (4) from +this paper in an exact manner. + +Synaptic depression is motivated by depletion of vesicles in the readily +releasable pool of synaptic vesicles (variable x in equation (3)). Synaptic +facilitation comes about by a presynaptic increase of release probability, +which is modeled by variable U in Eq (4). +The original interpretation of variable y is the amount of glutamate +concentration in the synaptic cleft. In [1] this variable is taken to be +directly proportional to the synaptic current caused in the postsynaptic +neuron (with the synaptic weight w as a proportionality constant). In order +to reproduce the results of [1] and to use this model of synaptic plasticity +in its original sense, the user therefore has to ensure the following +conditions: + +1.) The postsynaptic neuron must be of type iaf_psc_exp or iaf_tum_2000, +because these neuron models have a postsynaptic current which decays +exponentially. + +2.) The time constant of each tsodyks_synapse targeting a particular neuron +must be chosen equal to that neuron's synaptic time constant. In particular +that means that all synapses targeting a particular neuron have the same +parameter tau_psc. + +However, there are no technical restrictions using this model of synaptic +plasticity also in conjunction with neuron models that have a different +dynamics for their synaptic current or conductance. The effective synaptic +weight, which will be transmitted to the postsynaptic neuron upon occurrence +of a spike at time t is u(t)*x(t)*w, where u(t) and x(t) are defined in +Eq (3) and (4), w is the synaptic weight specified upon connection. +The interpretation is as follows: The quantity u(t)*x(t) is the release +probability times the amount of releasable synaptic vesicles at time t of the +presynaptic neuron's spike, so this equals the amount of transmitter expelled +into the synaptic cleft. +The amount of transmitter than relaxes back to 0 with time constant tau_psc +of the synapse's variable y. Since the dynamics of y(t) is linear, the +postsynaptic neuron can reconstruct from the amplitude of the synaptic +impulse u(t)*x(t)*w the full shape of y(t). The postsynaptic neuron, however, +might choose to have a synaptic current that is not necessarily identical to +the concentration of transmitter y(t) in the synaptic cleft. It may realize +an arbitrary postsynaptic effect depending on y(t). + +Parameters: + +The following parameters can be set in the status dictionary: +U double - maximum probability of release [0,1] +tau_psc double - time constant of synaptic current in ms +tau_fac double - time constant for facilitation in ms +tau_rec double - time constant for depression in ms +x double - initial fraction of synaptic vesicles in the readily + releasable pool [0,1] +y double - initial fraction of synaptic vesicles in the synaptic + cleft [0,1] + +References: + +[1] Tsodyks, Uziel, Markram (2000) Synchrony Generation in Recurrent Networks + with Frequency-Dependent Synapses. Journal of Neuroscience, vol 20 RC50 + +Transmits: SpikeEvent + +FirstVersion: March 2006 + +Author: Moritz Helias + +SeeAlso: synapsedict, stdp_synapse, static_synapse, iaf_psc_exp, iaf_tum_2000 +*/ template < typename targetidentifierT > class TsodyksConnection : public Connection< targetidentifierT > { diff --git a/models/tsodyks_connection_hom.h b/models/tsodyks_connection_hom.h index 0d24e6766e..cca9838797 100644 --- a/models/tsodyks_connection_hom.h +++ b/models/tsodyks_connection_hom.h @@ -24,91 +24,6 @@ #define TSODYKS_CONNECTION_HOM_H -/** @BeginDocumentation - Name: tsodyks_synapse_hom - Synapse type with short term plasticity using - homogeneous parameters, i.e. all synapses have - the same parameters. - - Description: - This synapse model implements synaptic short-term depression and short-term - facilitation according to [1]. In particular it solves Eqs (3) and (4) from - this paper in an exact manner. - - Synaptic depression is motivated by depletion of vesicles in the readily - releasable pool of synaptic vesicles (variable x in equation (3)). Synaptic - facilitation comes about by a presynaptic increase of release probability, - which is modeled by variable U in Eq (4). - The original interpretation of variable y is the amount of glutamate - concentration in the synaptic cleft. In [1] this variable is taken to be - directly proportional to the synaptic current caused in the postsynaptic - neuron (with the synaptic weight w as a proportionality constant). In order - to reproduce the results of [1] and to use this model of synaptic plasticity - in its original sense, the user therefore has to ensure the following - conditions: - - 1.) The postsynaptic neuron must be of type iaf_psc_exp or iaf_tum_2000, - because these neuron models have a postsynaptic current which decays - exponentially. - - 2.) The time constant of each tsodyks_synapse targeting a particular neuron - must be chosen equal to that neuron's synaptic time constant. In particular - that means that all synapses targeting a particular neuron have the same - parameter tau_psc. - - However, there are no technical restrictions using this model of synaptic - plasticity also in conjunction with neuron models that have a different - dynamics for their synaptic current or conductance. The effective synaptic - weight, which will be transmitted to the postsynaptic neuron upon occurrence - of a spike at time t is u(t)*x(t)*w, where u(t) and x(t) are defined in - Eq (3) and (4), w is the synaptic weight specified upon connection. - The interpretation is as follows: The quantity u(t)*x(t) is the release - probability times the amount of releasable synaptic vesicles at time t of the - presynaptic neuron's spike, so this equals the amount of transmitter expelled - into the synaptic cleft. - The amount of transmitter than relaxes back to 0 with time constant tau_psc - of the synapse's variable y. Since the dynamics of y(t) is linear, the - postsynaptic neuron can reconstruct from the amplitude of the synaptic - impulse u(t)*x(t)*w the full shape of y(t). The postsynaptic neuron, however, - might choose to have a synaptic current that is not necessarily identical to - the concentration of transmitter y(t) in the synaptic cleft. It may realize - an arbitrary postsynaptic effect depending on y(t). - - Parameters: - U double - maximum probability of release [0,1] - tau_psc double - time constant of synaptic current in ms - tau_fac double - time constant for facilitation in ms - tau_rec double - time constant for depression in ms - x double - initial fraction of synaptic vesicles in the readily - releasable pool [0,1] - y double - initial fraction of synaptic vesicles in the synaptic - cleft [0,1] - - Remarks: - The weight and the parameters U, tau_psc, tau_fac, and tau_rec are common to - all synapses of the model and must be set using SetDefaults on the synapse - model. - - References: - [1] Tsodyks, Uziel, Markram (2000) Synchrony Generation in Recurrent Networks - with Frequency-Dependent Synapses. Journal of Neuroscience, vol 20 RC50 - - Transmits: SpikeEvent - - FirstVersion: March 2006 - - Author: Susanne Kunkel, Moritz Helias - - SeeAlso: synapsedict, tsodyks_synapse, stdp_synapse_hom, static_synapse_hom_w, - iaf_psc_exp, iaf_tum_2000 -*/ - - -/** - * Class representing a synapse with Tsodyks short term plasticity. - * A suitable Connector containing these connections can be obtained from the - * template GenericConnector. - */ - // Includes from nestkernel: #include "common_properties_hom_w.h" #include "connection.h" @@ -116,6 +31,88 @@ namespace nest { +/** @BeginDocumentation +Name: tsodyks_synapse_hom - Synapse type with short term plasticity using + homogeneous parameters, i.e. all synapses have + the same parameters. + +Description: + +This synapse model implements synaptic short-term depression and short-term +facilitation according to [1]. In particular it solves Eqs (3) and (4) from +this paper in an exact manner. + +Synaptic depression is motivated by depletion of vesicles in the readily +releasable pool of synaptic vesicles (variable x in equation (3)). Synaptic +facilitation comes about by a presynaptic increase of release probability, +which is modeled by variable U in Eq (4). +The original interpretation of variable y is the amount of glutamate +concentration in the synaptic cleft. In [1] this variable is taken to be +directly proportional to the synaptic current caused in the postsynaptic +neuron (with the synaptic weight w as a proportionality constant). In order +to reproduce the results of [1] and to use this model of synaptic plasticity +in its original sense, the user therefore has to ensure the following +conditions: + +1.) The postsynaptic neuron must be of type iaf_psc_exp or iaf_tum_2000, +because these neuron models have a postsynaptic current which decays +exponentially. + +2.) The time constant of each tsodyks_synapse targeting a particular neuron +must be chosen equal to that neuron's synaptic time constant. In particular +that means that all synapses targeting a particular neuron have the same +parameter tau_psc. + +However, there are no technical restrictions using this model of synaptic +plasticity also in conjunction with neuron models that have a different +dynamics for their synaptic current or conductance. The effective synaptic +weight, which will be transmitted to the postsynaptic neuron upon occurrence +of a spike at time t is u(t)*x(t)*w, where u(t) and x(t) are defined in +Eq (3) and (4), w is the synaptic weight specified upon connection. +The interpretation is as follows: The quantity u(t)*x(t) is the release +probability times the amount of releasable synaptic vesicles at time t of the +presynaptic neuron's spike, so this equals the amount of transmitter expelled +into the synaptic cleft. +The amount of transmitter than relaxes back to 0 with time constant tau_psc +of the synapse's variable y. Since the dynamics of y(t) is linear, the +postsynaptic neuron can reconstruct from the amplitude of the synaptic +impulse u(t)*x(t)*w the full shape of y(t). The postsynaptic neuron, however, +might choose to have a synaptic current that is not necessarily identical to +the concentration of transmitter y(t) in the synaptic cleft. It may realize +an arbitrary postsynaptic effect depending on y(t). + +Parameters: + +U double - maximum probability of release [0,1] +tau_psc double - time constant of synaptic current in ms +tau_fac double - time constant for facilitation in ms +tau_rec double - time constant for depression in ms +x double - initial fraction of synaptic vesicles in the readily + releasable pool [0,1] +y double - initial fraction of synaptic vesicles in the synaptic + cleft [0,1] + +Remarks: + +The weight and the parameters U, tau_psc, tau_fac, and tau_rec are common to +all synapses of the model and must be set using SetDefaults on the synapse +model. + +References: + +[1] Tsodyks, Uziel, Markram (2000) Synchrony Generation in Recurrent Networks + with Frequency-Dependent Synapses. Journal of Neuroscience, vol 20 RC50 + +Transmits: SpikeEvent + +FirstVersion: March 2006 + +Author: Susanne Kunkel, Moritz Helias + +SeeAlso: synapsedict, tsodyks_synapse, stdp_synapse_hom, static_synapse_hom_w, +iaf_psc_exp, iaf_tum_2000 +*/ + /** * Class containing the common properties for all synapses of type * TsodyksConnectionHom. diff --git a/models/vogels_sprekeler_connection.h b/models/vogels_sprekeler_connection.h index 5271aebefa..83bb3c48b4 100644 --- a/models/vogels_sprekeler_connection.h +++ b/models/vogels_sprekeler_connection.h @@ -23,41 +23,6 @@ #ifndef VOGELS_SPREKELER_CONNECTION_H #define VOGELS_SPREKELER_CONNECTION_H -/** @BeginDocumentation - Name: vogels_sprekeler_synapse - Synapse type for symmetric spike-timing - dependent - plasticity with constant depression. - - Description: - vogels_sprekeler_synapse is a connector to create synapses with symmetric - spike time dependent plasticity and constant depression (as defined in [1]). - The learning rule is symmetric, i.e., the synapse is strengthened - irrespective of the order of the pre and post-synaptic spikes. Each - pre-synaptic spike also causes a constant depression of the synaptic weight - which differentiates this rule from other classical stdp rules. - - Parameters: - tau double - Time constant of STDP window, potentiation in ms - Wmax double - Maximum allowed weight - eta double - learning rate - alpha double - constant depression (= 2 * tau * target firing rate in - [1]) - - Transmits: SpikeEvent - - References: - [1] Vogels et al. (2011) Inhibitory Plasticity Balances Excitation and - Inhibition in Sensory Pathways and Memory Networks. - Science Vol. 334, Issue 6062, pp. 1569-1573 - DOI: 10.1126/science.1211095 - - FirstVersion: January 2016 - - Author: Ankur Sinha - - SeeAlso: synapsedict -*/ - // C-header for math.h since copysign() is in C99 but not C++98 #include #include "connection.h" @@ -65,6 +30,40 @@ namespace nest { +/** @BeginDocumentation +Name: vogels_sprekeler_synapse - Synapse type for symmetric spike-timing +dependent +plasticity with constant depression. + +Description: +vogels_sprekeler_synapse is a connector to create synapses with symmetric +spike time dependent plasticity and constant depression (as defined in [1]). +The learning rule is symmetric, i.e., the synapse is strengthened +irrespective of the order of the pre and post-synaptic spikes. Each +pre-synaptic spike also causes a constant depression of the synaptic weight +which differentiates this rule from other classical stdp rules. + +Parameters: +tau double - Time constant of STDP window, potentiation in ms +Wmax double - Maximum allowed weight +eta double - learning rate +alpha double - constant depression (= 2 * tau * target firing rate in + [1]) + +Transmits: SpikeEvent + +References: +[1] Vogels et al. (2011) Inhibitory Plasticity Balances Excitation and +Inhibition in Sensory Pathways and Memory Networks. +Science Vol. 334, Issue 6062, pp. 1569-1573 +DOI: 10.1126/science.1211095 + +FirstVersion: January 2016 + +Author: Ankur Sinha + +SeeAlso: synapsedict +*/ // connections are templates of target identifier type (used for pointer / // target index addressing) // derived from generic connection template diff --git a/models/volume_transmitter.h b/models/volume_transmitter.h index 21cadbfcda..bbc9fa94de 100644 --- a/models/volume_transmitter.h +++ b/models/volume_transmitter.h @@ -34,8 +34,10 @@ #include "namedatum.h" -/** @BeginDocumentation +namespace nest +{ +/** @BeginDocumentation Name: volume_transmitter - Node used in combination with neuromodulated synaptic plasticity. It collects all spikes emitted by the population of neurons connected to the volume transmitter and transmits the signal to a user-specific @@ -90,24 +92,8 @@ Receives: SpikeEvent SeeAlso: stdp_dopamine_synapse */ - -namespace nest -{ - class ConnectorBase; -/** - * volume transmitter class. - * - * This class manages spike recording for normal and precise spikes. It - * receives spikes via its handle(SpikeEvent&) method and buffers them. In the - * update() method it stores the newly collected buffer elements, which are - * delivered in time steps of (d_min*deliver_interval) to the neuromodulated - * synapses. In addition the synapses can ask the volume transmitter to deliver - * the elements stored in the update() method with the method deliver_spikes(). - * - * @ingroup Devices - */ class volume_transmitter : public Archiving_Node { diff --git a/models/weight_recorder.h b/models/weight_recorder.h index f1884c0e1e..e389e2a07a 100644 --- a/models/weight_recorder.h +++ b/models/weight_recorder.h @@ -35,11 +35,14 @@ #include "recording_device.h" #include "kernel_manager.h" -/** @BeginDocumentation +namespace nest +{ +/** @BeginDocumentation Name: weight_recorder - Device for detecting single spikes. Description: + The weight_recorder device is a recording device. It is used to record weights from synapses. Data is recorded in memory or to file as for all RecordingDevices. @@ -60,20 +63,6 @@ Receives: WeightRecordingEvent SeeAlso: weight_recorder, spike_detector, Device, RecordingDevice */ - - -namespace nest -{ -/** - * Weight recorder class. - * - * This class manages weight recording for normal and precise spikes. It - * receives events via its handle(WeightRecordingEvent&) method, buffers them, - *and - * stores them via its RecordingDevice in the update() method. - * - * @ingroup Devices - */ class weight_recorder : public DeviceNode { From 05ce96bddfad3a960c99bcd3117e007ba38a1dac Mon Sep 17 00:00:00 2001 From: Jessica Mitchell Date: Wed, 24 Oct 2018 12:07:39 +0200 Subject: [PATCH 2/5] refacot comment blocks precise folder --- models/cont_delay_connection_impl.h | 1 - precise/iaf_psc_alpha_canon.h | 43 +++--- precise/iaf_psc_alpha_presc.h | 139 ++++++++--------- precise/iaf_psc_delta_canon.h | 229 ++++++++++++++-------------- precise/iaf_psc_exp_ps.h | 60 ++++---- precise/parrot_neuron_ps.h | 7 +- precise/poisson_generator_ps.h | 44 +++--- 7 files changed, 253 insertions(+), 270 deletions(-) diff --git a/models/cont_delay_connection_impl.h b/models/cont_delay_connection_impl.h index fa869cb767..1a58b3d73c 100644 --- a/models/cont_delay_connection_impl.h +++ b/models/cont_delay_connection_impl.h @@ -33,7 +33,6 @@ // Includes from sli: #include "dictdatum.h" - namespace nest { diff --git a/precise/iaf_psc_alpha_canon.h b/precise/iaf_psc_alpha_canon.h index 8391aa7f0d..2f5279d4ce 100644 --- a/precise/iaf_psc_alpha_canon.h +++ b/precise/iaf_psc_alpha_canon.h @@ -40,11 +40,15 @@ // Includes from precise: #include "slice_ring_buffer.h" +namespace nest +{ + /** @BeginDocumentation Name: iaf_psc_alpha_canon - Leaky integrate-and-fire neuron with alpha-shape postsynaptic currents; canoncial implementation. Description: + iaf_psc_alpha_canon is the "canonical" implementatoin of the leaky integrate-and-fire model neuron with alpha-shaped postsynaptic currents in the sense of [1]. This is the most exact implementation @@ -68,6 +72,7 @@ performance given an accuracy goal; see [1] for details. Subthreshold dynamics are integrated using exact integration between events [2]. Remarks: + The iaf_psc_delta_canon neuron does not accept CurrentEvent connections. This is because the present method for transmitting CurrentEvents in NEST (sending the current to be applied) is not compatible with off-grid @@ -86,28 +91,31 @@ A further improvement of precise simulation is implemented in iaf_psc_exp_ps based on [3]. Parameters: + The following parameters can be set in the status dictionary. - V_m double - Membrane potential in mV - E_L double - Resting membrane potential in mV. - V_min double - Absolute lower value for the membrane potential. - C_m double - Capacity of the membrane in pF - tau_m double - Membrane time constant in ms. - t_ref double - Duration of refractory period in ms. - V_th double - Spike threshold in mV. - V_reset double - Reset potential of the membrane in mV. - tau_syn double - Rise time of the synaptic alpha function in ms. - I_e double - Constant external input current in pA. - Interpol_Order int - Interpolation order for spike time: - 0-none, 1-linear, 2-quadratic, 3-cubic +V_m double - Membrane potential in mV +E_L double - Resting membrane potential in mV. +V_min double - Absolute lower value for the membrane potential. +C_m double - Capacity of the membrane in pF +tau_m double - Membrane time constant in ms. +t_ref double - Duration of refractory period in ms. +V_th double - Spike threshold in mV. +V_reset double - Reset potential of the membrane in mV. +tau_syn double - Rise time of the synaptic alpha function in ms. +I_e double - Constant external input current in pA. +Interpol_Order int - Interpolation order for spike time: + 0-none, 1-linear, 2-quadratic, 3-cubic Remarks: + If tau_m is very close to tau_syn, the model will numerically behave as if tau_m is equal to tau_syn, to avoid numerical instabilities. For details, please see IAF_Neruons_Singularity.ipynb in the NEST source code (docs/model_details). References: + [1] Morrison A, Straube S, Plesser H E, & Diesmann M (2006) Exact Subthreshold Integration with Continuous Spike Times in Discrete Time Neural Network Simulations. To appear in Neural Computation. @@ -125,18 +133,7 @@ Sends: SpikeEvent Receives: SpikeEvent, CurrentEvent, DataLoggingRequest SeeAlso: iaf_psc_alpha, iaf_psc_alpha_presc, iaf_psc_exp_ps - */ - -namespace nest -{ - -/** - * Leaky iaf neuron, alpha PSC synapses, canonical implementation. - * @note Inherit privately from Node, so no classes can be derived - * from this one. - * @todo Implement current input in consistent way. - */ class iaf_psc_alpha_canon : public Archiving_Node { public: diff --git a/precise/iaf_psc_alpha_presc.h b/precise/iaf_psc_alpha_presc.h index 4f63e74011..e9b514661d 100644 --- a/precise/iaf_psc_alpha_presc.h +++ b/precise/iaf_psc_alpha_presc.h @@ -37,82 +37,77 @@ #include "ring_buffer.h" #include "universal_data_logger.h" +namespace nest +{ + /** @BeginDocumentation - Name: iaf_psc_alpha_presc - Leaky integrate-and-fire neuron - with alpha-shape postsynaptic currents; prescient implementation. - - Description: - iaf_psc_alpha_presc is the "prescient" implementation of the leaky - integrate-and-fire model neuron with alpha-shaped postsynaptic - currents in the sense of [1]. - - PSCs are normalized to an amplitude of 1pA. - - The prescient implementation predicts the effect of spikes arriving - during a time step by exactly integrating their effect from the - precise time of spike arrival to the end of the time step. This is - exact if the neuron was not refractory at the beginning of the - interval and remains subthreshold throughout the - interval. Subthreshold dynamics are integrated using exact integration - between events [2]. - - Parameters: - The following parameters can be set in the status dictionary. - - - V_m double - Membrane potential in mV - E_L double - Resting membrane potential in mV. - V_min double - Absolute lower value for the membrane potential. - C_m double - Capacity of the membrane in pF - tau_m double - Membrane time constant in ms. - t_ref double - Duration of refractory period in ms. - V_th double - Spike threshold in mV. - V_reset double - Reset potential of the membrane in mV. - tau_syn double - Rise time of the synaptic alpha function in ms. - I_e double - Constant external input current in pA. - Interpol_Order int - Interpolation order for spike time: - 0-none, 1-linear, 2-quadratic, 3-cubic - - Remarks: - Please note that this node is capable of sending precise spike times - to target nodes (on-grid spike time plus offset). If this node is - connected to a spike_detector, the property "precise_times" of the - spike_detector has to be set to true in order to record the offsets - in addition to the on-grid spike times. - - Remarks: - If tau_m is very close to tau_syn, the model will numerically behave - as if tau_m is equal to tau_syn, to avoid numerical instabilities. - For details, please see IAF_Neruons_Singularity.ipynb in - the NEST source code (docs/model_details). - - References: - [1] Morrison A, Straube S, Plesser H E, & Diesmann M (2006) Exact Subthreshold - Integration with Continuous Spike Times in Discrete Time Neural Network - Simulations. To appear in Neural Computation. - [2] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear - systems with applications to neuronal modeling. Biologial Cybernetics - 81:381-402. - - Author: Diesmann, Eppler, Morrison, Plesser, Straube - - Sends: SpikeEvent - - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - - SeeAlso: iaf_psc_alpha, iaf_psc_alpha_canon, iaf_psc_delta_canon +Name: iaf_psc_alpha_presc - Leaky integrate-and-fire neuron +with alpha-shape postsynaptic currents; prescient implementation. -*/ +Description: -namespace nest -{ +iaf_psc_alpha_presc is the "prescient" implementation of the leaky +integrate-and-fire model neuron with alpha-shaped postsynaptic +currents in the sense of [1]. -/** - * Leaky iaf neuron, alpha PSC synapses, canonical implementation. - * @note Inherit privately from Node, so no classes can be derived - * from this one. - * @todo Implement current input in consistent way. - */ +PSCs are normalized to an amplitude of 1pA. + +The prescient implementation predicts the effect of spikes arriving +during a time step by exactly integrating their effect from the +precise time of spike arrival to the end of the time step. This is +exact if the neuron was not refractory at the beginning of the +interval and remains subthreshold throughout the +interval. Subthreshold dynamics are integrated using exact integration +between events [2]. + +Parameters: + +The following parameters can be set in the status dictionary. + + +V_m double - Membrane potential in mV +E_L double - Resting membrane potential in mV. +V_min double - Absolute lower value for the membrane potential. +C_m double - Capacity of the membrane in pF +tau_m double - Membrane time constant in ms. +t_ref double - Duration of refractory period in ms. +V_th double - Spike threshold in mV. +V_reset double - Reset potential of the membrane in mV. +tau_syn double - Rise time of the synaptic alpha function in ms. +I_e double - Constant external input current in pA. +Interpol_Order int - Interpolation order for spike time: + 0-none, 1-linear, 2-quadratic, 3-cubic + +Remarks: + +Please note that this node is capable of sending precise spike times +to target nodes (on-grid spike time plus offset). If this node is +connected to a spike_detector, the property "precise_times" of the +spike_detector has to be set to true in order to record the offsets +in addition to the on-grid spike times. + +If tau_m is very close to tau_syn, the model will numerically behave +as if tau_m is equal to tau_syn, to avoid numerical instabilities. +For details, please see IAF_Neruons_Singularity.ipynb in +the NEST source code (docs/model_details). + +References: + +[1] Morrison A, Straube S, Plesser H E, & Diesmann M (2006) Exact Subthreshold +Integration with Continuous Spike Times in Discrete Time Neural Network +Simulations. To appear in Neural Computation. +[2] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear +systems with applications to neuronal modeling. Biologial Cybernetics +81:381-402. + +Author: Diesmann, Eppler, Morrison, Plesser, Straube + +Sends: SpikeEvent + +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest + +SeeAlso: iaf_psc_alpha, iaf_psc_alpha_canon, iaf_psc_delta_canon +*/ class iaf_psc_alpha_presc : public Archiving_Node { public: diff --git a/precise/iaf_psc_delta_canon.h b/precise/iaf_psc_delta_canon.h index bc80d6f887..224e8d3ba3 100644 --- a/precise/iaf_psc_delta_canon.h +++ b/precise/iaf_psc_delta_canon.h @@ -39,121 +39,124 @@ namespace nest { + /** @BeginDocumentation - Name: iaf_psc_delta_canon - Leaky integrate-and-fire neuron model. - - Description: - iaf_psc_delta_canon is an implementation of a leaky integrate-and-fire model - where the potential jumps on each spike arrival. - - The threshold crossing is followed by an absolute refractory period - during which the membrane potential is clamped to the resting - potential. - - Spikes arriving while the neuron is refractory, are discarded by - default. If the property "refractory_input" is set to true, such - spikes are added to the membrane potential at the end of the - refractory period, dampened according to the interval between - arrival and end of refractoriness. - - The linear subthresold dynamics is integrated by the Exact - Integration scheme [1]. The neuron dynamics are solved exactly in - time. Incoming and outgoing spike times are handled precisely [3]. - - An additional state variable and the corresponding differential - equation represents a piecewise constant external current. - - Spikes can occur either on receipt of an excitatory input spike, or - be caused by a depolarizing input current. Spikes evoked by - incoming spikes, will occur precisely at the time of spike arrival, - since incoming spikes are modeled as instantaneous potential - jumps. Times of spikes caused by current input are determined - exactly by solving the membrane potential equation. Note that, in - contrast to the neuron models discussed in [3,4], this model has so - simple dynamics that no interpolation or iterative spike location - technique is required at all. - - The general framework for the consistent formulation of systems with - neuron like dynamics interacting by point events is described in - [1]. A flow chart can be found in [2]. - - Critical tests for the formulation of the neuron model are the - comparisons of simulation results for different computation step - sizes. sli/testsuite/nest contains a number of such tests. - - The iaf_psc_delta_canon is the standard model used to check the consistency - of the nest simulation kernel because it is at the same time complex - enough to exhibit non-trivial dynamics and simple enough compute - relevant measures analytically. - - Remarks: - - The iaf_psc_delta_canon neuron accepts CurrentEvent connections. - However, the present method for transmitting CurrentEvents in - NEST (sending the current to be applied) is not compatible with off-grid - currents, if more than one CurrentEvent-connection exists. Once CurrentEvents - are changed to transmit change-of-current-strength, this problem will - disappear and the canonical neuron will also be able to handle CurrentEvents. - - The present implementation uses individual variables for the - components of the state vector and the non-zero matrix elements of - the propagator. Because the propagator is a lower triangular matrix - no full matrix multiplication needs to be carried out and the - computation can be done "in place" i.e. no temporary state vector - object is required. - - The template support of recent C++ compilers enables a more succinct - formulation without loss of runtime performance already at minimal - optimization levels. A future version of iaf_psc_delta_canon will probably - address the problem of efficient usage of appropriate vector and - matrix objects. - - Please note that this node is capable of sending precise spike times - to target nodes (on-grid spike time plus offset). If this node is - connected to a spike_detector, the property "precise_times" of the - spike_detector has to be set to true in order to record the offsets - in addition to the on-grid spike times. - - Parameters: - The following parameters can be set in the status dictionary. - - V_m double - Membrane potential in mV - E_L double - Resting membrane potential in mV. - C_m double - Capacitance of the membrane in pF - tau_m double - Membrane time constant in ms. - t_ref double - Duration of refractory period in ms. - V_th double - Spike threshold in mV. - V_reset double - Reset potential of the membrane in mV. - I_e double - Constant input current in pA. - V_min double - Absolute lower value for the membrane potential in mV. - - refractory_input bool - If true, do not discard input during - refractory period. Default: false. - - References: - [1] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear - systems with applications to neuronal modeling. Biologial Cybernetics - 81:381-402. - [2] Diesmann M, Gewaltig M-O, Rotter S, & Aertsen A (2001) State space - analysis of synchronous spiking in cortical neural networks. - Neurocomputing 38-40:565-571. - [3] Morrison A, Straube S, Plesser H E, & Diesmann M (2006) Exact - Subthreshold Integration with Continuous Spike Times in Discrete Time Neural - Network Simulations. To appear in Neural Computation. - [4] Hanuschkin A, Kunkel S, Helias M, Morrison A & Diesmann M (2010) - A general and efficient method for incorporating exact spike times in - globally time-driven simulations Front Neuroinformatics, 4:113 - - Sends: SpikeEvent - - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - - Author: May 2006, Plesser; based on work by Diesmann, Gewaltig, Morrison, - Straube, Eppler - - SeeAlso: iaf_psc_delta, iaf_psc_exp_ps +Name: iaf_psc_delta_canon - Leaky integrate-and-fire neuron model. + +Description: + +iaf_psc_delta_canon is an implementation of a leaky integrate-and-fire model +where the potential jumps on each spike arrival. + +The threshold crossing is followed by an absolute refractory period +during which the membrane potential is clamped to the resting +potential. + +Spikes arriving while the neuron is refractory, are discarded by +default. If the property "refractory_input" is set to true, such +spikes are added to the membrane potential at the end of the +refractory period, dampened according to the interval between +arrival and end of refractoriness. + +The linear subthresold dynamics is integrated by the Exact +Integration scheme [1]. The neuron dynamics are solved exactly in +time. Incoming and outgoing spike times are handled precisely [3]. + +An additional state variable and the corresponding differential +equation represents a piecewise constant external current. + +Spikes can occur either on receipt of an excitatory input spike, or +be caused by a depolarizing input current. Spikes evoked by +incoming spikes, will occur precisely at the time of spike arrival, +since incoming spikes are modeled as instantaneous potential +jumps. Times of spikes caused by current input are determined +exactly by solving the membrane potential equation. Note that, in +contrast to the neuron models discussed in [3,4], this model has so +simple dynamics that no interpolation or iterative spike location +technique is required at all. + +The general framework for the consistent formulation of systems with +neuron like dynamics interacting by point events is described in +[1]. A flow chart can be found in [2]. + +Critical tests for the formulation of the neuron model are the +comparisons of simulation results for different computation step +sizes. sli/testsuite/nest contains a number of such tests. + +The iaf_psc_delta_canon is the standard model used to check the consistency +of the nest simulation kernel because it is at the same time complex +enough to exhibit non-trivial dynamics and simple enough compute +relevant measures analytically. + +Remarks: + +The iaf_psc_delta_canon neuron accepts CurrentEvent connections. +However, the present method for transmitting CurrentEvents in +NEST (sending the current to be applied) is not compatible with off-grid +currents, if more than one CurrentEvent-connection exists. Once CurrentEvents +are changed to transmit change-of-current-strength, this problem will +disappear and the canonical neuron will also be able to handle CurrentEvents. + +The present implementation uses individual variables for the +components of the state vector and the non-zero matrix elements of +the propagator. Because the propagator is a lower triangular matrix +no full matrix multiplication needs to be carried out and the +computation can be done "in place" i.e. no temporary state vector +object is required. + +The template support of recent C++ compilers enables a more succinct +formulation without loss of runtime performance already at minimal +optimization levels. A future version of iaf_psc_delta_canon will probably +address the problem of efficient usage of appropriate vector and +matrix objects. + +Please note that this node is capable of sending precise spike times +to target nodes (on-grid spike time plus offset). If this node is +connected to a spike_detector, the property "precise_times" of the +spike_detector has to be set to true in order to record the offsets +in addition to the on-grid spike times. + +Parameters: + +The following parameters can be set in the status dictionary. + +V_m double - Membrane potential in mV +E_L double - Resting membrane potential in mV. +C_m double - Capacitance of the membrane in pF +tau_m double - Membrane time constant in ms. +t_ref double - Duration of refractory period in ms. +V_th double - Spike threshold in mV. +V_reset double - Reset potential of the membrane in mV. +I_e double - Constant input current in pA. +V_min double - Absolute lower value for the membrane potential in mV. + +refractory_input bool - If true, do not discard input during +refractory period. Default: false. + +References: + +[1] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear +systems with applications to neuronal modeling. Biologial Cybernetics +81:381-402. +[2] Diesmann M, Gewaltig M-O, Rotter S, & Aertsen A (2001) State space +analysis of synchronous spiking in cortical neural networks. +Neurocomputing 38-40:565-571. +[3] Morrison A, Straube S, Plesser H E, & Diesmann M (2006) Exact +Subthreshold Integration with Continuous Spike Times in Discrete Time Neural +Network Simulations. To appear in Neural Computation. +[4] Hanuschkin A, Kunkel S, Helias M, Morrison A & Diesmann M (2010) +A general and efficient method for incorporating exact spike times in +globally time-driven simulations Front Neuroinformatics, 4:113 + +Sends: SpikeEvent + +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest + +Author: May 2006, Plesser; based on work by Diesmann, Gewaltig, Morrison, +Straube, Eppler + +SeeAlso: iaf_psc_delta, iaf_psc_exp_ps */ - class iaf_psc_delta_canon : public Archiving_Node { diff --git a/precise/iaf_psc_exp_ps.h b/precise/iaf_psc_exp_ps.h index 0f23da918f..e080144ac4 100644 --- a/precise/iaf_psc_exp_ps.h +++ b/precise/iaf_psc_exp_ps.h @@ -41,12 +41,16 @@ // Includes from precise: #include "slice_ring_buffer.h" +namespace nest +{ + /** @BeginDocumentation Name: iaf_psc_exp_ps - Leaky integrate-and-fire neuron with exponential postsynaptic currents; canoncial implementation; bisectioning method for approximation of threshold crossing. Description: + iaf_psc_exp_ps is the "canonical" implementation of the leaky integrate-and-fire model neuron with exponential postsynaptic currents that uses the bisectioning method to approximate the timing of a threshold @@ -69,33 +73,35 @@ details. Subthreshold dynamics are integrated using exact integration between events [3]. Parameters: - The following parameters can be set in the status dictionary. - E_L double - Resting membrane potential in mV. - C_m double - Capacitance of the membrane in pF. - tau_m double - Membrane time constant in ms. - tau_syn_ex double - Excitatory synaptic time constant in ms. - tau_syn_in double - Inhibitory synaptic time constant in ms. - t_ref double - Duration of refractory period in ms. - V_th double - Spike threshold in mV. - I_e double - Constant input current in pA. - V_min double - Absolute lower value for the membrane potential in mV. - V_reset double - Reset value for the membrane potential in mV. -Remarks: - Please note that this node is capable of sending precise spike times - to target nodes (on-grid spike time plus offset). If this node is - connected to a spike_detector, the property "precise_times" of the - spike_detector has to be set to true in order to record the offsets - in addition to the on-grid spike times. +The following parameters can be set in the status dictionary. +E_L double - Resting membrane potential in mV. +C_m double - Capacitance of the membrane in pF. +tau_m double - Membrane time constant in ms. +tau_syn_ex double - Excitatory synaptic time constant in ms. +tau_syn_in double - Inhibitory synaptic time constant in ms. +t_ref double - Duration of refractory period in ms. +V_th double - Spike threshold in mV. +I_e double - Constant input current in pA. +V_min double - Absolute lower value for the membrane potential in mV. +V_reset double - Reset value for the membrane potential in mV. Remarks: - If tau_m is very close to tau_syn_ex or tau_syn_in, the model - will numerically behave as if tau_m is equal to tau_syn_ex or - tau_syn_in, respectively, to avoid numerical instabilities. - For details, please see IAF_Neruons_Singularity.ipynb in the - NEST source code (docs/model_details). + +Please note that this node is capable of sending precise spike times +to target nodes (on-grid spike time plus offset). If this node is +connected to a spike_detector, the property "precise_times" of the +spike_detector has to be set to true in order to record the offsets +in addition to the on-grid spike times. + +If tau_m is very close to tau_syn_ex or tau_syn_in, the model +will numerically behave as if tau_m is equal to tau_syn_ex or +tau_syn_in, respectively, to avoid numerical instabilities. +For details, please see IAF_Neruons_Singularity.ipynb in the +NEST source code (docs/model_details). References: + [1] Morrison A, Straube S, Plesser HE & Diesmann M (2007) Exact subthreshold integration with continuous spike times in discrete time neural network simulations. Neural Comput 19, 47-79 @@ -113,16 +119,6 @@ Receives: SpikeEvent, CurrentEvent, DataLoggingRequest SeeAlso: iaf_psc_exp, iaf_psc_alpha_canon */ - -namespace nest -{ - -/** - * Leaky iaf neuron, exponential PSC synapses, canonical implementation. - * @note Inherit privately from Node, so no classes can be derived - * from this one. - * @todo Implement current input in consistent way. - */ class iaf_psc_exp_ps : public Archiving_Node { public: diff --git a/precise/parrot_neuron_ps.h b/precise/parrot_neuron_ps.h index c094e5b236..e3e5aa0ba2 100644 --- a/precise/parrot_neuron_ps.h +++ b/precise/parrot_neuron_ps.h @@ -32,11 +32,15 @@ // Includes from precise: #include "slice_ring_buffer.h" +namespace nest +{ + /** @BeginDocumentation Name: parrot_neuron_ps - Neuron that repeats incoming spikes handling precise spike times. Description: + The parrot neuron simply emits one spike for every incoming spike. An important application is to provide identical poisson spike trains to a group of neurons. The poisson_generator sends a different @@ -70,9 +74,6 @@ Receives: SpikeEvent Author: adapted from parrot_neuron by Kunkel */ - -namespace nest -{ class parrot_neuron_ps : public Archiving_Node { public: diff --git a/precise/poisson_generator_ps.h b/precise/poisson_generator_ps.h index fa7e3ab27f..febd01d74f 100644 --- a/precise/poisson_generator_ps.h +++ b/precise/poisson_generator_ps.h @@ -36,46 +36,38 @@ #include "nest_types.h" #include "stimulating_device.h" +namespace nest +{ + /** @BeginDocumentation Name: poisson_generator_ps - simulate neuron firing with Poisson processes (with arbitrary dead time) statistics and exact timing + Description: - The poisson_generator_ps generator simulates a neuron firing with Poisson - statistics (with dead time), ie, exponentially distributed interspike - intervals plus constant dead time, spike events have exact timing - (i.e. not binned). +The poisson_generator_ps generator simulates a neuron firing with Poisson +statistics (with dead time), ie, exponentially distributed interspike +intervals plus constant dead time, spike events have exact timing +(i.e. not binned). Parameters: - The following parameters appear in the element's status dictionary: - rate - mean firing rate. (double, var) - dead_time - minimal time between two spikes. (double, var) +The following parameters appear in the element's status dictionary: + +rate - mean firing rate. (double, var) +dead_time - minimal time between two spikes. (double, var) Remarks: - - This generator must be connected to all its targets using the - same synapse model. Failure to do so will only be detected at - runtime. - - This generator has only been validated in a very basic manner. - Sends: SpikeEvent +- This generator must be connected to all its targets using the + same synapse model. Failure to do so will only be detected at + runtime. +- This generator has only been validated in a very basic manner. + +Sends: SpikeEvent SeeAlso: poisson_generator, spike_generator, Device, StimulatingDevice */ - -namespace nest -{ - -/** - * Poisson generator (with dead time) with precisely timed spikes. - * - * This Poisson process (with dead time) generator sends different spike - * trains to all its targets. - * All spikes are sent individually with offsets identifying their precise - * times. - * - * @ingroup Devices - */ class poisson_generator_ps : public DeviceNode { From 7c6aeacdcde40c0bed1c0682bc1265cbf4322695 Mon Sep 17 00:00:00 2001 From: Jessica Mitchell Date: Wed, 24 Oct 2018 14:54:57 +0200 Subject: [PATCH 3/5] merge comment block spike detector --- models/spike_detector.h | 43 +++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/models/spike_detector.h b/models/spike_detector.h index 69fd6af3ae..931f5650de 100644 --- a/models/spike_detector.h +++ b/models/spike_detector.h @@ -66,35 +66,28 @@ all spikes desired to be recorded, are recorded. Spike are not necessarily written to file in chronological order. +Note: + +Spikes are buffered in a two-segment buffer. We need to distinguish between +two types of spikes: those delivered from the global event queue (almost all +spikes) and spikes delivered locally from devices that are replicated on VPs +(has_proxies() == false). +- Spikes from the global queue are delivered by deliver_events() at the + beginning of each update cycle and are stored only until update() is called + during the same update cycle. Global queue spikes are thus written to the + read_toggle() segment of the buffer, from which update() reads. +- Spikes delivered locally may be delivered before or after + spike_detector::update() is executed. These spikes are therefore buffered + in the write_toggle() segment of the buffer and output during the next + cycle. +- After all spikes are recorded, update() clears the read_toggle() segment + of the buffer. + + Receives: SpikeEvent SeeAlso: spike_detector, Device, RecordingDevice */ - -/** - * Spike detector class. - * - * This class manages spike recording for normal and precise spikes. It - * receives spikes via its handle(SpikeEvent&) method, buffers them, and - * stores them via its RecordingDevice in the update() method. - * - * Spikes are buffered in a two-segment buffer. We need to distinguish between - * two types of spikes: those delivered from the global event queue (almost all - * spikes) and spikes delivered locally from devices that are replicated on VPs - * (has_proxies() == false). - * - Spikes from the global queue are delivered by deliver_events() at the - * beginning of each update cycle and are stored only until update() is called - * during the same update cycle. Global queue spikes are thus written to the - * read_toggle() segment of the buffer, from which update() reads. - * - Spikes delivered locally may be delivered before or after - * spike_detector::update() is executed. These spikes are therefore buffered - * in the write_toggle() segment of the buffer and output during the next - * cycle. - * - After all spikes are recorded, update() clears the read_toggle() segment - * of the buffer. - * - * @ingroup Devices - */ class spike_detector : public DeviceNode { From bdcbac554c37bee3057516568f3ac5a8df94317f Mon Sep 17 00:00:00 2001 From: Jessica Mitchell Date: Thu, 25 Oct 2018 14:34:37 +0200 Subject: [PATCH 4/5] no indent all sections of begin doc --- models/ac_generator.h | 45 +++--- models/aeif_cond_alpha.h | 2 + models/aeif_cond_alpha_RK5.h | 2 + models/aeif_cond_alpha_multisynapse.h | 113 +++++++------- models/aeif_cond_beta_multisynapse.h | 118 +++++++------- models/aeif_psc_alpha.h | 2 + models/aeif_psc_delta.h | 1 + models/aeif_psc_exp.h | 1 + models/amat2_psc_exp.h | 211 +++++++++++++------------- models/bernoulli_connection.h | 58 +++---- models/cont_delay_connection.h | 81 +++++----- models/correlation_detector.h | 209 ++++++++++++------------- models/correlomatrix_detector.h | 34 +++-- models/correlospinmatrix_detector.h | 21 ++- models/dc_generator.h | 31 ++-- models/diffusion_connection.h | 45 +++--- models/erfc_neuron.h | 148 +++++++++--------- models/gamma_sup_generator.h | 28 ++-- models/gap_junction.h | 50 +++--- models/gauss_rate.h | 57 +++---- models/gif_cond_exp.h | 159 +++++++++---------- models/gif_cond_exp_multisynapse.h | 195 ++++++++++++------------ models/gif_pop_psc_exp.h | 136 ++++++++--------- models/gif_psc_exp.h | 147 +++++++++--------- models/gif_psc_exp_multisynapse.h | 153 +++++++++---------- models/ginzburg_neuron.h | 160 +++++++++---------- models/hh_cond_exp_traub.h | 82 +++++----- models/hh_psc_alpha.h | 76 +++++----- models/hh_psc_alpha_gap.h | 104 ++++++------- models/ht_connection.h | 45 +++--- models/ht_neuron.h | 139 ++++++++--------- models/iaf_chs_2007.h | 81 +++++----- models/iaf_chxk_2008.h | 3 + models/iaf_cond_alpha.h | 2 + models/iaf_cond_alpha_mc.h | 17 ++- models/iaf_cond_exp.h | 2 + models/iaf_cond_exp_sfa_rr.h | 2 + models/iaf_psc_alpha.h | 118 +++++++------- models/iaf_psc_exp.h | 4 + models/iaf_psc_exp_multisynapse.h | 12 +- models/lin_rate.h | 75 +++++---- models/mat2_psc_exp.h | 5 + models/mcculloch_pitts_neuron.h | 4 + models/mip_generator.h | 68 +++++---- models/multimeter.h | 40 ++--- models/music_cont_in_proxy.h | 3 + models/music_cont_out_proxy.h | 29 ++-- models/music_event_in_proxy.h | 4 +- models/music_event_out_proxy.h | 3 + models/music_message_in_proxy.h | 3 + models/noise_generator.h | 48 +++--- 51 files changed, 1647 insertions(+), 1529 deletions(-) diff --git a/models/ac_generator.h b/models/ac_generator.h index 7e815ca75e..a9a5caf074 100644 --- a/models/ac_generator.h +++ b/models/ac_generator.h @@ -38,40 +38,41 @@ namespace nest { /** @BeginDocumentation - Name: ac_generator - provides AC input current +Name: ac_generator - provides AC input current - Description: +Description: - This device produce an ac-current which are sent by a CurrentEvent. The - current is given by +This device produce an ac-current which are sent by a CurrentEvent. The +current is given by - I(t) = offset + amplitude * sin ( om * t + phi ) + I(t) = offset + amplitude * sin ( om * t + phi ) - where +where - om = 2 * pi * frequency - phi = phase / 180 * pi + om = 2 * pi * frequency + phi = phase / 180 * pi - The parameters are +Parameters: - amplitude double - Amplitude of sine current in pA - offset double - Constant amplitude offset in pA - frequency double - Frequency in Hz - phase double - Phase of sine current (0-360 deg) +amplitude double - Amplitude of sine current in pA +offset double - Constant amplitude offset in pA +frequency double - Frequency in Hz +phase double - Phase of sine current (0-360 deg) - Setting start and stop (see StimulatingDevice) only windows the current - as defined above. It does not shift the time axis. +Setting start and stop (see StimulatingDevice) only windows the current +as defined above. It does not shift the time axis. - References: - [1] S. Rotter and M. Diesmann, Exact digital simulation of time- - invariant linear systems with applications to neuronal modeling, - Biol. Cybern. 81, 381-402 (1999) +References: - Sends: CurrentEvent +[1] S. Rotter and M. Diesmann (1999). Exact digital simulation of time- +invariant linear systems with applications to neuronal modeling, +Biol. Cybern. 81, 381-402. - Author: Johan Hake, Spring 2003 +Sends: CurrentEvent - SeeAlso: Device, StimulatingDevice, dc_generator, step_current_generator +Author: Johan Hake, Spring 2003 + +SeeAlso: Device, StimulatingDevice, dc_generator, step_current_generator */ class ac_generator : public DeviceNode { diff --git a/models/aeif_cond_alpha.h b/models/aeif_cond_alpha.h index 06a19f9f50..fb06bc635f 100644 --- a/models/aeif_cond_alpha.h +++ b/models/aeif_cond_alpha.h @@ -75,6 +75,7 @@ Name: aeif_cond_alpha - Conductance based exponential integrate-and-fire neuron model according to Brette and Gerstner (2005). Description: + aeif_cond_alpha is the adaptive exponential integrate and fire neuron according to Brette and Gerstner (2005). Synaptic conductances are modelled as alpha-functions. @@ -91,6 +92,7 @@ and tau_w * dw/dt= a(V-E_L) -W Parameters: + The following parameters can be set in the status dictionary. Dynamic state variables: diff --git a/models/aeif_cond_alpha_RK5.h b/models/aeif_cond_alpha_RK5.h index 961acc18a1..0d61a4b1ab 100644 --- a/models/aeif_cond_alpha_RK5.h +++ b/models/aeif_cond_alpha_RK5.h @@ -39,6 +39,7 @@ Name: aeif_cond_alpha_RK5 - Conductance based exponential integrate-and-fire neuron model according to Brette and Gerstner (2005) Description: + aeif_cond_alpha_RK5 is the adaptive exponential integrate and fire neuron according to Brette and Gerstner (2005). Synaptic conductances are modelled as alpha-functions. @@ -56,6 +57,7 @@ and tau_w * dw/dt= a(V-E_L) -w Parameters: + The following parameters can be set in the status dictionary. Dynamic state variables: diff --git a/models/aeif_cond_alpha_multisynapse.h b/models/aeif_cond_alpha_multisynapse.h index 13b023dedb..3033b98ca7 100644 --- a/models/aeif_cond_alpha_multisynapse.h +++ b/models/aeif_cond_alpha_multisynapse.h @@ -58,43 +58,44 @@ extern "C" int aeif_cond_alpha_multisynapse_dynamics( double, const double*, double*, void* ); /** @BeginDocumentation - Name: aeif_cond_alpha_multisynapse - Conductance based adaptive exponential - integrate-and-fire neuron model according - to Brette and Gerstner (2005) with - multiple synaptic rise time and decay - time constants, and synaptic conductance - modeled by an alpha function. +Name: aeif_cond_alpha_multisynapse - Conductance based adaptive exponential + integrate-and-fire neuron model according + to Brette and Gerstner (2005) with + multiple synaptic rise time and decay + time constants, and synaptic conductance + modeled by an alpha function. - Description: +Description: - aeif_cond_alpha_multisynapse is a conductance-based adaptive exponential - integrate-and-fire neuron model. It allows an arbitrary number of synaptic - time constants. Synaptic conductance is modeled by an alpha function, as - described by A. Roth and M.C.W. van Rossum in Computational Modeling Methods - for Neuroscientists, MIT Press 2013, Chapter 6. +aeif_cond_alpha_multisynapse is a conductance-based adaptive exponential +integrate-and-fire neuron model. It allows an arbitrary number of synaptic +time constants. Synaptic conductance is modeled by an alpha function, as +described by A. Roth and M.C.W. van Rossum in Computational Modeling Methods +for Neuroscientists, MIT Press 2013, Chapter 6. - The time constants are supplied by an array, "tau_syn", and the pertaining - synaptic reversal potentials are supplied by the array "E_rev". Port numbers - are automatically assigned in the range from 1 to n_receptors. - During connection, the ports are selected with the property "receptor_type". +The time constants are supplied by an array, "tau_syn", and the pertaining +synaptic reversal potentials are supplied by the array "E_rev". Port numbers +are automatically assigned in the range from 1 to n_receptors. +During connection, the ports are selected with the property "receptor_type". - The membrane potential is given by the following differential equation: +The membrane potential is given by the following differential equation: - C dV/dt = -g_L(V-E_L) + g_L*Delta_T*exp((V-V_T)/Delta_T) + I_syn_tot(V, t) - - w + I_e +C dV/dt = -g_L(V-E_L) + g_L*Delta_T*exp((V-V_T)/Delta_T) + I_syn_tot(V, t) + - w + I_e - where +where - I_syn_tot(V,t) = \sum_i g_i(t) (V - E_{rev,i}) , +I_syn_tot(V,t) = \sum_i g_i(t) (V - E_{rev,i}) , - the synapse i is excitatory or inhibitory depending on the value of E_{rev,i} - and the differential equation for the spike-adaptation current w is: +the synapse i is excitatory or inhibitory depending on the value of E_{rev,i} +and the differential equation for the spike-adaptation current w is: - tau_w * dw/dt = a(V - E_L) - w +tau_w * dw/dt = a(V - E_L) - w - When the neuron fires a spike, the adaptation current w <- w + b. +When the neuron fires a spike, the adaptation current w <- w + b. Parameters: + The following parameters can be set in the status dictionary. Dynamic state variables: @@ -126,48 +127,48 @@ Integration parameters GSL integrator. Reduce it if NEST complains about numerical instabilities. - Examples: +Examples: - import nest - import numpy as np +import nest +import numpy as np - neuron = nest.Create('aeif_cond_alpha_multisynapse') - nest.SetStatus(neuron, {"V_peak": 0.0, "a": 4.0, "b":80.5}) - nest.SetStatus(neuron, {'E_rev':[0.0, 0.0, 0.0, -85.0], - 'tau_syn':[1.0, 5.0, 10.0, 8.0]}) +neuron = nest.Create('aeif_cond_alpha_multisynapse') +nest.SetStatus(neuron, {"V_peak": 0.0, "a": 4.0, "b":80.5}) +nest.SetStatus(neuron, {'E_rev':[0.0, 0.0, 0.0, -85.0], + 'tau_syn':[1.0, 5.0, 10.0, 8.0]}) - spike = nest.Create('spike_generator', params = {'spike_times': - np.array([10.0])}) +spike = nest.Create('spike_generator', params = {'spike_times': + np.array([10.0])}) - voltmeter = nest.Create('voltmeter', 1, {'withgid': True}) +voltmeter = nest.Create('voltmeter', 1, {'withgid': True}) - delays=[1.0, 300.0, 500.0, 700.0] - w=[1.0, 1.0, 1.0, 1.0] - for syn in range(4): - nest.Connect(spike, neuron, syn_spec={'model': 'static_synapse', - 'receptor_type': 1 + syn, - 'weight': w[syn], - 'delay': delays[syn]}) +delays=[1.0, 300.0, 500.0, 700.0] +w=[1.0, 1.0, 1.0, 1.0] +for syn in range(4): + nest.Connect(spike, neuron, syn_spec={'model': 'static_synapse', + 'receptor_type': 1 + syn, + 'weight': w[syn], + 'delay': delays[syn]}) - nest.Connect(voltmeter, neuron) +nest.Connect(voltmeter, neuron) - nest.Simulate(1000.0) - dmm = nest.GetStatus(voltmeter)[0] - Vms = dmm["events"]["V_m"] - ts = dmm["events"]["times"] - import pylab - pylab.figure(2) - pylab.plot(ts, Vms) - pylab.show() +nest.Simulate(1000.0) +dmm = nest.GetStatus(voltmeter)[0] +Vms = dmm["events"]["V_m"] +ts = dmm["events"]["times"] +import pylab +pylab.figure(2) +pylab.plot(ts, Vms) +pylab.show() - Sends: SpikeEvent +Sends: SpikeEvent - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - Author: Hans Ekkehard Plesser, based on aeif_cond_beta_multisynapse +Author: Hans Ekkehard Plesser, based on aeif_cond_beta_multisynapse - SeeAlso: aeif_cond_alpha_multisynapse - */ +SeeAlso: aeif_cond_alpha_multisynapse +*/ class aeif_cond_alpha_multisynapse : public Archiving_Node { diff --git a/models/aeif_cond_beta_multisynapse.h b/models/aeif_cond_beta_multisynapse.h index 64fd7e7a2a..071fdbe44b 100644 --- a/models/aeif_cond_beta_multisynapse.h +++ b/models/aeif_cond_beta_multisynapse.h @@ -58,41 +58,41 @@ extern "C" int aeif_cond_beta_multisynapse_dynamics( double, const double*, double*, void* ); /** @BeginDocumentation - Name: aeif_cond_beta_multisynapse - Conductance based adaptive exponential - integrate-and-fire neuron model according - to Brette and Gerstner (2005) with - multiple synaptic rise time and decay - time constants, and synaptic conductance - modeled by a beta function. +Name: aeif_cond_beta_multisynapse - Conductance based adaptive exponential + integrate-and-fire neuron model according + to Brette and Gerstner (2005) with + multiple synaptic rise time and decay + time constants, and synaptic conductance + modeled by a beta function. - Description: +Description: - aeif_cond_beta_multisynapse is a conductance-based adaptive exponential - integrate-and-fire neuron model. It allows an arbitrary number of synaptic - rise time and decay time constants. Synaptic conductance is modeled by a - beta function, as described by A. Roth and M.C.W. van Rossum - in Computational Modeling Methods for Neuroscientists, MIT Press 2013, - Chapter 6. +aeif_cond_beta_multisynapse is a conductance-based adaptive exponential +integrate-and-fire neuron model. It allows an arbitrary number of synaptic +rise time and decay time constants. Synaptic conductance is modeled by a +beta function, as described by A. Roth and M.C.W. van Rossum +in Computational Modeling Methods for Neuroscientists, MIT Press 2013, +Chapter 6. - The time constants are supplied by two arrays, "tau_rise" and "tau_decay" for - the synaptic rise time and decay time, respectively. The synaptic - reversal potentials are supplied by the array "E_rev". The port numbers - are automatically assigned in the range from 1 to n_receptors. - During connection, the ports are selected with the property "receptor_type". +The time constants are supplied by two arrays, "tau_rise" and "tau_decay" for +the synaptic rise time and decay time, respectively. The synaptic +reversal potentials are supplied by the array "E_rev". The port numbers +are automatically assigned in the range from 1 to n_receptors. +During connection, the ports are selected with the property "receptor_type". - The membrane potential is given by the following differential equation: - C dV/dt = -g_L(V-E_L) + g_L*Delta_T*exp((V-V_T)/Delta_T) + I_syn_tot(V, t) - - w + I_e +The membrane potential is given by the following differential equation: +C dV/dt = -g_L(V-E_L) + g_L*Delta_T*exp((V-V_T)/Delta_T) + I_syn_tot(V, t) + - w + I_e - where: - I_syn_tot(V,t) = \sum_i g_i(t) (V - E_{rev,i}) , +where: +I_syn_tot(V,t) = \sum_i g_i(t) (V - E_{rev,i}) , - the synapse i is excitatory or inhibitory depending on the value of E_{rev,i} - and the differential equation for the spike-adaptation current w is: +the synapse i is excitatory or inhibitory depending on the value of E_{rev,i} +and the differential equation for the spike-adaptation current w is: - tau_w * dw/dt = a(V - E_L) - w +tau_w * dw/dt = a(V - E_L) - w - When the neuron fires a spike, the adaptation current w <- w + b. +When the neuron fires a spike, the adaptation current w <- w + b. Parameters: The following parameters can be set in the status dictionary. @@ -129,49 +129,49 @@ Integration parameters GSL integrator. Reduce it if NEST complains about numerical instabilities. - Examples: +Examples: - import nest - import numpy as np +import nest +import numpy as np - neuron = nest.Create('aeif_cond_beta_multisynapse') - nest.SetStatus(neuron, {"V_peak": 0.0, "a": 4.0, "b":80.5}) - nest.SetStatus(neuron, {'E_rev':[0.0,0.0,0.0,-85.0], - 'tau_decay':[50.0,20.0,20.0,20.0], - 'tau_rise':[10.0,10.0,1.0,1.0]}) +neuron = nest.Create('aeif_cond_beta_multisynapse') +nest.SetStatus(neuron, {"V_peak": 0.0, "a": 4.0, "b":80.5}) +nest.SetStatus(neuron, {'E_rev':[0.0,0.0,0.0,-85.0], + 'tau_decay':[50.0,20.0,20.0,20.0], + 'tau_rise':[10.0,10.0,1.0,1.0]}) - spike = nest.Create('spike_generator', params = {'spike_times': - np.array([10.0])}) +spike = nest.Create('spike_generator', params = {'spike_times': + np.array([10.0])}) - voltmeter = nest.Create('voltmeter', 1, {'withgid': True}) +voltmeter = nest.Create('voltmeter', 1, {'withgid': True}) - delays=[1.0, 300.0, 500.0, 700.0] - w=[1.0, 1.0, 1.0, 1.0] - for syn in range(4): - nest.Connect(spike, neuron, syn_spec={'model': 'static_synapse', - 'receptor_type': 1 + syn, - 'weight': w[syn], - 'delay': delays[syn]}) +delays=[1.0, 300.0, 500.0, 700.0] +w=[1.0, 1.0, 1.0, 1.0] +for syn in range(4): + nest.Connect(spike, neuron, syn_spec={'model': 'static_synapse', + 'receptor_type': 1 + syn, + 'weight': w[syn], + 'delay': delays[syn]}) - nest.Connect(voltmeter, neuron) +nest.Connect(voltmeter, neuron) - nest.Simulate(1000.0) - dmm = nest.GetStatus(voltmeter)[0] - Vms = dmm["events"]["V_m"] - ts = dmm["events"]["times"] - import pylab - pylab.figure(2) - pylab.plot(ts, Vms) - pylab.show() +nest.Simulate(1000.0) +dmm = nest.GetStatus(voltmeter)[0] +Vms = dmm["events"]["V_m"] +ts = dmm["events"]["times"] +import pylab +pylab.figure(2) +pylab.plot(ts, Vms) +pylab.show() - Sends: SpikeEvent +Sends: SpikeEvent - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - Author: Bruno Golosio 07/10/2016 +Author: Bruno Golosio 07/10/2016 - SeeAlso: aeif_cond_alpha_multisynapse - */ +SeeAlso: aeif_cond_alpha_multisynapse +*/ class aeif_cond_beta_multisynapse : public Archiving_Node { diff --git a/models/aeif_psc_alpha.h b/models/aeif_psc_alpha.h index fd4be013af..ee5128a07e 100644 --- a/models/aeif_psc_alpha.h +++ b/models/aeif_psc_alpha.h @@ -62,6 +62,7 @@ Name: aeif_psc_alpha - Current-based exponential integrate-and-fire neuron model according to Brette and Gerstner (2005). Description: + aeif_psc_alpha is the adaptive exponential integrate and fire neuron according to Brette and Gerstner (2005). Synaptic currents are modelled as alpha-functions. @@ -77,6 +78,7 @@ and tau_w * dw/dt= a(V-E_L) -W Parameters: + The following parameters can be set in the status dictionary. Dynamic state variables: diff --git a/models/aeif_psc_delta.h b/models/aeif_psc_delta.h index 84144a4ca3..a33a969099 100644 --- a/models/aeif_psc_delta.h +++ b/models/aeif_psc_delta.h @@ -84,6 +84,7 @@ spikes. This is implemented such that V_m will be incremented/decremented by the value of J after a spike. Parameters: + The following parameters can be set in the status dictionary. Dynamic state variables: diff --git a/models/aeif_psc_exp.h b/models/aeif_psc_exp.h index 9395b8272d..475d731974 100644 --- a/models/aeif_psc_exp.h +++ b/models/aeif_psc_exp.h @@ -83,6 +83,7 @@ V_th+10 mV to avoid numerical instabilites that may result from setting V_peak too high. Parameters: + The following parameters can be set in the status dictionary. Dynamic state variables: diff --git a/models/amat2_psc_exp.h b/models/amat2_psc_exp.h index 31fc721b98..333ff4579a 100644 --- a/models/amat2_psc_exp.h +++ b/models/amat2_psc_exp.h @@ -36,109 +36,114 @@ namespace nest { /** @BeginDocumentation - Name: amat2_psc_exp - Non-resetting leaky integrate-and-fire neuron model - with exponential PSCs and adaptive threshold. - - Description: - amat2_psc_exp is an implementation of a leaky integrate-and-fire model - with exponential shaped postsynaptic currents (PSCs). Thus, postsynaptic - currents have an infinitely short rise time. - - The threshold is lifted when the neuron is fired and then decreases in a - fixed time scale toward a fixed level [3]. - - The threshold crossing is followed by a total refractory period - during which the neuron is not allowed to fire, even if the membrane - potential exceeds the threshold. The membrane potential is NOT reset, - but continuously integrated. - - The linear subthresold dynamics is integrated by the Exact - Integration scheme [1]. The neuron dynamics is solved on the time - grid given by the computation step size. Incoming as well as emitted - spikes are forced to that grid. - - An additional state variable and the corresponding differential - equation represents a piecewise constant external current. - - The general framework for the consistent formulation of systems with - neuron like dynamics interacting by point events is described in - [1]. A flow chart can be found in [2]. - - Remarks: - - The default parameter values for this model are different from the - corresponding parameter values for mat2_psc_exp. - - If identical parameters are used, and beta==0, then this model shall - behave exactly as mat2_psc_exp. - - The time constants in the model must fullfill the following conditions: - - tau_m != {tau_syn_ex, tau_syn_in} - - tau_v != {tau_syn_ex, tau_syn_in} - - tau_m != tau_v - This is required to avoid singularities in the numerics. This is a - problem of implementation only, not a principal problem of the model. - - Expect unstable numerics if time constants that are required to be - different are very close. - - Parameters: - The following parameters can be set in the status dictionary: - - C_m double - Capacity of the membrane in pF - E_L double - Resting potential in mV - tau_m double - Membrane time constant in ms - tau_syn_ex double - Time constant of postsynaptic excitatory currents in ms - tau_syn_in double - Time constant of postsynaptic inhibitory currents in ms - t_ref double - Duration of absolute refractory period (no spiking) in - ms - V_m double - Membrane potential in mV - I_e double - Constant input current in pA - t_spike double - Point in time of last spike in ms - tau_1 double - Short time constant of adaptive threshold in ms - [3, eqs 2-3] - tau_2 double - Long time constant of adaptive threshold in ms - [3, eqs 2-3] - alpha_1 double - Amplitude of short time threshold adaption in mV - [3, eqs 2-3] - alpha_2 double - Amplitude of long time threshold adaption in mV - [3, eqs 2-3] - tau_v double - Time constant of kernel for voltage-dependent threshold - component in ms [3, eqs 16-17] - beta double - Scaling coefficient for voltage-dependent threshold - component in 1/ms [3, eqs 16-17] - omega double - Resting spike threshold in mV (absolute value, not - relative to E_L as in [3]) - - The following state variables can be read out with the multimeter device: - - V_m Non-resetting membrane potential - V_th Two-timescale adaptive threshold - - Remarks: - tau_m != tau_syn_{ex,in} is required by the current implementation to avoid a - degenerate case of the ODE describing the model [1]. For very similar values, - numerics will be unstable. - - References: - [1] Rotter S & Diesmann M (1999) Exact simulation of - time-invariant linear systems with applications to neuronal - modeling. Biologial Cybernetics 81:381-402. - [2] Diesmann M, Gewaltig M-O, Rotter S, & Aertsen A (2001) State - space analysis of synchronous spiking in cortical neural - networks. Neurocomputing 38-40:565-571. - [3] Kobayashi R, Tsubo Y and Shinomoto S (2009) Made-to-order - spiking neuron model equipped with a multi-timescale adaptive - threshold. Front. Comput. Neurosci. 3:9. doi:10.3389/neuro.10.009.2009 - [4] Yamauchi S, Kim H and Shinomoto S (2011) Elemental spiking neuron model - for reproducing diverse firing patterns and predicting precise - firing times. Front. Comput. Neurosci. 5:42. - doi: 10.3389/fncom.2011.00042 - - Sends: SpikeEvent - - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - - FirstVersion: April 2013 - - Author: Thomas Heiberg & Hans E. Plesser (modified mat2_psc_exp model of - Thomas Pfeil) +Name: amat2_psc_exp - Non-resetting leaky integrate-and-fire neuron model + with exponential PSCs and adaptive threshold. + +Description: + +amat2_psc_exp is an implementation of a leaky integrate-and-fire model +with exponential shaped postsynaptic currents (PSCs). Thus, postsynaptic +currents have an infinitely short rise time. + +The threshold is lifted when the neuron is fired and then decreases in a +fixed time scale toward a fixed level [3]. + +The threshold crossing is followed by a total refractory period +during which the neuron is not allowed to fire, even if the membrane +potential exceeds the threshold. The membrane potential is NOT reset, +but continuously integrated. + +The linear subthresold dynamics is integrated by the Exact +Integration scheme [1]. The neuron dynamics is solved on the time +grid given by the computation step size. Incoming as well as emitted +spikes are forced to that grid. + +An additional state variable and the corresponding differential +equation represents a piecewise constant external current. + +The general framework for the consistent formulation of systems with +neuron like dynamics interacting by point events is described in +[1]. A flow chart can be found in [2]. + +Remarks: + +- The default parameter values for this model are different from the + corresponding parameter values for mat2_psc_exp. +- If identical parameters are used, and beta==0, then this model shall + behave exactly as mat2_psc_exp. +- The time constants in the model must fullfill the following conditions: + - tau_m != {tau_syn_ex, tau_syn_in} + - tau_v != {tau_syn_ex, tau_syn_in} + - tau_m != tau_v + This is required to avoid singularities in the numerics. This is a + problem of implementation only, not a principal problem of the model. +- Expect unstable numerics if time constants that are required to be + different are very close. + +Parameters: + +The following parameters can be set in the status dictionary: + +C_m double - Capacity of the membrane in pF +E_L double - Resting potential in mV +tau_m double - Membrane time constant in ms +tau_syn_ex double - Time constant of postsynaptic excitatory currents in ms +tau_syn_in double - Time constant of postsynaptic inhibitory currents in ms +t_ref double - Duration of absolute refractory period (no spiking) in + ms +V_m double - Membrane potential in mV +I_e double - Constant input current in pA +t_spike double - Point in time of last spike in ms +tau_1 double - Short time constant of adaptive threshold in ms + [3, eqs 2-3] +tau_2 double - Long time constant of adaptive threshold in ms + [3, eqs 2-3] +alpha_1 double - Amplitude of short time threshold adaption in mV + [3, eqs 2-3] +alpha_2 double - Amplitude of long time threshold adaption in mV + [3, eqs 2-3] +tau_v double - Time constant of kernel for voltage-dependent threshold + component in ms [3, eqs 16-17] +beta double - Scaling coefficient for voltage-dependent threshold + component in 1/ms [3, eqs 16-17] +omega double - Resting spike threshold in mV (absolute value, not + relative to E_L as in [3]) + +The following state variables can be read out with the multimeter device: + +V_m Non-resetting membrane potential +V_th Two-timescale adaptive threshold + +Remarks: + +tau_m != tau_syn_{ex,in} is required by the current implementation to avoid a +degenerate case of the ODE describing the model [1]. For very similar values, +numerics will be unstable. + +References: + +[1] Rotter S & Diesmann M (1999) Exact simulation of + time-invariant linear systems with applications to neuronal + modeling. Biologial Cybernetics 81:381-402. +[2] Diesmann M, Gewaltig M-O, Rotter S, & Aertsen A (2001) State + space analysis of synchronous spiking in cortical neural + networks. Neurocomputing 38-40:565-571. +[3] Kobayashi R, Tsubo Y and Shinomoto S (2009) Made-to-order + spiking neuron model equipped with a multi-timescale adaptive + threshold. Front. Comput. Neurosci. 3:9. doi:10.3389/neuro.10.009.2009 +[4] Yamauchi S, Kim H and Shinomoto S (2011) Elemental spiking neuron model + for reproducing diverse firing patterns and predicting precise + firing times. Front. Comput. Neurosci. 5:42. + doi: 10.3389/fncom.2011.00042 + +Sends: SpikeEvent + +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest + +FirstVersion: April 2013 + +Author: Thomas Heiberg & Hans E. Plesser (modified mat2_psc_exp model of +Thomas Pfeil) */ class amat2_psc_exp : public Archiving_Node { diff --git a/models/bernoulli_connection.h b/models/bernoulli_connection.h index 9ced351aa4..f520bb4bbe 100644 --- a/models/bernoulli_connection.h +++ b/models/bernoulli_connection.h @@ -32,45 +32,47 @@ namespace nest { /** @BeginDocumentation - Name: bernoulli_synapse - Static synapse with stochastic transmission. +Name: bernoulli_synapse - Static synapse with stochastic transmission. - Description: - Spikes are transmitted by bernoulli_synapse following a Bernoulli trial with - success probability p_transmit. This synaptic mechanism was inspired by the - results described in [1] of greater transmission probability for stronger - excitatory connections and it was previously applied in [2] and [3]. +Description: - bernoulli_synapse does not support any kind of plasticity. It simply stores - the parameters target, weight, transmission probability, delay and - receiver port for each connection. +Spikes are transmitted by bernoulli_synapse following a Bernoulli trial with +success probability p_transmit. This synaptic mechanism was inspired by the +results described in [1] of greater transmission probability for stronger +excitatory connections and it was previously applied in [2] and [3]. - Parameters: - p_transmit double - Transmission probability, must be between 0 and 1 +bernoulli_synapse does not support any kind of plasticity. It simply stores +the parameters target, weight, transmission probability, delay and +receiver port for each connection. - FirstVersion: June 2017 +Parameters: - Author: Susanne Kunkel, Maximilian Schmidt, Milena Menezes Carvalho +p_transmit double - Transmission probability, must be between 0 and 1 - Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, - DoubleDataEvent, DataLoggingRequest +FirstVersion: June 2017 - SeeAlso: synapsedict, static_synapse, static_synapse_hom_w +Author: Susanne Kunkel, Maximilian Schmidt, Milena Menezes Carvalho - References: +Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, +DoubleDataEvent, DataLoggingRequest - [1] Sandrine Lefort, Christian Tomm, J.-C. Floyd Sarria, Carl C.H. Petersen, - The Excitatory Neuronal Network of the C2 Barrel Column in Mouse Primary - Somatosensory Cortex, Neuron, Volume 61, Issue 2, 29 January 2009, Pages - 301-316, DOI: 10.1016/j.neuron.2008.12.020. +SeeAlso: synapsedict, static_synapse, static_synapse_hom_w - [2] Jun-nosuke Teramae, Yasuhiro Tsubo & Tomoki Fukai, Optimal spike-based - communication in excitable networks with strong-sparse and weak-dense links, - Scientific Reports 2, Article number: 485 (2012), DOI: 10.1038/srep00485 +References: - [3] Yoshiyuki Omura, Milena M. Carvalho, Kaoru Inokuchi, Tomoki Fukai, A - Lognormal Recurrent Network Model for Burst Generation during Hippocampal - Sharp Waves, Journal of Neuroscience 28 October 2015, 35 (43) 14585-14601, - DOI: 10.1523/JNEUROSCI.4944-14.2015 + [1] Sandrine Lefort, Christian Tomm, J.-C. Floyd Sarria, Carl C.H. Petersen, +The Excitatory Neuronal Network of the C2 Barrel Column in Mouse Primary +Somatosensory Cortex, Neuron, Volume 61, Issue 2, 29 January 2009, Pages +301-316, DOI: 10.1016/j.neuron.2008.12.020. + + [2] Jun-nosuke Teramae, Yasuhiro Tsubo & Tomoki Fukai, Optimal spike-based +communication in excitable networks with strong-sparse and weak-dense links, +Scientific Reports 2, Article number: 485 (2012), DOI: 10.1038/srep00485 + + [3] Yoshiyuki Omura, Milena M. Carvalho, Kaoru Inokuchi, Tomoki Fukai, A +Lognormal Recurrent Network Model for Burst Generation during Hippocampal +Sharp Waves, Journal of Neuroscience 28 October 2015, 35 (43) 14585-14601, +DOI: 10.1523/JNEUROSCI.4944-14.2015 */ template < typename targetidentifierT > class BernoulliConnection : public Connection< targetidentifierT > diff --git a/models/cont_delay_connection.h b/models/cont_delay_connection.h index f151d948ef..8f644a1ed2 100644 --- a/models/cont_delay_connection.h +++ b/models/cont_delay_connection.h @@ -33,61 +33,64 @@ namespace nest { /** @BeginDocumentation - Name: cont_delay_synapse - Synapse type for continuous delays +Name: cont_delay_synapse - Synapse type for continuous delays - Description: - cont_delay_synapse relaxes the condition that NEST only implements delays - which are an integer multiple of the time step h. A continuous delay is - decomposed into an integer part (delay_) and a double (delay_offset_) so - that the actual delay is given by delay_*h - delay_offset_. This can be - combined with off-grid spike times. +Description: - Example: - 0 << /resolution 1.0 >> SetStatus +cont_delay_synapse relaxes the condition that NEST only implements delays +which are an integer multiple of the time step h. A continuous delay is +decomposed into an integer part (delay_) and a double (delay_offset_) so +that the actual delay is given by delay_*h - delay_offset_. This can be +combined with off-grid spike times. - /sg /spike_generator << /precise_times true /spike_times [ 2.0 5.5 ] >> Create - def - /n /iaf_psc_delta_canon Create def - /sd /spike_detector << /precise_times true /record_to [ /memory ] >> Create - def +Example: - /cont_delay_synapse << /weight 100. /delay 1.7 >> SetDefaults - sg n /cont_delay_synapse Connect - n sd Connect +0 << /resolution 1.0 >> SetStatus - 10 Simulate +/sg /spike_generator << /precise_times true /spike_times [ 2.0 5.5 ] >> Create +def +/n /iaf_psc_delta_canon Create def +/sd /spike_detector << /precise_times true /record_to [ /memory ] >> Create +def - sd GetStatus /events/times :: == % --> <. 3.7 7.2 .> +/cont_delay_synapse << /weight 100. /delay 1.7 >> SetDefaults +sg n /cont_delay_synapse Connect +n sd Connect - Remarks: - All delays set by the normal NEST Connect function will be rounded, even when - using cont_delay_connection. To set non-grid delays, you must either +10 Simulate - 1) set the delay as synapse default, as in the example above - 2) set the delay for each synapse after the connections have been created, - e.g., +sd GetStatus /events/times :: == % --> <. 3.7 7.2 .> - sg n 100. 1.0 /cont_delay_synapse Connect - << /source [ sg ] /synapse_model /cont_delay_synapse >> GetConnections - { << /delay 1.7 >> SetStatus } - forall +Remarks: - Alternative 1) is much more efficient, but all synapses then will have the - same delay. - Alternative 2) is slower, but allows individual delay values. +All delays set by the normal NEST Connect function will be rounded, even when +using cont_delay_connection. To set non-grid delays, you must either - Continuous delays cannot be shorter than the simulation resolution. +1) set the delay as synapse default, as in the example above +2) set the delay for each synapse after the connections have been created, + e.g., - Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, - DoubleDataEvent + sg n 100. 1.0 /cont_delay_synapse Connect + << /source [ sg ] /synapse_model /cont_delay_synapse >> GetConnections + { << /delay 1.7 >> SetStatus } + forall - References: none +Alternative 1) is much more efficient, but all synapses then will have the + same delay. +Alternative 2) is slower, but allows individual delay values. - FirstVersion: June 2007 +Continuous delays cannot be shorter than the simulation resolution. - Author: Abigail Morrison +Transmits: SpikeEvent, RateEvent, CurrentEvent, ConductanceEvent, + DoubleDataEvent - SeeAlso: synapsedict, static_synapse, iaf_psc_alpha_canon +References: none + +FirstVersion: June 2007 + +Author: Abigail Morrison + +SeeAlso: synapsedict, static_synapse, iaf_psc_alpha_canon */ template < typename targetidentifierT > class ContDelayConnection : public Connection< targetidentifierT > diff --git a/models/correlation_detector.h b/models/correlation_detector.h index bcdb6839db..4ba170b6c6 100644 --- a/models/correlation_detector.h +++ b/models/correlation_detector.h @@ -37,109 +37,114 @@ namespace nest { -/** @BeginDocumentation - Name: correlation_detector - Device for evaluating cross correlation between - two spike sources - - Description: - The correlation_detector device is a recording device. It is used to record - spikes from two pools of spike inputs and calculates the count_histogram of - inter-spike intervals (raw cross correlation) binned to bins of duration - delta_tau. The result can be obtained via GetStatus under the key - /count_histogram. - In parallel it records a weighted histogram, where the connection weights - are used to weight every count. In order to minimize numerical errors the - Kahan summation algorithm is used when calculating the weighted histogram. - (http://en.wikipedia.org/wiki/Kahan_summation_algorithm) - Both are arrays of 2*tau_max/delta_tau+1 values containing the histogram - counts in the following way: - - Let t_{1,i} be the spike times of source 1, - t_{2,j} the spike times of source 2. - histogram[n] then contains the sum of products of the weight w_{1,i}*w_{2,j}, - count_histogram[n] contains 1 summed over all events with t_{2,j}-t_{1,i} in - - [ n*delta_tau - tau_max - delta_tau/2 , n*delta_tau - tau_max + delta_tau/2 ) - - The bins are centered around the time difference they represent, but are - left-closed and right-open. This means that events with time difference - -tau_max-delta_tau/2 are counted in the leftmost bin, but event with - difference tau_max+delta_tau/2 are not counted at all. - - The correlation detector has two inputs, which are selected via the - receptor_port of the incoming connection: All incoming connections with - receptor_port = 0 will be pooled as the spike source 1, the ones with - receptor_port = 1 will be used as spike source 2. - - Parameters: - Tstart double - Time when to start counting events. This time should - be set to at least start + tau_max in order to avoid - edge effects of the correlation counts. - Tstop double - Time when to stop counting events. This time should be - set to at most Tsim - tau_max, where Tsim is the - duration of simulation, in order to avoid edge effects - of the correlation counts. - delta_tau double - bin width in ms - tau_max double - one-sided histogram width in ms. Events with - differences in - [-tau_max-delta_tau/2, tau_max+delta_tau/2) - are counted. - - histogram double vector, read-only - raw, weighted cross - correlation counts - histogram_correction double_vector, read-only - correction factors for kahan - summation algorithm - count_histogram long vector, read-only - raw, cross correlation - counts - n_events integer vector - number of events from source - 0 and 1. By setting n_events - to [0 0], the histogram is - cleared. - - Remarks: This recorder does not record to file, screen or memory in the usual - sense. - - Correlation detectors IGNORE any connection delays. - - Correlation detector breaks with the persistence scheme as - follows: the internal buffers for storing spikes are part - of State_, but are initialized by init_buffers_(). - - @todo The correlation detector could be made more efficient as follows - (HEP 2008-07-01): - - incoming_ is vector of two deques - - let handle() push_back() entries in incoming_ and do nothing else - - keep index to last "old spike" in each incoming_; cannot - be iterator since that may change - - update() deletes all entries before now-tau_max, sorts the new - entries, then registers new entries in histogram - - Example: - /s1 /spike_generator Create def - /s2 /spike_generator Create def - s1 << /spike_times [ 1.0 1.5 2.7 4.0 5.1 ] >> SetStatus - s2 << /spike_times [ 0.9 1.8 2.1 2.3 3.5 3.8 4.9 ] >> SetStatus - /cd /correlation_detector Create def - cd << /delta_tau 0.5 /tau_max 2.5 >> SetStatus - s1 cd << /receptor_type 0 >> Connect - s2 cd << /receptor_type 1 >> Connect - 10 Simulate - cd [/n_events] get == --> [# 5 7 #] - cd [/histogram] get == --> [. 0 3 3 1 4 3 2 6 1 2 2 .] - cd << /reset true >> SetStatus - cd [/histogram] get == --> [. 0 0 0 0 0 0 0 0 0 0 0 .] - - Receives: SpikeEvent - - Author: Moritz Helias - Jakob Jordan (implemented Kahan summation algorithm) 2013/02/18 - - FirstVersion: 2007/5/21 - - SeeAlso: spike_detector, Device, PseudoRecordingDevice - - Availability: NEST +/** @BeginDocumentation +Name: correlation_detector - Device for evaluating cross correlation between + two spike sources + +Description: + +The correlation_detector device is a recording device. It is used to record +spikes from two pools of spike inputs and calculates the count_histogram of +inter-spike intervals (raw cross correlation) binned to bins of duration +delta_tau. The result can be obtained via GetStatus under the key +/count_histogram. +In parallel it records a weighted histogram, where the connection weights +are used to weight every count. In order to minimize numerical errors the +Kahan summation algorithm is used when calculating the weighted histogram. +(http://en.wikipedia.org/wiki/Kahan_summation_algorithm) +Both are arrays of 2*tau_max/delta_tau+1 values containing the histogram +counts in the following way: + +Let t_{1,i} be the spike times of source 1, +t_{2,j} the spike times of source 2. +histogram[n] then contains the sum of products of the weight w_{1,i}*w_{2,j}, +count_histogram[n] contains 1 summed over all events with t_{2,j}-t_{1,i} in + +[ n*delta_tau - tau_max - delta_tau/2 , n*delta_tau - tau_max + delta_tau/2 ) + +The bins are centered around the time difference they represent, but are +left-closed and right-open. This means that events with time difference +-tau_max-delta_tau/2 are counted in the leftmost bin, but event with +difference tau_max+delta_tau/2 are not counted at all. + +The correlation detector has two inputs, which are selected via the +receptor_port of the incoming connection: All incoming connections with +receptor_port = 0 will be pooled as the spike source 1, the ones with +receptor_port = 1 will be used as spike source 2. + +Parameters: + +Tstart double - Time when to start counting events. This time should + be set to at least start + tau_max in order to avoid + edge effects of the correlation counts. +Tstop double - Time when to stop counting events. This time should be + set to at most Tsim - tau_max, where Tsim is the + duration of simulation, in order to avoid edge effects + of the correlation counts. +delta_tau double - bin width in ms +tau_max double - one-sided histogram width in ms. Events with + differences in + [-tau_max-delta_tau/2, tau_max+delta_tau/2) + are counted. + +histogram double vector, read-only - raw, weighted cross + correlation counts +histogram_correction double_vector, read-only - correction factors for kahan + summation algorithm +count_histogram long vector, read-only - raw, cross correlation + counts +n_events integer vector - number of events from source + 0 and 1. By setting n_events + to [0 0], the histogram is + cleared. + +Remarks: + +This recorder does not record to file, screen or memory in the usual +sense. + +Correlation detectors IGNORE any connection delays. + +Correlation detector breaks with the persistence scheme as +follows: the internal buffers for storing spikes are part +of State_, but are initialized by init_buffers_(). + +@todo The correlation detector could be made more efficient as follows +(HEP 2008-07-01): +- incoming_ is vector of two deques +- let handle() push_back() entries in incoming_ and do nothing else +- keep index to last "old spike" in each incoming_; cannot + be iterator since that may change +- update() deletes all entries before now-tau_max, sorts the new + entries, then registers new entries in histogram + +Example: + +/s1 /spike_generator Create def +/s2 /spike_generator Create def +s1 << /spike_times [ 1.0 1.5 2.7 4.0 5.1 ] >> SetStatus +s2 << /spike_times [ 0.9 1.8 2.1 2.3 3.5 3.8 4.9 ] >> SetStatus +/cd /correlation_detector Create def +cd << /delta_tau 0.5 /tau_max 2.5 >> SetStatus +s1 cd << /receptor_type 0 >> Connect +s2 cd << /receptor_type 1 >> Connect +10 Simulate +cd [/n_events] get == --> [# 5 7 #] +cd [/histogram] get == --> [. 0 3 3 1 4 3 2 6 1 2 2 .] +cd << /reset true >> SetStatus +cd [/histogram] get == --> [. 0 0 0 0 0 0 0 0 0 0 0 .] + +Receives: SpikeEvent + +Author: Moritz Helias + Jakob Jordan (implemented Kahan summation algorithm) 2013/02/18 + +FirstVersion: 2007/5/21 + +SeeAlso: spike_detector, Device, PseudoRecordingDevice + +Availability: NEST */ class correlation_detector : public Node { diff --git a/models/correlomatrix_detector.h b/models/correlomatrix_detector.h index 436efba648..37d73ad899 100644 --- a/models/correlomatrix_detector.h +++ b/models/correlomatrix_detector.h @@ -41,7 +41,9 @@ namespace nest Name: correlomatrix_detector - Device for measuring the covariance matrix from several inputs -Description: The correlomatrix_detector is a recording device. It is used to +Description: + +The correlomatrix_detector is a recording device. It is used to record spikes from several pools of spike inputs and calculates the covariance matrix of inter-spike intervals (raw auto and cross correlation) binned to bins of duration delta_tau. The histogram is only recorded for @@ -69,6 +71,7 @@ via SetStatus under the key N_channels. All incoming connections to a specified receptor will be pooled. Parameters: + Tstart double - Time when to start counting events. This time should be set to at least start + tau_max in order to avoid edge effects of the correlation counts. @@ -98,23 +101,24 @@ count_covariance matrix of long vectors, read-only - raw, auto/cross n_events integer vector - number of events from all sources. -Remarks: This recorder does not record to file, screen or memory in the usual - sense. +Remarks: +This recorder does not record to file, screen or memory in the usual +sense. - @note Correlomatrix detectors IGNORE any connection delays. +@note Correlomatrix detectors IGNORE any connection delays. - @note Correlomatrix detector breaks with the persistence scheme as - follows: the internal buffers for storing spikes are part - of State_, but are initialized by init_buffers_(). +@note Correlomatrix detector breaks with the persistence scheme as + follows: the internal buffers for storing spikes are part + of State_, but are initialized by init_buffers_(). - @todo The correlation detector could be made more efficient as follows - (HEP 2008-07-01): - - incoming_ is vector of two deques - - let handle() push_back() entries in incoming_ and do nothing else - - keep index to last "old spike" in each incoming_; cannot - be iterator since that may change - - update() deletes all entries before now-tau_max, sorts the new - entries, then registers new entries in histogram + @todo The correlation detector could be made more efficient as follows + (HEP 2008-07-01): + - incoming_ is vector of two deques + - let handle() push_back() entries in incoming_ and do nothing else + - keep index to last "old spike" in each incoming_; cannot + be iterator since that may change + - update() deletes all entries before now-tau_max, sorts the new + entries, then registers new entries in histogram Example: /s1 /spike_generator Create def diff --git a/models/correlospinmatrix_detector.h b/models/correlospinmatrix_detector.h index 6bed1ffbc9..7d21fa353d 100644 --- a/models/correlospinmatrix_detector.h +++ b/models/correlospinmatrix_detector.h @@ -41,7 +41,9 @@ namespace nest Name: correlospinmatrix_detector - Device for measuring the covariance matrix from several inputs -Description: The correlospinmatrix_detector is a recording device. It is used +Description: + +The correlospinmatrix_detector is a recording device. It is used to record correlations from binary neurons from several binary sources and calculates the raw auto and cross correlation binned to bins of duration delta_tau. The result can be obtained via GetStatus under the key @@ -59,6 +61,7 @@ set via SetStatus under the key N_channels. All incoming connections to a specified receptor will be pooled. Parameters: + Tstart double - Time when to start counting events. This time should be set to at least start + tau_max in order to avoid edge effects of the correlation counts. @@ -79,15 +82,17 @@ N_channels long - The number of inputs to correlate. This defines the count_covariance matrix of long vectors, read-only - raw, auto/cross correlation counts -Remarks: This recorder does not record to file, screen or memory in the usual - sense. The result must be obtained by a call to GetStatus. Setting either - N_channels, Tstart, Tstop, tau_max or delta_tau clears count_covariance. +Remarks: + +This recorder does not record to file, screen or memory in the usual +sense. The result must be obtained by a call to GetStatus. Setting either +N_channels, Tstart, Tstop, tau_max or delta_tau clears count_covariance. - Correlospinmatrix detectors IGNORE any connection delays. +Correlospinmatrix detectors IGNORE any connection delays. - Correlospinmatrix detector breaks with the persistence scheme as - follows: the internal buffers for storing spikes are part - of State_, but are initialized by init_buffers_(). +Correlospinmatrix detector breaks with the persistence scheme as +follows: the internal buffers for storing spikes are part +of State_, but are initialized by init_buffers_(). Example: diff --git a/models/dc_generator.h b/models/dc_generator.h index 3a6a0c682a..0ac006dd50 100644 --- a/models/dc_generator.h +++ b/models/dc_generator.h @@ -47,19 +47,24 @@ Description: The DC-Generator provides a constant DC Input to the connected node. The unit of the current is pA. Parameters: - The following parameters can be set in the status dictionary: - amplitude double - Amplitude of current in pA - -Examples: The dc current can be altered in the following way: - /dc_generator Create /dc_gen Set % Creates a dc_generator, which is a node - dc_gen GetStatus info % View properties (amplitude is 0) - dc_gen << /amplitude 1500. >> SetStatus - dc_gen GetStatus info % amplitude is now 1500.0 - -Remarks: The dc_generator is rather inefficient, since it needs to - send the same current information on each time step. If you - only need a constant bias current into a neuron, you should - set it directly in the neuron, e.g., dc_generator. + +The following parameters can be set in the status dictionary: +amplitude double - Amplitude of current in pA + +Examples: + +The dc current can be altered in the following way: +/dc_generator Create /dc_gen Set % Creates a dc_generator, which is a node +dc_gen GetStatus info % View properties (amplitude is 0) +dc_gen << /amplitude 1500. >> SetStatus +dc_gen GetStatus info % amplitude is now 1500.0 + +Remarks: + +The dc_generator is rather inefficient, since it needs to +send the same current information on each time step. If you +only need a constant bias current into a neuron, you should +set it directly in the neuron, e.g., dc_generator. Sends: CurrentEvent diff --git a/models/diffusion_connection.h b/models/diffusion_connection.h index 0a8ae0b556..d2a8fcddbb 100644 --- a/models/diffusion_connection.h +++ b/models/diffusion_connection.h @@ -27,32 +27,35 @@ namespace nest { + /** @BeginDocumentation Name: diffusion_connection - Synapse type for instantaneous rate connections between neurons of type siegert_neuron. -Description: diffusion_connection is a connector to create - instantaneous connections between neurons of type siegert_neuron. The - connection type is identical to type rate_connection_instantaneous - for instantaneous rate connections except for the two parameters - drift_factor and diffusion_factor substituting the parameter weight. - - These two factor origin from the mean-field reduction of networks of - leaky-integrate-and-fire neurons. In this reduction the input to the - neurons is characterized by its mean and its variance. The mean is - obtained by a sum over presynaptic activities (e.g as in eq.28 in - [1]), where each term of the sum consists of the presynaptic activity - multiplied with the drift_factor. Similarly, the variance is obtained - by a sum over presynaptic activities (e.g as in eq.29 in [1]), where - each term of the sum consists of the presynaptic activity multiplied - with the diffusion_factor. Note that in general the drift and - diffusion factors might differ from the ones given in eq. 28 and 29., - for example in case of a reduction on the single neuron level or in - case of distributed in-degrees (see discussion in chapter 5.2 of [1]) - - The values of the parameters delay and weight are ignored for - connections of this type. +Description: + +diffusion_connection is a connector to create +instantaneous connections between neurons of type siegert_neuron. The +connection type is identical to type rate_connection_instantaneous +for instantaneous rate connections except for the two parameters +drift_factor and diffusion_factor substituting the parameter weight. + +These two factor origin from the mean-field reduction of networks of +leaky-integrate-and-fire neurons. In this reduction the input to the +neurons is characterized by its mean and its variance. The mean is +obtained by a sum over presynaptic activities (e.g as in eq.28 in +[1]), where each term of the sum consists of the presynaptic activity +multiplied with the drift_factor. Similarly, the variance is obtained +by a sum over presynaptic activities (e.g as in eq.29 in [1]), where +each term of the sum consists of the presynaptic activity multiplied +with the diffusion_factor. Note that in general the drift and +diffusion factors might differ from the ones given in eq. 28 and 29., +for example in case of a reduction on the single neuron level or in +case of distributed in-degrees (see discussion in chapter 5.2 of [1]) + +The values of the parameters delay and weight are ignored for +connections of this type. Transmits: DiffusionConnectionEvent diff --git a/models/erfc_neuron.h b/models/erfc_neuron.h index 728573c310..d06d047078 100644 --- a/models/erfc_neuron.h +++ b/models/erfc_neuron.h @@ -29,78 +29,82 @@ namespace nest { /** @BeginDocumentation - Name: erfc_neuron - Binary stochastic neuron with complementary error - function as activation function. - - Description: - The erfc_neuron is an implementation of a binary neuron that - is irregularly updated at Poisson time points. At each update - point the total synaptic input h into the neuron is summed up, - passed through a gain function g whose output is interpreted as - the probability of the neuron to be in the active (1) state. - - The gain function g used here is - - g(h) = 0.5 * erfc (( h - theta_ ) / ( sqrt( 2. ) * sigma)). - - This corresponds to a McCulloch-Pitts neuron receiving additional - Gaussian noise with mean 0 and standard deviation sigma. - The time constant tau_m is defined as the mean of the - inter-update-interval that is drawn from an exponential - distribution with this parameter. Using this neuron to reproduce - simulations with asynchronous update (similar to [1,2]), the time - constant needs to be chosen as tau_m = dt*N, where dt is the simulation time - step and N the number of neurons in the original simulation with - asynchronous update. This ensures that a neuron is updated on - average every tau_m ms. Since in the original papers [1,2] neurons - are coupled with zero delay, this implementation follows that - definition. It uses the update scheme described in [3] to - maintain causality: The incoming events in time step t_i are - taken into account at the beginning of the time step to calculate - the gain function and to decide upon a transition. In order to - obtain delayed coupling with delay d, the user has to specify the - delay d+h upon connection, where h is the simulation time step. - - Remarks: - This neuron has a special use for spike events to convey the - binary state of the neuron to the target. The neuron model - only sends a spike if a transition of its state occurs. If the - state makes an up-transition it sends a spike with multiplicity 2, - if a down transition occurs, it sends a spike with multiplicity 1. - The decoding scheme relies on the feature that spikes with multiplicity - larger 1 are delivered consecutively, also in a parallel setting. - The creation of double connections between binary neurons will - destroy the decoding scheme, as this effectively duplicates - every event. Using random connection routines it is therefore - advisable to set the property 'multapses' to false. - The neuron accepts several sources of currents, e.g. from a - noise_generator. - - - Parameters: - tau_m double - Membrane time constant (mean inter-update-interval) (ms) - theta double - threshold for sigmoidal activation function (mV) - sigma double - 1/sqrt(2pi) x inverse of maximal slope (mV) - - References: - [1] Iris Ginzburg, Haim Sompolinsky. Theory of correlations in stochastic - neural networks (1994). PRE 50(4) p. 3171 - [2] W. McCulloch und W. Pitts (1943). A logical calculus of the ideas - immanent in nervous activity. Bulletin of Mathematical Biophysics, 5:115-133. - [3] Abigail Morrison, Markus Diesmann. Maintaining Causality in Discrete Time - Neuronal Simulations. In: Lectures in Supercomputational Neuroscience, - p. 267. Peter beim Graben, Changsong Zhou, Marco Thiel, Juergen Kurths - (Eds.), Springer 2008. - - Sends: SpikeEvent - - Receives: SpikeEvent, PotentialRequest - - FirstVersion: May 2016 - - Authors: Jakob Jordan, Tobias Kuehn - - SeeAlso: mcculloch_pitts_neuron, ginzburg_neuron +Name: erfc_neuron - Binary stochastic neuron with complementary error +function as activation function. + +Description: + +The erfc_neuron is an implementation of a binary neuron that +is irregularly updated at Poisson time points. At each update +point the total synaptic input h into the neuron is summed up, +passed through a gain function g whose output is interpreted as +the probability of the neuron to be in the active (1) state. + +The gain function g used here is + +g(h) = 0.5 * erfc (( h - theta_ ) / ( sqrt( 2. ) * sigma)). + +This corresponds to a McCulloch-Pitts neuron receiving additional +Gaussian noise with mean 0 and standard deviation sigma. +The time constant tau_m is defined as the mean of the +inter-update-interval that is drawn from an exponential +distribution with this parameter. Using this neuron to reproduce +simulations with asynchronous update (similar to [1,2]), the time +constant needs to be chosen as tau_m = dt*N, where dt is the simulation time +step and N the number of neurons in the original simulation with +asynchronous update. This ensures that a neuron is updated on +average every tau_m ms. Since in the original papers [1,2] neurons +are coupled with zero delay, this implementation follows that +definition. It uses the update scheme described in [3] to +maintain causality: The incoming events in time step t_i are +taken into account at the beginning of the time step to calculate +the gain function and to decide upon a transition. In order to +obtain delayed coupling with delay d, the user has to specify the +delay d+h upon connection, where h is the simulation time step. + +Remarks: + +This neuron has a special use for spike events to convey the +binary state of the neuron to the target. The neuron model +only sends a spike if a transition of its state occurs. If the +state makes an up-transition it sends a spike with multiplicity 2, +if a down transition occurs, it sends a spike with multiplicity 1. +The decoding scheme relies on the feature that spikes with multiplicity +larger 1 are delivered consecutively, also in a parallel setting. +The creation of double connections between binary neurons will +destroy the decoding scheme, as this effectively duplicates +every event. Using random connection routines it is therefore +advisable to set the property 'multapses' to false. +The neuron accepts several sources of currents, e.g. from a +noise_generator. + + +Parameters: + +tau_m double - Membrane time constant (mean inter-update-interval) (ms) +theta double - threshold for sigmoidal activation function (mV) +sigma double - 1/sqrt(2pi) x inverse of maximal slope (mV) + +References: + +[1] Iris Ginzburg, Haim Sompolinsky. Theory of correlations in stochastic +neural networks (1994). PRE 50(4) p. 3171 +[2] W. McCulloch und W. Pitts (1943). A logical calculus of the ideas +immanent in nervous activity. Bulletin of Mathematical Biophysics, 5:115-133. +[3] Abigail Morrison, Markus Diesmann. Maintaining Causality in Discrete Time +Neuronal Simulations. In: Lectures in Supercomputational Neuroscience, +p. 267. Peter beim Graben, Changsong Zhou, Marco Thiel, Juergen Kurths +(Eds.), Springer 2008. + +Sends: SpikeEvent + +Receives: SpikeEvent, PotentialRequest + +FirstVersion: May 2016 + +Authors: Jakob Jordan, Tobias Kuehn + +SeeAlso: mcculloch_pitts_neuron, ginzburg_neuron */ class gainfunction_erfc { diff --git a/models/gamma_sup_generator.h b/models/gamma_sup_generator.h index 7dd990a74b..6c7f3e0dc0 100644 --- a/models/gamma_sup_generator.h +++ b/models/gamma_sup_generator.h @@ -45,24 +45,26 @@ Name: gamma_sup_generator - simulate the superimposed spike train of a population of gamma process. Description: - The gamma_sup_generator generator simulates the pooled spike train of a - population of neurons firing independently with gamma process statistics. +The gamma_sup_generator generator simulates the pooled spike train of a +population of neurons firing independently with gamma process statistics. Parameters: - The following parameters appear in the element's status dictionary: - rate double - mean firing rate of the component processes, - default: 0s^-1 - gamma_shape long - shape paramter of component gamma processes, default: 1 - n_proc long - number of superimposed independent component processes, - default: 1 +The following parameters appear in the element's status dictionary: + +rate double - mean firing rate of the component processes, + default: 0s^-1 +gamma_shape long - shape paramter of component gamma processes, default: 1 +n_proc long - number of superimposed independent component processes, + default: 1 Remarks: - The generator has been published in Deger, Helias, Boucsein, Rotter (2011) - Statistical properties of superimposed stationary spike trains, - Journal of Computational Neuroscience. - URL: http://www.springerlink.com/content/u75211r381p08301/ - DOI: 10.1007/s10827-011-0362-8 + +The generator has been published in Deger, Helias, Boucsein, Rotter (2011) +Statistical properties of superimposed stationary spike trains, +Journal of Computational Neuroscience. +URL: http://www.springerlink.com/content/u75211r381p08301/ +DOI: 10.1007/s10827-011-0362-8 Author: Jan 2011, Moritz Deger diff --git a/models/gap_junction.h b/models/gap_junction.h index 6a35b64c2f..6d2b63593d 100644 --- a/models/gap_junction.h +++ b/models/gap_junction.h @@ -27,41 +27,43 @@ namespace nest { + /** @BeginDocumentation Name: gap_junction - Synapse type for gap-junction connections. Description: - gap_junction is a connector to create gap junctions between pairs - of neurons. Gap junctions are bidirectional connections. - In order to create one accurate gap-junction connection between - neurons i and j two NEST connections are required: For each created - connection a second connection with the exact same parameters in - the opposite direction is required. NEST provides the possibility - to create both connections with a single call to Connect via - the make_symmetric flag: - i j << /rule /one_to_one /make_symmetric true >> /gap_junction Connect +gap_junction is a connector to create gap junctions between pairs +of neurons. Gap junctions are bidirectional connections. +In order to create one accurate gap-junction connection between +neurons i and j two NEST connections are required: For each created +connection a second connection with the exact same parameters in +the opposite direction is required. NEST provides the possibility +to create both connections with a single call to Connect via +the make_symmetric flag: + +i j << /rule /one_to_one /make_symmetric true >> /gap_junction Connect - The value of the parameter "delay" is ignored for connections of - type gap_junction. +The value of the parameter "delay" is ignored for connections of +type gap_junction. Transmits: GapJunctionEvent References: - Hahne, J., Helias, M., Kunkel, S., Igarashi, J., - Bolten, M., Frommer, A. and Diesmann, M., - A unified framework for spiking and gap-junction interactions - in distributed neuronal network simulations, - Front. Neuroinform. 9:22. (2015), - doi: 10.3389/fninf.2015.00022 - - Mancilla, J. G., Lewis, T. J., Pinto, D. J., - Rinzel, J., and Connors, B. W., - Synchronization of electrically coupled pairs - of inhibitory interneurons in neocortex, - J. Neurosci. 27, 2058-2073 (2007), - doi: 10.1523/JNEUROSCI.2715-06.2007 +Hahne, J., Helias, M., Kunkel, S., Igarashi, J., +Bolten, M., Frommer, A. and Diesmann, M., +A unified framework for spiking and gap-junction interactions +in distributed neuronal network simulations, +Front. Neuroinform. 9:22. (2015), +doi: 10.3389/fninf.2015.00022 + +Mancilla, J. G., Lewis, T. J., Pinto, D. J., +Rinzel, J., and Connors, B. W., +Synchronization of electrically coupled pairs +of inhibitory interneurons in neocortex, +J. Neurosci. 27, 2058-2073 (2007), +doi: 10.1523/JNEUROSCI.2715-06.2007 Author: Jan Hahne, Moritz Helias, Susanne Kunkel diff --git a/models/gauss_rate.h b/models/gauss_rate.h index 83bf6308cb..0e456a8223 100644 --- a/models/gauss_rate.h +++ b/models/gauss_rate.h @@ -41,30 +41,31 @@ Name: gauss_rate - rate model with Gaussian gain function Description: - gauss_rate is an implementation of a nonlinear rate model with input - function input(h) = g * exp( -( x - mu )^2 / ( 2 * sigma^2 ) ). - Input transformation can either be applied to individual inputs - or to the sum of all inputs. +gauss_rate is an implementation of a nonlinear rate model with input +function input(h) = g * exp( -( x - mu )^2 / ( 2 * sigma^2 ) ). +Input transformation can either be applied to individual inputs +or to the sum of all inputs. - The model supports connections to other rate models with either zero or - non-zero delay, and uses the secondary_event concept introduced with - the gap-junction framework. +The model supports connections to other rate models with either zero or +non-zero delay, and uses the secondary_event concept introduced with +the gap-junction framework. Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - rate double - Rate (unitless) - tau double - Time constant of rate dynamics in ms. - mean double - Mean of Gaussian white noise. - std double - Standard deviation of Gaussian white noise. - g double - Gain parameter. - mu double - Mean of the Gaussian gain function. - sigma double - Standard deviation of Gaussian gain function. - linear_summation bool - Specifies type of non-linearity (see above). - rectify_output bool - Switch to restrict rate to values >= 0. +rate double - Rate (unitless) +tau double - Time constant of rate dynamics in ms. +mean double - Mean of Gaussian white noise. +std double - Standard deviation of Gaussian white noise. +g double - Gain parameter. +mu double - Mean of the Gaussian gain function. +sigma double - Standard deviation of Gaussian gain function. +linear_summation bool - Specifies type of non-linearity (see above). +rectify_output bool - Switch to restrict rate to values >= 0. Note: + The boolean parameter linear_summation determines whether the input from different presynaptic neurons is first summed linearly and then transformed by a nonlinearity (true), or if the input from @@ -73,17 +74,17 @@ then summed up (false). Default is true. References: - [1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., - Bolten, M., Helias, M. and Diesmann, M. (2017). - Integration of Continuous-Time Dynamics in a - Spiking Neural Network Simulator. - Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 - - [2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., - Bolten, M., Frommer, A. and Diesmann, M. (2015). - A unified framework for spiking and gap-junction interactions - in distributed neuronal network simulations. - Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 +[1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., +Bolten, M., Helias, M. and Diesmann, M. (2017). +Integration of Continuous-Time Dynamics in a +Spiking Neural Network Simulator. +Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 + +[2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., +Bolten, M., Frommer, A. and Diesmann, M. (2015). +A unified framework for spiking and gap-junction interactions +in distributed neuronal network simulations. +Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 Sends: InstantaneousRateConnectionEvent, DelayedRateConnectionEvent diff --git a/models/gif_cond_exp.h b/models/gif_cond_exp.h index 4cb7d188d2..4218a7c28e 100644 --- a/models/gif_cond_exp.h +++ b/models/gif_cond_exp.h @@ -49,115 +49,116 @@ namespace nest extern "C" int gif_cond_exp_dynamics( double, const double*, double*, void* ); /** @BeginDocumentation - Name: gif_cond_exp - Conductance-based generalized integrate-and-fire neuron - model according to Mensi et al. (2012) and Pozzorini et al. (2015). +Name: gif_cond_exp - Conductance-based generalized integrate-and-fire neuron +model according to Mensi et al. (2012) and Pozzorini et al. (2015). - Description: +Description: - gif_psc_exp is the generalized integrate-and-fire neuron according to - Mensi et al. (2012) and Pozzorini et al. (2015), with post-synaptic - conductances in the form of truncated exponentials. +gif_psc_exp is the generalized integrate-and-fire neuron according to +Mensi et al. (2012) and Pozzorini et al. (2015), with post-synaptic +conductances in the form of truncated exponentials. - This model features both an adaptation current and a dynamic threshold for - spike-frequency adaptation. The membrane potential (V) is described by the - differential equation: +This model features both an adaptation current and a dynamic threshold for +spike-frequency adaptation. The membrane potential (V) is described by the +differential equation: - C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) +C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) - where each eta_i is a spike-triggered current (stc), and the neuron model can - have arbitrary number of them. - Dynamic of each eta_i is described by: +where each eta_i is a spike-triggered current (stc), and the neuron model can +have arbitrary number of them. +Dynamic of each eta_i is described by: - tau_eta_i*d{eta_i}/dt = -eta_i +tau_eta_i*d{eta_i}/dt = -eta_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - eta_i = eta_i + q_eta_i (in case of spike emission). +eta_i = eta_i + q_eta_i (in case of spike emission). - Neuron produces spikes STOCHASTICALLY according to a point process with the - firing intensity: +Neuron produces spikes STOCHASTICALLY according to a point process with the +firing intensity: - lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] +lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] - where V_T(t) is a time-dependent firing threshold: +where V_T(t) is a time-dependent firing threshold: - V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) +V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) - where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron - model can have arbitrary number of them. - Dynamic of each gamma_i is described by: +where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron +model can have arbitrary number of them. +Dynamic of each gamma_i is described by: - tau_gamma_i*d{gamma_i}/dt = -gamma_i +tau_gamma_i*d{gamma_i}/dt = -gamma_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - gamma_i = gamma_i + q_gamma_i (in case of spike emission). +gamma_i = gamma_i + q_gamma_i (in case of spike emission). - Note that in the current implementation of the model (as described in [1] and - [2]) the values of eta_i and gamma_i are affected immediately after spike - emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits - the model using experimental data, requires a different set of eta_i and - gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. - One can easily convert between q_eta/gamma of these two approaches: - q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) - The same formula applies for q_gamma. +Note that in the current implementation of the model (as described in [1] and +[2]) the values of eta_i and gamma_i are affected immediately after spike +emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits +the model using experimental data, requires a different set of eta_i and +gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. +One can easily convert between q_eta/gamma of these two approaches: +q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) +The same formula applies for q_gamma. - The shape of synaptic conductance is exponential. +The shape of synaptic conductance is exponential. - Parameters: - The following parameters can be set in the status dictionary. +Parameters: - Membrane Parameters: - C_m double - Capacity of the membrane in pF - t_ref double - Duration of refractory period in ms. - V_reset double - Reset value after a spike in mV. - E_L double - Leak reversal potential in mV. - g_L double - Leak conductance in nS. - I_e double - Constant external input current in pA. +The following parameters can be set in the status dictionary. - Spike adaptation and firing intensity parameters: - q_stc vector of double - Values added to spike-triggered currents (stc) - after each spike emission in nA. - tau_stc vector of double - Time constants of stc variables in ms. - q_sfa vector of double - Values added to spike-frequency adaptation - (sfa) after each spike emission in mV. - tau_sfa vector of double - Time constants of sfa variables in ms. - Delta_V double - Stochasticity level in mV. - lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. - V_T_star double - Base threshold in mV +Membrane Parameters: + C_m double - Capacity of the membrane in pF + t_ref double - Duration of refractory period in ms. + V_reset double - Reset value after a spike in mV. + E_L double - Leak reversal potential in mV. + g_L double - Leak conductance in nS. + I_e double - Constant external input current in pA. - Synaptic parameters - E_ex double - Excitatory reversal potential in mV. - tau_syn_ex double - Decay time of excitatory synaptic conductance in ms. - E_in double - Inhibitory reversal potential in mV. - tau_syn_in double - Decay time of the inhibitory synaptic conductance in ms. +Spike adaptation and firing intensity parameters: + q_stc vector of double - Values added to spike-triggered currents (stc) + after each spike emission in nA. + tau_stc vector of double - Time constants of stc variables in ms. + q_sfa vector of double - Values added to spike-frequency adaptation + (sfa) after each spike emission in mV. + tau_sfa vector of double - Time constants of sfa variables in ms. + Delta_V double - Stochasticity level in mV. + lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. + V_T_star double - Base threshold in mV - Integration parameters - gsl_error_tol double - This parameter controls the admissible error of the - GSL integrator. Reduce it if NEST complains about - numerical instabilities. +Synaptic parameters + E_ex double - Excitatory reversal potential in mV. + tau_syn_ex double - Decay time of excitatory synaptic conductance in ms. + E_in double - Inhibitory reversal potential in mV. + tau_syn_in double - Decay time of the inhibitory synaptic conductance in ms. - References: +Integration parameters + gsl_error_tol double - This parameter controls the admissible error of the + GSL integrator. Reduce it if NEST complains about + numerical instabilities. - [1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) - Parameter extraction and classification of three cortical neuron types - reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), - 1756-1775. +References: - [2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) - Automated High-Throughput Characterization of Single Neurons by Means of - Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. +[1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) +Parameter extraction and classification of three cortical neuron types +reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), +1756-1775. - Sends: SpikeEvent +[2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) +Automated High-Throughput Characterization of Single Neurons by Means of +Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Sends: SpikeEvent - Author: March 2016, Setareh +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - SeeAlso: pp_psc_delta, gif_cond_exp_multisynapse, gif_psc_exp, - gif_psc_exp_multisynapse +Author: March 2016, Setareh + +SeeAlso: pp_psc_delta, gif_cond_exp_multisynapse, gif_psc_exp, +gif_psc_exp_multisynapse */ class gif_cond_exp : public Archiving_Node diff --git a/models/gif_cond_exp_multisynapse.h b/models/gif_cond_exp_multisynapse.h index 9692906b68..5ad2b9c7ef 100644 --- a/models/gif_cond_exp_multisynapse.h +++ b/models/gif_cond_exp_multisynapse.h @@ -48,139 +48,140 @@ extern "C" int gif_cond_exp_multisynapse_dynamics( double, const double*, double*, void* ); /** @BeginDocumentation - Name: gif_cond_exp_multisynapse - Conductance-based generalized - integrate-and-fire neuron model with multiple synaptic time constants - according to Mensi et al. (2012) and Pozzorini et al. (2015). +Name: gif_cond_exp_multisynapse - Conductance-based generalized +integrate-and-fire neuron model with multiple synaptic time constants +according to Mensi et al. (2012) and Pozzorini et al. (2015). - Description: +Description: - gif_cond_exp_multisynapse is the generalized integrate-and-fire neuron - according to Mensi et al. (2012) and Pozzorini et al. (2015), with - post-synaptic conductances in the form of truncated exponentials. +gif_cond_exp_multisynapse is the generalized integrate-and-fire neuron +according to Mensi et al. (2012) and Pozzorini et al. (2015), with +post-synaptic conductances in the form of truncated exponentials. - This model features both an adaptation current and a dynamic threshold for - spike-frequency adaptation. The membrane potential (V) is described by the - differential equation: +This model features both an adaptation current and a dynamic threshold for +spike-frequency adaptation. The membrane potential (V) is described by the +differential equation: - C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) +C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) - where each eta_i is a spike-triggered current (stc), and the neuron model can - have arbitrary number of them. - Dynamic of each eta_i is described by: +where each eta_i is a spike-triggered current (stc), and the neuron model can +have arbitrary number of them. +Dynamic of each eta_i is described by: - tau_eta_i*d{eta_i}/dt = -eta_i +tau_eta_i*d{eta_i}/dt = -eta_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - eta_i = eta_i + q_eta_i (in case of spike emission). +eta_i = eta_i + q_eta_i (in case of spike emission). - Neuron produces spikes STOCHASTICALLY according to a point process with the - firing intensity: +Neuron produces spikes STOCHASTICALLY according to a point process with the +firing intensity: - lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] +lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] - where V_T(t) is a time-dependent firing threshold: +where V_T(t) is a time-dependent firing threshold: - V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) +V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) - where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron - model can have arbitrary number of them. - Dynamic of each gamma_i is described by: +where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron +model can have arbitrary number of them. +Dynamic of each gamma_i is described by: - tau_gamma_i*d{gamma_i}/dt = -gamma_i +tau_gamma_i*d{gamma_i}/dt = -gamma_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - gamma_i = gamma_i + q_gamma_i (in case of spike emission). +gamma_i = gamma_i + q_gamma_i (in case of spike emission). - Note that in the current implementation of the model (as described in [1] and - [2]) the values of eta_i and gamma_i are affected immediately after spike - emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits - the model using experimental data, requires a different set of eta_i and - gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. - One can easily convert between q_eta/gamma of these two approaches: - q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) - The same formula applies for q_gamma. +Note that in the current implementation of the model (as described in [1] and +[2]) the values of eta_i and gamma_i are affected immediately after spike +emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits +the model using experimental data, requires a different set of eta_i and +gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. +One can easily convert between q_eta/gamma of these two approaches: +q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) +The same formula applies for q_gamma. - On the postsynapic side, there can be arbitrarily many synaptic time constants - (gif_psc_exp has exactly two: tau_syn_ex and tau_syn_in). This can be reached - by specifying separate receptor ports, each for a different time constant. The - port number has to match the respective "receptor_type" in the connectors. +On the postsynapic side, there can be arbitrarily many synaptic time constants +(gif_psc_exp has exactly two: tau_syn_ex and tau_syn_in). This can be reached +by specifying separate receptor ports, each for a different time constant. The +port number has to match the respective "receptor_type" in the connectors. - The shape of synaptic conductance is exponential. +The shape of synaptic conductance is exponential. - Parameters: - The following parameters can be set in the status dictionary. +Parameters: - Membrane Parameters: - C_m double - Capacity of the membrane in pF - t_ref double - Duration of refractory period in ms. - V_reset double - Reset value after a spike in mV. - E_L double - Leak reversal potential in mV. - g_L double - Leak conductance in nS. - I_e double - Constant external input current in pA. +The following parameters can be set in the status dictionary. - Spike adaptation and firing intensity parameters: - q_stc vector of double - Values added to spike-triggered currents (stc) - after each spike emission in pA. - tau_stc vector of double - Time constants of stc variables in ms. - q_sfa vector of double - Values added to spike-frequency adaptation - (sfa) after each spike emission in mV. - tau_sfa vector of double - Time constants of sfa variables in ms. - Delta_V double - Stochasticity level in mV. - lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. - V_T_star double - Base threshold in mV. +Membrane Parameters: + C_m double - Capacity of the membrane in pF + t_ref double - Duration of refractory period in ms. + V_reset double - Reset value after a spike in mV. + E_L double - Leak reversal potential in mV. + g_L double - Leak conductance in nS. + I_e double - Constant external input current in pA. - Synaptic parameters - tau_syn double vector - Time constants of the synaptic conductance - in ms (same size as E_rev). - E_rev double vector - Reversal potentials in mV (same size as tau_syn). +Spike adaptation and firing intensity parameters: + q_stc vector of double - Values added to spike-triggered currents (stc) + after each spike emission in pA. + tau_stc vector of double - Time constants of stc variables in ms. + q_sfa vector of double - Values added to spike-frequency adaptation + (sfa) after each spike emission in mV. + tau_sfa vector of double - Time constants of sfa variables in ms. + Delta_V double - Stochasticity level in mV. + lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. + V_T_star double - Base threshold in mV. - Integration parameters - gsl_error_tol double - This parameter controls the admissible error of the - GSL integrator. Reduce it if NEST complains about - numerical instabilities. +Synaptic parameters + tau_syn double vector - Time constants of the synaptic conductance + in ms (same size as E_rev). + E_rev double vector - Reversal potentials in mV (same size as tau_syn). - Example: +Integration parameters + gsl_error_tol double - This parameter controls the admissible error of the + GSL integrator. Reduce it if NEST complains about + numerical instabilities. - neuron = nest.Create('gif_cond_exp_multisynapse', - params={'E_rev': [0.0, -85.0], - 'tau_syn': [4.0, 8.0]}) +Example: - spike = nest.Create('spike_generator', params={'spike_times': - np.array([10.0])}) +neuron = nest.Create('gif_cond_exp_multisynapse', + params={'E_rev': [0.0, -85.0], + 'tau_syn': [4.0, 8.0]}) - delays = [1., 30.] - w = [1., 5.] - for syn in range(2): - nest.Connect(spike, neuron, syn_spec={'model': 'static_synapse', - 'receptor_type': 1 + syn, - 'weight': w[syn], - 'delay': delays[syn]}) - nest.Simulate(100.) +spike = nest.Create('spike_generator', params={'spike_times': + np.array([10.0])}) +delays = [1., 30.] +w = [1., 5.] +for syn in range(2): + nest.Connect(spike, neuron, syn_spec={'model': 'static_synapse', + 'receptor_type': 1 + syn, + 'weight': w[syn], + 'delay': delays[syn]}) +nest.Simulate(100.) - References: - [1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) - Parameter extraction and classification of three cortical neuron types - reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), - 1756-1775. +References: - [2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) - Automated High-Throughput Characterization of Single Neurons by Means of - Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. +[1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) +Parameter extraction and classification of three cortical neuron types +reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), +1756-1775. - Sends: SpikeEvent +[2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) +Automated High-Throughput Characterization of Single Neurons by Means of +Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Sends: SpikeEvent - Author: March 2016, Setareh +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - SeeAlso: pp_psc_delta, gif_cond_exp, iaf_psc_exp_multisynapse, - gif_psc_exp_multisynapse +Author: March 2016, Setareh + +SeeAlso: pp_psc_delta, gif_cond_exp, iaf_psc_exp_multisynapse, +gif_psc_exp_multisynapse */ class gif_cond_exp_multisynapse : public Archiving_Node { diff --git a/models/gif_pop_psc_exp.h b/models/gif_pop_psc_exp.h index 0edd3514ba..181853e33e 100644 --- a/models/gif_pop_psc_exp.h +++ b/models/gif_pop_psc_exp.h @@ -39,97 +39,97 @@ namespace nest class Network; /** @BeginDocumentation - Name: gif_pop_psc_exp - Population of generalized integrate-and-fire neurons - with exponential postsynaptic currents and adaptation +Name: gif_pop_psc_exp - Population of generalized integrate-and-fire neurons +with exponential postsynaptic currents and adaptation - Description: +Description: - This model simulates a population of spike-response model neurons with - multi-timescale adaptation and exponential postsynaptic currents, as - described in [1]. +This model simulates a population of spike-response model neurons with +multi-timescale adaptation and exponential postsynaptic currents, as +described in [1]. - The single neuron model is defined by the hazard function +The single neuron model is defined by the hazard function - lambda_0 * exp[ ( V_m - E_sfa ) / Delta_V ] + lambda_0 * exp[ ( V_m - E_sfa ) / Delta_V ] - After each spike the membrane potential V_m is reset to V_reset. Spike - frequency - adaptation is implemented by a set of exponentially decaying traces, the - sum of which is E_sfa. Upon a spike, all adaptation traces are incremented - by the respective q_sfa each and decay with the respective time constant - tau_sfa. +After each spike the membrane potential V_m is reset to V_reset. Spike +frequency +adaptation is implemented by a set of exponentially decaying traces, the +sum of which is E_sfa. Upon a spike, all adaptation traces are incremented +by the respective q_sfa each and decay with the respective time constant +tau_sfa. - The corresponding single neuron model is available in NEST as gif_psc_exp. - The default parameters, although some are named slightly different, are not - matched in both models due to historical reasons. See below for the parameter - translation. +The corresponding single neuron model is available in NEST as gif_psc_exp. +The default parameters, although some are named slightly different, are not +matched in both models due to historical reasons. See below for the parameter +translation. - As gif_pop_psc_exp represents many neurons in one node, it may send a lot - of spikes. In each time step, it sends at most one spike though, the - multiplicity of which is set to the number of emitted spikes. Postsynaptic - neurons and devices in NEST understand this as several spikes, but - communication effort is reduced in simulations. +As gif_pop_psc_exp represents many neurons in one node, it may send a lot +of spikes. In each time step, it sends at most one spike though, the +multiplicity of which is set to the number of emitted spikes. Postsynaptic +neurons and devices in NEST understand this as several spikes, but +communication effort is reduced in simulations. - This model uses a new algorithm to directly simulate the population activity - (sum of all spikes) of the population of neurons, without explicitly - representing each single neuron (see [1]). The computational cost is largely - independent of the number N of neurons represented. The algorithm used - here is fundamentally different from and likely much faster than the one - used in the previously added population model pp_pop_psc_delta. +This model uses a new algorithm to directly simulate the population activity +(sum of all spikes) of the population of neurons, without explicitly +representing each single neuron (see [1]). The computational cost is largely +independent of the number N of neurons represented. The algorithm used +here is fundamentally different from and likely much faster than the one +used in the previously added population model pp_pop_psc_delta. - Connecting two population models corresponds to full connectivity of every - neuron in each population. An approximation of random connectivity can be - implemented by connecting populations through a spike_dilutor. +Connecting two population models corresponds to full connectivity of every +neuron in each population. An approximation of random connectivity can be +implemented by connecting populations through a spike_dilutor. - Parameters: +Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - V_reset double - Membrane potential is reset to this value in mV after a - spike. - V_T_star double - Threshold level of the membrane potential in mV. - E_L double - Resting potential in mV - Delta_V double - Noise level of escape rate in mV. - C_m double - Capacitance of the membrane in pF. - tau_m double - Membrane time constant in ms. - t_ref double - Duration of refractory period in ms. - I_e double - Constant input current in pA. - N long - Number of neurons in the population. - len_kernel long - Refractory effects are accounted for up to len_kernel - time steps - lambda_0 double - Firing rate at threshold in 1/s. - tau_syn_ex double - Time constant for excitatory synaptic currents in ms. - tau_syn_in double - Time constant for inhibitory synaptic currents in ms. - tau_sfa double vector - Adaptation time constants in ms. - q_sfa double vector - Adaptation kernel amplitudes in ms. - BinoRand bool - If True, binomial random numbers are used, otherwise - we use Poisson distributed spike counts. +V_reset double - Membrane potential is reset to this value in mV after a +spike. +V_T_star double - Threshold level of the membrane potential in mV. +E_L double - Resting potential in mV +Delta_V double - Noise level of escape rate in mV. +C_m double - Capacitance of the membrane in pF. +tau_m double - Membrane time constant in ms. +t_ref double - Duration of refractory period in ms. +I_e double - Constant input current in pA. +N long - Number of neurons in the population. +len_kernel long - Refractory effects are accounted for up to len_kernel +time steps +lambda_0 double - Firing rate at threshold in 1/s. +tau_syn_ex double - Time constant for excitatory synaptic currents in ms. +tau_syn_in double - Time constant for inhibitory synaptic currents in ms. +tau_sfa double vector - Adaptation time constants in ms. +q_sfa double vector - Adaptation kernel amplitudes in ms. +BinoRand bool - If True, binomial random numbers are used, otherwise + we use Poisson distributed spike counts. - Parameter translation to gif_psc_exp: +Parameter translation to gif_psc_exp: - gif_pop_psc_exp gif_psc_exp relation - ---------------------------------------------------- - tau_m g_L tau_m = C_m / g_L - N --- use N gif_psc_exp +gif_pop_psc_exp gif_psc_exp relation +---------------------------------------------------- +tau_m g_L tau_m = C_m / g_L +N --- use N gif_psc_exp - References: +References: - [1] Towards a theory of cortical columns: From spiking neurons to - interacting neural populations of finite size - Tilo Schwalger, Moritz Deger, Wulfram Gerstner - PLoS Comput Biol 2017 - https://doi.org/10.1371/journal.pcbi.1005507 +[1] Towards a theory of cortical columns: From spiking neurons to + interacting neural populations of finite size + Tilo Schwalger, Moritz Deger, Wulfram Gerstner + PLoS Comput Biol 2017 + https://doi.org/10.1371/journal.pcbi.1005507 - Sends: SpikeEvent +Sends: SpikeEvent - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - Authors: Nov 2016, Moritz Deger, Tilo Schwalger, Hesam Setareh +Authors: Nov 2016, Moritz Deger, Tilo Schwalger, Hesam Setareh - SeeAlso: gif_psc_exp, pp_pop_psc_delta, spike_dilutor +SeeAlso: gif_psc_exp, pp_pop_psc_delta, spike_dilutor */ class gif_pop_psc_exp : public Node { diff --git a/models/gif_psc_exp.h b/models/gif_psc_exp.h index a8c6707ca4..2f75c9c189 100644 --- a/models/gif_psc_exp.h +++ b/models/gif_psc_exp.h @@ -36,108 +36,109 @@ namespace nest { /** @BeginDocumentation - Name: gif_psc_exp - Current-based generalized integrate-and-fire neuron - model according to Mensi et al. (2012) and Pozzorini et al. (2015). +Name: gif_psc_exp - Current-based generalized integrate-and-fire neuron +model according to Mensi et al. (2012) and Pozzorini et al. (2015). - Description: +Description: - gif_psc_exp is the generalized integrate-and-fire neuron according to - Mensi et al. (2012) and Pozzorini et al. (2015), with exponential shaped - postsynaptic currents. +gif_psc_exp is the generalized integrate-and-fire neuron according to +Mensi et al. (2012) and Pozzorini et al. (2015), with exponential shaped +postsynaptic currents. - This model features both an adaptation current and a dynamic threshold for - spike-frequency adaptation. The membrane potential (V) is described by the - differential equation: +This model features both an adaptation current and a dynamic threshold for +spike-frequency adaptation. The membrane potential (V) is described by the +differential equation: - C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) +C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) - where each eta_i is a spike-triggered current (stc), and the neuron model can - have arbitrary number of them. - Dynamic of each eta_i is described by: +where each eta_i is a spike-triggered current (stc), and the neuron model can +have arbitrary number of them. +Dynamic of each eta_i is described by: - tau_eta_i*d{eta_i}/dt = -eta_i +tau_eta_i*d{eta_i}/dt = -eta_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - eta_i = eta_i + q_eta_i (in case of spike emission). +eta_i = eta_i + q_eta_i (in case of spike emission). - Neuron produces spikes STOCHASTICALLY according to a point process with the - firing intensity: +Neuron produces spikes STOCHASTICALLY according to a point process with the +firing intensity: - lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] +lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] - where V_T(t) is a time-dependent firing threshold: +where V_T(t) is a time-dependent firing threshold: - V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) +V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) - where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron - model can have arbitrary number of them. - Dynamic of each gamma_i is described by: +where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron +model can have arbitrary number of them. +Dynamic of each gamma_i is described by: - tau_gamma_i*d{gamma_i}/dt = -gamma_i +tau_gamma_i*d{gamma_i}/dt = -gamma_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - gamma_i = gamma_i + q_gamma_i (in case of spike emission). +gamma_i = gamma_i + q_gamma_i (in case of spike emission). - Note that in the current implementation of the model (as described in [1] and - [2]) the values of eta_i and gamma_i are affected immediately after spike - emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits - the model using experimental data, requires a different set of eta_i and - gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. - One can easily convert between q_eta/gamma of these two approaches: - q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) - The same formula applies for q_gamma. +Note that in the current implementation of the model (as described in [1] and +[2]) the values of eta_i and gamma_i are affected immediately after spike +emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits +the model using experimental data, requires a different set of eta_i and +gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. +One can easily convert between q_eta/gamma of these two approaches: +q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) +The same formula applies for q_gamma. - The shape of post synaptic current is exponential. +The shape of post synaptic current is exponential. - Parameters: - The following parameters can be set in the status dictionary. +Parameters: - Membrane Parameters: - C_m double - Capacitance of the membrane in pF - t_ref double - Duration of refractory period in ms. - V_reset double - Reset value after a spike in mV. - E_L double - Leak reversal potential in mV. - g_L double - Leak conductance in nS. - I_e double - Constant external input current in pA. +The following parameters can be set in the status dictionary. - Spike adaptation and firing intensity parameters: - q_stc vector of double - Values added to spike-triggered currents (stc) - after each spike emission in nA. - tau_stc vector of double - Time constants of stc variables in ms. - q_sfa vector of double - Values added to spike-frequency adaptation - (sfa) after each spike emission in mV. - tau_sfa vector of double - Time constants of sfa variables in ms. - Delta_V double - Stochasticity level in mV. - lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. - V_T_star double - Base threshold in mV +Membrane Parameters: + C_m double - Capacitance of the membrane in pF + t_ref double - Duration of refractory period in ms. + V_reset double - Reset value after a spike in mV. + E_L double - Leak reversal potential in mV. + g_L double - Leak conductance in nS. + I_e double - Constant external input current in pA. - Synaptic parameters - tau_syn_ex double - Time constant of the excitatory synaptic current in ms. - tau_syn_in double - Time constant of the inhibitory synaptic current in ms. +Spike adaptation and firing intensity parameters: + q_stc vector of double - Values added to spike-triggered currents (stc) + after each spike emission in nA. + tau_stc vector of double - Time constants of stc variables in ms. + q_sfa vector of double - Values added to spike-frequency adaptation + (sfa) after each spike emission in mV. + tau_sfa vector of double - Time constants of sfa variables in ms. + Delta_V double - Stochasticity level in mV. + lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. + V_T_star double - Base threshold in mV - References: +Synaptic parameters + tau_syn_ex double - Time constant of the excitatory synaptic current in ms. + tau_syn_in double - Time constant of the inhibitory synaptic current in ms. - [1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) - Parameter extraction and classification of three cortical neuron types - reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), - 1756-1775. +References: - [2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) - Automated High-Throughput Characterization of Single Neurons by Means of - Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. +[1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) +Parameter extraction and classification of three cortical neuron types +reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), +1756-1775. - Sends: SpikeEvent +[2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) +Automated High-Throughput Characterization of Single Neurons by Means of +Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Sends: SpikeEvent - Author: March 2016, Setareh +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - SeeAlso: pp_psc_delta, gif_psc_exp_multisynapse, gif_cond_exp, - gif_cond_exp_multisynapse, gif_pop_psc_exp +Author: March 2016, Setareh + +SeeAlso: pp_psc_delta, gif_psc_exp_multisynapse, gif_cond_exp, +gif_cond_exp_multisynapse, gif_pop_psc_exp */ class gif_psc_exp : public Archiving_Node diff --git a/models/gif_psc_exp_multisynapse.h b/models/gif_psc_exp_multisynapse.h index f1686404d0..0992ca766f 100644 --- a/models/gif_psc_exp_multisynapse.h +++ b/models/gif_psc_exp_multisynapse.h @@ -36,113 +36,114 @@ namespace nest { /** @BeginDocumentation - Name: gif_psc_exp_multisynapse - Current-based generalized - integrate-and-fire neuron model with multiple synaptic time - constants according to Mensi et al. (2012) and Pozzorini et al. (2015). +Name: gif_psc_exp_multisynapse - Current-based generalized +integrate-and-fire neuron model with multiple synaptic time +constants according to Mensi et al. (2012) and Pozzorini et al. (2015). - Description: +Description: - gif_psc_exp_multisynapse is the generalized integrate-and-fire neuron - according to Mensi et al. (2012) and Pozzorini et al. (2015), with - exponential shaped postsynaptic currents. +gif_psc_exp_multisynapse is the generalized integrate-and-fire neuron +according to Mensi et al. (2012) and Pozzorini et al. (2015), with +exponential shaped postsynaptic currents. - This model features both an adaptation current and a dynamic threshold for - spike-frequency adaptation. The membrane potential (V) is described by the - differential equation: +This model features both an adaptation current and a dynamic threshold for +spike-frequency adaptation. The membrane potential (V) is described by the +differential equation: - C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) +C*dV(t)/dt = -g_L*(V(t)-E_L) - eta_1(t) - eta_2(t) - ... - eta_n(t) + I(t) - where each eta_i is a spike-triggered current (stc), and the neuron model can - have arbitrary number of them. - Dynamic of each eta_i is described by: +where each eta_i is a spike-triggered current (stc), and the neuron model can +have arbitrary number of them. +Dynamic of each eta_i is described by: - tau_eta_i*d{eta_i}/dt = -eta_i +tau_eta_i*d{eta_i}/dt = -eta_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - eta_i = eta_i + q_eta_i (in case of spike emission). +eta_i = eta_i + q_eta_i (in case of spike emission). - Neuron produces spikes STOCHASTICALLY according to a point process with the - firing intensity: +Neuron produces spikes STOCHASTICALLY according to a point process with the +firing intensity: - lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] +lambda(t) = lambda_0 * exp[ (V(t)-V_T(t)) / Delta_V ] - where V_T(t) is a time-dependent firing threshold: +where V_T(t) is a time-dependent firing threshold: - V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) +V_T(t) = V_T_star + gamma_1(t) + gamma_2(t) + ... + gamma_m(t) - where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron - model can have arbitrary number of them. - Dynamic of each gamma_i is described by: +where gamma_i is a kernel of spike-frequency adaptation (sfa), and the neuron +model can have arbitrary number of them. +Dynamic of each gamma_i is described by: - tau_gamma_i*d{gamma_i}/dt = -gamma_i +tau_gamma_i*d{gamma_i}/dt = -gamma_i - and in case of spike emission, its value increased by a constant (which can be - positive or negative): +and in case of spike emission, its value increased by a constant (which can be +positive or negative): - gamma_i = gamma_i + q_gamma_i (in case of spike emission). +gamma_i = gamma_i + q_gamma_i (in case of spike emission). - Note that in the current implementation of the model (as described in [1] and - [2]) the values of eta_i and gamma_i are affected immediately after spike - emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits - the model using experimental data, requires a different set of eta_i and - gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. - One can easily convert between q_eta/gamma of these two approaches: - q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) - The same formula applies for q_gamma. +Note that in the current implementation of the model (as described in [1] and +[2]) the values of eta_i and gamma_i are affected immediately after spike +emission. However, GIF toolbox (http://wiki.epfl.ch/giftoolbox) which fits +the model using experimental data, requires a different set of eta_i and +gamma_i. It applies the jump of eta_i and gamma_i after the refractory period. +One can easily convert between q_eta/gamma of these two approaches: +q_eta_giftoolbox = q_eta_NEST * (1 - exp( -tau_ref / tau_eta )) +The same formula applies for q_gamma. - On the postsynapic side, there can be arbitrarily many synaptic time constants - (gif_psc_exp has exactly two: tau_syn_ex and tau_syn_in). This can be reached - by specifying separate receptor ports, each for a different time constant. The - port number has to match the respective "receptor_type" in the connectors. +On the postsynapic side, there can be arbitrarily many synaptic time constants +(gif_psc_exp has exactly two: tau_syn_ex and tau_syn_in). This can be reached +by specifying separate receptor ports, each for a different time constant. The +port number has to match the respective "receptor_type" in the connectors. - The shape of post synaptic current is exponential. +The shape of post synaptic current is exponential. - Parameters: - The following parameters can be set in the status dictionary. +Parameters: - Membrane Parameters: - C_m double - Capacity of the membrane in pF - t_ref double - Duration of refractory period in ms. - V_reset double - Reset value after a spike in mV. - E_L double - Leak reversal potential in mV. - g_L double - Leak conductance in nS. - I_e double - Constant external input current in pA. +The following parameters can be set in the status dictionary. - Spike adaptation and firing intensity parameters: - q_stc vector of double - Values added to spike-triggered currents (stc) - after each spike emission in nA. - tau_stc vector of double - Time constants of stc variables in ms. - q_sfa vector of double - Values added to spike-frequency adaptation - (sfa) after each spike emission in mV. - tau_sfa vector of double - Time constants of sfa variables in ms. - Delta_V double - Stochasticity level in mV. - lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. - V_T_star double - Base threshold in mV +Membrane Parameters: + C_m double - Capacity of the membrane in pF + t_ref double - Duration of refractory period in ms. + V_reset double - Reset value after a spike in mV. + E_L double - Leak reversal potential in mV. + g_L double - Leak conductance in nS. + I_e double - Constant external input current in pA. - Synaptic parameters - tau_syn vector of double - Time constants of the synaptic currents in ms. +Spike adaptation and firing intensity parameters: + q_stc vector of double - Values added to spike-triggered currents (stc) + after each spike emission in nA. + tau_stc vector of double - Time constants of stc variables in ms. + q_sfa vector of double - Values added to spike-frequency adaptation + (sfa) after each spike emission in mV. + tau_sfa vector of double - Time constants of sfa variables in ms. + Delta_V double - Stochasticity level in mV. + lambda_0 double - Stochastic intensity at firing threshold V_T in 1/s. + V_T_star double - Base threshold in mV - References: +Synaptic parameters + tau_syn vector of double - Time constants of the synaptic currents in ms. - [1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) - Parameter extraction and classification of three cortical neuron types - reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), - 1756-1775. +References: - [2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) - Automated High-Throughput Characterization of Single Neurons by Means of - Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. +[1] Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) +Parameter extraction and classification of three cortical neuron types +reveals two distinct adaptation mechanisms. J. Neurophysiol., 107(6), +1756-1775. +[2] Pozzorini C, Mensi S, Hagens O, Naud R, Koch C, Gerstner W (2015) +Automated High-Throughput Characterization of Single Neurons by Means of +Simplified Spiking Models. PLoS Comput. Biol., 11(6), e1004275. - Sends: SpikeEvent - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest +Sends: SpikeEvent - Author: March 2016, Setareh +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - SeeAlso: pp_psc_delta, gif_psc_exp, gif_cond_exp, gif_cond_exp_multisynapse +Author: March 2016, Setareh + +SeeAlso: pp_psc_delta, gif_psc_exp, gif_cond_exp, gif_cond_exp_multisynapse */ class gif_psc_exp_multisynapse : public Archiving_Node { diff --git a/models/ginzburg_neuron.h b/models/ginzburg_neuron.h index da69684d18..d59d848567 100644 --- a/models/ginzburg_neuron.h +++ b/models/ginzburg_neuron.h @@ -30,84 +30,88 @@ namespace nest { /** @BeginDocumentation - Name: ginzburg_neuron - Binary stochastic neuron with sigmoidal activation - function. - - Description: - The ginzburg_neuron is an implementation of a binary neuron that - is irregularly updated as Poisson time points. At each update - point the total synaptic input h into the neuron is summed up, - passed through a gain function g whose output is interpreted as - the probability of the neuron to be in the active (1) state. - - The gain function g used here is g(h) = c1*h + c2 * 0.5*(1 + - tanh(c3*(h-theta))) (output clipped to [0,1]). This allows to - obtain affin-linear (c1!=0, c2!=0, c3=0) or sigmoidal (c1=0, - c2=1, c3!=0) shaped gain functions. The latter choice - corresponds to the definition in [1], giving the name to this - neuron model. - The choice c1=0, c2=1, c3=beta/2 corresponds to the Glauber - dynamics [2], g(h) = 1 / (1 + exp(-beta (h-theta))). - The time constant tau_m is defined as the mean - inter-update-interval that is drawn from an exponential - distribution with this parameter. Using this neuron to reprodce - simulations with asynchronous update [1], the time constant needs - to be chosen as tau_m = dt*N, where dt is the simulation time - step and N the number of neurons in the original simulation with - asynchronous update. This ensures that a neuron is updated on - average every tau_m ms. Since in the original paper [1] neurons - are coupled with zero delay, this implementation follows this - definition. It uses the update scheme described in [3] to - maintain causality: The incoming events in time step t_i are - taken into account at the beginning of the time step to calculate - the gain function and to decide upon a transition. In order to - obtain delayed coupling with delay d, the user has to specify the - delay d+h upon connection, where h is the simulation time step. - - Remarks: - This neuron has a special use for spike events to convey the - binary state of the neuron to the target. The neuron model - only sends a spike if a transition of its state occurs. If the - state makes an up-transition it sends a spike with multiplicity 2, - if a down transition occurs, it sends a spike with multiplicity 1. - The decoding scheme relies on the feature that spikes with multiplicity - larger 1 are delivered consecutively, also in a parallel setting. - The creation of double connections between binary neurons will - destroy the deconding scheme, as this effectively duplicates - every event. Using random connection routines it is therefore - advisable to set the property 'multapses' to false. - The neuron accepts several sources of currents, e.g. from a - noise_generator. - - - Parameters: - tau_m double - Membrane time constant (mean inter-update-interval) - in ms. - theta double - threshold for sigmoidal activation function mV - c1 double - linear gain factor (probability/mV) - c2 double - prefactor of sigmoidal gain (probability) - c3 double - slope factor of sigmoidal gain (1/mV) - - References: - [1] Iris Ginzburg, Haim Sompolinsky. Theory of correlations in stochastic - neural networks (1994). PRE 50(4) p. 3171 - [2] Hertz Krogh, Palmer. Introduction to the theory of neural computation. - Westview (1991). - [3] Abigail Morrison, Markus Diesmann. Maintaining Causality in Discrete Time - Neuronal - Simulations. - In: Lectures in Supercomputational Neuroscience, p. 267. Peter beim Graben, - Changsong Zhou, Marco Thiel, Juergen Kurths (Eds.), Springer 2008. - - Sends: SpikeEvent - - Receives: SpikeEvent, PotentialRequest - - FirstVersion: February 2010 - - Author: Moritz Helias - - SeeAlso: pp_psc_delta +Name: ginzburg_neuron - Binary stochastic neuron with sigmoidal activation + function. + +Description: + +The ginzburg_neuron is an implementation of a binary neuron that +is irregularly updated as Poisson time points. At each update +point the total synaptic input h into the neuron is summed up, +passed through a gain function g whose output is interpreted as +the probability of the neuron to be in the active (1) state. + +The gain function g used here is g(h) = c1*h + c2 * 0.5*(1 + +tanh(c3*(h-theta))) (output clipped to [0,1]). This allows to +obtain affin-linear (c1!=0, c2!=0, c3=0) or sigmoidal (c1=0, +c2=1, c3!=0) shaped gain functions. The latter choice +corresponds to the definition in [1], giving the name to this +neuron model. +The choice c1=0, c2=1, c3=beta/2 corresponds to the Glauber +dynamics [2], g(h) = 1 / (1 + exp(-beta (h-theta))). +The time constant tau_m is defined as the mean +inter-update-interval that is drawn from an exponential +distribution with this parameter. Using this neuron to reprodce +simulations with asynchronous update [1], the time constant needs +to be chosen as tau_m = dt*N, where dt is the simulation time +step and N the number of neurons in the original simulation with +asynchronous update. This ensures that a neuron is updated on +average every tau_m ms. Since in the original paper [1] neurons +are coupled with zero delay, this implementation follows this +definition. It uses the update scheme described in [3] to +maintain causality: The incoming events in time step t_i are +taken into account at the beginning of the time step to calculate +the gain function and to decide upon a transition. In order to +obtain delayed coupling with delay d, the user has to specify the +delay d+h upon connection, where h is the simulation time step. + +Remarks: + +This neuron has a special use for spike events to convey the +binary state of the neuron to the target. The neuron model +only sends a spike if a transition of its state occurs. If the +state makes an up-transition it sends a spike with multiplicity 2, +if a down transition occurs, it sends a spike with multiplicity 1. +The decoding scheme relies on the feature that spikes with multiplicity +larger 1 are delivered consecutively, also in a parallel setting. +The creation of double connections between binary neurons will +destroy the deconding scheme, as this effectively duplicates +every event. Using random connection routines it is therefore +advisable to set the property 'multapses' to false. +The neuron accepts several sources of currents, e.g. from a +noise_generator. + + +Parameters: + +tau_m double - Membrane time constant (mean inter-update-interval) + in ms. +theta double - threshold for sigmoidal activation function mV +c1 double - linear gain factor (probability/mV) +c2 double - prefactor of sigmoidal gain (probability) +c3 double - slope factor of sigmoidal gain (1/mV) + +References: + +[1] Iris Ginzburg, Haim Sompolinsky. Theory of correlations in stochastic +neural networks (1994). PRE 50(4) p. 3171 +[2] Hertz Krogh, Palmer. Introduction to the theory of neural computation. +Westview (1991). +[3] Abigail Morrison, Markus Diesmann. Maintaining Causality in Discrete Time +Neuronal +Simulations. +In: Lectures in Supercomputational Neuroscience, p. 267. Peter beim Graben, +Changsong Zhou, Marco Thiel, Juergen Kurths (Eds.), Springer 2008. + +Sends: SpikeEvent + +Receives: SpikeEvent, PotentialRequest + +FirstVersion: February 2010 + +Author: Moritz Helias + +SeeAlso: pp_psc_delta */ class gainfunction_ginzburg { diff --git a/models/hh_cond_exp_traub.h b/models/hh_cond_exp_traub.h index 9ff33f74f0..77ae9894ae 100644 --- a/models/hh_cond_exp_traub.h +++ b/models/hh_cond_exp_traub.h @@ -61,57 +61,57 @@ Name: hh_cond_exp_traub - Hodgkin-Huxley model for Brette et al (2007) review Description: - hh_cond_exp_traub is an implementation of a modified Hodgkin-Huxley model +hh_cond_exp_traub is an implementation of a modified Hodgkin-Huxley model - This model was specifically developed for a major review of simulators [1], - based on a model of hippocampal pyramidal cells by Traub and Miles[2]. - The key differences between the current model and the model in [2] are: +This model was specifically developed for a major review of simulators [1], +based on a model of hippocampal pyramidal cells by Traub and Miles[2]. +The key differences between the current model and the model in [2] are: - - This model is a point neuron, not a compartmental model. - - This model includes only I_Na and I_K, with simpler I_K dynamics than - in [2], so it has only three instead of eight gating variables; - in particular, all Ca dynamics have been removed. - - Incoming spikes induce an instantaneous conductance change followed by - exponential decay instead of activation over time. +- This model is a point neuron, not a compartmental model. +- This model includes only I_Na and I_K, with simpler I_K dynamics than + in [2], so it has only three instead of eight gating variables; + in particular, all Ca dynamics have been removed. +- Incoming spikes induce an instantaneous conductance change followed by + exponential decay instead of activation over time. - This model is primarily provided as reference implementation for hh_coba - example of the Brette et al (2007) review. Default parameter values are chosen - to match those used with NEST 1.9.10 when preparing data for [1]. Code for all - simulators covered is available from ModelDB [3]. +This model is primarily provided as reference implementation for hh_coba +example of the Brette et al (2007) review. Default parameter values are chosen +to match those used with NEST 1.9.10 when preparing data for [1]. Code for all +simulators covered is available from ModelDB [3]. Note: - In this model, a spike is emitted if +In this model, a spike is emitted if - V_m >= V_T + 30 mV and V_m has fallen during the current time step + V_m >= V_T + 30 mV and V_m has fallen during the current time step - To avoid that this leads to multiple spikes during the falling flank of a - spike, it is essential to chose a sufficiently long refractory period. - Traub and Miles used t_ref = 3 ms [2, p 118], while we used t_ref = 2 ms - in [2]. +To avoid that this leads to multiple spikes during the falling flank of a +spike, it is essential to chose a sufficiently long refractory period. +Traub and Miles used t_ref = 3 ms [2, p 118], while we used t_ref = 2 ms +in [2]. Parameters: - The following parameters can be set in the status dictionary. - - V_m double - Membrane potential in mV - V_T double - Voltage offset that controls dynamics. For default - parameters, V_T = -63mV results in a threshold around - -50mV. - E_L double - Leak reversal potential in mV. - C_m double - Capacity of the membrane in pF. - g_L double - Leak conductance in nS. - tau_syn_ex double - Time constant of the excitatory synaptic exponential - function in ms. - tau_syn_in double - Time constant of the inhibitory synaptic exponential - function in ms. - t_ref double - Duration of refractory period in ms (see Note). - E_ex double - Excitatory synaptic reversal potential in mV. - E_in double - Inhibitory synaptic reversal potential in mV. - E_Na double - Sodium reversal potential in mV. - g_Na double - Sodium peak conductance in nS. - E_K double - Potassium reversal potential in mV. - g_K double - Potassium peak conductance in nS. - I_e double - External input current in pA. +The following parameters can be set in the status dictionary. + +V_m double - Membrane potential in mV +V_T double - Voltage offset that controls dynamics. For default + parameters, V_T = -63mV results in a threshold around + -50mV. +E_L double - Leak reversal potential in mV. +C_m double - Capacity of the membrane in pF. +g_L double - Leak conductance in nS. +tau_syn_ex double - Time constant of the excitatory synaptic exponential + function in ms. +tau_syn_in double - Time constant of the inhibitory synaptic exponential + function in ms. +t_ref double - Duration of refractory period in ms (see Note). +E_ex double - Excitatory synaptic reversal potential in mV. +E_in double - Inhibitory synaptic reversal potential in mV. +E_Na double - Sodium reversal potential in mV. +g_Na double - Sodium peak conductance in nS. +E_K double - Potassium reversal potential in mV. +g_K double - Potassium peak conductance in nS. +I_e double - External input current in pA. References: diff --git a/models/hh_psc_alpha.h b/models/hh_psc_alpha.h index e5e778be00..b04048ffd7 100644 --- a/models/hh_psc_alpha.h +++ b/models/hh_psc_alpha.h @@ -62,58 +62,58 @@ Name: hh_psc_alpha - Hodgkin-Huxley neuron model. Description: - hh_psc_alpha is an implementation of a spiking neuron using the Hodgkin-Huxley - formalism. +hh_psc_alpha is an implementation of a spiking neuron using the Hodgkin-Huxley +formalism. - (1) Post-synaptic currents - Incoming spike events induce a post-synaptic change of current modelled - by an alpha function. The alpha function is normalised such that an event of - weight 1.0 results in a peak current of 1 pA. +(1) Post-synaptic currents +Incoming spike events induce a post-synaptic change of current modelled +by an alpha function. The alpha function is normalised such that an event of +weight 1.0 results in a peak current of 1 pA. - (2) Spike Detection - Spike detection is done by a combined threshold-and-local-maximum search: if - there is a local maximum above a certain threshold of the membrane potential, - it is considered a spike. +(2) Spike Detection +Spike detection is done by a combined threshold-and-local-maximum search: if +there is a local maximum above a certain threshold of the membrane potential, +it is considered a spike. Parameters: - The following parameters can be set in the status dictionary. - - V_m double - Membrane potential in mV - E_L double - Resting membrane potential in mV. - g_L double - Leak conductance in nS. - C_m double - Capacity of the membrane in pF. - tau_ex double - Rise time of the excitatory synaptic alpha function in ms. - tau_in double - Rise time of the inhibitory synaptic alpha function in ms. - E_Na double - Sodium reversal potential in mV. - g_Na double - Sodium peak conductance in nS. - E_K double - Potassium reversal potential in mV. - g_K double - Potassium peak conductance in nS. - Act_m double - Activation variable m - Act_h double - Activation variable h - Inact_n double - Inactivation variable n - I_e double - Constant external input current in pA. +The following parameters can be set in the status dictionary. + +V_m double - Membrane potential in mV +E_L double - Resting membrane potential in mV. +g_L double - Leak conductance in nS. +C_m double - Capacity of the membrane in pF. +tau_ex double - Rise time of the excitatory synaptic alpha function in ms. +tau_in double - Rise time of the inhibitory synaptic alpha function in ms. +E_Na double - Sodium reversal potential in mV. +g_Na double - Sodium peak conductance in nS. +E_K double - Potassium reversal potential in mV. +g_K double - Potassium peak conductance in nS. +Act_m double - Activation variable m +Act_h double - Activation variable h +Inact_n double - Inactivation variable n +I_e double - Constant external input current in pA. Problems/Todo: - better spike detection - initial wavelet/spike at simulation onset +better spike detection +initial wavelet/spike at simulation onset References: - Spiking Neuron Models: - Single Neurons, Populations, Plasticity - Wulfram Gerstner, Werner Kistler, Cambridge University Press +Spiking Neuron Models: +Single Neurons, Populations, Plasticity +Wulfram Gerstner, Werner Kistler, Cambridge University Press - Theoretical Neuroscience: - Computational and Mathematical Modeling of Neural Systems - Peter Dayan, L. F. Abbott, MIT Press (parameters taken from here) +Theoretical Neuroscience: +Computational and Mathematical Modeling of Neural Systems +Peter Dayan, L. F. Abbott, MIT Press (parameters taken from here) - Hodgkin, A. L. and Huxley, A. F., - A Quantitative Description of Membrane Current - and Its Application to Conduction and Excitation in Nerve, - Journal of Physiology, 117, 500-544 (1952) +Hodgkin, A. L. and Huxley, A. F., +A Quantitative Description of Membrane Current +and Its Application to Conduction and Excitation in Nerve, +Journal of Physiology, 117, 500-544 (1952) Sends: SpikeEvent diff --git a/models/hh_psc_alpha_gap.h b/models/hh_psc_alpha_gap.h index 6a09d6b120..bd50921643 100644 --- a/models/hh_psc_alpha_gap.h +++ b/models/hh_psc_alpha_gap.h @@ -64,68 +64,68 @@ Name: hh_psc_alpha_gap - Hodgkin-Huxley neuron model with gap-junction support. Description: - hh_psc_alpha_gap is an implementation of a spiking neuron using the - Hodgkin-Huxley formalism. In contrast to hh_psc_alpha the implementation - additionally supports gap junctions. +hh_psc_alpha_gap is an implementation of a spiking neuron using the +Hodgkin-Huxley formalism. In contrast to hh_psc_alpha the implementation +additionally supports gap junctions. - (1) Post-synaptic currents - Incoming spike events induce a post-synaptic change of current modelled - by an alpha function. The alpha function is normalised such that an event of - weight 1.0 results in a peak current of 1 pA. +(1) Post-synaptic currents +Incoming spike events induce a post-synaptic change of current modelled +by an alpha function. The alpha function is normalised such that an event of +weight 1.0 results in a peak current of 1 pA. - (2) Spike Detection - Spike detection is done by a combined threshold-and-local-maximum search: if - there is a local maximum above a certain threshold of the membrane potential, - it is considered a spike. +(2) Spike Detection +Spike detection is done by a combined threshold-and-local-maximum search: if +there is a local maximum above a certain threshold of the membrane potential, +it is considered a spike. - (3) Gap Junctions - Gap Junctions are implemented by a gap current of the form g_ij( V_i - V_j). +(3) Gap Junctions +Gap Junctions are implemented by a gap current of the form g_ij( V_i - V_j). Parameters: - The following parameters can be set in the status dictionary. - - V_m double - Membrane potential in mV - E_L double - Resting membrane potential in mV. - g_L double - Leak conductance in nS. - C_m double - Capacity of the membrane in pF. - tau_syn_ex double - Rise time of the excitatory synaptic alpha function in ms. - tau_syn_in double - Rise time of the inhibitory synaptic alpha function in ms. - E_Na double - Sodium reversal potential in mV. - g_Na double - Sodium peak conductance in nS. - E_K double - Potassium reversal potential in mV. - g_Kv1 double - Potassium peak conductance in nS. - g_Kv3 double - Potassium peak conductance in nS. - Act_m double - Activation variable m - Act_h double - Activation variable h - Inact_n double - Inactivation variable n - I_e double - Constant external input current in pA. +The following parameters can be set in the status dictionary. + +V_m double - Membrane potential in mV +E_L double - Resting membrane potential in mV. +g_L double - Leak conductance in nS. +C_m double - Capacity of the membrane in pF. +tau_syn_ex double - Rise time of the excitatory synaptic alpha function in ms. +tau_syn_in double - Rise time of the inhibitory synaptic alpha function in ms. +E_Na double - Sodium reversal potential in mV. +g_Na double - Sodium peak conductance in nS. +E_K double - Potassium reversal potential in mV. +g_Kv1 double - Potassium peak conductance in nS. +g_Kv3 double - Potassium peak conductance in nS. +Act_m double - Activation variable m +Act_h double - Activation variable h +Inact_n double - Inactivation variable n +I_e double - Constant external input current in pA. References: - Spiking Neuron Models: - Single Neurons, Populations, Plasticity - Wulfram Gerstner, Werner Kistler, Cambridge University Press - - Mancilla, J. G., Lewis, T. J., Pinto, D. J., - Rinzel, J., and Connors, B. W., - Synchronization of electrically coupled pairs - of inhibitory interneurons in neocortex, - J. Neurosci. 27, 2058-2073 (2007), - doi: 10.1523/JNEUROSCI.2715-06.2007 (parameters taken from here) - - Hodgkin, A. L. and Huxley, A. F., - A Quantitative Description of Membrane Current - and Its Application to Conduction and Excitation in Nerve, - Journal of Physiology, 117, 500-544 (1952) - - Hahne, J., Helias, M., Kunkel, S., Igarashi, J., - Bolten, M., Frommer, A. and Diesmann, M., - A unified framework for spiking and gap-junction interactions - in distributed neuronal network simulations, - Front. Neuroinform. 9:22. (2015), - doi: 10.3389/fninf.2015.00022 +Spiking Neuron Models: +Single Neurons, Populations, Plasticity +Wulfram Gerstner, Werner Kistler, Cambridge University Press + +Mancilla, J. G., Lewis, T. J., Pinto, D. J., +Rinzel, J., and Connors, B. W., +Synchronization of electrically coupled pairs +of inhibitory interneurons in neocortex, +J. Neurosci. 27, 2058-2073 (2007), +doi: 10.1523/JNEUROSCI.2715-06.2007 (parameters taken from here) + +Hodgkin, A. L. and Huxley, A. F., +A Quantitative Description of Membrane Current +and Its Application to Conduction and Excitation in Nerve, +Journal of Physiology, 117, 500-544 (1952) + +Hahne, J., Helias, M., Kunkel, S., Igarashi, J., +Bolten, M., Frommer, A. and Diesmann, M., +A unified framework for spiking and gap-junction interactions +in distributed neuronal network simulations, +Front. Neuroinform. 9:22. (2015), +doi: 10.3389/fninf.2015.00022 Sends: SpikeEvent, GapJunctionEvent diff --git a/models/ht_connection.h b/models/ht_connection.h index 48819f0fde..848df4081b 100644 --- a/models/ht_connection.h +++ b/models/ht_connection.h @@ -30,37 +30,40 @@ namespace nest { /** @BeginDocumentation - Name: ht_synapse - Synapse with depression after Hill & Tononi (2005). +Name: ht_synapse - Synapse with depression after Hill & Tononi (2005). - Description: - This synapse implements the depression model described in [1, p 1678]. - See docs/model_details/HillTononi.ipynb for details. +Description: - Synaptic dynamics are given by +This synapse implements the depression model described in [1, p 1678]. +See docs/model_details/HillTononi.ipynb for details. - P'(t) = ( 1 - P ) / tau_P - P(T+) = (1 - delta_P) P(T-) for T : time of a spike - P(t=0) = 1 +Synaptic dynamics are given by - w(t) = w_max * P(t) is the resulting synaptic weight +P'(t) = ( 1 - P ) / tau_P +P(T+) = (1 - delta_P) P(T-) for T : time of a spike +P(t=0) = 1 - Parameters: - The following parameters can be set in the status dictionary: - tau_P double - synaptic vesicle pool recovery time constant [ms] - delta_P double - fractional change in vesicle pool on incoming spikes - [unitless] - P double - current size of the vesicle pool [unitless, 0 <= P <= 1] +w(t) = w_max * P(t) is the resulting synaptic weight - References: - [1] S Hill and G Tononi (2005). J Neurophysiol 93:1671-1698. +Parameters: - Sends: SpikeEvent +The following parameters can be set in the status dictionary: +tau_P double - synaptic vesicle pool recovery time constant [ms] +delta_P double - fractional change in vesicle pool on incoming spikes + [unitless] +P double - current size of the vesicle pool [unitless, 0 <= P <= 1] - FirstVersion: March 2009 +References: - Author: Hans Ekkehard Plesser, based on markram_synapse +[1] S Hill and G Tononi (2005). J Neurophysiol 93:1671-1698. - SeeAlso: ht_neuron, tsodyks_synapse, stdp_synapse, static_synapse +Sends: SpikeEvent + +FirstVersion: March 2009 + +Author: Hans Ekkehard Plesser, based on markram_synapse + +SeeAlso: ht_neuron, tsodyks_synapse, stdp_synapse, static_synapse */ template < typename targetidentifierT > class HTConnection : public Connection< targetidentifierT > diff --git a/models/ht_neuron.h b/models/ht_neuron.h index f4a24d3cb1..57574e7258 100644 --- a/models/ht_neuron.h +++ b/models/ht_neuron.h @@ -62,74 +62,77 @@ namespace nest extern "C" int ht_neuron_dynamics( double, const double*, double*, void* ); /** @BeginDocumentation - Name: ht_neuron - Neuron model after Hill & Tononi (2005). - - Description: - This model neuron implements a slightly modified version of the - neuron model described in [1]. The most important properties are: - - - Integrate-and-fire with threshold adaptive threshold. - - Repolarizing potassium current instead of hard reset. - - AMPA, NMDA, GABA_A, and GABA_B conductance-based synapses with - beta-function (difference of exponentials) time course. - - Voltage-dependent NMDA with instantaneous or two-stage unblocking [1, 2]. - - Intrinsic currents I_h, I_T, I_Na(p), and I_KNa. - - Synaptic "minis" are not implemented. - - Documentation and Examples: - - docs/model_details/HillTononiModels.ipynb - - pynest/examples/intrinsic_currents_spiking.py - - pynest/examples/intrinsic_currents_subthreshold.py - - Parameters: - V_m - membrane potential - tau_m - membrane time constant applying to all currents except - repolarizing K-current (see [1], p 1677) - t_ref - refractory time and duration of post-spike repolarizing - potassium current (t_spike in [1]) - tau_spike - membrane time constant for post-spike repolarizing - potassium current - voltage_clamp - if true, clamp voltage to value at beginning of simulation - (default: false, mainly for testing) - theta, theta_eq, tau_theta - threshold, equilibrium value, time constant - g_KL, E_K, g_NaL, E_Na - conductances and reversal potentials for K and - Na leak currents - {E_rev,g_peak,tau_rise,tau_decay}_{AMPA,NMDA,GABA_A,GABA_B} - - reversal potentials, peak conductances and - time constants for synapses (tau_rise/ - tau_decay correspond to tau_1/tau_2 in the - paper) - V_act_NMDA, S_act_NMDA, tau_Mg_{fast, slow}_NMDA - - parameters for voltage dependence of NMDA- - conductance, see above - instant_unblock_NMDA - instantaneous NMDA unblocking (default: false) - {E_rev,g_peak}_{h,T,NaP,KNa} - reversal potential and peak conductance for - intrinsic currents - tau_D_KNa - relaxation time constant for I_KNa - receptor_types - dictionary mapping synapse names to ports on - neuron model - recordables - list of recordable quantities - equilibrate - if given and true, time-dependent activation - and inactivation state variables (h, m) of - intrinsic currents and NMDA channels are set - to their equilibrium values during this - SetStatus call; otherwise they retain their - present values. - - Note: Conductances are unitless in this model and currents are in mV. - - Author: Hans Ekkehard Plesser - - Sends: SpikeEvent - Receives: SpikeEvent, CurrentEvent, DataLoggingRequest - - FirstVersion: October 2009; full revision November 2016 - - References: - [1] S Hill and G Tononi (2005). J Neurophysiol 93:1671-1698. - [2] M Vargas-Caballero HPC Robinson (2003). J Neurophysiol 89:2778-2783. - - SeeAlso: ht_synapse +Name: ht_neuron - Neuron model after Hill & Tononi (2005). + +Description: + +This model neuron implements a slightly modified version of the +neuron model described in [1]. The most important properties are: + +- Integrate-and-fire with threshold adaptive threshold. +- Repolarizing potassium current instead of hard reset. +- AMPA, NMDA, GABA_A, and GABA_B conductance-based synapses with + beta-function (difference of exponentials) time course. +- Voltage-dependent NMDA with instantaneous or two-stage unblocking [1, 2]. +- Intrinsic currents I_h, I_T, I_Na(p), and I_KNa. +- Synaptic "minis" are not implemented. + +Documentation and Examples: +- docs/model_details/HillTononiModels.ipynb +- pynest/examples/intrinsic_currents_spiking.py +- pynest/examples/intrinsic_currents_subthreshold.py + +Parameters: + +V_m - membrane potential +tau_m - membrane time constant applying to all currents except + repolarizing K-current (see [1], p 1677) +t_ref - refractory time and duration of post-spike repolarizing + potassium current (t_spike in [1]) +tau_spike - membrane time constant for post-spike repolarizing + potassium current +voltage_clamp - if true, clamp voltage to value at beginning of simulation + (default: false, mainly for testing) +theta, theta_eq, tau_theta - threshold, equilibrium value, time constant +g_KL, E_K, g_NaL, E_Na - conductances and reversal potentials for K and + Na leak currents +{E_rev,g_peak,tau_rise,tau_decay}_{AMPA,NMDA,GABA_A,GABA_B} + - reversal potentials, peak conductances and + time constants for synapses (tau_rise/ + tau_decay correspond to tau_1/tau_2 in the + paper) +V_act_NMDA, S_act_NMDA, tau_Mg_{fast, slow}_NMDA + - parameters for voltage dependence of NMDA- + conductance, see above +instant_unblock_NMDA - instantaneous NMDA unblocking (default: false) +{E_rev,g_peak}_{h,T,NaP,KNa} - reversal potential and peak conductance for + intrinsic currents +tau_D_KNa - relaxation time constant for I_KNa +receptor_types - dictionary mapping synapse names to ports on + neuron model +recordables - list of recordable quantities +equilibrate - if given and true, time-dependent activation + and inactivation state variables (h, m) of + intrinsic currents and NMDA channels are set + to their equilibrium values during this + SetStatus call; otherwise they retain their + present values. + +Note: Conductances are unitless in this model and currents are in mV. + +Author: Hans Ekkehard Plesser + +Sends: SpikeEvent +Receives: SpikeEvent, CurrentEvent, DataLoggingRequest + +FirstVersion: October 2009; full revision November 2016 + +References: + +[1] S Hill and G Tononi (2005). J Neurophysiol 93:1671-1698. +[2] M Vargas-Caballero HPC Robinson (2003). J Neurophysiol 89:2778-2783. + +SeeAlso: ht_synapse */ class ht_neuron : public Archiving_Node { diff --git a/models/iaf_chs_2007.h b/models/iaf_chs_2007.h index cba787a347..d2a6d52f0d 100644 --- a/models/iaf_chs_2007.h +++ b/models/iaf_chs_2007.h @@ -39,57 +39,60 @@ namespace nest { /** @BeginDocumentation - Name: iaf_chs_2007 - Spike-response model used in Carandini et al 2007. +Name: iaf_chs_2007 - Spike-response model used in Carandini et al 2007. - Description: - The membrane potential is the sum of stereotyped events: the postsynaptic - potentials (V_syn), waveforms that include a spike and the subsequent - after-hyperpolarization (V_spike) and Gaussian-distributed white noise. +Description: - The postsynaptic potential is described by alpha function where - U_epsp is the maximal amplitude of the EPSP and tau_epsp is the time to - peak of the EPSP. +The membrane potential is the sum of stereotyped events: the postsynaptic +potentials (V_syn), waveforms that include a spike and the subsequent +after-hyperpolarization (V_spike) and Gaussian-distributed white noise. - The spike waveform is described as a delta peak followed by a membrane - potential reset and exponential decay. U_reset is the magnitude of the - reset/after-hyperpolarization and tau_reset is the time constant of - recovery from this hyperpolarization. +The postsynaptic potential is described by alpha function where +U_epsp is the maximal amplitude of the EPSP and tau_epsp is the time to +peak of the EPSP. - The linear subthresold dynamics is integrated by the Exact - Integration scheme [1]. The neuron dynamics is solved on the time - grid given by the computation step size. Incoming as well as emitted - spikes are forced to that grid. +The spike waveform is described as a delta peak followed by a membrane +potential reset and exponential decay. U_reset is the magnitude of the +reset/after-hyperpolarization and tau_reset is the time constant of +recovery from this hyperpolarization. - Remarks: - The way the noise term was implemented in the original model makes it - unsuitable for simulation in NEST. The workaround was to prepare the - noise signal externally prior to simulation. The noise signal, - if present, has to be at least as long as the simulation. +The linear subthresold dynamics is integrated by the Exact +Integration scheme [1]. The neuron dynamics is solved on the time +grid given by the computation step size. Incoming as well as emitted +spikes are forced to that grid. - Parameters: - The following parameters can be set in the status dictionary. +Remarks: +The way the noise term was implemented in the original model makes it +unsuitable for simulation in NEST. The workaround was to prepare the +noise signal externally prior to simulation. The noise signal, +if present, has to be at least as long as the simulation. - tau_epsp double - Membrane time constant in ms. - tau_reset double - Refractory time constant in ms. - U_epsp double - Maximum amplitude of the EPSP. Normalized. - U_reset double - Reset value of the membrane potential. Normalized. - U_noise double - Noise scale. Normalized. - noise vector- Noise signal. +Parameters: - References: - [1] Carandini M, Horton JC, Sincich LC (2007) Thalamic filtering of retinal - spike trains by postsynaptic summation. J Vis 7(14):20,1-11. - [2] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear - systems with applications to neuronal modeling. Biologial Cybernetics - 81:381-402. +The following parameters can be set in the status dictionary. - Sends: SpikeEvent +tau_epsp double - Membrane time constant in ms. +tau_reset double - Refractory time constant in ms. +U_epsp double - Maximum amplitude of the EPSP. Normalized. +U_reset double - Reset value of the membrane potential. Normalized. +U_noise double - Noise scale. Normalized. +noise vector- Noise signal. - Receives: SpikeEvent, DataLoggingRequest +References: - FirstVersion: May 2012 +[1] Carandini M, Horton JC, Sincich LC (2007) Thalamic filtering of retinal +spike trains by postsynaptic summation. J Vis 7(14):20,1-11. +[2] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear +systems with applications to neuronal modeling. Biologial Cybernetics +81:381-402. - Author: Thomas Heiberg, Birgit Kriener +Sends: SpikeEvent + +Receives: SpikeEvent, DataLoggingRequest + +FirstVersion: May 2012 + +Author: Thomas Heiberg, Birgit Kriener */ class iaf_chs_2007 : public Archiving_Node { diff --git a/models/iaf_chxk_2008.h b/models/iaf_chxk_2008.h index 0b2d25530d..ed60ce606c 100644 --- a/models/iaf_chxk_2008.h +++ b/models/iaf_chxk_2008.h @@ -61,6 +61,7 @@ Name: iaf_chxk_2008 - Conductance based leaky integrate-and-fire neuron model used in Casti et al 2008. Description: + iaf_chxk_2008 is an implementation of a spiking neuron using IAF dynamics with conductance-based synapses [1]. It is modeled after iaf_cond_alpha with the addition of after hyper-polarization current instead of a membrane potential @@ -69,6 +70,7 @@ modeled by an alpha function. The alpha function is normalized such that an event of weight 1.0 results in a peak current of 1 nS at t = tau_syn. Parameters: + The following parameters can be set in the status dictionary. V_m double - Membrane potential in mV @@ -88,6 +90,7 @@ ahp_bug bool - Defaults to false. If true, behaves like original model implementation. References: + [1] Casti A, Hayot F, Xiao Y, and Kaplan E (2008) A simple model of retina-LGN transmission. J Comput Neurosci 24:235-252. diff --git a/models/iaf_cond_alpha.h b/models/iaf_cond_alpha.h index 542e9f5789..2b2a8be087 100644 --- a/models/iaf_cond_alpha.h +++ b/models/iaf_cond_alpha.h @@ -61,6 +61,7 @@ Name: iaf_cond_alpha - Simple conductance based leaky integrate-and-fire neuron model. Description: + iaf_cond_alpha is an implementation of a spiking neuron using IAF dynamics with conductance-based synapses. Incoming spike events induce a post-synaptic change of conductance modelled by an alpha function. The alpha function @@ -68,6 +69,7 @@ is normalised such that an event of weight 1.0 results in a peak current of 1 nS at t = tau_syn. Parameters: + The following parameters can be set in the status dictionary. V_m double - Membrane potential in mV diff --git a/models/iaf_cond_alpha_mc.h b/models/iaf_cond_alpha_mc.h index dccba14edf..698b63d1f6 100644 --- a/models/iaf_cond_alpha_mc.h +++ b/models/iaf_cond_alpha_mc.h @@ -67,6 +67,7 @@ Name: iaf_cond_alpha_mc - PROTOTYPE Multi-compartment conductance-based leaky integrate-and-fire neuron model. Description: + THIS MODEL IS A PROTOTYPE FOR ILLUSTRATION PURPOSES. IT IS NOT YET FULLY TESTED. USE AT YOUR OWN PERIL! @@ -104,6 +105,7 @@ synaptic weights must be positive numbers! Parameters: + The following parameters can be set in the status dictionary. Parameters for each compartment are collected in a sub-dictionary; these sub-dictionaries are called "soma", "proximal", and "distal", respectively. In the list below, @@ -130,12 +132,13 @@ V_reset double - Reset potential of the membrane in mV. See examples/nest/mc_neuron.py. Remarks: - This is a prototype for illustration which has undergone only limited - testing. Details of the implementation and user-interface will likely - change. USE AT YOUR OWN PERIL! - @note All parameters that occur for both compartments - and dendrite are stored as C arrays, with index 0 being soma. +This is a prototype for illustration which has undergone only limited +testing. Details of the implementation and user-interface will likely +change. USE AT YOUR OWN PERIL! + +@note All parameters that occur for both compartments +and dendrite are stored as C arrays, with index 0 being soma. Sends: SpikeEvent @@ -143,11 +146,11 @@ Receives: SpikeEvent, CurrentEvent, DataLoggingRequest References: -Meffin, H., Burkitt, A. N., & Grayden, D. B. (2004). An analytical +[1] Meffin, H., Burkitt, A. N., & Grayden, D. B. (2004). An analytical model for the large, fluctuating synaptic conductance state typical of neocortical neurons in vivo. J. Comput. Neurosci., 16, 159-175. -Bernander, O ., Douglas, R. J., Martin, K. A. C., & Koch, C. (1991). +[2] Bernander, O ., Douglas, R. J., Martin, K. A. C., & Koch, C. (1991). Synaptic background activity influences spatiotemporal integration in single pyramidal cells. Proc. Natl. Acad. Sci. USA, 88(24), 11569-11573. diff --git a/models/iaf_cond_exp.h b/models/iaf_cond_exp.h index 98d219a075..b614cb0273 100644 --- a/models/iaf_cond_exp.h +++ b/models/iaf_cond_exp.h @@ -61,6 +61,7 @@ Name: iaf_cond_exp - Simple conductance based leaky integrate-and-fire neuron model. Description: + iaf_cond_exp is an implementation of a spiking neuron using IAF dynamics with conductance-based synapses. Incoming spike events induce a post-synaptic change of conductance modelled by an exponential function. The exponential function @@ -68,6 +69,7 @@ is normalised such that an event of weight 1.0 results in a peak conductance of 1 nS. Parameters: + The following parameters can be set in the status dictionary. V_m double - Membrane potential in mV diff --git a/models/iaf_cond_exp_sfa_rr.h b/models/iaf_cond_exp_sfa_rr.h index 1b08b94387..905949a7c1 100644 --- a/models/iaf_cond_exp_sfa_rr.h +++ b/models/iaf_cond_exp_sfa_rr.h @@ -62,6 +62,7 @@ Name: iaf_cond_exp_sfa_rr - Simple conductance based leaky integrate-and-fire neuron model. Description: + iaf_cond_exp_sfa_rr is an iaf_cond_exp_sfa_rr i.e. an implementation of a spiking neuron using IAF dynamics with conductance-based synapses, with additional spike-frequency adaptation and relative refractory @@ -78,6 +79,7 @@ these conductances decay exponentially with time constants tau_sfa and tau_rr, respectively. Parameters: + The following parameters can be set in the status dictionary. V_m double - Membrane potential in mV diff --git a/models/iaf_psc_alpha.h b/models/iaf_psc_alpha.h index 3af79ff360..4fca377dee 100644 --- a/models/iaf_psc_alpha.h +++ b/models/iaf_psc_alpha.h @@ -34,89 +34,91 @@ namespace nest { + /** @BeginDocumentation Name: iaf_psc_alpha - Leaky integrate-and-fire neuron model. Description: - iaf_psc_alpha is an implementation of a leaky integrate-and-fire model - with alpha-function shaped synaptic currents. Thus, synaptic currents - and the resulting post-synaptic potentials have a finite rise time. +iaf_psc_alpha is an implementation of a leaky integrate-and-fire model +with alpha-function shaped synaptic currents. Thus, synaptic currents +and the resulting post-synaptic potentials have a finite rise time. - The threshold crossing is followed by an absolute refractory period - during which the membrane potential is clamped to the resting potential. +The threshold crossing is followed by an absolute refractory period +during which the membrane potential is clamped to the resting potential. - The linear subthresold dynamics is integrated by the Exact - Integration scheme [1]. The neuron dynamics is solved on the time - grid given by the computation step size. Incoming as well as emitted - spikes are forced to that grid. +The linear subthresold dynamics is integrated by the Exact +Integration scheme [1]. The neuron dynamics is solved on the time +grid given by the computation step size. Incoming as well as emitted +spikes are forced to that grid. - An additional state variable and the corresponding differential - equation represents a piecewise constant external current. +An additional state variable and the corresponding differential +equation represents a piecewise constant external current. - The general framework for the consistent formulation of systems with - neuron like dynamics interacting by point events is described in - [1]. A flow chart can be found in [2]. +The general framework for the consistent formulation of systems with +neuron like dynamics interacting by point events is described in +[1]. A flow chart can be found in [2]. - Critical tests for the formulation of the neuron model are the - comparisons of simulation results for different computation step - sizes. sli/testsuite/nest contains a number of such tests. +Critical tests for the formulation of the neuron model are the +comparisons of simulation results for different computation step +sizes. sli/testsuite/nest contains a number of such tests. - The iaf_psc_alpha is the standard model used to check the consistency - of the nest simulation kernel because it is at the same time complex - enough to exhibit non-trivial dynamics and simple enough compute - relevant measures analytically. +The iaf_psc_alpha is the standard model used to check the consistency +of the nest simulation kernel because it is at the same time complex +enough to exhibit non-trivial dynamics and simple enough compute +relevant measures analytically. Remarks: - The present implementation uses individual variables for the - components of the state vector and the non-zero matrix elements of - the propagator. Because the propagator is a lower triangular matrix - no full matrix multiplication needs to be carried out and the - computation can be done "in place" i.e. no temporary state vector - object is required. +The present implementation uses individual variables for the +components of the state vector and the non-zero matrix elements of +the propagator. Because the propagator is a lower triangular matrix +no full matrix multiplication needs to be carried out and the +computation can be done "in place" i.e. no temporary state vector +object is required. - The template support of recent C++ compilers enables a more succinct - formulation without loss of runtime performance already at minimal - optimization levels. A future version of iaf_psc_alpha will probably - address the problem of efficient usage of appropriate vector and - matrix objects. +The template support of recent C++ compilers enables a more succinct +formulation without loss of runtime performance already at minimal +optimization levels. A future version of iaf_psc_alpha will probably +address the problem of efficient usage of appropriate vector and +matrix objects. Parameters: - The following parameters can be set in the status dictionary. +The following parameters can be set in the status dictionary. - V_m double - Membrane potential in mV - E_L double - Resting membrane potential in mV. - C_m double - Capacity of the membrane in pF - tau_m double - Membrane time constant in ms. - t_ref double - Duration of refractory period in ms. - V_th double - Spike threshold in mV. - V_reset double - Reset potential of the membrane in mV. - tau_syn_ex double - Rise time of the excitatory synaptic alpha function in ms. - tau_syn_in double - Rise time of the inhibitory synaptic alpha function in ms. - I_e double - Constant external input current in pA. - V_min double - Absolute lower value for the membrane potential. +V_m double - Membrane potential in mV +E_L double - Resting membrane potential in mV. +C_m double - Capacity of the membrane in pF +tau_m double - Membrane time constant in ms. +t_ref double - Duration of refractory period in ms. +V_th double - Spike threshold in mV. +V_reset double - Reset potential of the membrane in mV. +tau_syn_ex double - Rise time of the excitatory synaptic alpha function in ms. +tau_syn_in double - Rise time of the inhibitory synaptic alpha function in ms. +I_e double - Constant external input current in pA. +V_min double - Absolute lower value for the membrane potential. Remarks: - If tau_m is very close to tau_syn_ex or tau_syn_in, the model - will numerically behave as if tau_m is equal to tau_syn_ex or - tau_syn_in, respectively, to avoid numerical instabilities. - For details, please see IAF_neurons_singularity.ipynb in - the NEST source code (docs/model_details). +If tau_m is very close to tau_syn_ex or tau_syn_in, the model +will numerically behave as if tau_m is equal to tau_syn_ex or +tau_syn_in, respectively, to avoid numerical instabilities. +For details, please see IAF_neurons_singularity.ipynb in +the NEST source code (docs/model_details). References: - [1] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear - systems with applications to neuronal modeling. Biologial Cybernetics - 81:381-402. - [2] Diesmann M, Gewaltig M-O, Rotter S, & Aertsen A (2001) State space - analysis of synchronous spiking in cortical neural networks. - Neurocomputing 38-40:565-571. - [3] Morrison A, Straube S, Plesser H E, & Diesmann M (2006) Exact subthreshold - integration with continuous spike times in discrete time neural network - simulations. Neural Computation, in press + +[1] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear + systems with applications to neuronal modeling. Biologial Cybernetics + 81:381-402. +[2] Diesmann M, Gewaltig M-O, Rotter S, & Aertsen A (2001) State space + analysis of synchronous spiking in cortical neural networks. + Neurocomputing 38-40:565-571. +[3] Morrison A, Straube S, Plesser H E, & Diesmann M (2006) Exact subthreshold + integration with continuous spike times in discrete time neural network + simulations. Neural Computation, in press Sends: SpikeEvent diff --git a/models/iaf_psc_exp.h b/models/iaf_psc_exp.h index 8da0b2159d..8c25d85196 100644 --- a/models/iaf_psc_exp.h +++ b/models/iaf_psc_exp.h @@ -40,6 +40,7 @@ Name: iaf_psc_exp - Leaky integrate-and-fire neuron model with exponential PSCs. Description: + iaf_psc_expp is an implementation of a leaky integrate-and-fire model with exponential shaped postsynaptic currents (PSCs) according to [1]. Thus, postsynaptic currents have an infinitely short rise time. @@ -61,6 +62,7 @@ neuron like dynamics interacting by point events is described in [2]. A flow chart can be found in [3]. Remarks: + The present implementation uses individual variables for the components of the state vector and the non-zero matrix elements of the propagator. Because the propagator is a lower triangular matrix @@ -75,6 +77,7 @@ address the problem of efficient usage of appropriate vector and matrix objects. Parameters: + The following parameters can be set in the status dictionary. E_L double - Resting membrane potential in mV. @@ -106,6 +109,7 @@ kernel with the time constant of the excitatory synapse, tau_syn_ex. For an example application, see [4]. References: + [1] Misha Tsodyks, Asher Uziel, and Henry Markram (2000) Synchrony Generation in Recurrent Networks with Frequency-Dependent Synapses, The Journal of Neuroscience, 2000, Vol. 20 RC50 p. 1-5 diff --git a/models/iaf_psc_exp_multisynapse.h b/models/iaf_psc_exp_multisynapse.h index 026eab806e..b9a596bdb0 100644 --- a/models/iaf_psc_exp_multisynapse.h +++ b/models/iaf_psc_exp_multisynapse.h @@ -44,13 +44,13 @@ Name: iaf_psc_exp_multisynapse - Leaky integrate-and-fire neuron model with Description: - iaf_psc_exp_multisynapse is a direct extension of iaf_psc_exp. - On the postsynapic side, there can be arbitrarily many synaptic - time constants (iaf_psc_exp has exactly two: tau_syn_ex and tau_syn_in). +iaf_psc_exp_multisynapse is a direct extension of iaf_psc_exp. +On the postsynapic side, there can be arbitrarily many synaptic +time constants (iaf_psc_exp has exactly two: tau_syn_ex and tau_syn_in). - This can be reached by specifying separate receptor ports, each for - a different time constant. The port number has to match the respective - "receptor_type" in the connectors. +This can be reached by specifying separate receptor ports, each for +a different time constant. The port number has to match the respective +"receptor_type" in the connectors. Sends: SpikeEvent diff --git a/models/lin_rate.h b/models/lin_rate.h index 02f8a0877c..50e61bb871 100644 --- a/models/lin_rate.h +++ b/models/lin_rate.h @@ -35,55 +35,54 @@ namespace nest { /** @BeginDocumentation - Name: lin_rate - Linear rate model Description: - lin_rate is an implementation of a linear rate model with - input function input(h) = g * h. - The model supports multiplicative coupling which can - be switched on and off via the boolean parameter mult_coupling - (default=false). In case multiplicative coupling is actived - the excitatory input of the model is multiplied with the function - mult_coupling_ex(rate) = g_ex_ * ( theta_ex_ - rate ) - and the inhibitory input is multiplied with the function - mult_coupling_in(rate) = g_in_ * ( theta_in_ + rate ). +lin_rate is an implementation of a linear rate model with +input function input(h) = g * h. +The model supports multiplicative coupling which can +be switched on and off via the boolean parameter mult_coupling +(default=false). In case multiplicative coupling is actived +the excitatory input of the model is multiplied with the function +mult_coupling_ex(rate) = g_ex_ * ( theta_ex_ - rate ) +and the inhibitory input is multiplied with the function +mult_coupling_in(rate) = g_in_ * ( theta_in_ + rate ). - The model supports connections to other rate models with either zero or - non-zero delay, and uses the secondary_event concept introduced with - the gap-junction framework. +The model supports connections to other rate models with either zero or +non-zero delay, and uses the secondary_event concept introduced with +the gap-junction framework. Parameters: - The following parameters can be set in the status dictionary. - - rate double - Rate (unitless) - tau double - Time constant of rate dynamics in ms. - lambda double - Passive decay rate. - mean double - Mean of Gaussian white noise. - std double - Standard deviation of Gaussian white noise. - g double - Gain parameter - mult_coupling bool - Switch to enable/disable multiplicative coupling. - g_ex double - Linear factor in multiplicative coupling. - g_in double - Linear factor in multiplicative coupling. - theta_ex double - Shift in multiplicative coupling. - theta_in double - Shift in multiplicative coupling. - rectify_output bool - Switch to restrict rate to values >= 0 +The following parameters can be set in the status dictionary. + +rate double - Rate (unitless) +tau double - Time constant of rate dynamics in ms. +lambda double - Passive decay rate. +mean double - Mean of Gaussian white noise. +std double - Standard deviation of Gaussian white noise. +g double - Gain parameter +mult_coupling bool - Switch to enable/disable multiplicative coupling. +g_ex double - Linear factor in multiplicative coupling. +g_in double - Linear factor in multiplicative coupling. +theta_ex double - Shift in multiplicative coupling. +theta_in double - Shift in multiplicative coupling. +rectify_output bool - Switch to restrict rate to values >= 0 References: - [1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., - Bolten, M., Helias, M. and Diesmann, M. (2017). - Integration of Continuous-Time Dynamics in a - Spiking Neural Network Simulator. - Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 - - [2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., - Bolten, M., Frommer, A. and Diesmann, M. (2015). - A unified framework for spiking and gap-junction interactions - in distributed neuronal network simulations. - Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 +[1] Hahne, J., Dahmen, D., Schuecker, J., Frommer, A., +Bolten, M., Helias, M. and Diesmann, M. (2017). +Integration of Continuous-Time Dynamics in a +Spiking Neural Network Simulator. +Front. Neuroinform. 11:34. doi: 10.3389/fninf.2017.00034 + +[2] Hahne, J., Helias, M., Kunkel, S., Igarashi, J., +Bolten, M., Frommer, A. and Diesmann, M. (2015). +A unified framework for spiking and gap-junction interactions +in distributed neuronal network simulations. +Front. Neuroinform. 9:22. doi: 10.3389/fninf.2015.00022 Sends: InstantaneousRateConnectionEvent, DelayedRateConnectionEvent diff --git a/models/mat2_psc_exp.h b/models/mat2_psc_exp.h index b0ba08437b..3070cefd08 100644 --- a/models/mat2_psc_exp.h +++ b/models/mat2_psc_exp.h @@ -41,6 +41,7 @@ Name: mat2_psc_exp - Non-resetting leaky integrate-and-fire neuron model with exponential PSCs and adaptive threshold. Description: + mat2_psc_exp is an implementation of a leaky integrate-and-fire model with exponential shaped postsynaptic currents (PSCs). Thus, postsynaptic currents have an infinitely short rise time. @@ -66,6 +67,7 @@ neuron like dynamics interacting by point events is described in [1]. A flow chart can be found in [2]. Remarks: + The present implementation uses individual variables for the components of the state vector and the non-zero matrix elements of the propagator. Because the propagator is a lower triangular matrix @@ -74,6 +76,7 @@ computation can be done "in place" i.e. no temporary state vector object is required. Parameters: + The following parameters can be set in the status dictionary: C_m double - Capacity of the membrane in pF @@ -99,11 +102,13 @@ V_m Non-resetting membrane potential V_th Two-timescale adaptive threshold Remarks: + tau_m != tau_syn_{ex,in} is required by the current implementation to avoid a degenerate case of the ODE describing the model [1]. For very similar values, numerics will be unstable. References: + [1] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear systems with applications to neuronal modeling. Biologial Cybernetics 81:381-402. diff --git a/models/mcculloch_pitts_neuron.h b/models/mcculloch_pitts_neuron.h index cbb671c47e..533b313d49 100644 --- a/models/mcculloch_pitts_neuron.h +++ b/models/mcculloch_pitts_neuron.h @@ -34,6 +34,7 @@ Name: mcculloch_pitts_neuron - Binary deterministic neuron with Heaviside activation function. Description: + The mcculloch_pitts_neuron is an implementation of a binary neuron that is irregularly updated as Poisson time points [1]. At each update point the total synaptic input h into the neuron is @@ -57,6 +58,7 @@ obtain delayed coupling with delay d, the user has to specify the delay d+h upon connection, where h is the simulation time step. Remarks: + This neuron has a special use for spike events to convey the binary state of the neuron to the target. The neuron model only sends a spike if a transition of its state occurs. If the @@ -72,11 +74,13 @@ The neuron accepts several sources of currents, e.g. from a noise_generator. Parameters: + tau_m double - Membrane time constant (mean inter-update-interval) in ms. theta double - threshold for sigmoidal activation function mV References: + [1] W. McCulloch und W. Pitts (1943). A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, 5:115-133. [2] Hertz Krogh, Palmer. Introduction to the theory of neural computation. diff --git a/models/mip_generator.h b/models/mip_generator.h index 0211d33f9e..bfef29aa72 100644 --- a/models/mip_generator.h +++ b/models/mip_generator.h @@ -45,48 +45,52 @@ namespace nest Name: mip_generator - create spike trains as described by the MIP model. Description: - The mip_generator generates correlated spike trains using an Multiple - Interaction Process (MIP) as described in [1]. Underlying principle is a - Poisson mother process with rate r, the spikes of which are copied into the - child processes with a certain probability p. Every node the mip_generator is - connected to receives a distinct child process as input, whose rate is p*r. - The value of the pairwise correlation coefficient of two child processes - created by a MIP process equals p. + +The mip_generator generates correlated spike trains using an Multiple +Interaction Process (MIP) as described in [1]. Underlying principle is a +Poisson mother process with rate r, the spikes of which are copied into the +child processes with a certain probability p. Every node the mip_generator is +connected to receives a distinct child process as input, whose rate is p*r. +The value of the pairwise correlation coefficient of two child processes +created by a MIP process equals p. Parameters: - The following parameters appear in the element's status dictionary: - rate double - Mean firing rate of the mother process in Hz - p_copy double - Copy probability - mother_rng rng - Random number generator of mother process - mother_seed long - Seed of RNG of mother process +The following parameters appear in the element's status dictionary: + +rate double - Mean firing rate of the mother process in Hz +p_copy double - Copy probability +mother_rng rng - Random number generator of mother process +mother_seed long - Seed of RNG of mother process Remarks: - The MIP generator may emit more than one spike through a child process - during a single time step, especially at high rates. If this happens, - the generator does not actually send out n spikes. Instead, it emits - a single spike with n-fold synaptic weight for the sake of efficiency. - Furthermore, note that as with the Poisson generator, different threads - have their own copy of a MIP generator. By using the same mother_seed - it is ensured that the mother process is identical for each of the - generators. - - IMPORTANT: The mother_seed of mpi_generator must be different from any - seeds used for the global or thread-specific RNGs set in - the kernel. - - @todo Better handling of private random number generator, see #143. - Most important: If RNG is changed in prototype by SetDefaults, - then this is + +The MIP generator may emit more than one spike through a child process +during a single time step, especially at high rates. If this happens, +the generator does not actually send out n spikes. Instead, it emits +a single spike with n-fold synaptic weight for the sake of efficiency. +Furthermore, note that as with the Poisson generator, different threads +have their own copy of a MIP generator. By using the same mother_seed +it is ensured that the mother process is identical for each of the +generators. + +IMPORTANT: The mother_seed of mpi_generator must be different from any + seeds used for the global or thread-specific RNGs set in + the kernel. + +@todo Better handling of private random number generator, see #143. + Most important: If RNG is changed in prototype by SetDefaults, + then this is Sends: SpikeEvent References: - [1] Alexandre Kuhn, Ad Aertsen, Stefan Rotter - Higher-Order Statistics of Input Ensembles and the Response of Simple - Model Neurons - Neural Computation 15, 67-101 (2003) + +[1] Alexandre Kuhn, Ad Aertsen, Stefan Rotter + Higher-Order Statistics of Input Ensembles and the Response of Simple + Model Neurons + Neural Computation 15, 67-101 (2003) Author: May 2006, Helias diff --git a/models/multimeter.h b/models/multimeter.h index 1cd2d6b911..4d0a013c42 100644 --- a/models/multimeter.h +++ b/models/multimeter.h @@ -47,6 +47,7 @@ Name: multimeter - Device to record analog data from neurons. Synopsis: multimeter Create Description: + A multimeter records a user-defined set of state variables from connected nodes to memory, file or stdout. @@ -79,29 +80,32 @@ mode before simulating. Accumulator data is never written to file. You must extract it from the device using GetStatus. Remarks: - - The set of variables to record and the recording interval must be set - BEFORE the multimeter is connected to any node, and cannot be changed - afterwards. - - A multimeter cannot be frozen. - - If you record with multimeter in accumulator mode and some of the nodes - you record from are frozen and others are not, data will only be collected - from the unfrozen nodes. Most likely, this will lead to confusing results, - so you should not use multimeter with frozen nodes. - - @note If you want to pick up values at every time stamp, - you must set the interval to the simulation resolution. - @ingroup Devices - @see UniversalDataLogger + +- The set of variables to record and the recording interval must be set + BEFORE the multimeter is connected to any node, and cannot be changed + afterwards. +- A multimeter cannot be frozen. +- If you record with multimeter in accumulator mode and some of the nodes + you record from are frozen and others are not, data will only be collected + from the unfrozen nodes. Most likely, this will lead to confusing results, + so you should not use multimeter with frozen nodes. + +@note If you want to pick up values at every time stamp, + you must set the interval to the simulation resolution. +@ingroup Devices +@see UniversalDataLogger Parameters: - The following parameters can be set in the status dictionary: - interval double - Recording interval in ms - record_from array - Array containing the names of variables to record - from, obtained from the /recordables entry of the - model from which one wants to record + +The following parameters can be set in the status dictionary: +interval double - Recording interval in ms +record_from array - Array containing the names of variables to record + from, obtained from the /recordables entry of the + model from which one wants to record Examples: + SLI ] /iaf_cond_alpha Create /n Set SLI ] n /recordables get == [/V_m /g_ex /g_in /t_ref_remaining] diff --git a/models/music_cont_in_proxy.h b/models/music_cont_in_proxy.h index d38fab6f1e..f0553798ab 100644 --- a/models/music_cont_in_proxy.h +++ b/models/music_cont_in_proxy.h @@ -52,6 +52,7 @@ namespace nest Name: music_cont_in_proxy - A device which receives continuous data from MUSIC. Description: + A music_cont_in_proxy can be used to receive continuous data from remote MUSIC applications in NEST. @@ -61,6 +62,7 @@ connect and send data. The music_cont_in_proxy can queried using GetStatus to retrieve the messages. Parameters: + The following properties are available in the status dictionary: port_name - The name of the MUSIC input port to listen to (default: @@ -73,6 +75,7 @@ published - A bool indicating if the port has been already published The parameter port_name can be set using SetStatus. Examples: + /music_cont_in_proxy Create /mcip Set 10 Simulate mcip GetStatus /data get /gaze_directions Set diff --git a/models/music_cont_out_proxy.h b/models/music_cont_out_proxy.h index f42f830cc1..6cfc525b57 100644 --- a/models/music_cont_out_proxy.h +++ b/models/music_cont_out_proxy.h @@ -53,7 +53,9 @@ namespace nest Name: music_cont_out_proxy - A device which sends continuous data from NEST to MUSIC. -Description: A music_cont_out_proxy can be used to send continuous data from +Description: + +A music_cont_out_proxy can be used to send continuous data from neurons over MUSIC to remote applications. It works in a similar fashion like the multimeter model. The user has to specify the recordable values to observe (e.g. ["V_m"]) via the record_from parameter. The target neurons are specified @@ -72,18 +74,19 @@ For example: target_gids = [ 2, 5, 4 ], record_from = ["V_m"] and we want to get "V_m" for neuron with GID 5: buffer[ 1*1 + 0 ] Parameters: - The following properties are available in the status dictionary: - - interval double - Recording interval in milliseconds - targets array - Global id list of neurons to be observed - port_name string - The name of the MUSIC output port to send to - (default: cont_out) - port_width integer - The width of the MUSIC input port - published bool - A bool indicating if the port has been already - published with MUSIC. Read only property. - record_from array - Array containing the names of variables to record - from, obtained from the /recordables entry of the - model from which one wants to record + +The following properties are available in the status dictionary: + +interval double - Recording interval in milliseconds +targets array - Global id list of neurons to be observed +port_name string - The name of the MUSIC output port to send to + (default: cont_out) +port_width integer - The width of the MUSIC input port +published bool - A bool indicating if the port has been already + published with MUSIC. Read only property. +record_from array - Array containing the names of variables to record + from, obtained from the /recordables entry of the + model from which one wants to record Author: Martin Asghar Schulze, Forschungszentrum fur Informatik Karlsruhe (FZI) diff --git a/models/music_event_in_proxy.h b/models/music_event_in_proxy.h index dbdbca98f2..8e65b71196 100644 --- a/models/music_event_in_proxy.h +++ b/models/music_event_in_proxy.h @@ -41,10 +41,10 @@ namespace nest { /** @BeginDocumentation - Name: music_event_in_proxy - A device which receives spikes from MUSIC. Description: + A music_event_in_proxy can be used to pass spikes to nodes within NEST which are received from another application. @@ -57,6 +57,7 @@ on the same port, but each channel can only listened to by a single proxy. Parameters: + The following properties are available in the status dictionary: port_name - The name of the MUSIC input port to listen to (default: @@ -70,6 +71,7 @@ The acceptable latency of the MUSIC input port can be set using the command SetAcceptableLatency. Examples: + /music_event_in_proxy Create /meip Set meip << /music_channel 2 >> SetStatus /iaf_psc_alpha Create /n Set diff --git a/models/music_event_out_proxy.h b/models/music_event_out_proxy.h index 6811f4fb47..78b9cb4e31 100644 --- a/models/music_event_out_proxy.h +++ b/models/music_event_out_proxy.h @@ -48,6 +48,7 @@ Name: music_event_out_proxy - Device to forward spikes to remote applications using MUSIC. Description: + A music_event_out_proxy is used to send spikes to a remote application that also uses MUSIC. @@ -58,6 +59,7 @@ music_channel of the connection. The name of the port is set via SetStatus (see Parameters section below). Parameters: + The following properties are available in the status dictionary: port_name - The name of the MUSIC output_port to forward events to @@ -69,6 +71,7 @@ published - A bool indicating if the port has been already published The parameter port_name can be set using SetStatus. Examples: + /iaf_psc_alpha Create /n Set /music_event_out_proxy Create /meop Set n meop << /music_channel 2 >> Connect diff --git a/models/music_message_in_proxy.h b/models/music_message_in_proxy.h index 1cf033e484..b6bcb65bdf 100644 --- a/models/music_message_in_proxy.h +++ b/models/music_message_in_proxy.h @@ -53,6 +53,7 @@ Name: music_message_in_proxy - A device which receives message strings from MUSIC. Description: + A music_message_in_proxy can be used to receive message strings from remote MUSIC applications in NEST. @@ -62,6 +63,7 @@ which MUSIC can connect a message source. The music_message_in_proxy can queried using GetStatus to retrieve the messages. Parameters: + The following properties are available in the status dictionary: port_name - The name of the MUSIC input port to listen to (default: @@ -79,6 +81,7 @@ The parameter port_name can be set using SetStatus. The field n_messages can be set to 0 to clear the data arrays. Examples: + /music_message_in_proxy Create /mmip Set 10 Simulate mmip GetStatus /data get /messages get 0 get /command Set diff --git a/models/noise_generator.h b/models/noise_generator.h index 3404bc39bb..a6e9e6099f 100644 --- a/models/noise_generator.h +++ b/models/noise_generator.h @@ -45,6 +45,7 @@ Name: noise_generator - Device to generate Gaussian white noise current. Description: This device can be used to inject a Gaussian "white" noise current into a node. + The current is not really white, but a piecewise constant current with Gaussian distributed amplitude. The current changes at intervals of dt. dt must be a multiple of the simulation step size, the default is 1.0ms, @@ -70,6 +71,7 @@ the noise_generator.ipynb notebook included in the NEST source code Parameters: The following parameters can be set in the status dictionary: + mean double - mean value of the noise current in pA std double - standard deviation of noise current in pA dt double - interval between changes in current in ms, default 1.0ms @@ -78,29 +80,29 @@ phase double - Phase of sine modulation (0-360 deg) frequency double - Frequency of sine modulation in Hz Remarks: - - All targets receive different currents. - - The currents for all targets change at the same points in time. - - The interval between changes, dt, must be a multiple of the time step. - - The effect of this noise current on a neuron DEPENDS ON DT. Consider - the membrane potential fluctuations evoked when a noise current is - injected into a neuron. The standard deviation of these fluctuations - across an ensemble will increase with dt for a given value of std. - For the leaky integrate-and-fire neuron with time constant tau_m and - capacity C_m, membrane potential fluctuations Sigma at times t_j+delay are - given by - - Sigma = std * tau_m / C_m * sqrt( (1-x) / (1+x) ) where x = exp(-dt/tau_m) - - for large t_j. In the white noise limit, dt -> 0, one has - - Sigma -> std / C_m * sqrt(dt * tau / 2). - - To obtain comparable results for different values of dt, you must - adapt std. - - As the noise generator provides a different current for each of its targets, - the current recorded represents the instantaneous average of all the - currents computed. When there exists only a single target, this would be - equivalent to the actual current provided to that target. +- All targets receive different currents. +- The currents for all targets change at the same points in time. +- The interval between changes, dt, must be a multiple of the time step. +- The effect of this noise current on a neuron DEPENDS ON DT. Consider + the membrane potential fluctuations evoked when a noise current is + injected into a neuron. The standard deviation of these fluctuations + across an ensemble will increase with dt for a given value of std. + For the leaky integrate-and-fire neuron with time constant tau_m and + capacity C_m, membrane potential fluctuations Sigma at times t_j+delay are + given by + + Sigma = std * tau_m / C_m * sqrt( (1-x) / (1+x) ) where x = exp(-dt/tau_m) + + for large t_j. In the white noise limit, dt -> 0, one has + + Sigma -> std / C_m * sqrt(dt * tau / 2). + + To obtain comparable results for different values of dt, you must + adapt std. +- As the noise generator provides a different current for each of its targets, + the current recorded represents the instantaneous average of all the + currents computed. When there exists only a single target, this would be + equivalent to the actual current provided to that target. Sends: CurrentEvent From f990f14489d84b2527fcd32558d7fbdddf0f3d1f Mon Sep 17 00:00:00 2001 From: Jessica Mitchell Date: Thu, 25 Oct 2018 15:48:09 +0200 Subject: [PATCH 5/5] remove trailing whitespace --- models/correlomatrix_detector.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/correlomatrix_detector.h b/models/correlomatrix_detector.h index 37d73ad899..2905b1afb1 100644 --- a/models/correlomatrix_detector.h +++ b/models/correlomatrix_detector.h @@ -41,7 +41,7 @@ namespace nest Name: correlomatrix_detector - Device for measuring the covariance matrix from several inputs -Description: +Description: The correlomatrix_detector is a recording device. It is used to record spikes from several pools of spike inputs and calculates the