-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNoble62_K_channel_cellml.txt
70 lines (62 loc) · 2.11 KB
/
Noble62_K_channel_cellml.txt
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
def model potassium_ion_channel as
def import using "Noble62_units.cellml" for
unit mV using unit mV;
unit ms using unit ms;
unit mM using unit mM;
unit per_ms using unit per_ms;
unit per_mV using unit per_mV;
unit per_mV_ms using unit per_mV_ms;
unit mS using unit mS;
unit microA using unit microA;
enddef;
// def comp environment as
// var V: mV {pub: out};
// var t: ms {pub: out};
// V = sel
// case (t > 5{ms}) and (t < 15{ms}):
// -85.0{mV};
// otherwise:
// 0.0{mV};
// endsel;
// enddef;
def group as encapsulation for
comp potassium_channel incl
comp potassium_channel_n_gate;
endcomp;
enddef;
def comp potassium_channel as
var V: mV {pub: in, priv: out};
var t: ms {pub: in, priv: out};
var n: dimensionless {pub: out, priv: in};
var Ki: mM {pub: in};
var Ko: mM {pub: in};
var RTF: mV {init: 25};
var E_K: mV;
var g_K1: mS {pub: out};
var g_K2: mS {pub: out};
var i_K: microA {pub: out};
E_K = RTF*ln(Ko/Ki);
g_K1 = 1.2{mS}*exp(-(V+90{mV})/50{mV})+0.015{mS}*exp((V+90{mV})/60{mV});
g_K2 = 1.2{mS}*pow(n, 4{dimensionless});
i_K = (g_K1+g_K2)*(V-E_K);
enddef;
def comp potassium_channel_n_gate as
var V: mV {pub: in};
var t: ms {pub: in};
var n: dimensionless {init: 0.01, pub: out};
var alpha_n: per_ms;
var beta_n: per_ms;
alpha_n = -0.0001{per_mV_ms}*(V+50{mV})/(exp(-(V+50{mV})/10{mV})-1{dimensionless});
beta_n = 0.0020{per_pss}*exp(-(V+90{mV})/80{mV});
ode(n, t) = alpha_n*(1{dimensionless}-n)-beta_n*n;
enddef;
// def map between environment and potassium_channel for
// vars V and V;
// vars t and t;
// enddef;
def map between potassium_channel and potassium_channel_n_gate for
vars V and V;
vars t and t;
vars n and n;
enddef;
enddef;