Changeset 25857 in project


Ignore:
Timestamp:
02/03/12 04:29:59 (9 years ago)
Author:
Ivan Raikov
Message:

nemo: added more flexibility in HH rate equation generation, other small fixes

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

Legend:

Unmodified
Added
Removed
  • release/4/nemo/trunk/extensions/nemo-hh.scm

    r23011 r25857  
    6161                  [(exn) dflt]))
    6262
    63 (define (hh-ionic-gate-transform sys parse-expr subst-expr scope-subst scope eval-const env-extend! add-external! component-extend! comp en)
     63(define (hh-ionic-gate-transform sys parse-expr subst-expr scope-subst scope eval-const env-extend! add-external! component-extend! comp en markov?)
    6464  (define (and-parse-expr scope-subst x . rest)
    6565    (and x (subst-expr (apply parse-expr (cons x rest)) scope-subst)))
     
    6767         ((or (('hh 'ionic 'conductance)  ('name (? symbol? ion)) . alst)
    6868              (('hh-ionic-gate)    ('name (? symbol? ion)) . alst))
     69
    6970          (check-decls ion '(m-power h-power) alst)
    7071
     
    7374                 (m-inf-sym   (p$ ion 'm-inf))
    7475                 (m-tau-sym   (p$ ion 'm-tau))
    75                  (m-reaction-sym  (p$ ion 'm))
    7676                 
    7777                 (h-inf-sym   (p$ ion 'h-inf))
     
    125125                                               (lookup-field 'm-tau alst)
    126126                                               `(hh-ionic-gate ,ion (m-tau))))
    127                    (m-alpha    (or (and-parse-expr scope-subst
    128                                                    (lookup-field 'm-alpha alst)
    129                                                    `(hh-ionic-gate ,ion (m-alpha)))
    130                                    (subst-expr
    131                                     `(let ((x (/ ,m-inf-sym ,m-tau-sym))) x)
    132                                     scope-subst)))
    133                    (m-beta     (or (and-parse-expr scope-subst
    134                                                    (lookup-field 'm-beta alst)
    135                                                    `(hh-ionic-gate ,ion (m-beta)))
    136                                    (subst-expr
    137                                     `(let ((x (/ (- 1 ,m-inf-sym) ,m-tau-sym))) x)
    138                                     scope-subst)))
     127                   (m-alpha    (and-parse-expr scope-subst
     128                                               (lookup-field 'm-alpha alst)
     129                                               `(hh-ionic-gate ,ion (m-alpha))))
     130                   (m-beta     (and-parse-expr scope-subst
     131                                               (lookup-field 'm-beta alst)
     132                                               `(hh-ionic-gate ,ion (m-beta))))
    139133                   (open       'O)
    140134                   (closed     'C)
    141                    (mst        `((power ,m-power)  (open  ,open)
    142                                  (transitions (<-> ,closed ,open ,m-alpha ,m-beta))
    143                                  (conserve (1 = (+ ,closed ,open)))
    144                                  )))
     135                   )
    145136
    146137              (if m-inf (env-extend! m-inf-sym '(asgn) 'none `(rhs ,m-inf)))
     
    149140              (if m-tau (component-extend! comp m-tau-sym))
    150141
    151               (apply env-extend! (cons* m-reaction-sym '(reaction) initial-m mst))
    152               (add-external! m-reaction-sym 'output)
    153               (component-extend! comp m-reaction-sym)
    154 
     142              (print "markov? = " markov?)
     143              (print "m-alpha = " m-alpha )
     144              (print "m-beta = " m-beta)
     145              (print "m-tau = " m-tau )
     146              (print "m-inf = " m-inf)
     147
     148              (cond ((or (and m-alpha m-beta) (and markov? m-tau m-inf))
     149                     (let* ((m-reaction-sym  (p$ ion 'm))
     150                            (m-alpha    (or m-alpha
     151                                            (subst-expr
     152                                             `(let ((x (/ ,m-inf-sym ,m-tau-sym))) x)
     153                                             scope-subst)))
     154                            (m-beta     (or m-beta
     155                                            (subst-expr
     156                                             `(let ((x (/ (- 1 ,m-inf-sym) ,m-tau-sym))) x)
     157                                             scope-subst)))
     158                            (mst        `((power ,m-power)  (open  ,open)
     159                                          (transitions (<-> ,closed ,open ,m-alpha ,m-beta))
     160                                          (conserve (1 = (+ ,closed ,open))))))
     161                       (apply env-extend! (cons* m-reaction-sym '(reaction) initial-m mst))
     162                       (add-external! m-reaction-sym 'output)
     163                       (component-extend! comp m-reaction-sym)))
     164                    ((and m-tau m-inf)
     165                     (let* ((m-rate-sym  (p$ ion 'm))
     166                            (rate-rhs    `((rhs  (/ (- ,m-inf-sym ,m-rate-sym) ,m-tau-sym)))))
     167                       (apply env-extend! (cons* m-rate-sym '(rate) initial-m rate-rhs))
     168                       (add-external! m-rate-sym 'output)
     169                       (component-extend! comp m-rate-sym)
     170                       ))
     171                    (else
     172                     (nemo:error 'nemo:hh-transformer
     173                                 "invalid activation and inactivation rate specification in ionic conductance declaration "
     174                                 ion)))
    155175              )
    156176           
     
    168188                                                   (lookup-field 'h-tau alst)
    169189                                                   `(hh-ionic-gate ,ion (h-tau))))
    170                        (h-alpha    (or (and-parse-expr scope-subst
    171                                                        (lookup-field 'h-alpha alst)
    172                                                        `(hh-ionic-gate ,ion (h-alpha)))
    173                                        (subst-expr
    174                                         `(let ((x (/ ,h-inf-sym ,h-tau-sym))) x)
    175                                         scope-subst)))
    176                        (h-beta     (or (and-parse-expr scope-subst
    177                                                        (lookup-field 'h-beta alst)
    178                                                        `(hh-ionic-gate ,ion (h-beta)))
    179                                        (subst-expr
    180                                         `(let ((x (/ (- 1 ,h-inf-sym) ,h-tau-sym))) x)
    181                                         scope-subst)))
    182 
     190                       (h-alpha    (and-parse-expr scope-subst
     191                                                   (lookup-field 'h-alpha alst)
     192                                                   `(hh-ionic-gate ,ion (h-alpha))))
     193                       (h-beta     (and-parse-expr scope-subst
     194                                                   (lookup-field 'h-beta alst)
     195                                                   `(hh-ionic-gate ,ion (h-beta))))
    183196                       (open       'O)
    184                        (closed     'C)
    185                        (hst        `((power ,h-power)
    186                                      (open  ,open)
    187                                      (transitions (<-> ,closed ,open ,h-alpha ,h-beta) )
    188                                      (conserve (1 = (+ ,closed ,open))))))
     197                       (closed     'C))
    189198
    190199                  (if h-inf (env-extend! h-inf-sym '(asgn) 'none `(rhs ,h-inf)))
     
    193202                  (if h-tau (component-extend! comp h-tau-sym))
    194203
    195                   (apply env-extend! (cons* h-reaction-sym '(reaction) initial-h hst))
    196                   (add-external! h-reaction-sym 'output)
    197                   (component-extend! comp h-reaction-sym)
     204                  (cond ((or (and h-alpha h-beta) (and markov? h-tau h-inf))
     205                         (let* ((h-reaction-sym  (p$ ion 'h))
     206                                (h-alpha    (or h-alpha
     207                                                (subst-expr
     208                                                 `(let ((x (/ ,h-inf-sym ,h-tau-sym))) x)
     209                                                 scope-subst)))
     210                                (h-beta     (or h-beta
     211                                                (subst-expr
     212                                                 `(let ((x (/ (- 1 ,h-inf-sym) ,h-tau-sym))) x)
     213                                                 scope-subst)))
     214                                (hst        `((power ,h-power)  (open  ,open)
     215                                              (transitions (<-> ,closed ,open ,h-alpha ,h-beta))
     216                                              (conserve (1 = (+ ,closed ,open))))))
     217                           (apply env-extend! (cons* h-reaction-sym '(reaction) initial-h hst))
     218                           (add-external! h-reaction-sym 'output)
     219                           (component-extend! comp h-reaction-sym)))
     220                        ((and h-tau h-inf)
     221                         (let* ((h-rate-sym  (p$ ion 'h))
     222                                (rate-rhs    `((rhs (/ (- ,h-inf-sym ,h-rate-sym) ,h-tau-sym)))))
     223                           (apply env-extend! (cons* h-rate-sym '(rate) initial-h rate-rhs))
     224                           (add-external! h-rate-sym 'output)
     225                           (component-extend! comp h-rate-sym)
     226                           ))
     227                        (else
     228                         (nemo:error 'nemo:hh-transformer
     229                                     "invalid activation and inactivation rate specification in ionic conductance declaration "
     230                                     ion)))
     231
    198232                  )))))
    199233
    200234         (else (list))))
    201235
    202 (define (nemo:hh-transformer sys . rest)
     236(define (nemo:hh-transformer sys markov? . rest)
    203237  (let-optionals rest ((parse-expr (lambda (x . rest) (identity x))))
    204238   (let ((new-sys  (nemo:env-copy sys)))
     
    219253                         new-sys parse-expr subst-expr scope-subst scope
    220254                         (dis 'eval-const) env-extend! add-external! component-extend!
    221                          comp-name (environment-ref new-sys sym)))
     255                         comp-name (environment-ref new-sys sym) markov?))
    222256                      comp-symbols)
    223257            (for-each (lambda (subcomp) (recur subcomp (or scope subcomp))) (map third subcomps))))
  • release/4/nemo/trunk/nemo-core.scm

    r23011 r25857  
    119119  (RATE       (name symbol?)
    120120              (initial      (lambda (x) (or (rhs? x) (not x))))
    121               (rhs          rhs?))
     121              (rhs          rhs?)
     122              (power       (lambda (x) (or (integer? x) (not x)))))
    122123  (PRIM       (name symbol?) (value identity))
    123124  (EXTERNAL   (local-name symbol?) (name symbol?) (namespace (make-opt symbol?)))
     
    392393                            (environment-extend! nemo-env sym (ASGN  name 0.0 (normalize-expr rhs)))))
    393394
    394               (('rate)    (let ((rhs (lookup-def 'rhs alst)))
    395                            
     395              (('rate)    (let ((rhs (lookup-def 'rhs alst))
     396                                (power (lookup-def 'power alst)))
    396397                            (if (not (rhs? rhs))
    397398                                (nemo:error 'env-extend! ": rate law definitions require an equation"))
    398399
    399                             (environment-extend! nemo-env sym (RATE  name initial (normalize-expr rhs)))))
     400                            (environment-extend! nemo-env sym (RATE name initial (normalize-expr rhs) power))))
    400401
    401402              (('reaction)  (begin
     
    689690                                                 (ss2 (map (lambda (x) (list name x))  ss1)))
    690691                                            (append ss2 ax)))
    691                                   (RATE (name initial rhs) (cons (list #f name) ax))
     692                                  (RATE (name initial rhs _) (cons (list #f name) ax))
    692693                                  (else ax))
    693694                           ax)))
     
    712713                      (and (nemo:quantity? x)
    713714                           (cases nemo:quantity x
    714                                   (RATE (name value rhs) name)
     715                                  (RATE (name value rhs _) name)
    715716                                  (else #f)))))
    716717           (environment-symbols nemo-env)))
     
    764765                               (fprintf out "    initial value: ~a\n" initial)))
    765766                     
    766                      (RATE     (name initial rhs)
     767                     (RATE     (name initial rhs power)
    767768                               (begin
    768769                                 (fprintf out "~a: rate law\n" name)
    769                                  (fprintf out "    rhs: ~a\n" rhs)))
     770                                 (fprintf out "    rhs: ~a\n" rhs)
     771                                 (if power (fprintf out "    power: ~a\n" power))
     772                                 ))
    770773
    771774                     (else (nemo:error 'exam name ": unknown type of quantity"))))))))
     
    777780      (let ((expr1 (normalize-expr expr))
    778781            (const-env (make-const-env nemo-env)))
    779         (exact->inexact (eval expr1 const-env)))))
     782        (condition-case
     783         (exact->inexact (eval expr1 const-env))
     784         [var () expr1])
     785        )))
    780786
    781787
     
    800806         (cases nemo:quantity x
    801807                (REACTION (name initial open transitions)  #t)
    802                 (RATE     (name initial rhs) #t)
     808                (RATE     (name initial rhs _) #t)
    803809                (else #f))))
    804810
     
    810816                        (begin
    811817                          (map cadddr transitions)))
    812                 (RATE  (name initial rhs)  rhs)
     818                (RATE  (name initial rhs _)  rhs)
    813819                (ASGN  (name value rhs)  rhs)
    814820                (else #f))))
     
    893899                                             (let ((rs (map cadddr transitions)))
    894900                                               (list 're sym rs)))
    895                                      (RATE  (name initial rhs)
     901                                     (RATE  (name initial rhs _)
    896902                                            (list 'r sym rhs))
    897903                                     (ASGN  (name value rhs)
  • release/4/nemo/trunk/nemo-matlab.scm

    r25668 r25857  
    328328                                                                                  conserve power method) ax))
    329329                                     
    330                                       (RATE (name initial rhs)
     330                                      (RATE (name initial rhs power)
    331331                                            (let ((fbody0  (rhsexpr/MATLAB rhs))
    332332                                                  (dy      (matlab-name name) ))
     
    375375                                                     ax))
    376376
    377                                       (RATE  (name initial rhs)
     377                                      (RATE  (name initial rhs power)
    378378                                             (if (and initial (nemo:rhs? initial))
    379379                                                 (cons (state-init name initial) ax)
     
    405405
    406406
    407 (define (reaction-power sys n)
     407(define (rate/reaction-power sys n)
    408408  (let ((en (environment-ref sys n)))
    409409    (if (nemo:quantity? en)
    410410        (cases nemo:quantity en
    411411               (REACTION  (name initial open transitions conserve power)  power)
     412               (RATE      (name initial rhs power) power)
    412413               (else  #f))  #f)))
    413414
     
    744745                                     (let* ((i     (matlab-name (s+ 'i (cn perm))))
    745746                                            (pmax  (car ((dis 'component-exports) sys (cid permeability))))
    746                                             (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    747                                             (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     747                                            (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     748                                            (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    748749                                            (gion  `(* ,pmax ,@sptms)))
    749750                                         (list i #f gion (matlab-name (s+ 'i_ label) ))))
     
    755756                                          (e     (car permqs))
    756757                                          (gmax  (car ((dis 'component-exports) sys (cid pore))))
    757                                           (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    758                                           (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     758                                          (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     759                                          (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    759760                                          (gion  `(* ,gmax ,@sptms)))
    760761                                     (list i e gion  (matlab-name (s+ 'i_ label) ))))
     
    764765                                          (e     (car permqs))
    765766                                          (gmax  (car ((dis 'component-exports) sys (cid pore))))
    766                                           (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    767                                           (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     767                                          (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     768                                          (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    768769                                          (gion  `(* ,gmax ,@sptms)))
    769770                                     (list i e gion (matlab-name (s+ 'i_ label) ))))))
     
    782783                                (let* ((i     (matlab-name (s+ 'i (cn acc))))
    783784                                       (gmax  (car ((dis 'component-exports) sys (cid pore))))
    784                                        (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    785                                        (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     785                                       (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     786                                       (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    786787                                       (gion  `(* ,gmax ,@sptms)))
    787788                                  (list i #f gion  (matlab-name (s+ 'i_ label) ))))
  • release/4/nemo/trunk/nemo-nest.scm

    r25622 r25857  
    286286                                                                                  conserve power) ax))
    287287                                     
    288                                       (RATE (name initial rhs)
     288                                      (RATE (name initial rhs power)
    289289                                            (let ((fbody0  (rhsexpr/C++ rhs))
    290290                                                  (dy      (nest-name name) ))
     
    328328                                                     ax))
    329329
    330                                       (RATE  (name initial rhs)
     330                                      (RATE  (name initial rhs power)
    331331                                             (if (and initial (nemo:rhs? initial))
    332332                                                 (cons (state-init name initial) ax)
  • release/4/nemo/trunk/nemo-nmodl.scm

    r23596 r25857  
    11;;       
    22;;
     3;; TODO: consider an option for using tau/inf model descriptions directly
     4;;
    35;; An extension for translating NEMO models to NMODL descriptions.
    46;;
     
    511513                                                                                  conserve power method) ax))
    512514                                     
    513                                       (RATE (name initial rhs)
     515                                      (RATE (name initial rhs power)
    514516                                            (let ((fbody0  (rhsexpr/NMODL rhs))
    515517                                                  (dy      (nmodl-name name )))
     
    556558                                                            (state-init (nmodl-state-name name open) name) ax)
    557559                                                     ax))
    558                                       (RATE  (name initial rhs)
     560                                      (RATE  (name initial rhs power)
    559561                                             (if (nemo:rhs? initial)
    560562                                                 (cons (state-init name initial) ax)
     
    598600
    599601
    600 (define (reaction-power sys n)
     602(define (rate/reaction-power sys n)
    601603  (let ((en (environment-ref sys n)))
    602604    (if (nemo:quantity? en)
     
    604606               (REACTION  (name initial open transitions conserve power) 
    605607                          power)
     608               (RATE    (name initial rhs power)
     609                        power)
    606610               (else  #f)) 
    607611        #f)))
     
    631635             (indent+       (+ 2 indent ))
    632636             (table-with    (and table? (inexact->exact (round (/ (abs (- max-v min-v)) step)))))
    633              (eval-const    (dis 'eval-const))
    634637             (sysname       (nmodl-name ((dis 'sysname) sys)))
    635638             (consts        ((dis 'consts)  sys))
     
    850853                                  (nemo:error 'nemo:nmodl-translator ": ion channel definition " label
    851854                                              "lacks any pore or permeability components"))
    852 
     855 
    853856                              (cond ((and perm permeability gate)
    854857                                     (let* ((i     (nmodl-name (s+ 'i (cn perm))))
    855858                                            (pmax  (car ((dis 'component-exports) sys (cid permeability))))
    856                                             (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    857                                             (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     859                                            (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     860                                            (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    858861                                            (gion  `(* ,pmax ,@sptms)))
    859862                                         (list i #f gion (nmodl-name (s+ 'i_ label) ))))
     
    865868                                               (e     (car permqs))
    866869                                               (gmax  (car ((dis 'component-exports) sys (cid pore))))
    867                                                (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    868                                                (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     870                                               (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     871                                               (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    869872                                               (gion  `(* ,gmax ,@sptms)))
    870873                                          (list i e gion (nmodl-name (s+ 'i_ label) ))))
     
    874877                                               (e     (nmodl-name (s+ 'e (cn perm))))
    875878                                               (gmax  (car ((dis 'component-exports) sys (cid pore))))
    876                                                (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    877                                                (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     879                                               (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     880                                               (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    878881                                               (gion  `(* ,gmax ,@sptms)))
    879882                                          (list i e gion (nmodl-name (s+ 'i_ label)))))))
     
    894897                                     (let* ((i     (nmodl-name (s+ 'i (cn acc))))
    895898                                            (gmax  (car ((dis 'component-exports) sys (cid pore))))
    896                                             (pwrs  (map (lambda (n) (reaction-power sys n)) sts))
    897                                             (sptms (map (lambda (st pwr) `(pow ,st ,pwr)) sts pwrs))
     899                                            (pwrs  (map (lambda (n) (rate/reaction-power sys n)) sts))
     900                                            (sptms (map (lambda (st pwr) (if pwr `(pow ,st ,pwr) st)) sts pwrs))
    898901                                            (gion  `(* ,gmax ,@sptms)))
    899902                                       (list i #f gion (nmodl-name (s+ 'i_ label) ))))
     
    940943
    941944             (if (not (null? locals))    (pp indent+ (LOCAL ,(slp ", " locals))))
    942              (if (not (null? asgns))     (pp indent+ (asgns ())))
    943945             (if has-ode?
    944946                 (case method
     
    957959                   (else       (pp indent ,nl (DERIVATIVE states "{"))))
    958960                 (if (not (null? locals)) (pp indent+ (LOCAL ,(slp ", " locals))))
     961                 (if (not (null? asgns))     (pp indent+ (asgns ())))
    959962                 (let ((prime (case method
    960963                                ((expeuler) identity)
     
    976979                                                     (map (lambda (x) (map fifth x)) exprs))))))
    977980                   (if (not (null? locals)) (pp indent+ (LOCAL ,(slp ", " locals))))
     981                   (if (not (null? asgns))     (pp indent+ (asgns ())))
    978982                   (for-each
    979983                    (lambda (def)
  • release/4/nemo/trunk/nemo-pyparams.scm

    r25713 r25857  
    331331                                                                                  conserve power) ax))
    332332                                     
    333                                       (RATE (name initial rhs)
     333                                      (RATE (name initial rhs power)
    334334                                            (let ((fbody0  (rhsexpr/python rhs))
    335335                                                  (dy      (python-name name) ))
     
    373373                                                     ax))
    374374
    375                                       (RATE  (name initial rhs)
     375                                      (RATE  (name initial rhs power)
    376376                                             (if (and initial (nemo:rhs? initial))
    377377                                                 (cons (state-init name initial) ax)
  • release/4/nemo/trunk/nemo.scm

    r25763 r25857  
    8989            ))
    9090
     91    (hh-markov
     92     "convert HH rate equations to Markov chain form")
     93
    9194    ,@(if nemo-nest?
    9295          `(
     
    247250                 (model (first model+nemo))
    248251                 (nemo  (second model+nemo)))
    249             (let ((model-1 (nemo:hh-transformer model parse-expr)))
     252            (let ((model-1 (nemo:hh-transformer model (alist-ref 'hh-markov options) parse-expr)))
    250253              (if (assoc 'depgraph options) (print "dependency graph: " ((nemo 'depgraph*) model-1)))
    251254              (if (assoc 'exports options)  (print "exports: " ((nemo 'exports) model-1)))     
     
    463466                         `(ncml:asgn (@ (id ,name)) (ncml:expr ,expr))))
    464467                     
    465                       (($ nemo:quantity 'RATE name initial rhs)
     468                      (($ nemo:quantity 'RATE name initial rhs power)
    466469                       (let ((expr (expr->ncml-expr rhs))
    467470                             (initial (and initial (expr->ncml-expr initial))))
    468471                         `(ncml:rate (@ (id ,name))
    469472                                     ,(and initial `(ncml:initial ,initial))
    470                                      (ncml:expr ,expr))))
     473                                     (ncml:expr ,expr)
     474                                     (ncml:power ,(expr->ncml-expr power))
     475                                     )))
    471476                     
    472477                      (($ nemo:quantity 'REACTION name initial open trs cons p)
     
    625630                                   (sxml:kidn* 'ncml:expr node)))
    626631                            (initial ((lambda (x) (and x (ncml-expr->expr (second x))))
    627                                       (sxml:kidn* 'ncml:initial node))))
     632                                      (sxml:kidn* 'ncml:initial node)))
     633                            (power ((lambda (x) (and x (ncml-expr->expr (second x))))
     634                                      (sxml:kidn* 'ncml:power node)))
     635                            )
    628636                        (if (not id) (error 'rate-template "rate equation requires id attribute"))
    629                         `(d (,($ id)) = ,rhs ,(and initial `(initial ,initial) ))))))
     637                        `(d (,($ id)) = ,rhs ,(and initial `(initial ,initial) )
     638                            ,(and power `(power ,power) ))))))
    630639       (conseq-template
    631640        (sxml:match 'ncml:conseq
     
    814823           (model       (first model+nemo))
    815824           (nemo        (second model+nemo)))
    816       (let ((model-1 (nemo:hh-transformer model identity)))
     825      (let ((model-1 (nemo:hh-transformer model (alist-ref 'hh-markov options) identity)))
    817826        (if (assoc 'depgraph options) (print "dependency graph: " ((nemo 'depgraph*) model-1)))
    818827        (if (assoc 'exports options) (print "exports: " ((nemo 'exports) model-1)))     
     
    865874                           
    866875                           (model       (case in-format
    867                                           ((sxml xml)          (ncml->model '() doc))
    868                                           ((s-exp sexp)        (sexp->model '() doc parse-expr))
    869                                           ((nemo)              (sexp->model '() doc parse-expr))
     876                                          ((sxml xml)          (ncml->model `((hh-markov . ,(opt 'hh-markov)))
     877                                                                            doc))
     878                                          ((s-exp sexp)        (sexp->model `((hh-markov . ,(opt 'hh-markov)))
     879                                                                            doc parse-expr))
     880                                          ((nemo)              (sexp->model `((hh-markov . ,(opt 'hh-markov)))
     881                                                                            doc parse-expr))
    870882                                          (else    (error 'nemo "unknown input format" in-format))))
    871883                           )
  • release/4/nemo/trunk/nemo.setup

    r25655 r25857  
    44  (make-pathname #f fn ##sys#load-dynamic-extension))   
    55
    6 (define nemo-version 5.1)
     6(define nemo-version 5.0)
    77
    88(make (
Note: See TracChangeset for help on using the changeset viewer.