-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathIntFire_PD.mod
86 lines (69 loc) · 1.29 KB
/
IntFire_PD.mod
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
NEURON {
: ARTIFICIAL_CELL means
ARTIFICIAL_CELL IntFire_PD
RANGE m, Iext, i
: m plays the role of voltage
}
PARAMETER {
:Membrane time constant
taum = 10 (ms)
:Absolute refractory period
tauref =2 (ms)
:Postsynaptic current time constant
tausyn = 0.5 (ms) :0.5
:Reset potential
Vreset = -65 (mV) : -49 (mV) :
:Fixed firing threshold
Vteta = -50 (mV)
:Membrane capacity
Cm = 250 (pF)
Iext = 0(pA)
}
: Specify units that have physiological interpretations (NB: ms is already declared)
UNITS {
(mV) = (millivolt)
(pF) = (picofarad)
(pA) = (picoamps)
}
ASSIGNED {
m(mV)
i(pA)
t0(ms)
refractory
}
FUNCTION M() {
}
FUNCTION I() {
}
INITIAL {
t0 = t
refractory = 0 : 0-integrates input, 1-refractory
}
NET_RECEIVE (w) {
if (refractory == 0) { : inputs integrated only when excitable
:6.5
i=i-(i/tausyn)*(t-t0)
i=i+w
m=m+(((Vreset-m)/taum)+((i+Iext)/Cm))*(t-t0)
:7.5
:i=i+w
:m=m+(((Vreset-m)/taum)+((i+Iext)/Cm))*(t-t0)
:i=i-(i/tausyn)*(t-t0)
:6.7
:m=m+(((Vreset-m)/taum)+((i+Iext)/Cm))*(t-t0)
:i=i+w
:i=i-(i/tausyn)*(t-t0)
t0 = t
if (m > Vteta) {
refractory = 1
:m = Vreset
m = Vreset+30
net_send(tauref, refractory)
net_event(t)
}
}else if (flag == 1) { : ready to integrate again
t0 = t
refractory = 0
m = Vreset
}
}