forked from nest/nestml
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathiaf_psc_alpha.nestml
148 lines (115 loc) · 4.72 KB
/
iaf_psc_alpha.nestml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
"""
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 kernel 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 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.
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.
.. note::
If tau_m is very close to tau_syn_ex or tau_syn_in, numerical problems
may arise due to singularities in the propagator matrics. If this is
the case, replace equal-valued parameters by a single parameter.
For details, please see ``IAF_neurons_singularity.ipynb`` in
the NEST source code (``docs/model_details``).
Parameters
++++++++++
The following parameters can be set in the status dictionary.
=========== ====== ==========================================================
V_m mV Membrane potential
E_L mV Resting membrane potential
C_m pF Capacity of the membrane
tau_m ms Membrane time constant
t_ref ms Duration of refractory period
V_th mV Spike threshold
V_reset mV Reset potential of the membrane
tau_syn_ex ms Rise time of the excitatory synaptic alpha function
tau_syn_in ms Rise time of the inhibitory synaptic alpha function
I_e pA Constant input current
V_min mV Absolute lower value for the membrane potenial
=========== ====== ==========================================================
References
++++++++++
.. [1] Rotter S, Diesmann M (1999). Exact simulation of
time-invariant linear systems with applications to neuronal
modeling. Biologial Cybernetics 81:381-402.
DOI: https://doi.org/10.1007/s004220050570
.. [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.
DOI: https://doi.org/10.1016/S0925-2312(01)00409-X
.. [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
DOI: https://doi.org/10.1162/neco.2007.19.1.47
See also
++++++++
iaf_psc_delta, iaf_psc_exp, iaf_cond_alpha
Authors
+++++++
Diesmann, Gewaltig
"""
neuron iaf_psc_alpha:
state:
r integer # counts number of tick during the refractory period
end
initial_values:
V_abs mV = 0 mV
end
equations:
kernel I_kernel_in = (e / tau_syn_in) * t * exp(-t / tau_syn_in)
kernel I_kernel_ex = (e / tau_syn_ex) * t * exp(-t / tau_syn_ex)
recordable inline V_m mV = V_abs + E_L # Membrane potential.
inline I pA = convolve(I_kernel_in, in_spikes) + convolve(I_kernel_ex, ex_spikes) + I_e + I_stim
V_abs' = -V_abs/tau_m + I/C_m
end
parameters:
C_m pF = 250 pF # Capacitance of the membrane
tau_m ms = 10 ms # Membrane time constant
tau_syn_in ms = 2 ms # Time constant of synaptic current
tau_syn_ex ms = 2 ms # Time constant of synaptic current
t_ref ms = 2 ms # Duration of refractory period
E_L mV = -70 mV # Resting potential
V_reset mV = -70 mV - E_L # Reset potential of the membrane
V_th mV = -55 mV - E_L # Spike threshold
# constant external input current
I_e pA = 0 pA
end
internals:
RefractoryCounts integer = steps(t_ref) # refractory time in steps
end
input:
ex_spikes pA <- excitatory spike
in_spikes pA <- inhibitory spike
I_stim pA <- current
end
output: spike
update:
if r == 0: # neuron not refractory
integrate_odes()
else: # neuron is absolute refractory
r = r - 1
end
if V_abs >= V_th: # threshold crossing
# A supra-threshold membrane potential should never be observable.
# The reset at the time of threshold crossing enables accurate
# integration independent of the computation step size, see [2,3] for
# details.
r = RefractoryCounts
V_abs = V_reset
emit_spike()
end
end
end