forked from nest/nestml
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathiaf_cond_beta.nestml
128 lines (105 loc) · 4.79 KB
/
iaf_cond_beta.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
"""
iaf_cond_beta - Simple conductance based leaky integrate-and-fire neuron model
##############################################################################
Description
+++++++++++
iaf_cond_beta 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 a beta function. The beta function
is normalised such that an event of weight 1.0 results in a peak current of
1 nS at :math:`t = \tau_{rise\_[ex|in]}`.
References
++++++++++
.. [1] Meffin H, Burkitt AN, Grayden DB (2004). An analytical
model for the large, fluctuating synaptic conductance state typical of
neocortical neurons in vivo. Journal of Computational Neuroscience,
16:159-175.
DOI: https://doi.org/10.1023/B:JCNS.0000014108.03012.81
.. [2] Bernander O, Douglas RJ, Martin KAC, Koch C (1991). Synaptic background
activity influences spatiotemporal integration in single pyramidal
cells. Proceedings of the National Academy of Science USA,
88(24):11569-11573.
DOI: https://doi.org/10.1073/pnas.88.24.11569
.. [3] Kuhn A, Rotter S (2004) Neuronal integration of synaptic input in
the fluctuation- driven regime. Journal of Neuroscience,
24(10):2345-2356
DOI: https://doi.org/10.1523/JNEUROSCI.3349-03.2004
.. [4] 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
.. [5] Roth A and van Rossum M (2010). Chapter 6: Modeling synapses.
in De Schutter, Computational Modeling Methods for Neuroscientists,
MIT Press.
See also
++++++++
iaf_cond_exp, iaf_cond_alpha
"""
neuron iaf_cond_beta:
state:
r integer # counts number of tick during the refractory period
end
initial_values:
V_m mV = E_L # membrane potential
# inputs from the inhibitory conductance
g_in real = 0
g_in$ real = g_I_const * (1 / tau_syn_rise_I - 1 / tau_syn_decay_I)
# inputs from the excitatory conductance
g_ex real = 0
g_ex$ real = g_E_const * (1 / tau_syn_rise_E - 1 / tau_syn_decay_E)
end
equations:
kernel g_in' = g_in$ - g_in / tau_syn_rise_I,
g_in$' = -g_in$ / tau_syn_decay_I
kernel g_ex' = g_ex$ - g_ex / tau_syn_rise_E,
g_ex$' = -g_ex$ / tau_syn_decay_E
inline I_syn_exc pA = (F_E + convolve(g_ex, spikeExc)) * (V_m - E_ex)
inline I_syn_inh pA = (F_I + convolve(g_in, spikeInh)) * (V_m - E_in)
inline I_leak pA = g_L * (V_m - E_L) # pA = nS * mV
V_m' = (-I_leak - I_syn_exc - I_syn_inh + I_e + I_stim ) / C_m
end
parameters:
E_L mV = -70. mV # Leak reversal potential (aka resting potential)
C_m pF = 250. pF # Capacitance of the membrane
t_ref ms = 2. ms # Refractory period
V_th mV = -55. mV # Threshold potential
V_reset mV = -60. mV # Reset potential
E_ex mV = 0 mV # Excitatory reversal potential
E_in mV = -85. mV # Inhibitory reversal potential
g_L nS = 16.6667 nS # Leak conductance
tau_syn_rise_I ms = .2 ms # Synaptic time constant excitatory synapse
tau_syn_decay_I ms = 2. ms # Synaptic time constant for inhibitory synapse
tau_syn_rise_E ms = .2 ms # Synaptic time constant excitatory synapse
tau_syn_decay_E ms = 2. ms # Synaptic time constant for inhibitory synapse
F_E nS = 0 nS # Constant external input conductance (excitatory).
F_I nS = 0 nS # Constant external input conductance (inhibitory).
# constant external input current
I_e pA = 0 pA
end
internals:
# time of peak conductance excursion after spike arrival at t = 0
t_peak_E real = tau_syn_decay_E * tau_syn_rise_E * ln(tau_syn_decay_E / tau_syn_rise_E) / (tau_syn_decay_E - tau_syn_rise_E)
t_peak_I real = tau_syn_decay_I * tau_syn_rise_I * ln(tau_syn_decay_I / tau_syn_rise_I) / (tau_syn_decay_I - tau_syn_rise_I)
# normalisation constants to ensure arriving spike yields peak conductance of 1 nS
g_E_const real = 1 / (exp(-t_peak_E / tau_syn_decay_E) - exp(-t_peak_E / tau_syn_rise_E))
g_I_const real = 1 / (exp(-t_peak_I / tau_syn_decay_I) - exp(-t_peak_I / tau_syn_rise_I))
RefractoryCounts integer = steps(t_ref) # refractory time in steps
end
input:
spikeInh nS <- inhibitory spike
spikeExc nS <- excitatory spike
I_stim pA <- current
end
output: spike
update:
integrate_odes()
if r != 0: # not refractory
r = r - 1
V_m = V_reset # clamp potential
elif V_m >= V_th:
r = RefractoryCounts
V_m = V_reset # clamp potential
emit_spike()
end
end
end