NEST main@caf0ae8
 
Loading...
Searching...
No Matches
eprop_readout_bsshslm_2020.h
Go to the documentation of this file.
1/*
2 * eprop_readout_bsshslm_2020.h
3 *
4 * This file is part of NEST.
5 *
6 * Copyright (C) 2004 The NEST Initiative
7 *
8 * NEST is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * NEST is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with NEST. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23#ifndef EPROP_READOUT_BSSHSLM_2020_H
24#define EPROP_READOUT_BSSHSLM_2020_H
25
26// nestkernel
27#include "connection.h"
30#include "event.h"
31#include "nest_types.h"
32#include "ring_buffer.h"
34
35namespace nest
36{
37
38/* BeginUserDocs: neuron, e-prop plasticity, current-based, Bellec
39
40Short description
41+++++++++++++++++
42
43Current-based leaky integrate readout neuron model with delta-shaped or exponentially filtered
44postsynaptic currents for e-prop plasticity
45
46Description
47+++++++++++
48
49``eprop_readout_bsshslm_2020`` is an implementation of an integrate-and-fire neuron model
50with delta-shaped postsynaptic currents used as readout neuron for eligibility propagation (e-prop) plasticity.
51
52E-prop plasticity was originally introduced and implemented in TensorFlow in :footcite:p:`Bellec2020`.
53
54The suffix ``_bsshslm_2020`` follows the NEST convention to indicate in the
55model name the paper that introduced it by the first letter of the authors' last
56names and the publication year.
57
58The membrane voltage time course :math:`v_j^t` of the neuron :math:`j` is given by:
59
60.. math::
61 v_j^t &= \kappa v_j^{t-1} + \zeta \sum_{i \neq j} W_{ji}^\text{out} z_i^{t-1} \,, \\
62 \kappa &= e^{ -\frac{ \Delta t }{ \tau_\text{m} } } \,, \\
63 \zeta &=
64 \begin{cases}
65 1 \\
66 1 - \kappa
67 \end{cases} \,, \\
68
69where :math:`W_{ji}^\text{out}` is the output synaptic weight matrix and
70:math:`z_i^{t-1}` is the recurrent presynaptic spike state variable.
71
72Descriptions of further parameters and variables can be found in the table below.
73
74The spike state variable of a presynaptic neuron is expressed by a Heaviside function:
75
76.. math::
77 z_i^t = H \left( v_i^t - v_\text{th} \right) \,. \\
78
79An additional state variable and the corresponding differential equation
80represents a piecewise constant external current.
81
82See the documentation on the :doc:`iaf_psc_delta<../models/iaf_psc_delta/>` neuron model
83for more information on the integration of the subthreshold dynamics.
84
85The change of the synaptic weight is calculated from the gradient :math:`g` of
86the loss :math:`E` with respect to the synaptic weight :math:`W_{ji}`:
87:math:`\frac{ \text{d}E }{ \text{d} W_{ij} }`
88which depends on the presynaptic
89spikes :math:`z_i^{t-1}` and the learning signal :math:`L_j^t` emitted by the readout
90neurons.
91
92.. math::
93 \frac{ \text{d} E }{ \text{d} W_{ji} } = \sum_t L_j^t \bar{z}_i^{t-1} \,. \\
94
95The presynaptic spike trains are low-pass filtered with the following exponential kernel:
96
97.. math::
98 \bar{z}_i^t &=\mathcal{F}_\kappa(z_i^t) \,, \\
99 \mathcal{F}_\kappa(z_i^t) &= \kappa \mathcal{F}_\kappa \left( z_i^{t-1} \right) + z_i^t \,, \\
100 \mathcal{F}_\kappa(z_i^0) &= z_i^0 \,. \\
101
102Since readout neurons are leaky integrators without a spiking mechanism, the
103formula for computing the gradient lacks the surrogate gradient /
104pseudo-derivative and a firing regularization term.
105
106The learning signal :math:`L_j^t` is given by the non-plastic feedback weight
107matrix :math:`B_{jk}` and the continuous error signal :math:`e_k^t` emitted by
108readout neuron :math:`k`:
109
110.. math::
111 L_j^t = B_{jk} e_k^t \,. \\
112
113The error signal depends on the selected loss function.
114If a mean squared error loss is selected, then:
115
116.. math::
117 e_k^t = y_k^t - y_k^{*,t} \,, \\
118
119where the readout signal :math:`y_k^t` corresponds to the membrane voltage of
120readout neuron :math:`k` and :math:`y_k^{*,t}` is the real-valued target signal.
121
122If a cross-entropy loss is selected, then:
123
124.. math::
125 e^k_t &= \pi_k^t - \pi_k^{*,t} \,, \\
126 \pi_k^t &= \text{softmax}_k \left( y_1^t, ..., y_K^t \right) =
127 \frac{ \exp \left( y_k^t\right) }{ \sum_{k'} \exp \left( y_{k'}^t \right) } \,, \\
128
129where the readout signal :math:`\pi_k^t` corresponds to the softmax of the
130membrane voltage of readout neuron :math:`k` and :math:`\pi_k^{*,t}` is the
131one-hot encoded target signal.
132
133Furthermore, the readout and target signal are zero before the onset of the
134learning window in each update interval.
135
136For more information on e-prop plasticity, see the documentation on the other e-prop models:
137
138 * :doc:`eprop_iaf_bsshslm_2020<../models/eprop_iaf_bsshslm_2020/>`
139 * :doc:`eprop_iaf_adapt_bsshslm_2020<../models/eprop_iaf_adapt_bsshslm_2020/>`
140 * :doc:`eprop_synapse_bsshslm_2020<../models/eprop_synapse_bsshslm_2020/>`
141 * :doc:`eprop_learning_signal_connection_bsshslm_2020<../models/eprop_learning_signal_connection_bsshslm_2020/>`
142
143Details on the event-based NEST implementation of e-prop can be found in :footcite:p:`KorcsakGorzo2025`.
144
145Parameters
146++++++++++
147
148The following parameters can be set in the status dictionary.
149
150========================= ======= ===================== ================== =====================================
151**Neuron parameters**
152----------------------------------------------------------------------------------------------------------------
153Parameter Unit Math equivalent Default Description
154========================= ======= ===================== ================== =====================================
155``C_m`` pF :math:`C_\text{m}` 250.0 Capacitance of the membrane
156``E_L`` mV :math:`E_\text{L}` 0.0 Leak / resting membrane potential
157``I_e`` pA :math:`I_\text{e}` 0.0 Constant external input current
158``regular_spike_arrival`` Boolean ``True`` If ``True``, the input spikes arrive
159 at the end of the time step, if
160 ``False`` at the beginning
161 (determines PSC scale)
162``tau_m`` ms :math:`\tau_\text{m}` 10.0 Time constant of the membrane
163``V_min`` mV :math:`v_\text{min}` negative maximum Absolute lower bound of the membrane
164 value voltage
165 representable by
166 ``double`` type in
167 C++
168========================= ======= ===================== ================== =====================================
169
170========== ======= ===================== ==================== =========================================
171**E-prop parameters**
172-------------------------------------------------------------------------------------------------------
173Parameter Unit Math equivalent Default Description
174========== ======= ===================== ==================== =========================================
175``loss`` :math:`E` "mean_squared_error" Loss function
176 ["mean_squared_error", "cross_entropy"]
177========== ======= ===================== ==================== =========================================
178
179Recordables
180+++++++++++
181
182The following state variables evolve during simulation and can be recorded.
183
184=============== ==== =============== ============= ================
185**Neuron state variables and recordables**
186-------------------------------------------------------------------
187State variable Unit Math equivalent Initial value Description
188=============== ==== =============== ============= ================
189``V_m`` mV :math:`v_j` 0.0 Membrane voltage
190=============== ==== =============== ============= ================
191
192========================= ==== =============== ============= ===============================
193**E-prop state variables and recordables**
194--------------------------------------------------------------------------------------------
195State variable Unit Math equivalent Initial value Description
196========================= ==== =============== ============= ===============================
197``error_signal`` mV :math:`L_j` 0.0 Error signal
198``readout_signal`` mV :math:`y_j` 0.0 Readout signal
199``readout_signal_unnorm`` mV 0.0 Unnormalized readout signal
200``target_signal`` mV :math:`y^*_j` 0.0 Target signal
201========================= ==== =============== ============= ===============================
202
203Usage
204+++++
205
206This model can only be used in combination with the other e-prop models
207and the network architecture requires specific wiring, input, and output.
208The usage is demonstrated in several
209:doc:`supervised regression and classification tasks <../auto_examples/eprop_plasticity/index>`
210reproducing among others the original proof-of-concept tasks in :footcite:p:`Bellec2020`.
211
212References
213++++++++++
214
215.. footbibliography::
216
217Sends
218+++++
219
220LearningSignalConnectionEvent, DelayedRateConnectionEvent
221
222Receives
223++++++++
224
225SpikeEvent, CurrentEvent, DelayedRateConnectionEvent, DataLoggingRequest
226
227See also
228++++++++
229
230Examples using this model
231+++++++++++++++++++++++++
232
233.. listexamples:: eprop_readout_bsshslm_2020
234
235EndUserDocs */
236
237void register_eprop_readout_bsshslm_2020( const std::string& name );
238
246{
247
248public:
251
254
255 using Node::handle;
257
259
260 void
264
265 void
269
270 void handle( SpikeEvent& ) override;
271 void handle( CurrentEvent& ) override;
272 void handle( DelayedRateConnectionEvent& ) override;
273 void handle( DataLoggingRequest& ) override;
274
275 size_t handles_test_event( SpikeEvent&, size_t ) override;
276 size_t handles_test_event( CurrentEvent&, size_t ) override;
277 size_t handles_test_event( DelayedRateConnectionEvent&, size_t ) override;
278 size_t handles_test_event( DataLoggingRequest&, size_t ) override;
279
280 void get_status( Dictionary& ) const override;
281 void set_status( const Dictionary& ) override;
282
283private:
284 void init_buffers_() override;
285 void pre_run_hook() override;
286
287 void update( Time const&, const long, const long ) override;
288
289 double compute_gradient( std::vector< long >& presyn_isis,
290 const long t_previous_update,
291 const long t_previous_trigger_spike,
292 const double kappa,
293 const bool average_gradient ) override;
294
295 long get_shift() const override;
296 bool is_eprop_recurrent_node() const override;
297
300
303
306
309
311 friend class UniversalDataLogger< eprop_readout_bsshslm_2020 >;
312
315 {
317 double C_m_;
318
320 double E_L_;
321
323 double I_e_;
324
326 std::string loss_;
327
330
332 double tau_m_;
333
335 double V_min_;
336
338 Parameters_();
339
341 void get( Dictionary& ) const;
342
344 double set( const Dictionary&, Node* );
345 };
346
348 struct State_
349 {
352
355
358
361
363 double i_in_;
364
366 double v_m_;
367
369 double z_in_;
370
372 State_();
373
375 void get( Dictionary&, const Parameters_& ) const;
376
378 void set( const Dictionary&, const Parameters_&, double, Node* );
379 };
380
402
405 {
407 double P_v_m_;
408
411 double P_z_in_;
412
414 double P_i_in_;
415
418 };
419
422 static const size_t MIN_RATE_RECEPTOR = 1;
423
431
433 double
434 get_v_m_() const
435 {
436 return S_.v_m_ + P_.E_L_;
437 }
438
440 double
442 {
443 return S_.readout_signal_;
444 }
445
447 double
449 {
451 }
452
454 double
456 {
457 return S_.target_signal_;
458 }
459
461 double
463 {
464 return S_.error_signal_;
465 }
466
467 // the order in which the structure instances are defined is important for speed
468
471
474
477
480
483};
484
485inline long
490
491inline bool
493{
494 return false;
495}
496
497inline size_t
499{
500 if ( receptor_type != 0 )
501 {
502 throw UnknownReceptorType( receptor_type, get_name() );
503 }
504
505 return 0;
506}
507
508inline size_t
510{
511 if ( receptor_type != 0 )
512 {
513 throw UnknownReceptorType( receptor_type, get_name() );
514 }
515
516 return 0;
517}
518
519inline size_t
521{
522 size_t step_rate_model_id = kernel().model_manager.get_node_model_id( "step_rate_generator" );
523 size_t model_id = e.get_sender().get_model_id();
524
525 if ( step_rate_model_id == model_id and receptor_type != TARGET_SIG )
526 {
527 throw IllegalConnection(
528 "eprop_readout_bsshslm_2020 neurons expect a connection with a step_rate_generator node through receptor_type "
529 "2." );
530 }
531
532 if ( receptor_type < MIN_RATE_RECEPTOR or receptor_type >= SUP_RATE_RECEPTOR )
533 {
534 throw UnknownReceptorType( receptor_type, get_name() );
535 }
536
537 return receptor_type;
538}
539
540inline size_t
542{
543 if ( receptor_type != 0 )
544 {
545 throw UnknownReceptorType( receptor_type, get_name() );
546 }
547
548 return B_.logger_.connect_logging_device( dlr, recordablesMap_ );
549}
550
551inline void
553{
555 P_.get( d );
556 S_.get( d, P_ );
557 d[ names::recordables ] = recordablesMap_.get_list();
558
559 Dictionary receptor_dict_;
560 receptor_dict_[ names::readout_signal ] = static_cast< long >( READOUT_SIG );
561 receptor_dict_[ names::target_signal ] = static_cast< long >( TARGET_SIG );
562
563 d[ names::receptor_types ] = receptor_dict_;
564}
565
566inline void
568{
570 // temporary copies in case of errors
571 Parameters_ ptmp = P_;
572 State_ stmp = S_;
573
574 // make sure that ptmp and stmp consistent - throw BadProperty if not
575 const double delta_EL = ptmp.set( d, this );
576 stmp.set( d, ptmp, delta_EL, this );
577
578 P_ = ptmp;
579 S_ = stmp;
580}
581
582} // namespace nest
583
584#endif // EPROP_READOUT_BSSHSLM_2020_H
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Event for electrical currents.
Definition event.h:569
Request data to be logged/logged data to be sent.
Definition event.h:636
Event for rate model connections with delay.
Definition secondary_event.h:331
Class implementing an intermediate archiving node model for readout node models supporting e-prop pla...
Definition eprop_archiving_node_readout.h:43
void get_status(Dictionary &d) const override
Export properties of the node by setting entries in the status dictionary.
Definition eprop_archiving_node_readout.h:87
void set_status(const Dictionary &d) override
Change properties of the node according to the entries in the dictionary.
Definition eprop_archiving_node_readout.h:97
const long delay_rec_out_
Transmission delay from recurrent to output neurons.
Definition eprop_archiving_node.h:174
const long delay_in_rec_
Transmission delay from input to recurrent neurons.
Definition eprop_archiving_node.h:171
const long offset_gen_
Offset since generator signals start from time step 1.
Definition eprop_archiving_node.h:168
To be thrown if a connection is not possible.
Definition exceptions.h:490
Event for learning signal connections.
Definition secondary_event.h:384
size_t get_node_model_id(const std::string) const
Definition model_manager.cpp:310
Base class for all NEST network objects.
Definition node.h:99
std::string get_name() const
Return class name.
Definition node.cpp:105
Map names of recordables to data access functions.
Definition recordables_map.h:61
Buffer Layout.
Definition ring_buffer.h:83
Event for spike information.
Definition event.h:418
Definition nest_time.h:135
Exception to be thrown if the specified receptor type does not exist in the node.
Definition exceptions.h:417
Class implementing a readout neuron model for e-prop plasticity.
Definition eprop_readout_bsshslm_2020.h:246
eprop_readout_bsshslm_2020()
Default constructor.
Definition eprop_readout_bsshslm_2020.cpp:172
double get_readout_signal_() const
Get the current value of the normalized readout signal.
Definition eprop_readout_bsshslm_2020.h:441
Variables_ V_
Structure of internal variables.
Definition eprop_readout_bsshslm_2020.h:476
void compute_error_signal_mean_squared_error()
Compute the error signal based on the mean-squared error loss.
Definition eprop_readout_bsshslm_2020.cpp:310
size_t handles_test_event(SpikeEvent &, size_t) override
Check if the node can handle a particular event and receptor type.
Definition eprop_readout_bsshslm_2020.h:498
double get_readout_signal_unnorm_() const
Get the current value of the unnormalized readout signal.
Definition eprop_readout_bsshslm_2020.h:448
bool is_eprop_recurrent_node() const override
Checks if the node is part of the recurrent network and thus not a readout neuron.
Definition eprop_readout_bsshslm_2020.h:492
void compute_error_signal_cross_entropy()
Compute the error signal based on the cross-entropy loss.
Definition eprop_readout_bsshslm_2020.cpp:318
RateSynapseTypes
Enumeration of spike receptor types.
Definition eprop_readout_bsshslm_2020.h:426
@ SUP_RATE_RECEPTOR
Definition eprop_readout_bsshslm_2020.h:429
@ READOUT_SIG
Definition eprop_readout_bsshslm_2020.h:427
@ TARGET_SIG
Definition eprop_readout_bsshslm_2020.h:428
void sends_secondary_event(DelayedRateConnectionEvent &) override
Required to check, if source neuron may send a SecondaryEvent.
Definition eprop_readout_bsshslm_2020.h:266
void(eprop_readout_bsshslm_2020::* compute_error_signal)()
Compute the error signal based on a loss function.
Definition eprop_readout_bsshslm_2020.h:305
void handle(SpikeEvent &) override
Handle incoming spike events.
Definition eprop_readout_bsshslm_2020.cpp:353
void sends_secondary_event(LearningSignalConnectionEvent &) override
Required to check if source node may send a LearningSignalConnectionEvent.
Definition eprop_readout_bsshslm_2020.h:261
static RecordablesMap< eprop_readout_bsshslm_2020 > recordablesMap_
Map storing a static set of recordables.
Definition eprop_readout_bsshslm_2020.h:482
double compute_gradient(std::vector< long > &presyn_isis, const long t_previous_update, const long t_previous_trigger_spike, const double kappa, const bool average_gradient) override
Compute gradient change for eprop synapses.
Definition eprop_readout_bsshslm_2020.cpp:377
Parameters_ P_
Structure of parameters.
Definition eprop_readout_bsshslm_2020.h:470
double get_target_signal_() const
Get the current value of the target signal.
Definition eprop_readout_bsshslm_2020.h:455
void pre_run_hook() override
Re-calculate dependent parameters of the node.
Definition eprop_readout_bsshslm_2020.cpp:203
State_ S_
Structure of state variables.
Definition eprop_readout_bsshslm_2020.h:473
long get_shift() const override
Retrieves the temporal shift of the signal.
Definition eprop_readout_bsshslm_2020.h:486
void init_buffers_() override
Configure persistent internal data structures.
Definition eprop_readout_bsshslm_2020.cpp:194
friend class UniversalDataLogger< eprop_readout_bsshslm_2020 >
Logger for universal data supporting the data logging request / reply mechanism. Populated with a rec...
Definition eprop_readout_bsshslm_2020.h:311
static const size_t MIN_RATE_RECEPTOR
Minimal spike receptor type.
Definition eprop_readout_bsshslm_2020.h:422
void set_status(const Dictionary &) override
Change properties of the node according to the entries in the dictionary.
Definition eprop_readout_bsshslm_2020.h:567
void get_status(Dictionary &) const override
Export properties of the node by setting entries in the status dictionary.
Definition eprop_readout_bsshslm_2020.h:552
double get_error_signal_() const
Get the current value of the error signal.
Definition eprop_readout_bsshslm_2020.h:462
void update(Time const &, const long, const long) override
Advance the state of the node in time through the given interval.
Definition eprop_readout_bsshslm_2020.cpp:230
double get_v_m_() const
Get the current value of the membrane voltage.
Definition eprop_readout_bsshslm_2020.h:434
Buffers_ B_
Structure of buffers.
Definition eprop_readout_bsshslm_2020.h:479
ModelManager model_manager
Definition kernel_manager.h:243
virtual size_t handles_test_event(SpikeEvent &, size_t receptor_type)
Check if the node can handle a particular event and receptor type.
Definition node.cpp:271
virtual void sends_secondary_event(GapJunctionEvent &ge)
Required to check, if source neuron may send a SecondaryEvent.
Definition node.cpp:381
virtual void handle(SpikeEvent &e)
Handle incoming spike events.
Definition node.cpp:265
const std::string recordables("recordables")
const std::string receptor_types("receptor_types")
const std::string readout_signal("readout_signal")
const std::string target_signal("target_signal")
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
void register_eprop_readout_bsshslm_2020(const std::string &name)
Definition eprop_readout_bsshslm_2020.cpp:43
KernelManager & kernel()
Definition kernel_manager.h:311
Structure of buffers.
Definition eprop_readout_bsshslm_2020.h:383
double normalization_rate_
Normalization rate of the readout signal. Sum of the readout signals of all readout neurons.
Definition eprop_readout_bsshslm_2020.h:391
UniversalDataLogger< eprop_readout_bsshslm_2020 > logger_
Logger for universal data.
Definition eprop_readout_bsshslm_2020.h:400
RingBuffer currents_
Buffer for incoming currents.
Definition eprop_readout_bsshslm_2020.h:397
RingBuffer spikes_
Buffer for incoming spikes.
Definition eprop_readout_bsshslm_2020.h:394
Structure of parameters.
Definition eprop_readout_bsshslm_2020.h:315
double I_e_
Constant external input current (pA).
Definition eprop_readout_bsshslm_2020.h:323
void get(Dictionary &) const
Get the parameters and their values.
Definition eprop_readout_bsshslm_2020.cpp:107
bool regular_spike_arrival_
If True, the input spikes arrive at the beginning of the time step, if False at the end (determines P...
Definition eprop_readout_bsshslm_2020.h:329
Parameters_()
Default constructor.
Definition eprop_readout_bsshslm_2020.cpp:70
std::string loss_
Loss function ["mean_squared_error", "cross_entropy"].
Definition eprop_readout_bsshslm_2020.h:326
double V_min_
Absolute lower bound of the membrane voltage relative to the leak membrane potential (mV).
Definition eprop_readout_bsshslm_2020.h:335
double tau_m_
Time constant of the membrane (ms).
Definition eprop_readout_bsshslm_2020.h:332
double E_L_
Leak / resting membrane potential (mV).
Definition eprop_readout_bsshslm_2020.h:320
double set(const Dictionary &, Node *)
Set the parameters and throw errors in case of invalid values.
Definition eprop_readout_bsshslm_2020.cpp:119
double C_m_
Capacitance of the membrane (pF).
Definition eprop_readout_bsshslm_2020.h:317
Structure of state variables.
Definition eprop_readout_bsshslm_2020.h:349
State_()
Default constructor.
Definition eprop_readout_bsshslm_2020.cpp:81
double error_signal_
Error signal. Deviation between the readout and the target signal.
Definition eprop_readout_bsshslm_2020.h:351
double v_m_
Membrane voltage relative to the leak membrane potential (mV).
Definition eprop_readout_bsshslm_2020.h:366
void get(Dictionary &, const Parameters_ &) const
Get the state variables and their values.
Definition eprop_readout_bsshslm_2020.cpp:153
double target_signal_
Target / teacher signal that the network is supposed to learn.
Definition eprop_readout_bsshslm_2020.h:360
double readout_signal_unnorm_
Unnormalized readout signal. Readout signal not yet divided by the readout signals of other readout n...
Definition eprop_readout_bsshslm_2020.h:357
double z_in_
Binary input spike state variable - 1.0 if the neuron has spiked in the previous time step and 0....
Definition eprop_readout_bsshslm_2020.h:369
double i_in_
Input current (pA).
Definition eprop_readout_bsshslm_2020.h:363
void set(const Dictionary &, const Parameters_ &, double, Node *)
Set the state variables.
Definition eprop_readout_bsshslm_2020.cpp:163
double readout_signal_
Readout signal. Leaky integrated spikes emitted by the recurrent network.
Definition eprop_readout_bsshslm_2020.h:354
Structure of internal variables.
Definition eprop_readout_bsshslm_2020.h:405
bool signal_to_other_readouts_
If the loss requires communication between the readout neurons and thus a buffer for the exchanged si...
Definition eprop_readout_bsshslm_2020.h:417
double P_i_in_
Propagator matrix entry for evolving the incoming currents.
Definition eprop_readout_bsshslm_2020.h:414
double P_v_m_
Propagator matrix entry for evolving the membrane voltage (mathematical symbol "kappa" in user docume...
Definition eprop_readout_bsshslm_2020.h:407
double P_z_in_
Propagator matrix entry for evolving the incoming spike state variables (mathematical symbol "zeta" i...
Definition eprop_readout_bsshslm_2020.h:411