/
iaf_cond_exp_sfa_rr_neuron.nestml
109 lines (87 loc) · 4.57 KB
/
iaf_cond_exp_sfa_rr_neuron.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
"""
iaf_cond_exp_sfa_rr - Conductance based leaky integrate-and-fire model with spike-frequency adaptation and relative refractory mechanisms
#########################################################################################################################################
Description
+++++++++++
iaf_cond_exp_sfa_rr is an implementation of a spiking neuron using integrate-and-fire dynamics with conductance-based
synapses, with additional spike-frequency adaptation and relative refractory mechanisms as described in [2]_, page 166.
Incoming spike events induce a post-synaptic change of conductance modelled by an exponential function. The exponential
function is normalised such that an event of weight 1.0 results in a peak current of 1 nS.
Outgoing spike events induce a change of the adaptation and relative refractory conductances by q_sfa and q_rr,
respectively. Otherwise these conductances decay exponentially with time constants tau_sfa and tau_rr, respectively.
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] Dayan P, Abbott LF (2001). Theoretical neuroscience: Computational and
mathematical modeling of neural systems. Cambridge, MA: MIT Press.
https://pure.mpg.de/pubman/faces/ViewItemOverviewPage.jsp?itemId=item_3006127
See also
++++++++
aeif_cond_alpha, aeif_cond_exp, iaf_chxk_2008
"""
model iaf_cond_exp_sfa_rr_neuron:
state:
V_m mV = E_L # membrane potential
refr_t ms = 0 ms # Refractory period timer
is_refractory boolean = false
g_sfa nS = 0 nS # inputs from the sfa conductance
g_rr nS = 0 nS # inputs from the rr conductance
equations:
kernel g_inh = exp(-t/tau_syn_inh) # inputs from the inh conductance
kernel g_exc = exp(-t/tau_syn_exc) # inputs from the exc conductance
g_sfa' = -g_sfa / tau_sfa
g_rr' = -g_rr / tau_rr
inline I_syn_exc pA = convolve(g_exc, exc_spikes) * nS * ( V_m - E_exc )
inline I_syn_inh pA = convolve(g_inh, inh_spikes) * nS * ( V_m - E_inh )
inline I_L pA = g_L * ( V_m - E_L )
inline I_sfa pA = g_sfa * ( V_m - E_sfa )
inline I_rr pA = g_rr * ( V_m - E_rr )
V_m' = ( -I_L + I_e + I_stim - I_syn_exc - I_syn_inh - I_sfa - I_rr ) / C_m
parameters:
V_th mV = -57.0 mV # Threshold potential
V_reset mV = -70.0 mV # Reset potential
refr_T ms = .5 ms # Duration of refractory period
g_L nS = 28.95 nS # Leak conductance
C_m pF = 289.5 pF # Membrane capacitance
E_exc mV = 0 mV # Excitatory reversal potential
E_inh mV = -75.0 mV # Inhibitory reversal potential
E_L mV = -70.0 mV # Leak reversal potential (aka resting potential)
tau_syn_exc ms = 1.5 ms # Synaptic time constant of excitatory synapse
tau_syn_inh ms = 10.0 ms # Synaptic time constant of inhibitory synapse
q_sfa nS = 14.48 nS # Outgoing spike activated quantal spike-frequency adaptation conductance increase
q_rr nS = 3214.0 nS # Outgoing spike activated quantal relative refractory conductance increase
tau_sfa ms = 110.0 ms # Time constant of spike-frequency adaptation
tau_rr ms = 1.97 ms # Time constant of the relative refractory mechanism
E_sfa mV = -70.0 mV # spike-frequency adaptation conductance reversal potential
E_rr mV = -70.0 mV # relative refractory mechanism conductance reversal potential
# constant external input current
I_e pA = 0 pA
input:
inh_spikes <- inhibitory spike
exc_spikes <- excitatory spike
I_stim pA <- continuous
output:
spike
update:
if is_refractory:
# neuron is absolute refractory, do not evolve ODEs
refr_t -= resolution()
else:
# neuron not refractory, so evolve all ODEs
integrate_odes()
onCondition(not is_refractory and V_m >= V_th): # threshold crossing
# threshold crossing
refr_t = refr_T # start of the refractory period
is_refractory = true
V_m = V_reset
g_sfa += q_sfa
g_rr += q_rr
emit_spike()
onCondition(is_refractory and refr_t <= resolution() / 2):
# end of refractory period
refr_t = 0 ms
is_refractory = false