Changeset 11763 in project


Ignore:
Timestamp:
08/26/08 04:41:44 (13 years ago)
Author:
Ivan Raikov
Message:

Added support for non-specific ionic conductances.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/3/oru/trunk/nmodl.scm

    r11701 r11763  
    504504                           (fold (lambda (n ax)
    505505                                  (let* ((subcomps ((dis 'component-subcomps) sys n))
    506                                          (perm (lookup-def 'permeating-substance subcomps))
    507                                          (erev (and perm (car ((dis 'component-exports) sys perm))))
    508                                          (i    (and perm (nmodl-name (s+ 'i perm))))
    509                                          (e    (and perm (nmodl-name (s+ 'e perm)))))
    510                                     (if perm  (cons `(,perm ,i ,e ,erev) ax) ax)))
     506                                         (perm (lookup-def 'permeating-substance subcomps)))
     507                                    (if perm
     508                                        (case perm
     509                                          ((non-specific)   
     510                                            (let* ((erev (car ((dis 'component-exports) sys perm)))
     511                                                   (i    (nmodl-name 'i))
     512                                                   (e    (nmodl-name 'e)))
     513                                              (cons `(,perm ,i ,e ,erev) ax)))
     514                                          (else (let* ((erev (car ((dis 'component-exports) sys perm)))
     515                                                       (i    (nmodl-name (s+ 'i perm)))
     516                                                       (e    (nmodl-name (s+ 'e perm))))
     517                                                  (cons `(,perm ,i ,e ,erev) ax))))
     518                                        ax)))
    511519                                (list) ionchs)
    512520                           (lambda (x y) (eq? (car x) (car y)))))
     
    530538               (if (not (null? exports)) (pp indent+ (RANGE ,(sl\ ", " exports))))
    531539               (for-each (lambda (x)
    532                            (pp indent+ (RANGE ,(second x))
    533                                (USEION ,(first x) READ ,(third x) WRITE ,(second x))))
     540                           (case (first x)
     541                             ((non-specific)
     542                              (pp indent+ (RANGE ,(third x))
     543                                  (NONSPECIFIC_CURRENT ,(second x))))
     544                             (else
     545                              (pp indent+ (RANGE ,(second x))
     546                                  (USEION ,(first x) READ ,(third x) WRITE ,(second x))))))
    534547                         perm-ions)
    535548               (for-each (lambda (x)
     
    607620                                       (sts   (and gate ((dis 'component-exports) sys gate))))
    608621                                  (cond ((and perm pore gate)
    609                                          (let* ((i     (nmodl-name (s+ 'i perm)))
    610                                                 (e     (nmodl-name (s+ 'e perm)))
    611                                                 (gmax  (car ((dis 'component-exports) sys pore)))
    612                                                 (pwrs  (map (lambda (n) (state-power sys n)) sts))
    613                                                 (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
    614                                            (list i e gion)))
     622                                         (case perm
     623                                           ((non-specific)
     624                                            (let* ((i     (nmodl-name 'i))
     625                                                   (e     (nmodl-name 'e))
     626                                                   (gmax  (car ((dis 'component-exports) sys pore)))
     627                                                   (pwrs  (map (lambda (n) (state-power sys n)) sts))
     628                                                   (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
     629                                              (list i e gion)))
     630                                           (else
     631                                            (let* ((i     (nmodl-name (s+ 'i perm)))
     632                                                   (e     (nmodl-name (s+ 'e perm)))
     633                                                   (gmax  (car ((dis 'component-exports) sys pore)))
     634                                                   (pwrs  (map (lambda (n) (state-power sys n)) sts))
     635                                                   (gion  `(* ,gmax . ,(map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))))
     636                                              (list i e gion)))))
    615637                                         ((and acc pore gate)
    616638                                          (let* ((i     (nmodl-name (s+ 'i acc)))
Note: See TracChangeset for help on using the changeset viewer.