Changeset 27140 in project


Ignore:
Timestamp:
07/31/12 05:27:10 (9 years ago)
Author:
Ivan Raikov
Message:

nemo: added ability to specify ion valence in decaying pool definitions (nmodl backend)

Location:
release/4/nemo/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/nemo/trunk/nemo-gate-complex.scm

    r27093 r27140  
    4747                                                            ": ion pool component " (third x)
    4848                                                            " must export a state"))
    49                                             `(,@(cdr x) ,(car exports))))
     49                                            `(,@(cdr x) . ,(reverse exports))))
    5050                                           epool-comps)))
    5151                       (fold recur (append epools ax) (map third other-comps))))))))
     
    7373                                             components))
    7474             (ion-pools   (nemo:ion-pool-query sys))
    75        
     75
    7676             (perm-ions         (fold (lambda (gate-complex ax)
    7777                                        (let* ((subcomps ((dis 'component-subcomps) sys (cid gate-complex)))
     
    109109
    110110             (pool-ions          (map (lambda (ep)
    111                                         (let* ((ion    (first ep))
    112                                                (state  (third ep))
    113                                                (i      (ionic-current-name ion))
    114                                                (in     (in-concentration-name ion)))
    115                                           `(,state ,i ,in ,ion)))
     111                                        (let* ((ion     (first ep))
     112                                               (state   (third ep))
     113                                               (valence (and (> (length ep) 3) (fourth ep)))
     114                                               (i       (ionic-current-name ion))
     115                                               (in      (in-concentration-name ion)))
     116                                          `(,state ,i ,in ,ion ,valence)))
    116117                                      ion-pools))
    117118
  • release/4/nemo/trunk/nemo-nmodl.scm

    r27120 r27140  
    634634                       (depend #f)  (kinetic (list)) (linear? #f))
    635635  (match-let ((($ nemo:quantity 'DISPATCH  dis) (hash-table-ref sys (nemo-intern 'dispatch))))
    636     (let ((imports  ((dis 'imports)  sys))
    637           (exports  ((dis 'exports)  sys)))
     636    (let ((eval-const  (let ((eval-const (dis 'eval-const)))
     637                         (lambda (x q) (eval-const sys x q))))
     638          (imports     ((dis 'imports)  sys))
     639          (exports     ((dis 'exports)  sys))
     640          )
    638641      (let* ((indent        0)
    639642             (indent+       (+ 2 indent ))
     
    672675                                 (lookup-def 'acc-ions gate-complex-info)))
    673676             (epools        (lookup-def 'pool-ions gate-complex-info))
     677
    674678             (pool-ions     (map (lambda (lst) (map nmodl-name lst)) epools))
    675679
     
    717721           
    718722           (if (null? acc-ions)
    719                (for-each (lambda (pool-ion)
    720                            (pp indent+ (RANGE ,(slp ", " (list (second pool-ion) (third pool-ion))))
    721                                (USEION ,(fourth pool-ion)
    722                                        READ  ,(slp ", " (list (second pool-ion)))
    723                                        WRITE ,(slp ", " (list (third pool-ion ))))))
    724                          pool-ions)
     723               (for-each (lambda (pool-ion epool)
     724                           (let ((valence (fifth epool)))
     725                             (if valence
     726                                 (pp indent+ (RANGE ,(slp ", " (list (second pool-ion) (third pool-ion))))
     727                                     (USEION ,(fourth pool-ion)
     728                                             READ  ,(slp ", " (list (second pool-ion)))
     729                                             WRITE ,(slp ", " (list (third pool-ion )))
     730                                             VALENCE ,(inexact->exact (eval-const valence valence))))
     731                                 (pp indent+ (RANGE ,(slp ", " (list (second pool-ion) (third pool-ion))))
     732                                     (USEION ,(fourth pool-ion)
     733                                             READ  ,(slp ", " (list (second pool-ion)))
     734                                             WRITE ,(slp ", " (list (third pool-ion )))))
     735                                 )))
     736                         pool-ions epools)
    725737               (for-each (lambda (acc-ion)
    726738                           (let ((pool-ion (assoc (first acc-ion) pool-ions)))
Note: See TracChangeset for help on using the changeset viewer.