source: project/release/3/oru/examples/hh-superstrate.scm @ 11603

Last change on this file since 11603 was 11603, checked in by Ivan Raikov, 13 years ago

Some updates to the nmodl backend and hh extension.

File size: 2.4 KB
Line 
1;;  -*- Hen -*-
2
3;;
4;; This model is used to calculate the channel conductance assuming
5;; some initial state. The calculation is based on sodium ion flow,
6;; potassium ion flow and leakage ion flow. (Hodgkin, A. L. and Huxley,
7;; A. F. (1952) "A Quantitative Description of Membrane Current and its
8;; Application to Conduction and Excitation in Nerve" Journal of
9;; Physiology 117: 500-544)
10;;
11
12(require-extension oru-macros)
13(require-extension oru-nmodl)
14(require-extension oru-hh)
15
16(define hodgkin-huxley
17  (oru-model hodgkin-huxley
18      ((input v)
19
20       (const Vrest = -65)
21
22       (component (type ion-channel)
23         (component (type gate)
24                 
25            ;; rate functions
26            (defun amf (v)   (* 0.1    (/ (+ v 40)  (- 1.0 (exp (/ (neg (+ v 40)) 10))))))
27            (defun bmf (v)   (* 4.0    (exp (/ (neg (+ v 65)) 18))))
28            (defun ahf (v)   (* 0.07   (exp (/ (neg (+ v 65)) 20))))
29            (defun bhf (v)   (/ 1.0    (+ 1.0 (exp (/ (neg (+ v 35)) 10)))))
30           
31            (hh-ionic-conductance 
32             (Na  ;; ion name: exported variables will be of the form {ion}_{id}
33              (initial-m (/ (amf Vrest) (+ (amf Vrest) (bmf Vrest))) ) 
34              (initial-h (/ (ahf Vrest) (+ (ahf Vrest) (bhf Vrest))) )
35              (m-power   3)
36              (h-power   1)
37              (m-alpha   (amf v))
38              (h-alpha   (ahf v))
39              (m-beta    (bmf v))
40              (h-beta    (bhf v))))
41
42            ;; state definitions exported by this component: Na_m Na_h
43            )
44
45         (component (type pore)
46            (const  gbar_Na  = 120)
47            (output gbar_Na )
48            )
49         
50         )
51
52       (component (type ion-channel)
53         (component (type gates)
54                   
55            ;; rate functions
56            (defun anf (v)   (* 0.01   (/ (+ v 55) (- 1 (exp (/ (neg (+ v 55)) 10))))))
57            (defun bnf (v)   (* 0.125  (exp (/ (neg (+ v 65)) 80))))
58           
59
60            (hh-ionic-conductance 
61             (K  ;; ion name
62              (initial-m (/ (anf Vrest) (+ (anf Vrest) (bnf Vrest))) ) 
63              (m-power 4)
64              (h-power 0) ;; h-power is 0, therefore h further declarations are omitted
65              (m-alpha (anf v))
66              (m-beta  (bnf v))))
67
68            ;; state definitions exported by this component: K_m K_h
69
70            )
71
72         (component (type pore)
73            (const   gbar_K   = 36)
74            (output  gbar_K )
75          )
76         ))
77
78
79      (let ((hh1 (oru:hh-transformer hodgkin-huxley))) 
80        (print ((oru 'depgraph*) hh1))
81        (print ((oru 'exports) hh1))
82        (print ((oru 'imports) hh1))
83        (for-each (lambda (x) 
84                    (print x ": " ((oru 'component-exports) hh1 (second x))))
85                  ((oru 'components) hh1))
86        (oru:nmodl-translator hh1))
87      )
88  )
Note: See TracBrowser for help on using the repository browser.