-
Notifications
You must be signed in to change notification settings - Fork 0
/
mAHP.mod
120 lines (95 loc) · 2.28 KB
/
mAHP.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
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
TITLE Motoneuron calcium-dependent potassium channel
COMMENT
Comments from Original Implementation:
Calcium-dependent potassium channel responsible for mAHP in motoneurons
Simplified calcium channel that provides Ca for the KCa conductance is included
Model Reference:
Powers, R.K. and Heckman, C.J., 2017.
"Synaptic control of the shape of the motoneuron
pool input-output function."
Journal of neurophysiology, 117(3), pp.1171-1184.
Original Code Link:
https://senselab.med.yale.edu/ModelDB/showmodel?model=239582
ENDCOMMENT
NEURON {
SUFFIX mAHP
USEION k READ ek WRITE ik
USEION ca READ eca WRITE ica
RANGE n, gkcamax,gcamax,ik,cai,ica,depth,taur,mvhalfca,mtauca
GLOBAL fKCa, bKCa, caix
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(S) = (siemens)
(um) = (micron)
(molar) = (1/liter) : moles do not appear in units
(mM) = (millimolar)
(msM) = (ms mM)
FARADAY = (faraday) (coulomb)
}
PARAMETER {
gkcamax = 0.03 (S/cm2)
gcamax = 3e-5 (S/cm2)
mvhalfca = -30 (mV)
mslpca = 4 (mV)
mtauca = 1 (ms)
caix = 2
cainf=0.0001 (mM)
depth = .1 (um) : depth of shell
taur = 20 (ms) : rate of calcium removal
fKCa = 0.1 : max act rate
bKCa = 0.1 : max deact rate
celsius (degC)
}
ASSIGNED {
ik (mA/cm2)
v (mV)
ica (mA/cm2)
ek (mV)
eca (mV)
ninf
ntau (ms)
minfca
drive_channel
}
STATE {
mca
n
cai (mM)
}
INITIAL {
cai=cainf
rates(cai)
mcarate(v)
n = ninf
mca=minfca
}
BREAKPOINT {
SOLVE states METHOD cnexp
ica = gcamax*mca*(v - eca)
ik = gkcamax *n* (v - ek)
}
DERIVATIVE states {
drive_channel = - (10000) * ica/ (2 * FARADAY * depth)
if (drive_channel <= 0.) { drive_channel = 0. } : cannot pump inward
cai' = drive_channel + (cainf-cai)/taur
rates(cai)
n' = (ninf-n)/ntau
mcarate(v)
mca' = (minfca-mca)/mtauca
}
PROCEDURE rates(cai(mM)) { LOCAL a,b
UNITSOFF
a = fKCa * (1e3*(cai -cainf))^caix : rate constant depends on cai in uM
b = bKCa
ntau = 1/(a+b)
ninf = a*ntau
UNITSON
}
PROCEDURE mcarate(v (mV)) {
TABLE minfca
DEPEND mvhalfca,mslpca
FROM -100 TO 100 WITH 200
minfca = 1/(1+exp(-(v-mvhalfca)/mslpca))
}