Changeset 13040 in project


Ignore:
Timestamp:
01/20/09 08:46:33 (11 years ago)
Author:
Ivan Raikov
Message:

Save.

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

Legend:

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

    r12967 r13040  
    1111   (const temp_adj = (pow (3 ((celsius - 22) / 10))))
    1212
     13
    1314   (defun ghk (v celsius ci co)
    1415     (let ((F 96485.0) (R 8.3145))
     
    1819             else ((1e-6 * (2 * zeta * F) * (ci - (co * exp (neg (zeta))))) / (1.0 - exp (neg (zeta))))))))
    1920
     21   (component (type membrane-capacitance)
     22           (const C_m = 1)
     23           (output C_m))
     24
    2025   (component (type ion-channel) (name Kv1)
    2126             
     
    5459             
    5560              ) ;; end Kv1 current
    56 
     61   
    5762   (component (type ion-channel) (name Kv3)
    5863             
     
    172177              ) ;; end Kv4 current
    173178
     179
    174180   (component (type ion-channel) (name Ih)
    175181             
     
    222228             
    223229              ) ;; end leak current
    224    
     230
     231
    225232   (component (type ion-channel) (name CaP)
    226233             
     
    333340
    334341
    335 
    336342   (component (type decaying-pool) (name ca)
    337343              (const  F = 96485.0)
     
    341347             
    342348              (d (ca) = ((neg (ica) / (2 * F * ca_initial * ca_depth)) -
    343                          (ca * ca_beta * temp_adj)))
     349                         (ca * ca_beta * temp_adj))
     350                        (initial ca_initial))
    344351             
    345352              (output ca)
     
    480487     ;; end Narsg current
    481488
    482 
    483489   ))
  • release/3/nemo/trunk/examples/hh-driver.m

    r12711 r13040  
    33## Hodgkin-Huxley model driver for Octave
    44
    5 #hh_defs = "hh-substrate.m";
    6 hh_defs = "hh-superstrate.m";
     5hh_defs = "hh-substrate.m";
     6##hh_defs = "hh-superstrate.m";
    77
    88autoload ("hodgkin_huxley", hh_defs );
    99autoload ("hodgkin_huxley_init", hh_defs );
    1010
    11 t = linspace (0, 100, 1000)';
     11t = [0,100];
    1212
    13 y0 = hodgkin_huxley_init(-65);
     13y0 = hodgkin_huxley_init(-65)
    1414
    15 #P = odeset ('InitialStep', 0.001, 'AbsTol', 1e-4, 'RelTol', 1e-4);
    16 #y = ode23 (@hodgkin_huxley, t, y0, P)
     15P = odeset ('InitialStep', 0.0001 );
     16[t, y] = odesx (@hodgkin_huxley, t, y0, P);
    1717
    18 lsode_options("initial step size",0.001);
    19 
    20 y = lsode ("hodgkin_huxley", y0, t);
     18#lsode_options("initial step size",0.001);
     19#y = lsode ("hodgkin_huxley", y0, t);
    2120
    2221save "-ascii" "hodgkin_huxley.dat" y;
  • release/3/nemo/trunk/expr-parser.scm

    r12967 r13040  
    6363
    6464(define-record token symbol value line)
     65
     66(define-record-printer (token x out)
     67  (fprintf out "#(token  ~S ~S)"
     68           (token-symbol x)
     69           (token-value x) ))
    6570
    6671(define (token p line)
  • release/3/nemo/trunk/extensions/nemo-hh.scm

    r12960 r13040  
    6262
    6363(define (hh-ionic-conductance-transform sys parse-expr eval-const env-extend! add-external! component-extend! comp en)
    64   (define (and-parse-expr x) (and x (parse-expr x)))
     64  (define (and-parse-expr x . rest) (and x (apply parse-expr (cons x rest))))
    6565  (match en
    6666         ((or (('hh 'ionic 'conductance)  ('name (? symbol? ion)) . alst)
     
    6868          (check-decls ion '(m-power h-power) alst)
    6969          (let ((suffix (->string ion))
    70                 (m-power (eval-const sys (parse-expr (lookup-field 'm-power alst))))
    71                 (h-power (eval-const sys (parse-expr (lookup-field 'h-power alst 0)))))
     70                (m-power (eval-const sys (parse-expr (lookup-field 'm-power alst)
     71                                                     `(hh-ionic-conductance ,ion (m-power))
     72                                                     )))
     73                (h-power (eval-const sys (parse-expr (lookup-field 'h-power alst 0)
     74                                                     `(hh-ionic-conductance ,ion (h-power))
     75                                                     ))))
    7276           
    7377            (if (not (and (integer? m-power) (positive? m-power)))
     
    9397                                         
    9498            (let* ((initial-m  ((lambda (x)
    95                                   (let ((expr (parse-expr x)))
     99                                  (let ((expr (parse-expr x `(hh-ionic-conductance ,ion (initial-m)))))
    96100                                    (handle (lambda () (eval-const sys expr)) expr)))
    97101                                (lookup-field 'initial-m alst)))
    98                    (m-inf      (and-parse-expr (lookup-field 'm-inf alst)))
    99                    (m-tau      (and-parse-expr (lookup-field 'm-tau alst)))
     102                   (m-inf      (and-parse-expr (lookup-field 'm-inf alst)
     103                                               `(hh-ionic-conductance ,ion (m-inf))))
     104                   (m-tau      (and-parse-expr (lookup-field 'm-tau alst)
     105                                               `(hh-ionic-conductance ,ion (m-tau))))
    100106                   (m-inf-sym  (p$ ion 'm-inf))
    101107                   (m-tau-sym  (p$ ion 'm-tau))
    102                    (m-alpha    (or (and-parse-expr (lookup-field 'm-alpha alst))
     108                   (m-alpha    (or (and-parse-expr (lookup-field 'm-alpha alst)
     109                                                   `(hh-ionic-conductance ,ion (m-alpha)))
    103110                                   `(/ ,m-inf-sym ,m-tau-sym)))
    104                    (m-beta     (or (and-parse-expr (lookup-field 'm-beta alst))
     111                   (m-beta     (or (and-parse-expr (lookup-field 'm-beta alst)
     112                                                   `(hh-ionic-conductance ,ion (m-beta)))   
    105113                                   `(/ (- 1 ,m-inf-sym) ,m-tau-sym)))
    106114                   (open       'O)
     
    108116                   (mst        `((power ,m-power)  (open  ,open)
    109117                                 (transitions (<-> ,closed ,open ,m-alpha ,m-beta)))))
     118
    110119              (if m-inf (env-extend! m-inf-sym '(asgn) 'none `(rhs ,m-inf)))
    111120              (if m-tau (env-extend! m-tau-sym '(asgn) 'none `(rhs ,m-tau)))
     
    119128            (if (positive? h-power)
    120129                (let* ((initial-h  ((lambda (x)
    121                                       (let ((expr (parse-expr x)))
     130                                      (let ((expr (parse-expr x `(hh-ionic-conductance ,ion (initial-h)))))
    122131                                        (handle (lambda () (eval-const sys expr)) expr)))
    123132                                    (lookup-field 'initial-h alst)))
    124                        (h-inf      (and-parse-expr (lookup-field 'h-inf alst)))
    125                        (h-tau      (and-parse-expr (lookup-field 'h-tau alst)))
    126                        (h-alpha    (or (and-parse-expr (lookup-field 'h-alpha alst))
     133                       (h-inf      (and-parse-expr (lookup-field 'h-inf alst)
     134                                                   `(hh-ionic-conductance ,ion (h-inf))))
     135                       (h-tau      (and-parse-expr (lookup-field 'h-tau alst)
     136                                                   `(hh-ionic-conductance ,ion (h-tau))))
     137                       (h-alpha    (or (and-parse-expr (lookup-field 'h-alpha alst)
     138                                                       `(hh-ionic-conductance ,ion (h-alpha)))
    127139                                       `(/ ,h-inf ,h-tau)))
    128                        (h-beta     (or (and-parse-expr (lookup-field 'h-beta alst))
     140                       (h-beta     (or (and-parse-expr (lookup-field 'h-beta alst)
     141                                                       `(hh-ionic-conductance ,ion (h-beta)))
    129142                                       `(/ (- 1 ,h-inf) ,h-tau)))
    130143
     
    134147                                     (open  ,open)
    135148                                     (transitions (<-> ,closed ,open ,h-alpha ,h-beta) ))))
     149
    136150                  (apply env-extend! (cons* (p$ ion 'h) '(reaction) initial-h hst))
    137151                  (add-external! (p$ ion 'h) 'output)
     
    141155
    142156(define (nemo:hh-transformer sys . rest)
    143   (let-optionals rest ((parse-expr identity))
     157  (let-optionals rest ((parse-expr (lambda (x . rest) (identity x))))
    144158   (let ((new-sys  (nemo:env-copy sys)))
    145159     (match-let ((($ nemo:quantity 'DISPATCH  dis) (environment-ref new-sys (nemo-intern 'dispatch))))
  • release/3/nemo/trunk/nemo-core.scm

    r12967 r13040  
    393393                            (if (not (rhs? rhs))
    394394                                (nemo:error 'env-extend! ": rate law definitions require an equation"))
    395                             (if (not (rhs? initial) )
    396                                 (nemo:error 'env-extend! ": rate law definitions require an initial value or expression"))
    397395
    398396                            (environment-extend! nemo-env sym (RATE  name initial (normalize-expr rhs)))))
     
    10431041                           
    10441042                            ;; rate law
    1045                             (((or 'd 'D) ((and id (? symbol?))) '= (and expr (? expr?) ))
    1046                              (let* ((qid    (compute-qid id scope scope-subst))
    1047                                     (qexpr  (subst-expr (parse-expr expr `(rate ,id)) scope-subst)))
    1048                                (env-extend! qid '(rate) 0.0 `(rhs ,qexpr))
     1043                            (((or 'd 'D) ((and id (? symbol?))) '= (and expr (? expr?) ) . rest)
     1044                             (let* ((qid     (compute-qid id scope scope-subst))
     1045                                    (qexpr   (subst-expr (parse-expr expr `(rate ,id)) scope-subst))
     1046                                    (initial (lookup-def 'initial rest)))
     1047                               (env-extend! qid '(rate) (and initial (parse-expr initial)) `(rhs ,qexpr))
    10491048                               (list (cons qid qs) (update-subst id qid scope-subst))))
    10501049                           
  • release/3/nemo/trunk/nemo-matlab.scm

    r13012 r13040  
    395395
    396396                                      (RATE  (name initial rhs)
    397                                              (if (nemo:rhs? initial)
     397                                             (if (and initial (nemo:rhs? initial))
    398398                                                 (cons (state-init name initial) ax)
    399399                                                 ax))
     
    645645                     rate-eq-defs)
    646646
    647            (for-each (lambda (pool-ion)
    648                        (pp indent+ ,(expr->string/MATLAB (first pool-ion) (third pool-ion) )))
    649                      pool-ions)
    650            
    651647           (for-each (lambda (def)
    652648                       (let ((n (matlab-name (first def)) )
     
    654650                         (pp indent+ ,(expr->string/MATLAB b n))))
    655651                     asgn-eq-defs)
    656          
    657          (for-each (lambda (def)
    658                      (let ((n (first def)) (b (second def)))
    659                        (pp indent+ ,(expr->string/MATLAB b n))))
    660                    reaction-eq-defs)
     652           
     653           (for-each (lambda (def)
     654                       (let ((n (first def)) (b (second def)))
     655                         (pp indent+ ,(expr->string/MATLAB b n))))
     656                     reaction-eq-defs)
     657
     658           (for-each (lambda (pool-ion)
     659                       (pp indent+ ,(expr->string/MATLAB (first pool-ion) (third pool-ion) )))
     660                     pool-ions)
    661661
    662662         (pp indent+ ,(expr->string/MATLAB `(zeros (length y) 1) 'dy))
     
    757757                   init-eq-defs)
    758758         
     759         (for-each (lambda (pool-ion)
     760                     (pp indent+ ,(expr->string/MATLAB (first pool-ion) (third pool-ion) )))
     761                   pool-ions)
     762
    759763         (if (not (null? steady-state-index-map))
    760764             (begin
Note: See TracChangeset for help on using the changeset viewer.