Changeset 11995 in project


Ignore:
Timestamp:
09/25/08 07:16:00 (12 years ago)
Author:
Ivan Raikov
Message:

More bug fixes.

Location:
release/3/nemo/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • release/3/nemo/trunk/core.scm

    r11977 r11995  
    9494  (DISPATCH   (value procedure?))
    9595  (EXPORTS    (lst (lambda (x) (and (list? x) (every symbol? x)))))
    96   (COMPONENT  (type symbol?) (lst (lambda (x) (and (list? x) (every symbol? x)))))
     96  (COMPONENT  (name symbol?) (type symbol?) (lst (lambda (x) (and (list? x) (every symbol? x)))))
    9797  )
    9898
     
    251251      (environment-extend! env (nemo-intern 'name)      (SYSNAME name))
    252252      (environment-extend! env (nemo-intern 'exports)   (EXPORTS (list)))
    253       (environment-extend! env (nemo-intern 'toplevel)  (COMPONENT 'toplevel (list)))
     253      (environment-extend! env (nemo-intern 'toplevel)  (COMPONENT 'toplevel 'toplevel (list)))
    254254      env))
    255255
     
    402402                               (('if . es)   (fold (enumconsts lb) ax es))
    403403                               ((s . es)     (if (symbol? s)  (cons s (fold (enumconsts lb) ax es)) ax))
    404                                (s            (begin
    405                                               (print "lb = " lb)
    406                                               (print "s = " s)
    407                                               (print "(member s lb) = " (member s lb))
    408                                               (cond
     404                               (s            (cond
    409405                                               ((and (symbol? s) (not (member s lb)) (environment-includes? base-env s))
    410406                                                (cons s ax) )
    411407                                               ((and (symbol? s) (not (member s lb)))
    412408                                                (nemo:error 'defun ": quantity " s " not defined"))
    413                                                (else ax)))))))))
     409                                               (else ax))))))))
    414410            (if (environment-has-binding? nemo-env sym)
    415411                (nemo:error 'defun! ": quantity " sym " already defined")
     
    459455                      (and (nemo:quantity? x)
    460456                           (cases nemo:quantity x
    461                                   (COMPONENT (type lst)  `(,type ,sym))
     457                                  (COMPONENT (name type lst)  `(,name ,type ,sym))
    462458                                  (else #f)))))
    463459           (environment-symbols nemo-env)))
     
    468464      (and (nemo:quantity? x)
    469465           (cases nemo:quantity x
    470                   (COMPONENT (type lst)  lst)
     466                  (COMPONENT (name type lst)  lst)
    471467                  (else #f)))))
    472468
     
    475471    (let ((all-exports (cases nemo:quantity (environment-ref nemo-env (nemo-intern 'exports))
    476472                              (EXPORTS (lst)  lst))))
    477       (let ((x (environment-ref nemo-env sym)))
     473      (let ((x  (environment-ref nemo-env sym)))
    478474        (and (nemo:quantity? x)
    479475             (cases nemo:quantity x
    480                     (COMPONENT (type lst) 
     476                    (COMPONENT (name type lst) 
    481477                      (filter-map (lambda (x) ((lambda (x) (and x (car x))) (member x all-exports))) lst))
    482478                    (else #f))))))
     
    485481    (define (component-type x)
    486482      (cases nemo:quantity x
    487              (COMPONENT (type lst) type)
     483             (COMPONENT (name type lst) type)
    488484             (else #f)))
    489     (let ((x (environment-ref nemo-env sym)))
    490       (and (nemo:quantity? x)
    491            (cases nemo:quantity x
    492                   (COMPONENT (type lst) 
    493                              (filter-map (lambda (s) (let ((x (environment-ref nemo-env s)))
    494                                                        (and (iscomp? x) `(,(component-type x) ,s)))) lst))
     485    (define (component-name x)
     486      (cases nemo:quantity x
     487             (COMPONENT (name type lst) name)
     488             (else #f)))
     489    (let ((en (environment-ref nemo-env sym)))
     490      (and (nemo:quantity? en)
     491           (cases nemo:quantity en
     492                  (COMPONENT (name type lst) 
     493                             (filter-map
     494                              (lambda (s)
     495                                (let ((x (environment-ref nemo-env s)))
     496                                  (and (iscomp? x) `(,(component-type x) ,(component-name x) ,s)))) lst))
    495497                  (else #f)))))
    496498
    497499  (define (component-extend! nemo-env)
    498     (lambda (comp sym)
    499       (let ((x (environment-ref nemo-env comp)))
     500    (lambda (comp-name sym)
     501      (let ((x (environment-ref nemo-env comp-name)))
    500502        (if (nemo:quantity? x)
    501503            (cases nemo:quantity x
    502                    (COMPONENT (type lst) 
    503                               (let ((en1 (COMPONENT type (append lst (list sym)))))
    504                                 (environment-set! nemo-env comp en1)))
    505                    (else (nemo:error 'component-extend! ": invalid component " comp)))
    506             (nemo:error 'component-extend! ": invalid component " comp)))))
     504                   (COMPONENT (name type lst) 
     505                              (let ((en1 (COMPONENT name type (delete-duplicates (append lst (list sym))))))
     506                                (environment-set! nemo-env comp-name en1)))
     507                   (else (nemo:error 'component-extend! ": invalid component " comp-name)))
     508            (nemo:error 'component-extend! ": invalid component " comp-name)))))
    507509
    508510
     
    577579  (define (toplevel nemo-env)
    578580    (cases nemo:quantity (environment-ref nemo-env (nemo-intern 'toplevel))
    579            (COMPONENT (type lst) `(,type ,lst))))
     581           (COMPONENT (name type lst) `(,type ,lst))))
    580582                                       
    581583  (define (exam nemo-env)
     
    620622    (cond ((nemo:quantity? x)
    621623           (cases nemo:quantity x
    622                   (COMPONENT  (type lst)  #t)
     624                  (COMPONENT  (name type lst)  #t)
    623625                  (else #f)))
    624626          (else #f)))
     
    822824  (define (eval-const x) (and x ((nemo-core 'eval-const) sys x)))
    823825  (let loop ((ds declarations) (qs (list)) (top #t))
    824     (if (null? ds)  (let ((qs (reverse qs)))
    825                       (if top (let* ((top-syms   ((nemo-core 'component-symbols ) sys (nemo-intern 'toplevel)))
    826                                      (top-syms1  (append qs top-syms)))
    827                                 (environment-set! sys (nemo-intern 'toplevel) (COMPONENT 'toplevel top-syms1))))
    828                       qs)
     826    (if (null? ds) 
     827        (let ((qs (reverse qs)))
     828          (if top (let* ((top-syms   ((nemo-core 'component-symbols ) sys (nemo-intern 'toplevel)))
     829                         (top-syms1  (append qs top-syms)))
     830                    (environment-set! sys (nemo-intern 'toplevel) (COMPONENT 'toplevel 'toplevel top-syms1))))
     831          qs)
    829832        (let ((decl (car ds)))
    830833          (let ((qs1  (match decl
     
    910913                            (('component ('type typ) ('name name) . lst) 
    911914                             (let* ((cqs   (loop lst (list) #f))
    912                                     (comp  (COMPONENT typ cqs))
    913                                     (sym   (string->symbol (->string name))))
     915                                    (sym   (qname "comp"))
     916                                    (comp  (COMPONENT name typ cqs)))
    914917                               (environment-set! sys sym comp)
    915918                               (cons sym qs)))
     
    917920                             
    918921                            (('component ('type typ)  . lst) 
    919                              (let* ((cqs   (loop lst (list) #f))
    920                                     (comp  (COMPONENT typ cqs))
    921                                     (sym   (qname "comp")))
     922                             (let* ((sym   (qname "comp"))
     923                                    (cqs   (loop lst (list) #f))
     924                                    (comp  (COMPONENT sym typ cqs)))
    922925                               (environment-set! sys sym comp)
    923926                               (cons sym qs)))
  • release/3/nemo/trunk/examples/AKP06/PotIhCa.scm

    r11977 r11995  
    1818             
    1919             
    20              (component (type ion-channel) ;; Kv1 current
    21                        
    22                         (component (type gate)
    23                                    
    24                                    ;; rate functions
    25                                    (const cma  = 0.12889)
    26                                    (const cka  = -33.90877)
    27                                    (const cva  = 45)
    28                                    
    29                                    (defun Kv1_amf (v cma cva cka temp_adj) (* temp_adj cma (exp (neg (/ (+ v cva) cka)))))
    30                                    
    31                                    (const cmb   = 0.12889)
    32                                    (const ckb   = 12.42101)
    33                                    (const cvb   = 45)
    34                                    (defun Kv1_bmf (v cmb cvb ckb temp_adj) (* temp_adj cmb (exp (neg (/ (+ v cvb) ckb)))))
     20             (component (type ion-channel) (name Kv1)
     21                       
     22                        (component (type gate)
     23                                   
     24                                   ;; rate functions
     25                                   (defun Kv1_amf (v)
     26                                     (let ((cma 0.12889)
     27                                           (cka -33.90877)
     28                                           (cva 45))
     29                                       (* cma (exp (neg (/ (+ v cva) cka))))))
     30                                   
     31                                   (defun Kv1_bmf (v)
     32                                     (let ((cmb   0.12889)
     33                                           (ckb   12.42101)
     34                                           (cvb   45))
     35                                       (* cmb (exp (neg (/ (+ v cvb) ckb))))))
    3536                                   
    3637                                   (hh-ionic-conductance
    3738                                    (Kv1  ;; ion name: exported variables will be of the form {ion}_{id}
    38                                      (initial-m (/ (Kv1_amf Vrest cma cva cka temp_adj)
    39                                                    (+ (Kv1_amf Vrest cma cva cka temp_adj)
    40                                                       (Kv1_bmf Vrest cmb cvb ckb temp_adj))))
     39                                     (initial-m (/ (Kv1_amf Vrest) (+ (Kv1_amf Vrest) (Kv1_bmf Vrest))))
    4140                                     (m-power   4)
    4241                                     (h-power   0)
    43                                      (m-alpha   (Kv1_amf v cma cva cka temp_adj) )
    44                                      (m-beta    (Kv1_bmf v cmb cvb ckb temp_adj) )))
    45                                    
    46                                    )
     42                                     (m-alpha   (* temp_adj (Kv1_amf v) ))
     43                                     (m-beta    (* temp_adj (Kv1_bmf v) )))
     44                                   
     45                                    ))
     46
     47
    4748                       
    4849                        (component (type pore)
     
    5758             
    5859             
    59              (component (type ion-channel) ;; Kv4 current
    60 
    61                         (component (type gate)
    62                                    
    63                                    ;; rate functions
    64                                    
    65                                    (const can   = 0.15743)
    66                                    (const ckan  = -32.19976)
    67                                    (const cvan  = 57)
    68                                    
    69                                    (defun Kv4_amf (v can cvan ckan temp_adj) 
    70                                      (* temp_adj can (exp (neg (/ (+ v cvan) ckan)))))
    71                                    
    72                                    (const  cbn   = 0.15743)
    73                                    (const  ckbn  = 37.51346)
    74                                    (const  cvbn  = 57)
    75 
    76             (defun Kv4_bmf (v cbn cvbn ckbn temp_adj)  (* temp_adj cbn (exp (neg (/ (+ v cvbn) ckbn)))))
    77 
    78             (const cah   = 0.01342)
    79             (const ckah  = -7.86476)
    80             (const cvah  = 60)
    81 
    82             (defun Kv4_ahf (v cah cvah ckah temp_adj)  (* temp_adj (/ cah (+ 1.0 (exp (neg (/ (+ v cvah) ckah)))))))
    83 
    84             (const  cbh   = 0.04477)
    85             (const  ckbh  = 11.3615)
    86             (const  cvbh  = 54)
    87 
    88             (defun Kv4_bhf (v cbh cvbh ckbh temp_adj)  (* temp_adj (/ cbh (+ 1.0 (exp (neg (/ (+ v cvbh) ckbh)))))))
    89 
    90 
    91             (hh-ionic-conductance
    92              (Kv4  ;; ion name: exported variables will be of the form {ion}_{id}
    93               (initial-m (/ (Kv4_amf Vrest can cvan ckan temp_adj)
    94                             (+ (Kv4_amf Vrest can cvan ckan temp_adj)
    95                                (Kv4_bmf Vrest cbn cvbn ckbn temp_adj))))
    96               (initial-h (/ (Kv4_ahf Vrest cah cvh ckah temp_adj)
    97                             (+ (Kv4_ahf Vrest cah cvh ckah temp_adj)
    98                                (Kv4_bhf Vrest cbh cvbh ckbh temp_adj))) )
    99               (m-power   4)
    100               (h-power   1)
    101               (m-alpha   (Kv4_amf v can cvan ckan temp_adj))
    102               (m-beta    (Kv4_bmf v cbn cvbn ckbn temp_adj))
    103               (h-alpha   (Kv4_ahf v cah cvh ckah temp_adj))
    104               (h-beta    (Kv4_bhf v cbh cvbh ckbh temp_adj))
    105               ))
    106              
    107             )
    108 
    109          (component (type pore)
    110             (const  gbar_Kv4  = 0.0039)
    111             (output gbar_Kv4 ))
    112 
    113          (component (type permeating-substance) (name k)
    114            (const e_Kv4 = -85)
    115            (output e_Kv4 ))
    116 
    117          ) ;; end Kv4 current
    118 
    119 
    120        (component (type ion-channel) ;; Ih current
    121 
    122          (component (type gate)
    123                  
    124             ;; rate functions
    125 
    126             (const cvn =  90.1)
    127             (const ckn =  -9.9)
    128             (defun Ih_inf (v cvn ckn)   (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cvn) ckn) )))))
     60             (component (type ion-channel) (name Kv4)
     61
     62                        (component (type gate)
     63                                   
     64                                   ;; rate functions
     65                                   
     66                                   
     67                                   (defun Kv4_amf (v) 
     68                                     (let ((can    0.15743)
     69                                           (ckan   -32.19976)
     70                                           (cvan   57))
     71                                       (* can (exp (neg (/ (+ v cvan) ckan))))))
     72                                   
     73
     74                                   (defun Kv4_bmf (v) 
     75                                     (let ((cbn   0.15743)
     76                                           (ckbn  37.51346)
     77                                           (cvbn  57))
     78                                       (* cbn (exp (neg (/ (+ v cvbn) ckbn))))))
     79
     80                                   
     81                                   (defun Kv4_ahf (v) 
     82                                     (let ((cah   0.01342)
     83                                           (ckah  -7.86476)
     84                                           (cvah  60))
     85                                       (/ cah (+ 1.0 (exp (neg (/ (+ v cvah) ckah)))))))
     86
     87                                   
     88                                   (defun Kv4_bhf (v) 
     89                                     (let ((cbh   0.04477)
     90                                           (ckbh  11.3615)
     91                                           (cvbh  54))
     92                                       (/ cbh (+ 1.0 (exp (neg (/ (+ v cvbh) ckbh)))))))
     93
     94                                   (hh-ionic-conductance
     95                                    (Kv4  ;; ion name: exported variables will be of the form {ion}_{id}
     96                                     (initial-m (/ (Kv4_amf Vrest) (+ (Kv4_amf Vrest) (Kv4_bmf Vrest))))
     97                                     (initial-h (/ (Kv4_ahf Vrest)  (+ (Kv4_ahf Vrest) (Kv4_bhf Vrest))) )
     98                                     (m-power   4)
     99                                     (h-power   1)
     100                                     (m-alpha   (* temp_adj (Kv4_amf v)))
     101                                     (m-beta    (* temp_adj (Kv4_bmf v)))
     102                                     (h-alpha   (* temp_adj (Kv4_ahf v)))
     103                                     (h-beta    (* temp_adj (Kv4_bhf v)))
     104                                     ))
     105                                   
     106                                   )
     107
     108                        (component (type pore)
     109                                   (const  gbar_Kv4  = 0.0039)
     110                                   (output gbar_Kv4 ))
     111                       
     112                        (component (type permeating-substance) (name k)
     113                                   (const e_Kv4 = -85)
     114                                   (output e_Kv4 ))
     115                       
     116                        ) ;; end Kv4 current
     117             
     118             
     119             (component (type ion-channel) (name Ih)
     120                       
     121                        (component (type gate)
     122                                   
     123                                   ;; rate functions
     124                                   
     125                                   (defun Ih_inf (v)
     126                                     (let ((cvn   90.1)
     127                                           (ckn   -9.9))
     128                                       (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cvn) ckn) ))))))
     129                                   
     130                                   (defun Ih_tau (v)   
     131                                     (let ((cct  190)
     132                                           (cat  720)
     133                                           (cvt  81.5)
     134                                           (ckt  11.9))
     135                                       (+ cct (* cat (exp (neg (pow (/ (+ v cvt) ckt) 2)))))))
     136                                   
     137                                   (hh-ionic-conductance
     138                                    (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
     139                                     (initial-m (Ih_inf Vrest))
     140                                     (m-power   1)
     141                                     (h-power   0)
     142                                     (m-inf     (Ih_inf v))
     143                                     (m-tau     (/ temp_adj (Ih_tau v)))
     144                                     ))
     145                                   
     146                                   )
     147
     148                        (component (type pore)
     149                                   (const  gbar_Ih  = 0.2)
     150                                   (output gbar_Ih ))
     151                       
     152                        (component (type permeating-substance) (name non-specific)
     153                                   (const e_Ih = -30)
     154                                   (output e_Ih ))
     155                       
     156                        ) ;; end Ih current
     157
     158             (component (type ion-channel) (name CaP)
     159                       
     160                        (component (type gate)
     161                                   
     162                                   ;; rate functions
     163                                   (defun CaP_inf (v) 
     164                                     (let ((cv  19)
     165                                           (ck  5.5))
     166                                       (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cv) ck)))))))
     167                                   
     168                                   (defun CaP_tau (v temp_adj) 
     169                                     (if (> v -50)
     170                                         (* 1e3 (+ 0.000191 (* 0.00376 (pow (exp (neg (/ (+ v 41.9) 27.8)))  2))))
     171                                         (* 1e3 (+ 0.00026367 (* 0.1278 (exp (* 0.10327 v)))))))
     172
     173                                   (hh-ionic-conductance
     174                                    (CaP  ;; ion name: exported variables will be of the form {ion}_{id}
     175                                     (initial-m  (CaP_inf Vrest))
     176                                     (m-power    1)
     177                                     (h-power    0)
     178                                     (m-inf      (CaP_inf v))
     179                                     (m-tau      (/ (CaP_tau v) temp_adj))))
     180                                   
     181                                   )
     182
     183                        (component (type pore)
     184                                   (const gmax_CaP  = 0.01667)
     185                                   (gbar_CaP = (* gmax_CaP (ghk v celsius cai cao)))
     186                                   (output gbar_CaP ))
     187                       
     188                        (component (type accumulating-substance) (name ca) )
     189                       
     190                       
     191                        ) ;; end CaP current
     192
     193             
     194             (component (type ion-channel) (name CaBK)
     195                       
     196                        (component (type gate)
     197                                   
     198                                   ;; rate functions
     199                                   
     200                                   (defun CaBK_zinf (ca) 
     201                                     (let ((zhalf 0.001))
     202                                       (/ 1 (+ 1 (/ zhalf ca)))))
     203
     204                                   (const CaBK_ztau = 1.0)
     205                                   
     206                                   (defun CaBK_minf (v)
     207                                     (let ((cvm  28.9)
     208                                           (ckm  6.2))
     209                                       (/ 1.0 (+ 1.0 (exp (neg (/ (+ v 5.0 cvm) ckm)))))))
     210                                   
     211                                   (defun CaBK_mtau (v)
     212                                     (let ((ctm     0.000505)
     213                                           (cvtm1   86.4)
     214                                           (cktm1   -10.1)
     215                                           (cvtm2   -33.3)
     216                                           (cktm2   10))
     217                                       (+ ctm (/ 1.0 (+ (exp (neg (/ (+ v 5.0 cvtm1) cktm1)))
     218                                                        (exp (neg (/ (+ v 5.0 cvtm2) cktm2))))))))
    129219           
    130             (const cct = 190)
    131             (const cat = 720)
    132             (const cvt = 81.5)
    133             (const ckt = 11.9)
    134 
    135             (defun Ih_tau (v cct cat cvt ckt temp_adj)   
    136               (/ (+ cct (* cat (exp (neg (pow (/ (+ v cvt) ckt) 2))))) temp_adj))
    137 
    138             (hh-ionic-conductance
    139              (Ih  ;; ion name: exported variables will be of the form {ion}_{id}
    140               (initial-m (Ih_inf Vrest cvn ckn))
    141               (m-power   1)
    142               (h-power   0)
    143               (m-inf     (Ih_inf v cvn ckn))
    144               (m-tau     (Ih_tau v cct cat cvt ckt temp_adj))
    145               ))
    146              
    147             )
    148 
    149          (component (type pore)
    150             (const  gbar_Ih  = 0.2)
    151             (output gbar_Ih ))
    152 
    153          (component (type permeating-substance) (name non-specific)
    154            (const e_Ih = -30)
    155            (output e_Ih ))
    156 
    157          ) ;; end Ih current
    158 
    159        (component (type ion-channel) ;; CaP current
    160 
    161          (component (type gate)
    162                  
    163             ;; rate functions
    164 
    165             (const cv = 19)
    166             (const ck = 5.5)
    167 
    168             (defun CaP_inf (v cv ck)  (/ 1.0 (+ 1.0 (exp (neg (/ (+ v cv) ck))))))
    169 
    170             (defun CaP_tau (v temp_adj) 
    171               (/ (if (> v -50) (* 1e3 (+ 0.000191 (* 0.00376 (pow (exp (neg (/ (+ v 41.9) 27.8)))  2))))
    172                      (* 1e3 (+ 0.00026367 (* 0.1278 (exp (* 0.10327 v)))))) temp_adj))
    173 
    174             (hh-ionic-conductance
    175              (CaP  ;; ion name: exported variables will be of the form {ion}_{id}
    176               (initial-m  (CaP_inf Vrest cv ck))
    177               (m-power    1)
    178               (h-power    0)
    179               (m-inf      (CaP_inf v cv ck))
    180               (m-tau      (CaP_tau v temp_adj))))
    181              
    182             )
    183 
    184          (component (type pore)
    185             (const gmax_CaP  = 0.01667)
    186             (gbar_CaP = (* gmax_CaP (ghk v celsius cai cao)))
    187             (output gbar_CaP ))
    188 
    189          (component (type accumulating-substance) (name ca) )
    190                    
    191 
    192          ) ;; end CaP current
    193 
    194 
    195        (component (type ion-channel) ;; BK current
    196 
    197          (component (type gate)
    198                  
    199             ;; rate functions
    200 
    201             (const zhalf = 0.001)
    202             (defun CaBK_zinf (ca zhalf)  (/ 1 (+ 1 (/ zhalf ca))))
    203             (const CaBK_ztau = (/ 1.0 temp_adj))
    204 
    205             (const cvm = 28.9)
    206             (const ckm = 6.2)
    207             (defun CaBK_minf (v cvm ckm temp_adj)
    208               (/ (/ 1.0 (+ 1.0 (exp (neg (/ (+ v 5.0 cvm) ckm)))))
    209                  temp_adj))
     220                                   (defun CaBK_hinf (v)
     221                                     (let ((ch    0.085)
     222                                           (cvh   32)
     223                                           (ckh   -5.8))
     224                                       (+ ch (/ (- 1.0 ch) (+ 1.0 (exp (neg (/ (+ v 5.0 cvh) ckh))))))))
     225                                   
     226                                   (defun CaBK_htau (v)
     227                                     (let ((cth     0.0019)
     228                                           (cvth1   48.5)
     229                                           (ckth1   -5.2)
     230                                           (cvth2   -54.2)
     231                                           (ckth2   12.9))
     232                                       (+ cth (/ 1.0 ( + (exp (- (/ (+ v cvth1) ckth1)))
     233                                                         (exp (- (/ (+ v cvth2) ckth2))))))))
     234                                   
     235                                   (state-complex
     236                                    (CaBK_z
     237                                     (transitions (-> zC zO  (/ (CaBK_zinf cai) CaBK_ztau))
     238                                                  (-> zO zC  (/ (- 1 (CaBK_zinf cai)) CaBK_ztau)))
     239                                     (initial   (CaBK_zinf 1e-4))
     240                                     (open zO)  (power 2)))
     241                                   
     242                                   (output CaBK_z ) 
     243
    210244           
    211             (const ctm    = 0.000505)
    212             (const cvtm1  = 86.4)
    213             (const cktm1  = -10.1)
    214             (const cvtm2  = -33.3)
    215             (const cktm2  = 10)
    216             (defun CaBK_mtau (v ctm cvtm1 cktm1 cvtm2 cktm2 temp_adj)
    217               (/ (+ ctm (/ 1.0 (+ (exp (neg (/ (+ v 5.0 cvtm1) cktm1)))
    218                                   (exp (neg (/ (+ v 5.0 cvtm2) cktm2))))))
    219                  temp_adj))
    220            
    221             (const ch   = 0.085)
    222             (const cvh  = 32)
    223             (const ckh  = -5.8)
    224             (defun CaBK_hinf (v ch cvh ckh temp_adj)
    225               (/ (+ ch (/ (- 1.0 ch) (+ 1.0 (exp (neg (/ (+ v 5.0 cvh) ckh))))))
    226                  temp_adj))
    227 
    228             (const cth    = 0.0019)
    229             (const cvth1  = 48.5)
    230             (const ckth1  = -5.2)
    231             (const cvth2  = -54.2)
    232             (const ckth2  = 12.9)
    233             (defun CaBK_htau (v cth ckth1 ckth2 cvth1 cvth2 temp_adj)
    234               (/ (+ cth (/ 1.0 ( + (exp (- (/ (+ v cvth1) ckth1)))
    235                                    (exp (- (/ (+ v cvth2) ckth2))))))
    236                  temp_adj))
    237            
    238            
    239             (state-complex (CaBK_z (transitions (-> zC zO  (/ (CaBK_zinf cai zhalf) CaBK_ztau))
    240                                                 (-> zO zC  (/ (- 1 (CaBK_zinf cai zhalf)) CaBK_ztau)))
    241                                    (initial   (CaBK_zinf 1e-4 zhalf))
    242                                    (open zO)  (power 2)))
    243            
    244             (output CaBK_z ) 
    245 
    246            
    247             (hh-ionic-conductance
    248              (CaBK  ;; ion name: exported variables will be of the form {ion}_{id}
    249               (initial-m  (CaBK_minf Vrest cvm ckm temp_adj ))
    250               (initial-h  (CaBK_hinf Vrest ch cvh ckh temp_adj ))
    251               (m-power    3)
    252               (h-power    1)
    253               (m-inf      (CaBK_minf v cvm ckm temp_adj) )
    254               (m-tau      (CaBK_mtau v ctm cvtm1 cktm1 cvtm2 cktm2 temp_adj) )
    255               (h-inf      (CaBK_hinf v ch cvh ckh temp_adj) )
    256               (h-tau      (CaBK_htau v cth cvth1 ckth1 cvth2 cvth2 temp_adj) )))
    257 
    258             )
    259 
    260          (component (type pore)
    261             (const  gbar_CaBK  = 0.014)
    262             (output gbar_CaBK ))
    263 
    264          (component (type permeating-substance) (name k)
    265            (const e_CaBK = -85)
    266            (output e_CaBK ))
    267 
    268          ) ;; end BK current
    269 
    270 
    271 
    272        )) ;; end model
     245                                   (hh-ionic-conductance
     246                                    (CaBK  ;; ion name: exported variables will be of the form {ion}_{id}
     247                                     (initial-m  (/ (CaBK_minf Vrest) temp_adj))
     248                                     (initial-h  (/ (CaBK_hinf Vrest) temp_adj ))
     249                                     (m-power    3)
     250                                     (h-power    1)
     251                                     (m-inf      (/ (CaBK_minf v) temp_adj ))
     252                                     (m-tau      (/ (CaBK_mtau v) temp_adj ))
     253                                     (h-inf      (/ (CaBK_hinf v) temp_adj) )
     254                                     (h-tau      (/ (CaBK_htau v) temp_adj) )))
     255                                   
     256                                   )
     257                       
     258                        (component (type pore)
     259                                   (const  gbar_CaBK  = 0.014)
     260                                   (output gbar_CaBK ))
     261                       
     262                        (component (type permeating-substance) (name k)
     263                                   (const e_CaBK = -85)
     264                                   (output e_CaBK ))
     265                       
     266                        ) ;; end BK current
     267             
     268             
     269             
     270             )) ;; end model
  • release/3/nemo/trunk/examples/AKP06/PotIhCa.sxml

    r11977 r11995  
    6464                    (ncml:neg (ncml:exp (ncml:neg (ncml:id zeta)))))))))))))
    6565  (ncml:component
    66     (@ (name comp2) (type ion-channel))
     66    (@ (name Kv1) (type ion-channel))
    6767    (ncml:component
    6868      (@ (name comp0) (type gate))
    69       (ncml:const (@ (id cma)) (ncml:expr 0.12889))
    70       (ncml:const (@ (id cka)) (ncml:expr -33.90877))
    71       (ncml:const (@ (id cva)) (ncml:expr 45.0))
    7269      (ncml:defun
    7370        (@ (id Kv1_amf))
    7471        (ncml:arg v)
    75         (ncml:arg cma)
    76         (ncml:arg cva)
    77         (ncml:arg cka)
    78         (ncml:arg temp_adj)
    79         (ncml:body
    80           (ncml:mul
    81             (ncml:mul (ncml:id temp_adj) (ncml:id cma))
    82             (ncml:exp
    83               (ncml:neg
    84                 (ncml:div
    85                   (ncml:sum (ncml:id v) (ncml:id cva))
    86                   (ncml:id cka)))))))
    87       (ncml:const (@ (id cmb)) (ncml:expr 0.12889))
    88       (ncml:const (@ (id ckb)) (ncml:expr 12.42101))
    89       (ncml:const (@ (id cvb)) (ncml:expr 45.0))
     72        (ncml:body
     73          (ncml:let
     74            (ncml:bnds
     75              (ncml:bnd (@ (id cma)) (ncml:expr 0.12889))
     76              (ncml:bnd (@ (id cka)) (ncml:expr -33.90877))
     77              (ncml:bnd (@ (id cva)) (ncml:expr 45.0)))
     78            (ncml:expr
     79              (ncml:mul
     80                (ncml:id cma)
     81                (ncml:exp
     82                  (ncml:neg
     83                    (ncml:div
     84                      (ncml:sum (ncml:id v) (ncml:id cva))
     85                      (ncml:id cka)))))))))
    9086      (ncml:defun
    9187        (@ (id Kv1_bmf))
    9288        (ncml:arg v)
    93         (ncml:arg cmb)
    94         (ncml:arg cvb)
    95         (ncml:arg ckb)
    96         (ncml:arg temp_adj)
    97         (ncml:body
    98           (ncml:mul
    99             (ncml:mul (ncml:id temp_adj) (ncml:id cmb))
    100             (ncml:exp
    101               (ncml:neg
    102                 (ncml:div
    103                   (ncml:sum (ncml:id v) (ncml:id cvb))
    104                   (ncml:id ckb)))))))
     89        (ncml:body
     90          (ncml:let
     91            (ncml:bnds
     92              (ncml:bnd (@ (id cmb)) (ncml:expr 0.12889))
     93              (ncml:bnd (@ (id ckb)) (ncml:expr 12.42101))
     94              (ncml:bnd (@ (id cvb)) (ncml:expr 45.0)))
     95            (ncml:expr
     96              (ncml:mul
     97                (ncml:id cmb)
     98                (ncml:exp
     99                  (ncml:neg
     100                    (ncml:div
     101                      (ncml:sum (ncml:id v) (ncml:id cvb))
     102                      (ncml:id ckb)))))))))
    105103      (ncml:state_complex
    106104        (@ (id Kv1_m))
     
    111109            (@ (src Kv1_mC) (dst Kv1_mO))
    112110            (ncml:rate
    113               (ncml:apply
    114                 (@ (id Kv1_amf))
    115                 (ncml:id v)
    116                 (ncml:id cma)
    117                 (ncml:id cva)
    118                 (ncml:id cka)
    119                 (ncml:id temp_adj))))
     111              (ncml:mul
     112                (ncml:id temp_adj)
     113                (ncml:apply (@ (id Kv1_amf)) (ncml:id v)))))
    120114          (ncml:transition
    121115            (@ (src Kv1_mO) (dst Kv1_mC))
    122116            (ncml:rate
    123               (ncml:apply
    124                 (@ (id Kv1_bmf))
    125                 (ncml:id v)
    126                 (ncml:id cmb)
    127                 (ncml:id cvb)
    128                 (ncml:id ckb)
    129                 (ncml:id temp_adj)))))
     117              (ncml:mul
     118                (ncml:id temp_adj)
     119                (ncml:apply (@ (id Kv1_bmf)) (ncml:id v))))))
    130120        (ncml:power 4.0))
    131121      (ncml:output (@ (id Kv1_m))))
     
    136126    (ncml:component
    137127      (@ (name k) (type permeating-substance))
    138       (ncml:const (@ (id e_CaBK)) (ncml:expr -85.0))
    139       (ncml:output (@ (id e_CaBK)))))
     128      (ncml:const (@ (id e_Kv1)) (ncml:expr -85.0))
     129      (ncml:output (@ (id e_Kv1)))))
    140130  (ncml:component
    141     (@ (name comp5) (type ion-channel))
    142     (ncml:component
    143       (@ (name comp3) (type gate))
    144       (ncml:const (@ (id can)) (ncml:expr 0.15743))
    145       (ncml:const (@ (id ckan)) (ncml:expr -32.19976))
    146       (ncml:const (@ (id cvan)) (ncml:expr 57.0))
     131    (@ (name Kv4) (type ion-channel))
     132    (ncml:component
     133      (@ (name comp4) (type gate))
    147134      (ncml:defun
    148135        (@ (id Kv4_amf))
    149136        (ncml:arg v)
    150         (ncml:arg can)
    151         (ncml:arg cvan)
    152         (ncml:arg ckan)
    153         (ncml:arg temp_adj)
    154         (ncml:body
    155           (ncml:mul
    156             (ncml:mul (ncml:id temp_adj) (ncml:id can))
    157             (ncml:exp
    158               (ncml:neg
    159                 (ncml:div
    160                   (ncml:sum (ncml:id v) (ncml:id cvan))
    161                   (ncml:id ckan)))))))
    162       (ncml:const (@ (id cbn)) (ncml:expr 0.15743))
    163       (ncml:const (@ (id ckbn)) (ncml:expr 37.51346))
    164       (ncml:const (@ (id cvbn)) (ncml:expr 57.0))
    165       (ncml:defun
    166         (@ (id Kv4_bmf))
    167         (ncml:arg v)
    168         (ncml:arg cbn)
    169         (ncml:arg cvbn)
    170         (ncml:arg ckbn)
    171         (ncml:arg temp_adj)
    172         (ncml:body
    173           (ncml:mul
    174             (ncml:mul (ncml:id temp_adj) (ncml:id cbn))
    175             (ncml:exp
    176               (ncml:neg
    177                 (ncml:div
    178                   (ncml:sum (ncml:id v) (ncml:id cvbn))
    179                   (ncml:id ckbn)))))))
    180       (ncml:const (@ (id cah)) (ncml:expr 0.01342))
    181       (ncml:const (@ (id ckah)) (ncml:expr -7.86476))
    182       (ncml:const (@ (id cvah)) (ncml:expr 60.0))
    183       (ncml:defun
    184         (@ (id Kv4_ahf))
    185         (ncml:arg v)
    186         (ncml:arg cah)
    187         (ncml:arg cvah)
    188         (ncml:arg ckah)
    189         (ncml:arg temp_adj)
    190         (ncml:body
    191           (ncml:mul
    192             (ncml:id temp_adj)
    193             (ncml:div
    194               (ncml:id cah)
    195               (ncml:sum
    196                 1.0
     137        (ncml:body
     138          (ncml:let
     139            (ncml:bnds
     140              (ncml:bnd (@ (id can)) (ncml:expr 0.15743))
     141              (ncml:bnd (@ (id ckan)) (ncml:expr -32.19976))
     142              (ncml:bnd (@ (id cvan)) (ncml:expr 57.0)))
     143            (ncml:expr
     144              (ncml:mul
     145                (ncml:id can)
    197146                (ncml:exp
    198147                  (ncml:neg
    199148                    (ncml:div
    200                       (ncml:sum (ncml:id v) (ncml:id cvah))
    201                       (ncml:id ckah)))))))))
    202       (ncml:const (@ (id cbh)) (ncml:expr 0.04477))
    203       (ncml:const (@ (id ckbh)) (ncml:expr 11.3615))
    204       (ncml:const (@ (id cvbh)) (ncml:expr 54.0))
    205       (ncml:defun
    206         (@ (id Kv4_bhf))
    207         (ncml:arg v)
    208         (ncml:arg cbh)
    209         (ncml:arg cvbh)
    210         (ncml:arg ckbh)
    211         (ncml:arg temp_adj)
    212         (ncml:body
    213           (ncml:mul
    214             (ncml:id temp_adj)
    215             (ncml:div
    216               (ncml:id cbh)
    217               (ncml:sum
    218                 1.0
     149                      (ncml:sum (ncml:id v) (ncml:id cvan))
     150                      (ncml:id ckan)))))))))
     151      (ncml:defun
     152        (@ (id Kv4_bmf))
     153        (ncml:arg v)
     154        (ncml:body
     155          (ncml:let
     156            (ncml:bnds
     157              (ncml:bnd (@ (id cbn)) (ncml:expr 0.15743))
     158              (ncml:bnd (@ (id ckbn)) (ncml:expr 37.51346))
     159              (ncml:bnd (@ (id cvbn)) (ncml:expr 57.0)))
     160            (ncml:expr
     161              (ncml:mul
     162                (ncml:id cbn)
    219163                (ncml:exp
    220164                  (ncml:neg
    221165                    (ncml:div
    222                       (ncml:sum (ncml:id v) (ncml:id cvbh))
    223                       (ncml:id ckbh)))))))))
     166                      (ncml:sum (ncml:id v) (ncml:id cvbn))
     167                      (ncml:id ckbn)))))))))
     168      (ncml:defun
     169        (@ (id Kv4_ahf))
     170        (ncml:arg v)
     171        (ncml:body
     172          (ncml:let
     173            (ncml:bnds
     174              (ncml:bnd (@ (id cah)) (ncml:expr 0.01342))
     175              (ncml:bnd (@ (id ckah)) (ncml:expr -7.86476))
     176              (ncml:bnd (@ (id cvah)) (ncml:expr 60.0)))
     177            (ncml:expr
     178              (ncml:div
     179                (ncml:id cah)
     180                (ncml:sum
     181                  1.0
     182                  (ncml:exp
     183                    (ncml:neg
     184                      (ncml:div
     185                        (ncml:sum (ncml:id v) (ncml:id cvah))
     186                        (ncml:id ckah))))))))))
     187      (ncml:defun
     188        (@ (id Kv4_bhf))
     189        (ncml:arg v)
     190        (ncml:body
     191          (ncml:let
     192            (ncml:bnds
     193              (ncml:bnd (@ (id cbh)) (ncml:expr 0.04477))
     194              (ncml:bnd (@ (id ckbh)) (ncml:expr 11.3615))
     195              (ncml:bnd (@ (id cvbh)) (ncml:expr 54.0)))
     196            (ncml:expr
     197              (ncml:div
     198                (ncml:id cbh)
     199                (ncml:sum
     200                  1.0
     201                  (ncml:exp
     202                    (ncml:neg
     203                      (ncml:div
     204                        (ncml:sum (ncml:id v) (ncml:id cvbh))
     205                        (ncml:id ckbh))))))))))
    224206      (ncml:state_complex
    225207        (@ (id Kv4_m))
     
    230212            (@ (src Kv4_mC) (dst Kv4_mO))
    231213            (ncml:rate
    232               (ncml:apply
    233                 (@ (id Kv4_amf))
    234                 (ncml:id v)
    235                 (ncml:id can)
    236                 (ncml:id cvan)
    237                 (ncml:id ckan)
    238                 (ncml:id temp_adj))))
     214              (ncml:mul
     215                (ncml:id temp_adj)
     216                (ncml:apply (@ (id Kv4_amf)) (ncml:id v)))))
    239217          (ncml:transition
    240218            (@ (src Kv4_mO) (dst Kv4_mC))
    241219            (ncml:rate
    242               (ncml:apply
    243                 (@ (id Kv4_bmf))
    244                 (ncml:id v)
    245                 (ncml:id cbn)
    246                 (ncml:id cvbn)
    247                 (ncml:id ckbn)
    248                 (ncml:id temp_adj)))))
     220              (ncml:mul
     221                (ncml:id temp_adj)
     222                (ncml:apply (@ (id Kv4_bmf)) (ncml:id v))))))
    249223        (ncml:power 4.0))
    250224      (ncml:state_complex
    251225        (@ (id Kv4_h))
    252226        (ncml:open Kv4_hO)
    253         (ncml:initial 0.567859615479398)
     227        (ncml:initial 0.493672083654485)
    254228        (ncml:transitions
    255229          (ncml:transition
    256230            (@ (src Kv4_hC) (dst Kv4_hO))
    257231            (ncml:rate
    258               (ncml:apply
    259                 (@ (id Kv4_ahf))
    260                 (ncml:id v)
    261                 (ncml:id cah)
    262                 (ncml:id cvh)
    263                 (ncml:id ckah)
    264                 (ncml:id temp_adj))))
     232              (ncml:mul
     233                (ncml:id temp_adj)
     234                (ncml:apply (@ (id Kv4_ahf)) (ncml:id v)))))
    265235          (ncml:transition
    266236            (@ (src Kv4_hO) (dst Kv4_hC))
    267237            (ncml:rate
    268               (ncml:apply
    269                 (@ (id Kv4_bhf))
    270                 (ncml:id v)
    271                 (ncml:id cbh)
    272                 (ncml:id cvbh)
    273                 (ncml:id ckbh)
    274                 (ncml:id temp_adj)))))
     238              (ncml:mul
     239                (ncml:id temp_adj)
     240                (ncml:apply (@ (id Kv4_bhf)) (ncml:id v))))))
    275241        (ncml:power 1.0))
    276242      (ncml:output (@ (id Kv4_m)))
    277243      (ncml:output (@ (id Kv4_h))))
    278244    (ncml:component
    279       (@ (name comp4) (type pore))
     245      (@ (name comp5) (type pore))
    280246      (ncml:const (@ (id gbar_Kv4)) (ncml:expr 0.0039))
    281247      (ncml:output (@ (id gbar_Kv4))))
    282248    (ncml:component
    283249      (@ (name k) (type permeating-substance))
    284       (ncml:const (@ (id e_CaBK)) (ncml:expr -85.0))
    285       (ncml:output (@ (id e_CaBK)))))
     250      (ncml:const (@ (id e_Kv4)) (ncml:expr -85.0))
     251      (ncml:output (@ (id e_Kv4)))))
    286252  (ncml:component
    287     (@ (name comp8) (type ion-channel))
    288     (ncml:component
    289       (@ (name comp6) (type gate))
    290       (ncml:const (@ (id cvn)) (ncml:expr 90.1))
    291       (ncml:const (@ (id ckn)) (ncml:expr -9.9))
     253    (@ (name Ih) (type ion-channel))
     254    (ncml:component
     255      (@ (name comp8) (type gate))
    292256      (ncml:defun
    293257        (@ (id Ih_inf))
    294258        (ncml:arg v)
    295         (ncml:arg cvn)
    296         (ncml:arg ckn)
    297         (ncml:body
    298           (ncml:div
    299             1.0
    300             (ncml:sum
    301               1.0
    302               (ncml:exp
    303                 (ncml:neg
    304                   (ncml:div
    305                     (ncml:sum (ncml:id v) (ncml:id cvn))
    306                     (ncml:id ckn))))))))
    307       (ncml:const (@ (id cct)) (ncml:expr 190.0))
    308       (ncml:const (@ (id cat)) (ncml:expr 720.0))
    309       (ncml:const (@ (id cvt)) (ncml:expr 81.5))
    310       (ncml:const (@ (id ckt)) (ncml:expr 11.9))
     259        (ncml:body
     260          (ncml:let
     261            (ncml:bnds
     262              (ncml:bnd (@ (id cvn)) (ncml:expr 90.1))
     263              (ncml:bnd (@ (id ckn)) (ncml:expr -9.9)))
     264            (ncml:expr
     265              (ncml:div
     266                1.0
     267                (ncml:sum
     268                  1.0
     269                  (ncml:exp
     270                    (ncml:neg
     271                      (ncml:div
     272                        (ncml:sum (ncml:id v) (ncml:id cvn))
     273                        (ncml:id ckn))))))))))
    311274      (ncml:defun
    312275        (@ (id Ih_tau))
    313276        (ncml:arg v)
    314         (ncml:arg cct)
    315         (ncml:arg cat)
    316         (ncml:arg cvt)
    317         (ncml:arg ckt)
    318         (ncml:arg temp_adj)
    319         (ncml:body
    320           (ncml:div
    321             (ncml:sum
    322               (ncml:id cct)
    323               (ncml:mul
    324                 (ncml:id cat)
    325                 (ncml:exp
    326                   (ncml:neg
    327                     (ncml:pow
    328                       (ncml:div
    329                         (ncml:sum (ncml:id v) (ncml:id cvt))
    330                         (ncml:id ckt))
    331                       2.0)))))
    332             (ncml:id temp_adj))))
     277        (ncml:body
     278          (ncml:let
     279            (ncml:bnds
     280              (ncml:bnd (@ (id cct)) (ncml:expr 190.0))
     281              (ncml:bnd (@ (id cat)) (ncml:expr 720.0))
     282              (ncml:bnd (@ (id cvt)) (ncml:expr 81.5))
     283              (ncml:bnd (@ (id ckt)) (ncml:expr 11.9)))
     284            (ncml:expr
     285              (ncml:sum
     286                (ncml:id cct)
     287                (ncml:mul
     288                  (ncml:id cat)
     289                  (ncml:exp
     290                    (ncml:neg
     291                      (ncml:pow
     292                        (ncml:div
     293                          (ncml:sum (ncml:id v) (ncml:id cvt))
     294                          (ncml:id ckt))
     295                        2.0)))))))))
    333296      (ncml:state_complex
    334297        (@ (id Ih_m))
     
    340303            (ncml:rate
    341304              (ncml:div
    342                 (ncml:apply
    343                   (@ (id Ih_inf))
    344                   (ncml:id v)
    345                   (ncml:id cvn)
    346                   (ncml:id ckn))
    347                 (ncml:apply
    348                   (@ (id Ih_tau))
    349                   (ncml:id v)
    350                   (ncml:id cct)
    351                   (ncml:id cat)
    352                   (ncml:id cvt)
    353                   (ncml:id ckt)
    354                   (ncml:id temp_adj)))))
     305                (ncml:apply (@ (id Ih_inf)) (ncml:id v))
     306                (ncml:div
     307                  (ncml:id temp_adj)
     308                  (ncml:apply (@ (id Ih_tau)) (ncml:id v))))))
    355309          (ncml:transition
    356310            (@ (src Ih_mO) (dst Ih_mC))
     
    359313                (ncml:sum
    360314                  1.0
    361                   (ncml:neg
    362                     (ncml:apply
    363                       (@ (id Ih_inf))
    364                       (ncml:id v)
    365                       (ncml:id cvn)
    366                       (ncml:id ckn))))
    367                 (ncml:apply
    368                   (@ (id Ih_tau))
    369                   (ncml:id v)
    370                   (ncml:id cct)
    371                   (ncml:id cat)
    372                   (ncml:id cvt)
    373                   (ncml:id ckt)
    374                   (ncml:id temp_adj))))))
     315                  (ncml:neg (ncml:apply (@ (id Ih_inf)) (ncml:id v))))
     316                (ncml:div
     317                  (ncml:id temp_adj)
     318                  (ncml:apply (@ (id Ih_tau)) (ncml:id v)))))))
    375319        (ncml:power 1.0))
    376320      (ncml:output (@ (id Ih_m))))
    377321    (ncml:component
    378       (@ (name comp7) (type pore))
     322      (@ (name comp9) (type pore))
    379323      (ncml:const (@ (id gbar_Ih)) (ncml:expr 0.2))
    380324      (ncml:output (@ (id gbar_Ih))))
     
    384328      (ncml:output (@ (id e_Ih)))))
    385329  (ncml:component
    386     (@ (name comp11) (type ion-channel))
    387     (ncml:component
    388       (@ (name comp9) (type gate))
    389       (ncml:const (@ (id cv)) (ncml:expr 19.0))
    390       (ncml:const (@ (id ck)) (ncml:expr 5.5))
     330    (@ (name CaP) (type ion-channel))
     331    (ncml:component
     332      (@ (name comp12) (type gate))
    391333      (ncml:defun
    392334        (@ (id CaP_inf))
    393335        (ncml:arg v)
    394         (ncml:arg cv)
    395         (ncml:arg ck)
    396         (ncml:body
    397           (ncml:div
    398             1.0
    399             (ncml:sum
    400               1.0
    401               (ncml:exp
    402                 (ncml:neg
    403                   (ncml:div
    404                     (ncml:sum (ncml:id v) (ncml:id cv))
    405                     (ncml:id ck))))))))
     336        (ncml:body
     337          (ncml:let
     338            (ncml:bnds
     339              (ncml:bnd (@ (id cv)) (ncml:expr 19.0))
     340              (ncml:bnd (@ (id ck)) (ncml:expr 5.5)))
     341            (ncml:expr
     342              (ncml:div
     343                1.0
     344                (ncml:sum
     345                  1.0
     346                  (ncml:exp
     347                    (ncml:neg
     348                      (ncml:div
     349                        (ncml:sum (ncml:id v) (ncml:id cv))
     350                        (ncml:id ck))))))))))
    406351      (ncml:defun
    407352        (@ (id CaP_tau))
     
    409354        (ncml:arg temp_adj)
    410355        (ncml:body
    411           (ncml:div
    412             (ncml:apply
    413               (@ (id if))
    414               (ncml:gt (ncml:id v) -50.0)
    415               (ncml:mul
    416                 1000.0
    417                 (ncml:sum
    418                   0.000191
    419                   (ncml:mul
    420                     0.00376
    421                     (ncml:pow
    422                       (ncml:exp
    423                         (ncml:neg (ncml:div (ncml:sum (ncml:id v) 41.9) 27.8)))
    424                       2.0))))
    425               (ncml:mul
    426                 1000.0
    427                 (ncml:sum
    428                   0.00026367
    429                   (ncml:mul
    430                     0.1278
    431                     (ncml:exp (ncml:mul 0.10327 (ncml:id v)))))))
    432             (ncml:id temp_adj))))
     356          (ncml:apply
     357            (@ (id if))
     358            (ncml:gt (ncml:id v) -50.0)
     359            (ncml:mul
     360              1000.0
     361              (ncml:sum
     362                0.000191
     363                (ncml:mul
     364                  0.00376
     365                  (ncml:pow
     366                    (ncml:exp
     367                      (ncml:neg (ncml:div (ncml:sum (ncml:id v) 41.9) 27.8)))
     368                    2.0))))
     369            (ncml:mul
     370              1000.0
     371              (ncml:sum
     372                0.00026367
     373                (ncml:mul
     374                  0.1278
     375                  (ncml:exp (ncml:mul 0.10327 (ncml:id v)))))))))
    433376      (ncml:state_complex
    434377        (@ (id CaP_m))
     
    440383            (ncml:rate
    441384              (ncml:div
    442                 (ncml:apply
    443                   (@ (id CaP_inf))
    444                   (ncml:id v)
    445                   (ncml:id cv)
    446                   (ncml:id ck))
    447                 (ncml:apply (@ (id CaP_tau)) (ncml:id v) (ncml:id temp_adj)))))
     385                (ncml:apply (@ (id CaP_inf)) (ncml:id v))
     386                (ncml:div
     387                  (ncml:apply (@ (id CaP_tau)) (ncml:id v))
     388                  (ncml:id temp_adj)))))
    448389          (ncml:transition
    449390            (@ (src CaP_mO) (dst CaP_mC))
     
    452393                (ncml:sum
    453394                  1.0
    454                   (ncml:neg
    455                     (ncml:apply
    456                       (@ (id CaP_inf))
    457                       (ncml:id v)
    458                       (ncml:id cv)
    459                       (ncml:id ck))))
    460                 (ncml:apply
    461                   (@ (id CaP_tau))
    462                   (ncml:id v)
     395                  (ncml:neg (ncml:apply (@ (id CaP_inf)) (ncml:id v))))
     396                (ncml:div
     397                  (ncml:apply (@ (id CaP_tau)) (ncml:id v))
    463398                  (ncml:id temp_adj))))))
    464399        (ncml:power 1.0))
    465400      (ncml:output (@ (id CaP_m))))
    466401    (ncml:component
    467       (@ (name comp10) (type pore))
     402      (@ (name comp13) (type pore))
    468403      (ncml:const (@ (id gmax_CaP)) (ncml:expr 0.01667))
    469404      (ncml:asgn
     
    481416    (ncml:component (@ (name ca) (type accumulating-substance))))
    482417  (ncml:component
    483     (@ (name comp14) (type ion-channel))
    484     (ncml:component
    485       (@ (name comp12) (type gate))
    486       (ncml:const (@ (id zhalf)) (ncml:expr 0.001))
     418    (@ (name CaBK) (type ion-channel))
     419    (ncml:component
     420      (@ (name comp16) (type gate))
    487421      (ncml:defun
    488422        (@ (id CaBK_zinf))
    489423        (ncml:arg ca)
    490         (ncml:arg zhalf)
    491         (ncml:body
    492           (ncml:div
    493             1.0
    494             (ncml:sum 1.0 (ncml:div (ncml:id zhalf) (ncml:id ca))))))
    495       (ncml:const (@ (id CaBK_ztau)) (ncml:expr 0.802741561760231))
    496       (ncml:const (@ (id cvm)) (ncml:expr 28.9))
    497       (ncml:const (@ (id ckm)) (ncml:expr 6.2))
     424        (ncml:body
     425          (ncml:let
     426            (ncml:bnds (ncml:bnd (@ (id zhalf)) (ncml:expr 0.001)))
     427            (ncml:expr
     428              (ncml:div
     429                1.0
     430                (ncml:sum 1.0 (ncml:div (ncml:id zhalf) (ncml:id ca))))))))
     431      (ncml:const (@ (id CaBK_ztau)) (ncml:expr 1.0))
    498432      (ncml:defun
    499433        (@ (id CaBK_minf))
    500434        (ncml:arg v)
    501         (ncml:arg cvm)
    502         (ncml:arg ckm)
    503         (ncml:arg temp_adj)
    504         (ncml:body
    505           (ncml:div
    506             (ncml:div
    507               1.0
    508               (ncml:sum
     435        (ncml:body
     436          (ncml:let
     437            (ncml:bnds
     438              (ncml:bnd (@ (id cvm)) (ncml:expr 28.9))
     439              (ncml:bnd (@ (id ckm)) (ncml:expr 6.2)))
     440            (ncml:expr
     441              (ncml:div
    509442                1.0
    510                 (ncml:exp
    511                   (ncml:neg
    512                     (ncml:div
    513                       (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvm))
    514                       (ncml:id ckm))))))
    515             (ncml:id temp_adj))))
    516       (ncml:const (@ (id ctm)) (ncml:expr 0.000505))
    517       (ncml:const (@ (id cvtm1)) (ncml:expr 86.4))
    518       (ncml:const (@ (id cktm1)) (ncml:expr -10.1))
    519       (ncml:const (@ (id cvtm2)) (ncml:expr -33.3))
    520       (ncml:const (@ (id cktm2)) (ncml:expr 10.0))
    521       (ncml:defun
    522         (@ (id CaBK_mtau))
    523         (ncml:arg v)
    524         (ncml:arg ctm)
    525         (ncml:arg cvtm1)
    526         (ncml:arg cktm1)
    527         (ncml:arg cvtm2)
    528         (ncml:arg cktm2)
    529         (ncml:arg temp_adj)
    530         (ncml:body
    531           (ncml:div
    532             (ncml:sum
    533               (ncml:id ctm)
    534               (ncml:div
    535                 1.0
    536                 (ncml:sum
     443                (ncml:sum
     444                  1.0
    537445                  (ncml:exp
    538446                    (ncml:neg
    539447                      (ncml:div
    540                         (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvtm1))
    541                         (ncml:id cktm1))))
    542                   (ncml:exp
    543                     (ncml:neg
     448                        (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvm))
     449                        (ncml:id ckm))))))))))
     450      (ncml:defun
     451        (@ (id CaBK_mtau))
     452        (ncml:arg v)
     453        (ncml:body
     454          (ncml:let
     455            (ncml:bnds
     456              (ncml:bnd (@ (id ctm)) (ncml:expr 0.000505))
     457              (ncml:bnd (@ (id cvtm1)) (ncml:expr 86.4))
     458              (ncml:bnd (@ (id cktm1)) (ncml:expr -10.1))
     459              (ncml:bnd (@ (id cvtm2)) (ncml:expr -33.3))
     460              (ncml:bnd (@ (id cktm2)) (ncml:expr 10.0)))
     461            (ncml:expr
     462              (ncml:sum
     463                (ncml:id ctm)
     464                (ncml:div
     465                  1.0
     466                  (ncml:sum
     467                    (ncml:exp
     468                      (ncml:neg
     469                        (ncml:div
     470                          (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvtm1))
     471                          (ncml:id cktm1))))
     472                    (ncml:exp
     473                      (ncml:neg
     474                        (ncml:div
     475                          (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvtm2))
     476                          (ncml:id cktm2)))))))))))
     477      (ncml:defun
     478        (@ (id CaBK_hinf))
     479        (ncml:arg v)
     480        (ncml:body
     481          (ncml:let
     482            (ncml:bnds
     483              (ncml:bnd (@ (id ch)) (ncml:expr 0.085))
     484              (ncml:bnd (@ (id cvh)) (ncml:expr 32.0))
     485              (ncml:bnd (@ (id ckh)) (ncml:expr -5.8)))
     486            (ncml:expr
     487              (ncml:sum
     488                (ncml:id ch)
     489                (ncml:div
     490                  (ncml:sum 1.0 (ncml:neg (ncml:id ch)))
     491                  (ncml:sum
     492                    1.0
     493                    (ncml:exp
     494                      (ncml:neg
     495                        (ncml:div
     496                          (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvh))
     497                          (ncml:id ckh)))))))))))
     498      (ncml:defun
     499        (@ (id CaBK_htau))
     500        (ncml:arg v)
     501        (ncml:body
     502          (ncml:let
     503            (ncml:bnds
     504              (ncml:bnd (@ (id cth)) (ncml:expr 0.0019))
     505              (ncml:bnd (@ (id cvth1)) (ncml:expr 48.5))
     506              (ncml:bnd (@ (id ckth1)) (ncml:expr -5.2))
     507              (ncml:bnd (@ (id cvth2)) (ncml:expr -54.2))
     508              (ncml:bnd (@ (id ckth2)) (ncml:expr 12.9)))
     509            (ncml:expr
     510              (ncml:sum
     511                (ncml:id cth)
     512                (ncml:div
     513                  1.0
     514                  (ncml:sum
     515                    (ncml:exp
    544516                      (ncml:div
    545                         (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvtm2))
    546                         (ncml:id cktm2)))))))
    547             (ncml:id temp_adj))))
    548       (ncml:const (@ (id ch)) (ncml:expr 0.085))
    549       (ncml:const (@ (id cvh)) (ncml:expr 32.0))
    550       (ncml:const (@ (id ckh)) (ncml:expr -5.8))
    551       (ncml:defun
    552         (@ (id CaBK_hinf))
    553         (ncml:arg v)
    554         (ncml:arg ch)
    555         (ncml:arg cvh)
    556         (ncml:arg ckh)
    557         (ncml:arg temp_adj)
    558         (ncml:body
    559           (ncml:div
    560             (ncml:sum
    561               (ncml:id ch)
    562               (ncml:div
    563                 (ncml:sum 1.0 (ncml:neg (ncml:id ch)))
    564                 (ncml:sum
    565                   1.0
    566                   (ncml:exp
    567                     (ncml:neg
     517                        (ncml:sum (ncml:id v) (ncml:id cvth1))
     518                        (ncml:id ckth1)))
     519                    (ncml:exp
    568520                      (ncml:div
    569                         (ncml:sum (ncml:sum (ncml:id v) 5.0) (ncml:id cvh))
    570                         (ncml:id ckh)))))))
    571             (ncml:id temp_adj))))
    572       (ncml:const (@ (id cth)) (ncml:expr 0.0019))
    573       (ncml:const (@ (id cvth1)) (ncml:expr 48.5))
    574       (ncml:const (@ (id ckth1)) (ncml:expr -5.2))
    575       (ncml:const (@ (id cvth2)) (ncml:expr -54.2))
    576       (ncml:const (@ (id ckth2)) (ncml:expr 12.9))
    577       (ncml:defun
    578         (@ (id CaBK_htau))
    579         (ncml:arg v)
    580         (ncml:arg cth)
    581         (ncml:arg ckth1)
    582         (ncml:arg ckth2)
    583         (ncml:arg cvth1)
    584         (ncml:arg cvth2)
    585         (ncml:arg temp_adj)
    586         (ncml:body
    587           (ncml:div
    588             (ncml:sum
    589               (ncml:id cth)
    590               (ncml:div
    591                 1.0
    592                 (ncml:sum
    593                   (ncml:exp
    594                     (ncml:div
    595                       (ncml:sum (ncml:id v) (ncml:id cvth1))
    596                       (ncml:id ckth1)))
    597                   (ncml:exp
    598                     (ncml:div
    599                       (ncml:sum (ncml:id v) (ncml:id cvth2))
    600                       (ncml:id ckth2))))))
    601             (ncml:id temp_adj))))
     521                        (ncml:sum (ncml:id v) (ncml:id cvth2))
     522                        (ncml:id ckth2))))))))))
    602523      (ncml:state_complex
    603524        (@ (id CaBK_z))
     
    609530            (ncml:rate
    610531              (ncml:div
    611                 (ncml:apply (@ (id CaBK_zinf)) (ncml:id cai) (ncml:id zhalf))
     532                (ncml:apply (@ (id CaBK_zinf)) (ncml:id cai))
    612533                (ncml:id CaBK_ztau))))
    613534          (ncml:transition
     
    617538                (ncml:sum
    618539                  1.0
    619                   (ncml:neg
    620                     (ncml:apply
    621                       (@ (id CaBK_zinf))
    622                       (ncml:id cai)
    623                       (ncml:id zhalf))))
     540                  (ncml:neg (ncml:apply (@ (id CaBK_zinf)) (ncml:id cai))))
    624541                (ncml:id CaBK_ztau)))))
    625542        (ncml:power 2.0))
     
    633550            (ncml:rate
    634551              (ncml:div
    635                 (ncml:apply
    636                   (@ (id CaBK_minf))
    637                   (ncml:id v)
    638                   (ncml:id cvm)
    639                   (ncml:id ckm)
     552                (ncml:div
     553                  (ncml:apply (@ (id CaBK_minf)) (ncml:id v))
    640554                  (ncml:id temp_adj))
    641                 (ncml:apply
    642                   (@ (id CaBK_mtau))
    643                   (ncml:id v)
    644                   (ncml:id ctm)
    645                   (ncml:id cvtm1)
    646                   (ncml:id cktm1)
    647                   (ncml:id cvtm2)
    648                   (ncml:id cktm2)
     555                (ncml:div
     556                  (ncml:apply (@ (id CaBK_mtau)) (ncml:id v))
    649557                  (ncml:id temp_adj)))))
    650558          (ncml:transition
     
    655563                  1.0
    656564                  (ncml:neg
    657                     (ncml:apply
    658                       (@ (id CaBK_minf))
    659                       (ncml:id v)
    660                       (ncml:id cvm)
    661                       (ncml:id ckm)
     565                    (ncml:div
     566                      (ncml:apply (@ (id CaBK_minf)) (ncml:id v))
    662567                      (ncml:id temp_adj))))
    663                 (ncml:apply
    664                   (@ (id CaBK_mtau))
    665                   (ncml:id v)
    666                   (ncml:id ctm)
    667                   (ncml:id cvtm1)
    668                   (ncml:id cktm1)
    669                   (ncml:id cvtm2)
    670                   (ncml:id cktm2)
     568                (ncml:div
     569                  (ncml:apply (@ (id CaBK_mtau)) (ncml:id v))
    671570                  (ncml:id temp_adj))))))
    672571        (ncml:power 3.0))
     
    680579            (ncml:rate
    681580              (ncml:div
    682                 (ncml:apply
    683                   (@ (id CaBK_hinf))
    684                   (ncml:id v)
    685                   (ncml:id ch)
    686                   (ncml:id cvh)
    687                   (ncml:id ckh)
     581                (ncml:div
     582                  (ncml:apply (@ (id CaBK_hinf)) (ncml:id v))
    688583                  (ncml:id temp_adj))
    689                 (ncml:apply
    690                   (@ (id CaBK_htau))
    691                   (ncml:id v)
    692                   (ncml:id cth)
    693                   (ncml:id cvth1)
    694                   (ncml:id ckth1)
    695                   (ncml:id cvth2)
    696                   (ncml:id cvth2)
     584                (ncml:div
     585                  (ncml:apply (@ (id CaBK_htau)) (ncml:id v))
    697586                  (ncml:id temp_adj)))))
    698587          (ncml:transition
     
    703592                  1.0
    704593                  (ncml:neg
    705                     (ncml:apply
    706                       (@ (id CaBK_hinf))
    707                       (ncml:id v)
    708                       (ncml:id ch)
    709                       (ncml:id cvh)
    710                       (ncml:id ckh)
     594                    (ncml:div
     595                      (ncml:apply (@ (id CaBK_hinf)) (ncml:id v))
    711596                      (ncml:id temp_adj))))
    712                 (ncml:apply
    713                   (@ (id CaBK_htau))
    714                   (ncml:id v)
    715                   (ncml:id cth)
    716                   (ncml:id cvth1)
    717                   (ncml:id ckth1)
    718                   (ncml:id cvth2)
    719                   (ncml:id cvth2)
     597                (ncml:div
     598                  (ncml:apply (@ (id CaBK_htau)) (ncml:id v))
    720599                  (ncml:id temp_adj))))))
    721600        (ncml:power 1.0))
     
    724603      (ncml:output (@ (id CaBK_h))))
    725604    (ncml:component
    726       (@ (name comp13) (type pore))
     605      (@ (name comp17) (type pore))
    727606      (ncml:const (@ (id gbar_CaBK)) (ncml:expr 0.014))
    728607      (ncml:output (@ (id gbar_CaBK))))
  • release/3/nemo/trunk/extensions/nemo-hh.scm

    r11977 r11995  
    141141         (let* ((comp-symbols   ((dis 'component-symbols) new-sys comp-name))
    142142                (subcomps       ((dis 'component-subcomps) new-sys comp-name)))
    143            (print "comp-name: " comp-name)
    144            (print "comp-symbols: " comp-symbols)
    145143            (for-each (lambda (sym)
    146144                        (hh-ionic-conductance-transform 
     
    148146                         comp-name (environment-ref new-sys sym)))
    149147                      comp-symbols)
    150             (for-each recur (map second subcomps))))
     148            (for-each recur (map third subcomps))))
    151149       new-sys))))
  • release/3/nemo/trunk/nemo.scm

    r11977 r11995  
    123123          `(let ,(map ncml-binding->binding bnds) ,(ncml-expr->expr body)))
    124124         (((and op (? symbol?)) . args)       
    125           (print "ncml-expr->expr: node = " node)
    126125          (cons (ncml-op->op op) (map ncml-expr->expr args)))
    127126         (else (error 'ncml-expr->expr "unknown expression " node))))
     
    247246                                            (ncml:power ,(expr->ncml-expr p)))))
    248247                   
    249                     (($ nemo:quantity 'COMPONENT type lst)
     248                    (($ nemo:quantity 'COMPONENT name type lst)
    250249                     (let ((component->ncml (make-component->ncml dis model))
    251250                           (component-exports ((dis 'component-exports) model x)))
     
    253252                         ((toplevel) `(,@(map component->ncml lst)
    254253                                       ,@(map (lambda (x) `(ncml:output (@ (id ,x)))) component-exports)))
    255                          (else `(ncml:component (@ (name ,x) (type ,type))
     254                         (else `(ncml:component (@ (name ,name) (type ,type))
    256255                                                ,@(filter-map component->ncml lst)
    257256                                                ,@(map (lambda (x) `(ncml:output (@ (id ,x)))) component-exports)
     
    317316        (sxml:match 'ncml:input
    318317                    (lambda (node bindings root env)
    319                       (print "input: node = " node)
    320318                      (let ((id    (sxml:attr node 'id))
    321319                            (from  (sxml:kidn* 'ncml:from node))
     
    330328        (sxml:match 'ncml:output
    331329                    (lambda (node bindings root env)
    332                       (print "output: node = " node)
    333330                      (let ((id   (sxml:attr node 'id)))
    334331                        (if (not id) (error 'output-template "output declaration requires id attribute"))
     
    338335        (sxml:match 'ncml:const
    339336                    (lambda (node bindings root env)
    340                       (print "const: node = " node)
    341337                      (let* ((id   (sxml:attr node 'id))
    342338                             (expr ((lambda (x)
     
    351347        (sxml:match 'ncml:transition
    352348                    (lambda (node bindings root env)
    353                       (print "transition: node = " node)
    354349                      (let ((src  (sxml:attr node 'src))
    355350                            (dst  (sxml:attr node 'dst))
     
    370365        (sxml:match 'ncml:asgn
    371366                    (lambda (node bindings root env)
    372                       (print "asgn: node = " node)
    373367                      (let ((id   (sxml:attr node 'id))
    374368                            (expr ((lambda (x)
     
    384378        (sxml:match 'ncml:state_complex
    385379                    (lambda (node bindings root env)
    386                       (print "state: node = " node)
    387380                      (let ((id   (string->symbol (->string (sxml:attr node 'id))))
    388381                            (initial ((lambda (x)
     
    420413        (sxml:match 'ncml:defun
    421414                    (lambda (node bindings root env)
    422                       (print "defun: node = " node)
    423415                      (let ((id    (sxml:attr node 'id))
    424416                            (args  ((lambda (x)
    425                                       (print "defun: arg = " x)
    426417                                      (if (null? x) 
    427418                                          (error 'defun-template
     
    430421                                    (sxml:kidsn 'ncml:arg node)))
    431422                            (body ((lambda (x)
    432                                      (print "defun: body = " x)
    433423                                     (if (not x) 
    434424                                         (error 'defun-template
     
    442432        (sxml:match 'ncml:component
    443433                    (lambda (node bindings root env)
    444                       (print "component: node = " node)
    445434                      (let ((name (sxml:attr node 'name))
    446435                            (type (sxml:attr node 'type)))
  • release/3/nemo/trunk/nmodl.scm

    r11895 r11995  
    142142    (doc:cons op1 (group/NMODL ((doc:list indent identity (lambda () (doc:text ", "))) args)))))
    143143
     144(define nmodl-builtin-consts
     145  `(celsius diam))
    144146
    145147(define nmodl-ops
     
    490492
    491493(define (nemo:nmodl-translator sys . rest)
     494  (define (cid x) (second x))
     495  (define (cn x) (first x))
    492496  (let-optionals rest ((method 'cnexp) (table? #f) (min-v -100) (max-v 100) (step 0.5) (depend #f) )
    493497  (match-let ((($ nemo:quantity 'DISPATCH  dis) (environment-ref sys (nemo-intern 'dispatch))))
     
    504508             (defuns  ((dis 'defuns) sys))
    505509             (components ((dis 'components) sys))
    506              (ionchs  (filter-map (match-lambda (('ion-channel name) name) (else #f)) components)))
    507 
     510             (ionchs  (filter-map (match-lambda ((name 'ion-channel id) (list name id)) (else #f)) components)))
    508511        (match-let (((state-list asgn-list g) deps*))
    509512         (let* ((poset          (vector->list ((dis 'depgraph->bfs-dist-poset) g)))
    510513                (asgn-eq-defs   (poset->asgn-eq-defs poset sys))
    511514                (perm-ions (delete-duplicates
    512                             (fold (lambda (n ax)
    513                                     (let* ((subcomps ((dis 'component-subcomps) sys n))
    514                                            (perm (lookup-def 'permeating-substance subcomps)))
     515                            (fold (lambda (ionch ax)
     516                                    (let* ((subcomps ((dis 'component-subcomps) sys (cid ionch)))
     517                                           (perm      (lookup-def 'permeating-substance subcomps)))
    515518                                      (if perm
    516                                           (case perm
     519                                          (case (cn perm)
    517520                                            ((non-specific)   
    518                                              (let* ((erev (car ((dis 'component-exports) sys perm)))
     521                                             (let* ((erev (car ((dis 'component-exports) sys (cid perm))))
    519522                                                    (i    (nmodl-name 'i))
    520523                                                    (e    (nmodl-name 'e)))
    521                                                (cons `(,perm ,i ,e ,erev) ax)))
    522                                             (else (let* ((erev (car ((dis 'component-exports) sys perm)))
    523                                                          (i    (nmodl-name (s+ 'i perm)))
    524                                                          (e    (nmodl-name (s+ 'e perm))))
    525                                                     (cons `(,perm ,i ,e ,erev) ax))))
     524                                               (cons `(,(cn perm) ,i ,e ,erev) ax)))
     525                                            (else (let* ((erev (car ((dis 'component-exports) sys (cid perm))))
     526                                                         (i    (nmodl-name (s+ 'i (cn perm))))
     527                                                         (e    (nmodl-name (s+ 'e (cn perm)))))
     528                                                    (cons `(,(cn perm) ,i ,e ,erev) ax))))
    526529                                          ax)))
    527530                                  (list) ionchs)
    528531                            (lambda (x y) (eq? (car x) (car y)))))
    529532               (acc-ions (delete-duplicates
    530                            (fold (lambda (n ax)
    531                                   (let* ((subcomps ((dis 'component-subcomps) sys n))
     533                           (fold (lambda (ionch ax)
     534                                  (let* ((subcomps ((dis 'component-subcomps) sys (cid ionch)))
    532535                                         (acc   (lookup-def 'accumulating-substance subcomps))
    533                                          (i     (and acc (nmodl-name (s+ 'i acc))))
    534                                          (in    (and acc (nmodl-name (s+ acc 'i))))
    535                                          (out   (and acc (nmodl-name (s+ acc 'o)))))
    536                                     (if acc  (cons `(,acc ,i ,in ,out) ax) ax)))
     536                                         (i     (and acc (nmodl-name (s+ 'i (cn acc)))))
     537                                         (in    (and acc (nmodl-name (s+ (cn acc) 'i))))
     538                                         (out   (and acc (nmodl-name (s+ (cn acc) 'o)))))
     539                                    (if acc  (cons `(,(cn acc) ,i ,in ,out) ax) ax)))
    537540                                (list) ionchs)
    538541                           (lambda (x y) (eq? (car x) (car y)))))
    539542               )
    540                
     543
    541544           (pp indent ,nl (TITLE ,sysname))
    542545           
     
    571574           
    572575           (pp indent ,nl (PARAMETER "{"))
    573            (let* ((const-defs (map (lambda (nv)
    574                                      (let ((v1 (canonicalize-expr/NMODL (second nv))))
    575                                        (list (first nv) v1)))
     576           (let* ((const-defs (filter-map
     577                               (lambda (nv)
     578                                 (and (not (member (first nv) nmodl-builtin-consts))
     579                                      (let ((v1 (canonicalize-expr/NMODL (second nv))))
     580                                        (list (first nv) v1))))
    576581                                   consts))
    577582                  (locals  (find-locals const-defs)))
     
    630635             (pp indent ,nl (BREAKPOINT "{"))
    631636             (let* ((i-eqs (filter-map
    632                             (lambda (n)
    633                               (let* ((subcomps ((dis 'component-subcomps) sys n))
     637                            (lambda (ionch)
     638                              (let* ((n     (second ionch))
     639                                     (subcomps ((dis 'component-subcomps) sys n))
    634640                                     (acc   (lookup-def 'accumulating-substance subcomps))
    635641                                     (perm  (lookup-def 'permeating-substance subcomps))
    636642                                     (pore  (lookup-def 'pore subcomps))
    637643                                     (gate  (lookup-def 'gate subcomps))
    638                                      (sts   (and gate ((dis 'component-exports) sys gate))))
     644                                     (sts   (and gate ((dis 'component-exports) sys (cid gate)))))
    639645                                (cond ((and perm pore gate)
    640                                        (case perm
     646                                       (case (cn perm)
    641647                                         ((non-specific)
    642648                                          (let* ((i     (nmodl-name 'i))
    643649                                                 (e     (nmodl-name 'e))
    644                                                  (gmax  (car ((dis 'component-exports) sys pore)))
     650                                                 (gmax  (car ((dis 'component-exports) sys (cid pore))))
    645651                                                 (pwrs  (map (lambda (n) (state-power sys n)) sts))
    646652                                                 (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
    647653                                            (list i e gion)))
    648654                                         (else
    649                                           (let* ((i     (nmodl-name (s+ 'i perm)))
    650                                                  (e     (nmodl-name (s+ 'e perm)))
    651                                                  (gmax  (car ((dis 'component-exports) sys pore)))
     655                                          (let* ((i     (nmodl-name (s+ 'i (cn perm))))
     656                                                 (e     (nmodl-name (s+ 'e (cn perm))))
     657                                                 (gmax  (car ((dis 'component-exports) sys (cid pore))))
    652658                                                 (pwrs  (map (lambda (n) (state-power sys n)) sts))
    653659                                                 (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
    654660                                            (list i e gion)))))
    655661                                      ((and acc pore gate)
    656                                        (let* ((i     (nmodl-name (s+ 'i acc)))
    657                                               (gmax  (car ((dis 'component-exports) sys pore)))
     662                                       (let* ((i     (nmodl-name (s+ 'i (cn acc))))
     663                                              (gmax  (car ((dis 'component-exports) sys (cid pore))))
    658664                                              (pwrs  (map (lambda (n) (state-power sys n)) sts))
    659665                                              (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
Note: See TracChangeset for help on using the changeset viewer.