source: project/release/3/nemo/trunk/examples/AKP06/AKP06.nemo @ 13181

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

Renaming driver files.

File size: 13.4 KB
Line 
1
2;; Akemann W, Knopfel T. Interaction of Kv3 potassium channels and
3;; resurgent sodium current influences the rate of spontaneous firing of
4;; Purkinje neurons. J Neurosci. 2006 Apr 26;26(17):4602-12.
5
6(nemo-model AKP06
7
8  ((input v
9          (cai from ion-pools)
10          (ica from ion-currents))
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
19   (defun ghk (v celsius ci co)
20     (let ((F 96485.0) (R 8.3145))
21       (let ((zeta ((2e-3 * F * v) / (R * (273.19 + celsius)))))
22         (if ((abs (1.0 - exp (neg (zeta)))) < 1e-6)
23             then (1e-6 * (2 * F) * (ci - (co * exp (neg (zeta)))) * (1.0 + (zeta / 2)))
24             else ((1e-6 * (2 * zeta * F) * (ci - (co * exp (neg (zeta))))) / (1.0 - exp (neg (zeta))))))))
25
26   (component (type membrane-capacitance)
27           (const C_m = 1)
28           (output C_m))
29
30   (component (type ion-channel) (name Kv1)
31             
32              (component (type gate)
33                         
34                         ;; rate functions
35                         (defun Kv1_amf (v)
36                           (let ((cma 0.12889)
37                                 (cka -33.90877)
38                                 (cva 45))
39                             (cma * (exp (neg ((v + cva) / cka))))))
40                         
41                         (defun Kv1_bmf (v)
42                           (let ((cmb   0.12889)
43                                 (ckb   12.42101)
44                                 (cvb   45))
45                             (cmb * (exp (neg ((v + cvb) / ckb))))))
46                         
47                         (hh-ionic-gate
48                          (Kv1  ;; ion name: exported variables will be of the form {ion}_{id}
49                           (initial-m (Kv1_amf (Vrest) / (Kv1_amf (Vrest) + Kv1_bmf (Vrest))))
50                           (m-power   4)
51                           (h-power   0)
52                           (m-alpha   (temp_adj * Kv1_amf (v) ))
53                           (m-beta    (temp_adj * Kv1_bmf (v) ))))
54                         
55                         )
56             
57              (component (type pore)
58                         (const  gbar_Kv1  = 0.011)
59                         (output gbar_Kv1 ))
60             
61              (component (type permeating-substance) (name k)
62                         (const e_Kv1 = -85)
63                         (output e_Kv1 ))
64             
65              ) ;; end Kv1 current
66   
67   (component (type ion-channel) (name Kv3)
68             
69              (component (type gate)
70                         
71                         ;; rate functions
72                         (defun Kv3_amf (v)
73                           (let ((ca   0.22)
74                                 (cva  16)
75                                 (cka  -26.5))
76                             (ca * exp((neg (v + cva)) / cka) )))
77                         
78                         (defun Kv3_bmf (v)
79                           (let ((ca   0.22)
80                                 (cvb  16)
81                                 (ckb  26.5))
82                             (ca * exp((neg (v + cvb)) / ckb) )))
83                         
84                         (hh-ionic-gate
85                          (Kv3  ;; ion name: exported variables will be of the form {ion}_{id}
86                           (initial-m (Kv3_amf (Vrest) / (Kv3_amf (Vrest) + Kv3_bmf (Vrest))))
87                           (m-power   4)
88                           (h-power   0)
89                           (m-alpha   (temp_adj * Kv3_amf (v) ))
90                           (m-beta    (temp_adj * Kv3_bmf (v) ))))
91                         
92                         )
93             
94              (component (type pore)
95                         (const  gbar_Kv3  = 0.005)
96                         (output gbar_Kv3 ))
97             
98              (component (type permeating-substance) (name k)
99                         (const e_Kv3 = -85)
100                         (output e_Kv3 ))
101
102              (component (type binary-gate)
103                         (const switch_Kv3 = 0)
104                         
105                         (const e0 = 1.60217646e-19)
106                         (const gunit = 16)
107                         (const nc = (1e12 * gbar_Kv3 / gunit))
108                         (const zn = 1.9196)
109
110                         (defun gate_flip_Kv3 (v m)
111                           (let ((a    (Kv3_amf (v)))
112                                 (ab   (a + Kv3_bmf (v)))
113                                 (tau  (1 / ab))
114                                 (inf  (a / ab)))
115                             ((inf - m) / tau)))
116
117                         (i_gate_Kv3 =
118                           (if (switch_Kv3 > 0) then (nc * 1e6 * e0 * 4 * zn * gate_flip_Kv3(v Kv3_m)) else 0))
119
120                         (output i_gate_Kv3 ))
121
122              ) ;; end Kv3 current
123
124
125
126   (component (type ion-channel) (name Kv4)
127
128              (component (type gate)
129                         
130                         ;; rate functions
131                         
132                         
133                         (defun Kv4_amf (v) 
134                           (let ((can    0.15743)
135                                 (ckan   -32.19976)
136                                 (cvan   57))
137                             (can * exp (neg ((v + cvan) / ckan)))))
138                         
139
140                         (defun Kv4_bmf (v) 
141                           (let ((cbn   0.15743)
142                                 (ckbn  37.51346)
143                                 (cvbn  57))
144                             (cbn * exp (neg ((v + cvbn) / ckbn)))))
145
146                         
147                         (defun Kv4_ahf (v) 
148                           (let ((cah   0.01342)
149                                 (ckah  -7.86476)
150                                 (cvah  60))
151                             (cah / (1.0 + (exp (neg ((v + cvah) / ckah)))))))
152
153                         
154                         (defun Kv4_bhf (v) 
155                           (let ((cbh   0.04477)
156                                 (ckbh  11.3615)
157                                 (cvbh  54))
158                             (cbh / (1.0 + (exp (neg ((v + cvbh) / ckbh)))))))
159
160                         (hh-ionic-gate
161                          (Kv4  ;; ion name: exported variables will be of the form {ion}_{id}
162                           (initial-m (Kv4_amf (Vrest) / (Kv4_amf (Vrest) + Kv4_bmf (Vrest))) )
163                           (initial-h (Kv4_ahf (Vrest) / (Kv4_ahf (Vrest) + Kv4_bhf (Vrest))) )
164                           (m-power   4)
165                           (h-power   1)
166                           (m-alpha   (temp_adj * Kv4_amf (v)))
167                           (m-beta    (temp_adj * Kv4_bmf (v)))
168                           (h-alpha   (temp_adj * Kv4_ahf (v)))
169                           (h-beta    (temp_adj * Kv4_bhf (v)))
170                           ))
171                         
172                         )
173
174              (component (type pore)
175                         (const  gbar_Kv4  = 0.0039)
176                         (output gbar_Kv4 ))
177             
178              (component (type permeating-substance) (name k)
179                         (const e_Kv4 = -85)
180                         (output e_Kv4 ))
181             
182              ) ;; end Kv4 current
183
184
185   (component (type ion-channel) (name Ih)
186             
187              (component (type gate)
188                         
189                         ;; rate functions
190                         
191                         (defun Ih_inf (v)
192                           (let ((cvn   90.1)
193                                 (ckn   -9.9))
194                             (1.0 / (1.0 + exp (neg ((v + cvn) / ckn) )))))
195                         
196                         (defun Ih_tau (v)   
197                           (let ((cct  190)
198                                 (cat  720)
199                                 (cvt  81.5)
200                                 (ckt  11.9))
201                             (cct + (cat * exp (neg (pow (((v + cvt) / ckt) 2)))))))
202                         
203                         (hh-ionic-gate
204                          (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
205                           (initial-m (Ih_inf (Vrest)))
206                           (m-power   1)
207                           (h-power   0)
208                           (m-inf     (Ih_inf (v)))
209                           (m-tau     (Ih_tau (v) / temp_adj))
210                           ))
211                         
212                         )
213
214              (component (type pore)
215                         (const  gbar_Ih  = 0.0002)
216                         (output gbar_Ih ))
217             
218              (component (type permeating-substance) (name non-specific)
219                         (const e_Ih = -30)
220                         (output e_Ih ))
221             
222              ) ;; end Ih current
223
224   (component (type ion-channel) (name Leak)
225             
226              (component (type pore)
227                         (const  gbar_Leak  = 9e-5)
228                         (output gbar_Leak ))
229             
230              (component (type permeating-substance) (name non-specific)
231                         (const e_Leak = -61)
232                         (output e_Leak ))
233             
234              ) ;; end leak current
235
236
237   (component (type ion-channel) (name CaP)
238             
239              (component (type gate)
240                         
241                         ;; rate functions
242                         (defun CaP_inf (v) 
243                           (let ((cv  19)  (ck  5.5))
244                             (1.0 / (1.0 + exp (neg ((v + cv) / ck))))))
245                         
246                         (defun CaP_tau (v) 
247                           (if (v > -50)
248                               then (1e3 * (0.000191 + (0.00376 * pow ((exp (neg ((v + 41.9) / 27.8)))  2))))
249                               else (1e3 * (0.00026367 + (0.1278 * exp (0.10327 * v))))))
250
251                         (hh-ionic-gate
252                          (CaP  ;; ion name: exported variables will be of the form {ion}_{id}
253                           (initial-m  (CaP_inf (Vrest)))
254                           (m-power    1)
255                           (h-power    0)
256                           (m-inf      (CaP_inf (v)))
257                           (m-tau      (CaP_tau (v) / temp_adj))))
258                         
259                         )
260
261              (component (type pore)
262                         (const gmax_CaP  = 0.01667)
263                         (const cao       = 2.4)
264                         (gbar_CaP        = (gmax_CaP * ghk (v celsius cai cao)))
265                         (output gbar_CaP ))
266             
267              (component (type accumulating-substance) (name ca) )
268             
269             
270              ) ;; end CaP current
271
272   (component (type ion-channel) (name CaBK)
273             
274              (component (type gate)
275                         
276                         ;; rate functions
277                         
278                         (defun CaBK_zinf (ca) 
279                           (let ((zhalf 0.001))
280                             (1 / (1 + (zhalf / ca)))))
281
282                         (const CaBK_ztau = 1.0)
283                         
284                         (defun CaBK_minf (v)
285                           (let ((cvm  28.9)
286                                 (ckm  6.2))
287                             (1.0 / (1.0 + exp (neg ((v + 5.0 + cvm) / ckm))))))
288                         
289                         (defun CaBK_mtau (v)
290                           (let ((ctm     0.000505)
291                                 (cvtm1   86.4)
292                                 (cktm1   -10.1)
293                                 (cvtm2   -33.3)
294                                 (cktm2   10))
295                             (ctm + (1.0 / (exp (neg ((v + 5.0 + cvtm1) / cktm1)) +
296                                                exp (neg ((v + 5.0 + cvtm2) / cktm2)))))))
297                         
298                         (defun CaBK_hinf (v)
299                           (let ((ch    0.085)
300                                 (cvh   32)
301                                 (ckh   -5.8))
302                             (ch + ((1.0 - ch) / (1.0 + (exp (neg ((v + 5.0 + cvh) / ckh))))))))
303                         
304                         (defun CaBK_htau (v)
305                           (let ((cth     0.0019)
306                                 (cvth1   48.5)
307                                 (ckth1   -5.2)
308                                 (cvth2   -54.2)
309                                 (ckth2   12.9))
310                             (cth + (1.0 / (exp (neg ((v + cvth1) / ckth1)) +
311                                                exp (neg ((v + cvth2) / ckth2)))))))
312                         
313                         (reaction
314                          (CaBK_z
315                           (transitions (<-> C O (CaBK_zinf (cai) / CaBK_ztau)
316                                             ((1 - CaBK_zinf (cai)) / CaBK_ztau)))
317                           (initial   (CaBK_zinf (1e-4)))
318                           (open O)  (power 2)))
319                         
320                         (output CaBK_z ) 
321
322                         
323                         (hh-ionic-gate
324                          (CaBK  ;; ion name: exported variables will be of the form {ion}_{id}
325                           (initial-m  (CaBK_minf (Vrest) / temp_adj))
326                           (initial-h  (CaBK_hinf (Vrest) / temp_adj))
327                           (m-power    3)
328                           (h-power    1)
329                           (m-inf      (CaBK_minf (v) / temp_adj) )
330                           (m-tau      (CaBK_mtau (v) / temp_adj) )
331                           (h-inf      (CaBK_hinf (v) / temp_adj) )
332                           (h-tau      (CaBK_htau (v) / temp_adj) )))
333                         
334                         )
335             
336              (component (type pore)
337                         (const  gbar_CaBK  = 0.014)
338                         (output gbar_CaBK ))
339             
340              (component (type permeating-substance) (name k)
341                         (const e_CaBK = -85)
342                         (output e_CaBK ))
343             
344              ) ;; end BK current
345
346
347    (component (type decaying-pool) (name ca)
348              (const  F = 96485.0)
349              (const  ca_initial = 1e-4)
350              (const  ca_depth   = 0.1)
351              (const  ca_beta    = 1.0)
352             
353              (d (ca) = ((neg (ica) / (2 * F * ca_initial * ca_depth)) -
354                         (ca * ca_beta * temp_adj))
355                        (initial ca_initial))
356             
357              (output ca)
358              )
359           
360
361   (functor (name Nafun) (type ion-channel)
362            ( Na_Con Na_Coff Na_Oon Na_Ooff Na_alfac Na_btfac
363                     Na_alpha Na_beta Na_gamma Na_delta Na_epsilon Na_zeta Na_x1 Na_x2
364                     Na_x3 Na_x4 Na_x5 Na_x6 ) =
365                     
366                     (component (type gate)
367                               
368                ;; rate functions
369                (f01 = (4.0 * Na_alpha * exp (v / Na_x1) * temp_adj))
370                (f02 = (3.0 * Na_alpha * exp (v / Na_x1) * temp_adj))
371                (f03 = (2.0 * Na_alpha * exp (v / Na_x1) * temp_adj))
372                (f04 = (Na_alpha * exp (v / Na_x1) * temp_adj))
373                (f0O = (Na_gamma * exp (v / Na_x3) * temp_adj))
374                (fip = (Na_epsilon * exp (v / Na_x5) * temp_adj))
375                (f11 = (4.0 * Na_alpha * Na_alfac * exp (v / Na_x1) * temp_adj))
376                (f12 = (3.0 * Na_alpha * Na_alfac * exp (v / Na_x1) * temp_adj))
377                (f13 = (2.0 * Na_alpha * Na_alfac * exp (v / Na_x1) * temp_adj))
378                (f14 = (Na_alpha * Na_alfac * exp (v / Na_x1) * temp_adj))
379                (f1n = (Na_gamma * exp (v / Na_x3) * temp_adj))
380               
381                (fi1 = (Na_Con * temp_adj))
382                (fi2 = (Na_Con * Na_alfac * temp_adj))
383                (fi3 = (Na_Con * Na_alfac * Na_alfac * temp_adj))
384                (fi4 = (Na_Con * Na_alfac * Na_alfac * Na_alfac * temp_adj))
385                (fi5 = (Na_Con * Na_alfac * Na_alfac * Na_alfac * Na_alfac * temp_adj))
386                (fin = (Na_Oon * temp_adj))
387               
388                (b01 = (Na_beta * exp (v / Na_x2) * temp_adj))
389                (b02 = (2.0 * Na_beta * exp (v / Na_x2) * temp_adj))
390                (b03 = (3.0 * Na_beta * exp (v / Na_x2) * temp_adj))
391                (b04 = (4.0 * Na_beta * exp (v / Na_x2) * temp_adj))
392                (b0O = (Na_delta * exp (v / Na_x4) * temp_adj))
393                (bip = (Na_zeta * exp (v / Na_x6) * temp_adj))
394               
395                (b11 = (Na_beta * Na_btfac * exp (v / Na_x2) * temp_adj))
396                (b12 = (2.0 * Na_beta * Na_btfac * exp (v / Na_x2) * temp_adj))
397                (b13 = (3.0 * Na_beta * Na_btfac * exp (v / Na_x2) * temp_adj))
398                (b14 = (4.0 * Na_beta * Na_btfac * exp (v / Na_x2) * temp_adj))
399                (b1n = (Na_delta * exp (v / Na_x4) * temp_adj))
400               
401                (bi1 = (Na_Coff * temp_adj))
402                (bi2 = (Na_Coff * Na_btfac * temp_adj))
403                (bi3 = (Na_Coff * Na_btfac * Na_btfac * temp_adj))
404                (bi4 = (Na_Coff * Na_btfac * Na_btfac * Na_btfac * temp_adj))
405                (bi5 = (Na_Coff * Na_btfac * Na_btfac * Na_btfac * Na_btfac * temp_adj))
406                (bin = (Na_Ooff * temp_adj))
407               
408                (reaction
409                    (Na_z
410                     (transitions
411                      (<-> C1 C2 f01 b01)
412                      (<-> C2 C3 f02 b02)
413                      (<-> C3 C4 f03 b03)
414                      (<-> C4 C5 f04 b04)
415                      (<-> C5 O  f0O b0O)
416                      (<-> O  B  fip bip)
417                      (<-> O  I6 fin bin)
418                      (<-> I1 I2 f11 b11)
419                      (<-> I2 I3 f12 b12)
420                      (<-> I3 I4 f13 b13)
421                      (<-> I4 I5 f14 b14)
422                      (<-> I5 I6 f1n b1n)
423                      (<-> C1 I1 fi1 bi1)
424                      (<-> C2 I2 fi2 bi2)
425                      (<-> C3 I3 fi3 bi3)
426                      (<-> C4 I4 fi4 bi4)
427                      (<-> C5 I5 fi5 bi5))
428
429                      (conserve (1 = (C1 + C2 + C3 + C4 + C5 + O + B + I1 + I2 + I3 + I4 + I5 + I6)))
430                     
431                     (open O)   (power 1)))
432                   
433                   (output Na_z ) 
434                   
435                   )
436                       
437                (component (type pore)
438                           (const  gbar  = 0.016)
439                           (output gbar ))
440               
441                (component (type permeating-substance) (name na)
442                           (const e = -88)
443                           (output e ))
444               
445                ) ;; end Nafun functor
446
447
448
449     (component (name Na) =
450                Nafun ((const Na_Con   = 0.005)
451                       (const Na_Coff  = 0.5)
452                       (const Na_Oon   = 2.3)
453                       (const Na_Ooff  = 0.005)
454                       
455                       (const Na_alfac = (pow ((Na_Oon / Na_Con) (1.0 / 4.0))))
456                       (const Na_btfac = (pow ((Na_Ooff / Na_Coff) (1.0 / 4.0))))
457                       
458                       (const Na_alpha = 150)
459                       (const Na_beta  = 3)
460                       (const Na_gamma = 150)
461                       (const Na_delta = 40)
462                       (const Na_epsilon = 1e-12)
463                       (const Na_zeta = 0.03)
464                       (const Na_x1 = 20)
465                       (const Na_x2 = -20)
466                       (const Na_x3 = 1000000000000.0)
467                       (const Na_x4 = -1000000000000.0)
468                       (const Na_x5 = 1000000000000.0)
469                       (const Na_x6 = -25)))
470     ;; end Na current
471
472     (component (name Narsg) =
473                Nafun ((const Na_Con   = 0.005)
474                       (const Na_Coff  = 0.5)
475                       (const Na_Oon   = 0.75)
476                       (const Na_Ooff  = 0.005)
477                       
478                       (const Na_alfac = (pow ((Na_Oon / Na_Con) (1.0 / 4.0))))
479                       (const Na_btfac = (pow ((Na_Ooff / Na_Coff) (1.0 / 4.0))))
480                       
481                       (const Na_alpha = 150)
482                       (const Na_beta  = 3)
483                       (const Na_gamma = 150)
484                       (const Na_delta = 40)
485                       (const Na_epsilon = 1.75)
486                       (const Na_zeta = 0.03)
487                       (const Na_x1 = 20)
488                       (const Na_x2 = -20)
489                       (const Na_x3 = 1000000000000.0)
490                       (const Na_x4 = -1000000000000.0)
491                       (const Na_x5 = 1000000000000.0)
492                       (const Na_x6 = -25)))
493     ;; end Narsg current
494
495   ))
Note: See TracBrowser for help on using the repository browser.