Changeset 12269 in project


Ignore:
Timestamp:
10/26/08 05:20:04 (13 years ago)
Author:
Ivan Raikov
Message:

Some bug fixes in current equation code generation.

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

Legend:

Unmodified
Added
Removed
  • release/3/nemo/trunk/examples/AKP06/PotIhCa.nemo

    r12238 r12269  
    1818   
    1919   (decaying-pool (ca (initial 1e-4) (depth 0.1) (beta 1) (temp-adj temp_adj)))
    20    
     20
    2121   (component (type ion-channel) (name Kv1)
    2222             
     
    114114              ) ;; end Kv4 current
    115115
    116 
    117116   (component (type ion-channel) (name Ih)
    118117             
     
    153152             
    154153              ) ;; end Ih current
     154
     155   (component (type ion-channel) (name Leak)
     156             
     157              (component (type pore)
     158                         (const  gbar_Leak  = 9e-5)
     159                         (output gbar_Leak ))
     160             
     161              (component (type permeating-substance) (name non-specific)
     162                         (const e_Leak = -61)
     163                         (output e_Leak ))
     164             
     165              ) ;; end leak current
    155166   
    156167   (component (type ion-channel) (name CaP)
  • release/3/nemo/trunk/examples/AKP06/morphology_mechanisms.hoc

    r12238 r12269  
    1717//insert CaBK
    1818//insert CaP
    19 insert leak
     19//insert leak
    2020//insert Caint
    2121insert PotIhCa
     
    2525//soma.eh_Ih = -30
    2626soma.e_Ih_PotIhCa = -30
    27 soma.e_leak = -61
     27soma.e_Leak_PotIhCa = -61
     28//soma.e_leak = -61
    2829soma.cao = 2   // (mM)
    2930     
     
    4142//soma.ghbar_Ih = 0.0002
    4243soma.gbar_Ih_PotIhCa = 0.0002
    43 soma.gbar_leak = 9e-5
     44soma.gbar_Leak_PotIhCa = 9e-5
     45//soma.gbar_leak = 9e-5
     46
  • release/3/nemo/trunk/nemo-nmodl.scm

    r12239 r12269  
    742742         (let* ((poset          (vector->list ((dis 'depgraph->bfs-dist-poset) g)))
    743743                (asgn-eq-defs   (poset->asgn-eq-defs poset sys))
    744                 (perm-ions (delete-duplicates
    745                             (fold (lambda (ionch ax)
     744                (perm-ions (fold (lambda (ionch ax)
    746745                                    (let* ((subcomps ((dis 'component-subcomps) sys (cid ionch)))
    747746                                           (perm      (lookup-def 'permeating-substance subcomps)))
     
    758757                                                    (cons `(,(cn perm) ,i ,e ,erev) ax))))
    759758                                          ax)))
    760                                   (list) ionchs)
    761                             (lambda (x y) (eq? (car x) (car y)))))
    762                (acc-ions (delete-duplicates
    763                            (fold (lambda (ionch ax)
     759                                  (list) ionchs))
     760               (acc-ions (fold (lambda (ionch ax)
    764761                                  (let* ((subcomps ((dis 'component-subcomps) sys (cid ionch)))
    765762                                         (acc   (lookup-def 'accumulating-substance subcomps))
     
    768765                                         (out   (and acc (nmodl-name (s+ (cn acc) 'o)))))
    769766                                    (if acc  (cons `(,(cn acc) ,i ,in ,out) ax) ax)))
    770                                 (list) ionchs)
    771                            (lambda (x y) (eq? (car x) (car y)))))
    772                (pool-ions (delete-duplicates
    773                            (map (lambda (ep)
     767                                (list) ionchs))
     768               (pool-ions (map (lambda (ep)
    774769                                  (let ((ion (car ep)))
    775770                                    `(,(nmodl-name ion) ,(nmodl-name (s+ 'i ion)) ,(nmodl-name (s+ ion 'i)))))
    776                                 epools)))
     771                               epools))
    777772               (has-kinetic? (or (not (null? (filter (lambda (x) (member (car x) kinetic)) states)))))
    778773               (has-ode?     (or (not (null? (filter (lambda (x) (not (member (car x) kinetic))) states)))
    779774                                 (not (null? pool-ions)))))
     775
    780776
    781777           (for-each
     
    807803                          (pp indent+ (RANGE ,(second x))
    808804                              (USEION ,(first x) READ ,(third x) WRITE ,(second x))))))
    809                      perm-ions)
     805                     (delete-duplicates perm-ions (lambda (x y) (eq? (car x) (car y)))))
     806
    810807           (for-each (lambda (acc-ion)
    811808                       (let ((pool-ion (assoc (first acc-ion) pool-ions)))
     
    819816                                         READ ,(sl\ ", "  (list (third acc-ion) (fourth acc-ion) ))
    820817                                         WRITE ,(second acc-ion))))))
    821                        acc-ions)
     818                       (delete-duplicates acc-ions (lambda (x y) (eq? (car x) (car y)))))
    822819
    823820           (let* ((const-names   (map first consts))
     
    936933           (let* ((i-eqs (filter-map
    937934                          (lambda (ionch)
    938                             (let* ((n         (second ionch))
     935
     936                            (let* ((label     (first ionch))
     937                                   (n         (second ionch))
    939938                                   (subcomps  ((dis 'component-subcomps) sys n))
    940939                                   (acc       (lookup-def 'accumulating-substance subcomps))
    941940                                   (perm      (lookup-def 'permeating-substance subcomps))
     941                                   (permqs    (and perm ((dis 'component-exports) sys (cid perm))))
    942942                                   (pore      (lookup-def 'pore subcomps))
    943943                                   (gate      (lookup-def 'gate subcomps))
    944944                                   (sts       (and gate ((dis 'component-exports) sys (cid gate)))))
     945
    945946                              (cond ((and perm pore gate)
    946947                                     (case (cn perm)
    947948                                       ((non-specific)
    948949                                        (let* ((i     (nmodl-name 'i))
    949                                                (e     (nmodl-name 'e))
     950                                               (e     (car permqs))
    950951                                               (gmax  (car ((dis 'component-exports) sys (cid pore))))
    951952                                               (pwrs  (map (lambda (n) (state-power sys n)) sts))
    952                                                (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
     953                                               (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     954                                               (gion  `(* ,gmax ,@sptms)))
    953955                                          (list i e gion)))
    954956                                       (else
    955957                                        (let* ((i     (nmodl-name (s+ 'i (cn perm))))
    956                                                (e     (nmodl-name (s+ 'e (cn perm))))
     958                                               (e     (car permqs))
    957959                                               (gmax  (car ((dis 'component-exports) sys (cid pore))))
    958960                                               (pwrs  (map (lambda (n) (state-power sys n)) sts))
    959                                                  (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
     961                                               (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     962                                               (gion  `(* ,gmax ,@sptms)))
    960963                                          (list i e gion)))))
     964
     965                                    ((and perm pore)
     966                                     (case (cn perm)
     967                                       ((non-specific)
     968                                        (let* ((i     (nmodl-name 'i))
     969                                               (e     (car permqs))
     970                                               (gmax  (car ((dis 'component-exports) sys (cid pore)))))
     971                                          (list i e gmax)))
     972                                       (else
     973                                        (nemo:error 'nemo:nmodl-translator ": invalid ion channel definition " label))))
     974
    961975                                      ((and acc pore gate)
    962976                                       (let* ((i     (nmodl-name (s+ 'i (cn acc))))
    963977                                              (gmax  (car ((dis 'component-exports) sys (cid pore))))
    964978                                              (pwrs  (map (lambda (n) (state-power sys n)) sts))
    965                                               (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
     979                                              (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     980                                              (gion  `(* ,gmax ,@sptms)))
    966981                                         (list i #f gion)))
    967                                       (else (nemo:error 'nemo:nmodl-translator ": invalid ion channel definition " n))
     982                                      (else (nemo:error 'nemo:nmodl-translator ": invalid ion channel definition " label))
    968983                                      )))
    969984                          ionchs))
     
    972987                                  (match b
    973988                                         ((and ps ((i e gion) . rst)) 
    974                                           (let* ((sum   (if e `(* ,(sum (map third ps)) (- v ,e))
     989                                          (let* ((sum   (if e (sum (map (lambda (b) `(* ,(third b) (- v ,(second b))))
     990                                                                        ps))
    975991                                                            (sum (map third ps))))
    976992                                                 (sum0  (rhsexpr sum))
     
    982998                                                 (expr1  (canonicalize-expr/NMODL expr0)))
    983999                                              (cons (list i expr1) ax)))
    984                                          
    9851000                                         
    9861001                                         (else ax)))
Note: See TracChangeset for help on using the changeset viewer.