source: project/release/3/nemo/trunk/nemo-eggdoc.scm @ 12113

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

Include support for complex prefixes in the names of transition states.

File size: 11.4 KB
Line 
1;;
2;;
3;; nemo documentation for the Chicken Scheme module system.
4;;
5;;
6;; This program is free software: you can redistribute it and/or
7;; modify it under the terms of the GNU General Public License as
8;; published by the Free Software Foundation, either version 3 of the
9;; License, or (at your option) any later version.
10;;
11;; This program is distributed in the hope that it will be useful, but
12;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14;; General Public License for more details.
15;;
16;; A full copy of the GPL license can be found at
17;; <http://www.gnu.org/licenses/>.
18;;
19;;
20
21
22(use eggdoc)
23
24(define doc
25  `((eggdoc:begin
26
27     (name "nemo")
28
29     (description "Neuron model description language.")
30
31     (author (url "http://chicken.wiki.br/ivan raikov" "Ivan Raikov"))
32
33     (history
34      (version "1.0" "Initial release"))
35
36
37     (requires (url "args.html" "args")
38               (url "datatype.html" "datatype")
39               (url "digraph.html" "digraph")
40               (url "environments.html" "environments")
41               (url "graph-bfs.html""graph-bfs")
42               (url "graph-cycles.html" "graph-cycles")
43               (url "matchable.html" "matchable")
44               (url "mathh.html" "mathh")
45               (url "strictly-pretty.html" "strictly-pretty")
46               (url "sxml-tools.html" "sxml-tools")
47               (url "sxml-transforms.html" "sxml-transforms")
48               (url "syntax-case.html" "syntax-case")
49               (url "varsubst.html" "varsubst")
50               (url "vector-lib.html" "vector-lib"))
51
52
53     (usage "nemo [options...] [input files ...]")
54     (download "nemo.egg")
55
56     (documentation
57     
58      (p (tt "NEMO") " is a program that reads an on channel description "
59         "in a format based on ChannelML and generates a corresponding description "
60         "in the [[http://www.neuron.yale.edu/neuron/docs/help/neuron/nmodl/nmodl.html|NMODL]] "
61         "language used by the [[http://www.neuron.yale.edu/neuron/|NEURON]] simulator. ")
62
63      (subsection "Options"
64        (p (symbol-table
65            (describe "-i FORMAT"          "specify input format (xml, sxml, s-exp)")
66            (describe "--xml[=FILE]"       "write XML output to file (default: <model-name>.xml")
67            (describe "--sxml[=FILE]"      "write SXML output to file (default: <model-name>.sxml")
68            (describe "--nmodl[=FILE]"     "write NMODL output to file (default: <model-name>.mod")
69            (describe "--nmodl-method=METHOD" "specify NMODL integration method (cnexp, derivimplicit)")
70            (describe "-t"                 "use interpolation tables in generated code")
71            (describe "-h, --help"         "print help"))))
72
73      (subsection "Model description language"
74        (p "The following constructs comprise the model description language: ")
75        (p (symbol-table
76            (describe "(INPUT {ID | (ID [AS LOCAL-ID] [FROM NAMESPACE])} ... )"
77                      (p "Declares one or several imported quantities. "
78                         
79                         ))
80            (describe "(OUTPUT ID)" 
81                      "declare that an existing quantity be exported")
82            (describe "(CONST ID = EXPR)"
83                      "declare a constant quantity (its value will be computed at declaration time)")
84            (describe "(DEFUN ID ({ARG-ID} ... ) BODY)"
85                      "declare a function (an expression with no free variables)")
86            (describe "(ASGN ID = EXPR)"
87                      "declare an assigned quantity (an expression that can refer to other quantities in the system)")
88            (describe "(STATE-COMPLEX ID TRANSITIONS INITIAL OPEN)"
89                      "declare a state complex quantity")
90            (describe "(COMPONENT (TYPE ID) (NAME ID) ELEMENTS)"
91                      "declare a system component (a quantity that can contain other quantities)")
92            )
93          ))
94
95      )
96     (examples (pre #<<EOF
97
98;; Akemann and Knoepfel, J.Neurosci. 26 (2006) 4602
99
100(nemo-model PotIhCa
101            ((input v  cai cao)
102             
103             (const Vrest   = -68)
104             (const diam    = 20)
105             (const celsius = 24)
106             
107             (const temp_adj = (pow 3 (/ (- celsius 22) 10)))
108             
109             (defun ghk (v celsius ci co)
110               (let ((F 96485.0) (R 8.3145))
111                 (let ((zeta (/ (* 2e-3 F v) (* R (+ 273.19 celsius)))))
112                   (if (< (abs (- 1.0 (exp (neg zeta)))) 1e-6)
113                       (* 1e-6  (* 2 F) (- ci (* co (exp (neg zeta)))) (+ 1.0 (/ zeta 2)))
114                       (/ (* 1e-6 (* 2 zeta F) (- ci (* co (exp (neg zeta))))) (- 1.0 (exp (neg zeta))))))))
115             
116             
117             (component (type ion-channel) (name Kv1)
118                       
119                        (component (type gate)
120                                   
121                                   ;; rate functions
122                                   (defun Kv1_amf (v) 
123                                     (let ((cma 0.12889)
124                                           (cka -33.90877)
125                                           (cva 45))
126                                       (* cma (exp (neg (/ (+ v cva) cka))))))
127                                   
128                                   (defun Kv1_bmf (v)
129                                     (let ((cmb   0.12889)
130                                           (ckb   12.42101)
131                                           (cvb   45))
132                                       (* cmb (exp (neg (/ (+ v cvb) ckb))))))
133                                   
134                                   (hh-ionic-conductance 
135                                    (Kv1  ;; ion name: exported variables will be of the form {ion}_{id}
136                                     (initial-m (/ (Kv1_amf Vrest) (+ (Kv1_amf Vrest) (Kv1_bmf Vrest))))
137                                     (m-power   4)
138                                     (h-power   0)
139                                     (m-alpha   (* temp_adj (Kv1_amf v) ))
140                                     (m-beta    (* temp_adj (Kv1_bmf v) )))
141                                   
142                                    ))
143
144
145                       
146                        (component (type pore)
147                                   (const  gbar_Kv1  = 0.011)
148                                   (output gbar_Kv1 ))
149                       
150                        (component (type permeating-substance) (name k)
151                                   (const e_Kv1 = -85)
152                                   (output e_Kv1 ))
153                       
154                        ) ;; end Kv1 current
155             
156             
157             (component (type ion-channel) (name Kv4)
158
159                        (component (type gate)
160                                   
161                                   ;; rate functions
162                                   
163                                   
164                                   (defun Kv4_amf (v) 
165                                     (let ((can    0.15743)
166                                           (ckan   -32.19976)
167                                           (cvan   57))
168                                       (* can (exp (neg (/ (+ v cvan) ckan))))))
169                                   
170
171                                   (defun Kv4_bmf (v) 
172                                     (let ((cbn   0.15743)
173                                           (ckbn  37.51346)
174                                           (cvbn  57))
175                                       (* cbn (exp (neg (/ (+ v cvbn) ckbn))))))
176
177                                   
178                                   (defun Kv4_ahf (v) 
179                                     (let ((cah   0.01342)
180                                           (ckah  -7.86476)
181                                           (cvah  60))
182                                       (/ cah (+ 1.0 (exp (neg (/ (+ v cvah) ckah)))))))
183
184                                   
185                                   (defun Kv4_bhf (v) 
186                                     (let ((cbh   0.04477)
187                                           (ckbh  11.3615)
188                                           (cvbh  54))
189                                       (/ cbh (+ 1.0 (exp (neg (/ (+ v cvbh) ckbh)))))))
190
191                                   (hh-ionic-conductance 
192                                    (Kv4  ;; ion name: exported variables will be of the form {ion}_{id}
193                                     (initial-m (/ (Kv4_amf Vrest) (+ (Kv4_amf Vrest) (Kv4_bmf Vrest))))
194                                     (initial-h (/ (Kv4_ahf Vrest)  (+ (Kv4_ahf Vrest) (Kv4_bhf Vrest))) ) 
195                                     (m-power   4)
196                                     (h-power   1)
197                                     (m-alpha   (* temp_adj (Kv4_amf v)))
198                                     (m-beta    (* temp_adj (Kv4_bmf v)))
199                                     (h-alpha   (* temp_adj (Kv4_ahf v)))
200                                     (h-beta    (* temp_adj (Kv4_bhf v)))
201                                     ))
202                                   
203                                   )
204
205                        (component (type pore)
206                                   (const  gbar_Kv4  = 0.0039)
207                                   (output gbar_Kv4 ))
208                       
209                        (component (type permeating-substance) (name k)
210                                   (const e_Kv4 = -85)
211                                   (output e_Kv4 ))
212                       
213                        ) ;; end Kv4 current
214             
215
216             
217             (component (type ion-channel) (name Ih)
218                       
219                        (component (type gate)
220                                   
221                                   ;; rate functions
222                                   
223                                   (defun Ih_inf (v)
224                                     (let ((cvn   90.1)
225                                           (ckn   -9.9))
226                                       (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cvn) ckn) ))))))
227                                   
228                                   (defun Ih_tau (v)   
229                                     (let ((cct  190)
230                                           (cat  720)
231                                           (cvt  81.5)
232                                           (ckt  11.9))
233                                       (+ cct (* cat (exp (neg (pow (/ (+ v cvt) ckt) 2)))))))
234                                   
235                                   (hh-ionic-conductance 
236                                    (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
237                                     (initial-m (Ih_inf Vrest))
238                                     (m-power   1)
239                                     (h-power   0)
240                                     (m-inf     (Ih_inf v))
241                                     (m-tau     (/ (Ih_tau v) temp_adj))
242                                     ))
243                                   
244                                   )
245
246                        (component (type pore)
247                                   (const  gbar_Ih  = 0.0002)
248                                   (output gbar_Ih ))
249                       
250                        (component (type permeating-substance) (name non-specific)
251                                   (const e_Ih = -30)
252                                   (output e_Ih ))
253                       
254                        ) ;; end Ih current
255
256             (component (type ion-channel) (name CaP)
257                       
258                        (component (type gate)
259                                   
260                                   ;; rate functions
261                                   (defun CaP_inf (v) 
262                                     (let ((cv  19)  (ck  5.5))
263                                       (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cv) ck)))))))
264                                   
265                                   (defun CaP_tau (v) 
266                                     (if (> v -50) 
267                                         (* 1e3 (+ 0.000191 (* 0.00376 (pow (exp (neg (/ (+ v 41.9) 27.8)))  2))))
268                                         (* 1e3 (+ 0.00026367 (* 0.1278 (exp (* 0.10327 v)))))))
269
270                                   (hh-ionic-conductance 
271                                    (CaP  ;; ion name: exported variables will be of the form {ion}_{id}
272                                     (initial-m  (CaP_inf Vrest))
273                                     (m-power    1)
274                                     (h-power    0)
275                                     (m-inf      (CaP_inf v))
276                                     (m-tau      (/ (CaP_tau v) temp_adj))))
277                                   
278                                   )
279
280                        (component (type pore)
281                                   (const gmax_CaP  = 0.01667)
282                                   (gbar_CaP = (* gmax_CaP (ghk v celsius cai cao)))
283                                   (output gbar_CaP ))
284                       
285                        (component (type accumulating-substance) (name ca) )
286                       
287                       
288                        ) ;; end CaP current
289
290             
291             (component (type ion-channel) (name CaBK)
292                       
293                        (component (type gate)
294                                   
295                                   ;; rate functions
296                                   
297                                   (defun CaBK_zinf (ca) 
298                                     (let ((zhalf 0.001))
299                                       (/ 1 (+ 1 (/ zhalf ca)))))
300
301                                   (const CaBK_ztau = 1.0)
302                                   
303                                   (defun CaBK_minf (v)
304                                     (let ((cvm  28.9)
305                                           (ckm  6.2))
306                                       (/ 1.0 (+ 1.0 (exp (neg (/ (+ v 5.0 cvm) ckm)))))))
307                                   
308                                   (defun CaBK_mtau (v)
309                                     (let ((ctm     0.000505)
310                                           (cvtm1   86.4)
311                                           (cktm1   -10.1)
312                                           (cvtm2   -33.3)
313                                           (cktm2   10))
314                                       (+ ctm (/ 1.0 (+ (exp (neg (/ (+ v 5.0 cvtm1) cktm1))) 
315                                                        (exp (neg (/ (+ v 5.0 cvtm2) cktm2))))))))
316           
317                                   (defun CaBK_hinf (v) 
318                                     (let ((ch    0.085)
319                                           (cvh   32)
320                                           (ckh   -5.8))
321                                       (+ ch (/ (- 1.0 ch) (+ 1.0 (exp (neg (/ (+ v 5.0 cvh) ckh))))))))
322                                   
323                                   (defun CaBK_htau (v)
324                                     (let ((cth     0.0019)
325                                           (cvth1   48.5)
326                                           (ckth1   -5.2)
327                                           (cvth2   -54.2)
328                                           (ckth2   12.9))
329                                       (+ cth (/ 1.0 ( + (exp (- (/ (+ v cvth1) ckth1))) 
330                                                         (exp (- (/ (+ v cvth2) ckth2))))))))
331                                   
332                                   (state-complex
333                                    (CaBK_z
334                                     (transitions (-> zC zO  (/ (CaBK_zinf cai) CaBK_ztau))
335                                                  (-> zO zC  (/ (- 1 (CaBK_zinf cai)) CaBK_ztau)))
336                                     (initial   (CaBK_zinf 1e-4))
337                                     (open zO)  (power 2)))
338                                   
339                                   (output CaBK_z ) 
340
341           
342                                   (hh-ionic-conductance 
343                                    (CaBK  ;; ion name: exported variables will be of the form {ion}_{id}
344                                     (initial-m  (/ (CaBK_minf Vrest) temp_adj))
345                                     (initial-h  (/ (CaBK_hinf Vrest) temp_adj ))
346                                     (m-power    3)
347                                     (h-power    1)
348                                     (m-inf      (/ (CaBK_minf v) temp_adj ))
349                                     (m-tau      (/ (CaBK_mtau v) temp_adj ))
350                                     (h-inf      (/ (CaBK_hinf v) temp_adj) )
351                                     (h-tau      (/ (CaBK_htau v) temp_adj) )))
352                                   
353                                   )
354                       
355                        (component (type pore)
356                                   (const  gbar_CaBK  = 0.014)
357                                   (output gbar_CaBK ))
358                       
359                        (component (type permeating-substance) (name k)
360                                   (const e_CaBK = -85)
361                                   (output e_CaBK ))
362                       
363                        ) ;; end BK current
364             
365             
366             
367             )) ;; end model
368
369EOF
370))
371
372     (license
373      "Copyright 2008 Ivan Raikov and the Okinawa Institute of Science and Technology.
374
375This program is free software: you can redistribute it and/or modify
376it under the terms of the GNU General Public License as published by
377the Free Software Foundation, either version 3 of the License, or (at
378your option) any later version.
379
380This program is distributed in the hope that it will be useful, but
381WITHOUT ANY WARRANTY; without even the implied warranty of
382MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
383General Public License for more details.
384
385A full copy of the GPL license can be found at
386<http://www.gnu.org/licenses/>."))))
387
388(if (eggdoc->html doc) (void))
Note: See TracBrowser for help on using the repository browser.