Changeset 9430 in project


Ignore:
Timestamp:
03/11/08 07:58:31 (12 years ago)
Author:
Ivan Raikov
Message:

Some small fixes to allow more section variables.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/3/nnweave/trunk/nnweave.scm

    r9392 r9430  
    548548            (name        (sxml:attrv 'name node))
    549549            (notes       (sxml:kidn  'meta:notes node))
    550             (nonSpecificCurrent  (cml:if-sxpath '(cml:current_voltage_relation "cml:ohmic[@ion='non_specific']") node))
     550            (non-specific?  (cml:if-sxpath '(cml:current_voltage_relation "cml:ohmic[@ion='non_specific']") node))
    551551            ;; Whether there is a voltage and concentration dependence in the channel
    552             (voltConcDependence  (cml:if-sxpath '(cml:voltage_conc_gate) node))
    553             (bin_gates           (filter-map
    554                                   (lambda (hhg)
    555                                     (let ((b (cml:if-sxpath '(// cml:transition cml:binary_voltage_gate) hhg)))
    556                                       (and b (sxml:attrv 'state hhg))))
    557                                   (cml:sxpath '(cml:hh_gate) node)))
    558             (ks_gates            (cml:sxpath '(cml:ks_gate) node))
    559             (hh_gates            (let ((lst (cml:sxpath '(cml:hh_gate) node)))
    560                                    (map (lambda (hhg) (list (s$ (sxml:attrv 'state hhg)) hhg)) lst)))
    561             (ohmic               (cml:if-car-sxpath '(cml:current_voltage_relation cml:ohmic) node))
    562             (integrate_and_fire (cml:if-car-sxpath '(cml:current_voltage_relation cml:integrate_and_fire) node)))
     552            (conc-dep?   (cml:if-sxpath '(cml:voltage_conc_gate) node))
     553            (bin_gates   (filter-map
     554                          (lambda (hhg)
     555                            (let ((b (cml:if-sxpath '(// cml:transition cml:binary_voltage_gate) hhg)))
     556                              (and b (sxml:attrv 'state hhg))))
     557                          (cml:sxpath '(cml:hh_gate) node)))
     558            (ks_gates     (cml:sxpath '(cml:ks_gate) node))
     559            (hh_gates     (let ((lst (cml:sxpath '(cml:hh_gate) node)))
     560                            (map (lambda (hhg) (list (s$ (sxml:attrv 'state hhg)) hhg)) lst)))
     561            (ohmic        (cml:if-car-sxpath '(cml:current_voltage_relation cml:ohmic) node))
     562            (int_and_fire (cml:if-car-sxpath '(cml:current_voltage_relation cml:integrate_and_fire) node)))
    563563        (let ((indent+ (+ 2 indent))
    564564              (ohmic-ions    (and ohmic (map (lambda (ion)
     
    591591                 (let ((ion-name (car name+ion))
    592592                       (ion (cadr name+ion)))
    593                    (pp indent+ (RANGE ,(s+ "i" ion-name)))
     593                   
    594594                   (let ((ion-charge   (sxml:attrv 'charge ion))
    595595                         (ion-role     ((lambda (x) (and x (s$ x))) (sxml:attrv 'role ion))))
     
    605605                                             ? internal concentration of ion is read)))
    606606                       ((SignallingSubstance)
     607                        (pp indent+ (RANGE ,(s+ "i" ion-name)))
    607608                        (pp indent+  (USEION ,ion-name READ ,(s+ "i" ion-name) WRITE  ,(s+ ion-name "i")
    608609                                             ,@(if ion-charge `(VALENCE ,ion-charge) '())
    609610                                             ? outgoing current of ion is read #\, internal concentration is written)))
    610611                       (else
     612                        (pp indent+ (RANGE ,(s+ "i" ion-name)))
    611613                        (pp indent+  (USEION ,ion-name READ ,(s+ "e" ion-name) WRITE ,(s+ "i" ion-name)
    612614                                             ,@(if ion-charge `(VALENCE ,ion-charge) '())
     
    614616               ohmic-ions)
    615617               
    616               (if nonSpecificCurrent
     618              (if non-specific?
    617619                  (pp indent+
    618620                      (? A non-specific current is present)
     
    633635               ohmic-gates)))
    634636
    635          (integrate_and_fire? ;; integrate and fire
     637         (int_and_fire? ;; integrate and fire
    636638            (pp indent+
    637639                (? Note this implementation is based on that used in the)
     
    656658         (ohmic ;; normal ohmic channel
    657659          (let ((conductance (cml:car-sxpath '(cml:conductance) ohmic))
    658                 (def-erev    (and nonSpecificCurrent
     660                (def-erev    (and non-specific?
    659661                                  (cml:if-car-sxpath '(// "cml:ion[@name='non_specific']" @ default_erev) root))))
    660662            (let ((gmax (sxml:attrv 'default_gmax conductance))
     
    695697              )))
    696698
    697          (integrate_and_fire
    698           (let ((threshold  (sxml:attrv  'threshold  integrate_and_fire))
    699                 (t_refrac   (sxml:attrv  't_refrac   integrate_and_fire))
    700                 (v_reset    (sxml:attrv  'v_reset    integrate_and_fire))
    701                 (g_refrac   (sxml:attrv  'g_refrac   integrate_and_fire)))
     699         (int_and_fire
     700          (let ((threshold  (sxml:attrv  'threshold  int_and_fire))
     701                (t_refrac   (sxml:attrv  't_refrac   int_and_fire))
     702                (v_reset    (sxml:attrv  'v_reset    int_and_fire))
     703                (g_refrac   (sxml:attrv  'g_refrac   int_and_fire)))
    702704            (pp indent+
    703705                (thresh   = ,(cml:voltage      si-units? threshold)  (mV))
     
    714716          (pp indent+  (v (mV)))
    715717          (pp indent+  (celsius (degC)))
    716           (if nonSpecificCurrent
     718          (if non-specific?
    717719              (pp indent+ (i (mA/cm2)))
    718720              (begin
     
    783785          )
    784786
    785          (integrate_and_fire
     787         (int_and_fire
    786788          (pp indent+
    787789              (i (nanoamp))
     
    797799          (begin
    798800            (cond
    799              (nonSpecificCurrent  (begin
     801             (non-specific?  (begin
    800802                                    (if (pair? hh_gates)
    801803                                        (pp indent+
     
    805807                                  (if (not (pair? hh_gates))
    806808                                      (pp indent+ (i = gmax * (v - e)))))
    807              (voltConcDependence  (pp indent+
     809             (conc-dep?  (pp indent+
    808810                                      ,(cond ((eq? method 'expeuler)  `(SOLVE states))
    809811                                             (method   `(SOLVE states METHOD ,method))
     
    816818            (if (pair? ks_gates)  (pp indent+ (SOLVE activation METHOD sparse)))
    817819
    818             (if (not nonSpecificCurrent)
     820            (if (not non-specific?)
    819821                (let* ((gion-expr `(* gmax . ,(map (lambda (gate)
    820822                                                     (let ((state (sxml:kidn 'cml:state gate)))
     
    854856          ))
    855857
    856          (integrate_and_fire
     858         (int_and_fire
    857859          (pp indent+ (i = ,(expr->string/C `(* g (- v v_reset)))))))
    858860        (pp indent "}" ) ;; end of BREAKPOINT block
    859861       
    860862
    861         (if integrate_and_fire
     863        (if int_and_fire
    862864            (pp indent
    863865                ,nl
     
    909911                   ks_gates)
    910912                 
    911                   (if voltConcDependence
     913                  (if conc-dep?
    912914                      (pp indent+ (settables (v "," cai)))
    913915                      (pp indent+ (rates (v))))
     
    970972                       ;; PROCEDURE states (exponential approximation)
    971973                       (pp indent ,nl (PROCEDURE states () "{" ))
    972                        (if voltConcDependence
     974                       (if conc-dep?
    973975                           (pp indent+ (settables (v "," cai)))
    974976                           (pp indent+ (rates (v))))
     
    10051007                           (begin
    10061008                             (pp indent ,nl (DERIVATIVE states "{" ))
    1007                              (if voltConcDependence
     1009                             (if conc-dep?
    10081010                                 (pp indent+ (settables (v #\, cai)))
    10091011                                 (pp indent+ (rates (v))))
     
    10281030                    (pp indent ,nl (KINETIC activation) "{")
    10291031                    (if (null? hh_gates)
    1030                         (if voltConcDependence
     1032                        (if conc-dep?
    10311033                            (pp indent+ (settables (v #\, cai)))
    10321034                            (pp indent+ (rates (v)))))
     
    10361038
    10371039              ;; PROCEDURE block
    1038               (if voltConcDependence
     1040              (if conc-dep?
    10391041                  (pp indent ,nl (PROCEDURE settables (v(mV) #\, cai(mM)) "{"))
    10401042                  (pp indent ,nl (PROCEDURE rates (v(mV)) "{")))
     
    10551057                      ,(s+ "LOCAL " vars))))
    10561058
    1057               (if (and table? (not voltConcDependence))
     1059              (if (and table? (not conc-dep?))
    10581060                  (let ((max_v  (or ((lambda (x) (and x (cml:voltage si-units? (cadr x))))
    10591061                                     (cml:if-car-sxpath '(// cml:impl_prefs cml:table_settings @ max_v) root))
Note: See TracChangeset for help on using the changeset viewer.