source: project/release/3/nemo/trunk/examples/AKP06/PotIhCa.scm @ 11944

Last change on this file since 11944 was 11944, checked in by Ivan Raikov, 12 years ago

Removed incomplete examples, started a general sexp->sxml
converter, added support for function call arity check.

File size: 8.1 KB
Line 
1;;  -*- Hen -*-
2
3
4(require-extension nemo-macros)
5(require-extension nemo-nmodl)
6(require-extension nemo-hh)
7
8(define PotIhCa
9  (nemo-model PotIhCa
10      ((input v  cai cao)
11
12       (const Vrest   = -68)
13       (const diam    = 20)
14       (const celsius = 24)
15
16       (const temp_adj = (pow 3 (/ (- celsius 22) 10)))
17
18       (defun ghk (v celsius ci co)
19         (let ((F 96485.0) (R 8.3145))
20           (let ((zeta (/ (* 2e-3 F v) (* R (+ 273.19 celsius)))))
21             (if (< (abs (- 1.0 (exp (neg zeta)))) 1e-6)
22                 (* 1e-6  (* 2 F) (- ci (* co (exp (neg zeta)))) (+ 1.0 (/ zeta 2)))
23                 (/ (* 1e-6 (* 2 zeta F) (- ci (* co (exp (neg zeta))))) (- 1.0 (exp (neg zeta))))))))
24
25
26       (component (type ion-channel) ;; Kv1 current
27
28         (component (type gate)
29                 
30            ;; rate functions
31            (const cma  = 0.12889)
32            (const cka  = -33.90877)
33            (const cva  = 45)
34
35            (defun Kv1_amf (v cma cva cka temp_adj) (* temp_adj cma (exp (neg (/ (+ v cva) cka)))))
36
37            (const cmb   = 0.12889)
38            (const ckb   = 12.42101)
39            (const cvb   = 45)
40            (defun Kv1_bmf (v cmb cvb ckb temp_adj) (* temp_adj cmb (exp (neg (/ (+ v cvb) ckb)))))
41
42            (hh-ionic-conductance 
43             (Kv1  ;; ion name: exported variables will be of the form {ion}_{id}
44              (initial-m (/ (Kv1_amf Vrest cma cva cka temp_adj)
45                            (+ (Kv1_amf Vrest cma cva cka temp_adj)
46                               (Kv1_bmf Vrest cmb cvb ckb temp_adj))))
47              (m-power   4)
48              (h-power   0)
49              (m-alpha   (Kv1_amf v cma cva cka temp_adj) )
50              (m-beta    (Kv1_bmf v cmb cvb ckb temp_adj) )))
51             
52            )
53
54         (component (type pore)
55            (const  gbar_Kv1  = 0.011)
56            (output gbar_Kv1 ))
57
58         (component (type permeating-substance) (name k)
59           (const e_Kv1 = -85)
60           (output e_Kv1 ))
61
62         ) ;; end Kv1 current
63
64
65       (component (type ion-channel) ;; Kv4 current
66
67         (component (type gate)
68                 
69            ;; rate functions
70
71            (const can   = 0.15743)
72            (const ckan  = -32.19976)
73            (const cvan  = 57)
74
75            (defun Kv4_amf (v can cvan ckan temp_adj)  (* temp_adj can (exp (neg (/ (+ v cvan) ckan)))))
76
77            (const  cbn   = 0.15743)
78            (const  ckbn  = 37.51346)
79            (const  cvbn  = 57)
80
81            (defun Kv4_bmf (v cbn cvbn ckbn temp_adj)  (* temp_adj cbn (exp (neg (/ (+ v cvbn) ckbn)))))
82
83            (const cah   = 0.01342)
84            (const ckah  = -7.86476)
85            (const cvah  = 60)
86
87            (defun Kv4_ahf (v cah cvah ckah temp_adj)  (* temp_adj (/ cah (+ 1.0 (exp (neg (/ (+ v cvah) ckah)))))))
88
89            (const  cbh   = 0.04477)
90            (const  ckbh  = 11.3615)
91            (const  cvbh  = 54)
92
93            (defun Kv4_bhf (v cbh cvbh ckbh temp_adj)  (* temp_adj (/ cbh (+ 1.0 (exp (neg (/ (+ v cvbh) ckbh)))))))
94
95
96            (hh-ionic-conductance 
97             (Kv4  ;; ion name: exported variables will be of the form {ion}_{id}
98              (initial-m (/ (Kv4_amf Vrest can cvan ckan temp_adj)
99                            (+ (Kv4_amf Vrest v can cvan ckan temp_adj)
100                               (Kv4_bmf Vrest cbn cvbn ckbn temp_adj))))
101              (initial-h (/ (Kv4_ahf Vrest cah cvh ckah temp_adj) 
102                            (+ (Kv4_ahf Vrest cah cvh ckah temp_adj) 
103                               (Kv4_bhf Vrest cbh cvbh ckbh temp_adj))) ) 
104              (m-power   4)
105              (h-power   1)
106              (m-alpha   (Kv4_amf v can cvan ckan temp_adj))
107              (m-beta    (Kv4_bmf v cbn cvbn ckbn temp_adj))
108              (h-alpha   (Kv4_ahf v cah cvh ckah temp_adj))
109              (h-beta    (Kv4_bhf v cbh cvbh ckbh temp_adj))
110              ))
111             
112            )
113
114         (component (type pore)
115            (const  gbar_Kv4  = 0.0039)
116            (output gbar_Kv4 ))
117
118         (component (type permeating-substance) (name k)
119           (const e_Kv4 = -85)
120           (output e_Kv4 ))
121
122         ) ;; end Kv4 current
123
124
125       (component (type ion-channel) ;; Ih current
126
127         (component (type gate)
128                 
129            ;; rate functions
130
131            (const cvn =  90.1)
132            (const ckn =  -9.9)
133            (defun Ih_inf (v cvn ckn)   (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cvn) ckn) )))))
134           
135            (const cct = 190)
136            (const cat = 720)
137            (const cvt = 81.5)
138            (const ckt = 11.9)
139
140            (defun Ih_tau (v cct cat cvt ckt temp_adj)   
141              (/ (+ cct (* cat (exp (neg (pow (/ (+ v cvt) ckt) 2))))) temp_adj))
142
143            (hh-ionic-conductance 
144             (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
145              (initial-m (Ih_inf Vrest cvn ckn))
146              (m-power   1)
147              (h-power   0)
148              (m-inf     (Ih_inf v cvn ckn))
149              (m-tau     (Ih_tau v cct cat cvt ckt temp_adj))
150              ))
151             
152            )
153
154         (component (type pore)
155            (const  gbar_Ih  = 0.2)
156            (output gbar_Ih ))
157
158         (component (type permeating-substance) (name non-specific)
159           (const e_Ih = -30)
160           (output e_Ih ))
161
162         ) ;; end Ih current
163
164       (component (type ion-channel) ;; CaP current
165
166         (component (type gate)
167                 
168            ;; rate functions
169
170            (const cv = 19)
171            (const ck = 5.5)
172
173            (defun CaP_inf (v cv ck)  (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cv) ck))))))
174
175            (defun CaP_tau (v temp_adj) 
176              (/ (if (> v -50) (* 1e3 (+ 0.000191 (* 0.00376 (pow (exp (neg (/ (+ v 41.9) 27.8)))  2))))
177                     (* 1e3 (+ 0.00026367 (* 0.1278 (exp (* 0.10327 v)))))) temp_adj))
178
179            (hh-ionic-conductance 
180             (CaP  ;; ion name: exported variables will be of the form {ion}_{id}
181              (initial-m  (CaP_inf Vrest cv ck))
182              (m-power    1)
183              (h-power    0)
184              (m-inf      (CaP_inf v cv ck))
185              (m-tau      (CaP_tau v temp_adj))))
186             
187            )
188
189         (component (type pore)
190            (const gmax_CaP  = 0.01667)
191            (gbar_CaP = (* gmax_CaP (ghk v celsius cai cao)))
192            (output gbar_CaP ))
193
194         (component (type accumulating-substance) (name ca) )
195                   
196
197         ) ;; end CaP current
198
199
200       (component (type ion-channel) ;; BK current
201
202         (component (type gate)
203                 
204            ;; rate functions
205
206            (const zhalf = 0.001)
207            (defun CaBK_zinf (ca zhalf)  (/ 1 (+ 1 (/ zhalf ca))))
208            (const CaBK_ztau = (/ 1.0 temp_adj))
209
210            (const cvm = 28.9)
211            (const ckm = 6.2)
212            (defun CaBK_minf (v cvm ckm temp_adj)
213              (/ (/ 1.0 (+ 1.0 (exp (neg (/ (+ v 5.0 cvm) ckm)))))
214                 temp_adj))
215           
216            (const ctm    = 0.000505)
217            (const cvtm1  = 86.4)
218            (const cktm1  = -10.1)
219            (const cvtm2  = -33.3)
220            (const cktm2  = 10)
221            (defun CaBK_mtau (v ctm cvtm1 cktm1 cvtm2 cktm2 temp_adj)
222              (/ (+ ctm (/ 1.0 (+ (exp (neg (/ (+ v 5.0 cvtm1) cktm1))) 
223                                  (exp (neg (/ (+ v 5.0 cvtm2) cktm2))))))
224                 temp_adj))
225           
226            (const ch   = 0.085)
227            (const cvh  = 32)
228            (const ckh  = -5.8)
229            (defun CaBK_hinf (v ch cvh ckh temp_adj) 
230              (/ (+ ch (/ (- 1.0 ch) (+ 1.0 (exp (neg (/ (+ v 5.0 cvh) ckh))))))
231                 temp_adj))
232
233            (const cth    = 0.0019)
234            (const cvth1  = 48.5)
235            (const ckth1  = -5.2)
236            (const cvth2  = -54.2)
237            (const ckth2  = 12.9)
238            (defun CaBK_htau (v cth ckth1 ckth2 cvth1 cvth2 temp_adj)
239              (/ (+ cth (/ 1.0 ( + (exp (- (/ (+ v cvth1) ckth1))) 
240                                   (exp (- (/ (+ v cvth2) ckth2))))))
241                 temp_adj))
242           
243           
244            (state-complex (CaBK_z (transitions (-> zC zO  (/ (CaBK_zinf cai zhalf) CaBK_ztau))
245                                                (-> zO zC  (/ (- 1 (CaBK_zinf cai zhalf)) CaBK_ztau)))
246                                   (initial   (CaBK_zinf 1e-4 zhalf))
247                                   (open zO)  (power 2)))
248           
249            (output CaBK_z ) 
250
251           
252            (hh-ionic-conductance 
253             (CaBK  ;; ion name: exported variables will be of the form {ion}_{id}
254              (initial-m  (CaBK_minf Vrest cvm ckm temp_adj ))
255              (initial-h  (CaBK_hinf Vrest ch cvh ckh temp_adj ))
256              (m-power    3)
257              (h-power    1)
258              (m-inf      (CaBK_minf v cvm ckm temp_adj) )
259              (m-tau      (CaBK_mtau v ctm cvtm1 cktm1 cvtm2 cktm2 temp_adj) )
260              (h-inf      (CaBK_hinf v ch cvh ckh temp_adj) )
261              (h-tau      (CaBK_htau v cth cvth1 ckth1 cvth2 cvth2 temp_adj) )))
262
263            )
264
265         (component (type pore)
266            (const  gbar_CaBK  = 0.014)
267            (output gbar_CaBK ))
268
269         (component (type permeating-substance) (name k)
270           (const e_CaBK = -85)
271           (output e_CaBK ))
272
273         ) ;; end BK current
274
275
276
277       )
278
279      (let ((PotIhCa-1 (nemo:hh-transformer PotIhCa))) 
280        (print "dependency graph: " ((nemo 'depgraph*) PotIhCa-1))
281        (print "exports: " ((nemo 'exports) PotIhCa-1))
282        (print "imports: " ((nemo 'imports) PotIhCa-1))
283        (for-each (lambda (x) 
284                    (print "component " x ": " ((nemo 'component-exports) PotIhCa-1 (second x)))
285                    (print "component " x " subcomponents: " ((nemo 'component-subcomps) PotIhCa-1 (second x))))
286                  ((nemo 'components) PotIhCa-1))
287        (nemo:nmodl-translator PotIhCa-1 'cnexp #t -150 150 1)
288       
289        ))
290  )
Note: See TracBrowser for help on using the repository browser.