Changeset 27021 in project


Ignore:
Timestamp:
07/08/12 09:27:44 (9 years ago)
Author:
Ivan Raikov
Message:

nemo: bug fixes in hh and vclamp extension modules

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

Legend:

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

    r25869 r27021  
    9191                                                        )
    9292                                          scope-subst))))
     93
    9394
    9495            (if (not (and (integer? m-power) (positive? m-power)))
     
    159160                    ((and m-tau m-inf)
    160161                     (let* ((m-rate-sym  (p$ ion 'm))
    161                             (rate-rhs    `((rhs  (/ (- ,m-inf-sym ,m-rate-sym) ,m-tau-sym)))))
     162                            (rate-rhs    `((power ,m-power)
     163                                           (rhs  (/ (- ,m-inf-sym ,m-rate-sym) ,m-tau-sym))
     164                                           )))
    162165                       (apply env-extend! (cons* m-rate-sym '(rate) initial-m rate-rhs))
    163166                       (add-external! m-rate-sym 'output)
     
    215218                        ((and h-tau h-inf)
    216219                         (let* ((h-rate-sym  (p$ ion 'h))
    217                                 (rate-rhs    `((rhs (/ (- ,h-inf-sym ,h-rate-sym) ,h-tau-sym)))))
     220                                (rate-rhs    `((power ,h-power)
     221                                               (rhs (/ (- ,h-inf-sym ,h-rate-sym) ,h-tau-sym)))))
    218222                           (apply env-extend! (cons* h-rate-sym '(rate) initial-h rate-rhs))
    219223                           (add-external! h-rate-sym 'output)
  • release/4/nemo/trunk/extensions/nemo-vclamp.scm

    r23596 r27021  
    6060              (else (error 'const-val "invalid constant" v)))))
    6161
     62(define (print-hoc-prelude indent)
     63
     64(pp indent (#<<EOF
     65
     66vgraphbox.intercept(0)
     67
     68vec_sizes = tstop/dt + 1        // recorded traces are all this size
     69
     70soma vce=new VClamp(0)
     71
     72dt = 0.001
     73
     74proc vcrun() {
     75       
     76        vce.dur[0]=vchdur
     77        vce.dur[1]=vcbdur
     78        vce.dur[2]=vchdur
     79
     80        tstop=vce.dur[0]+vce.dur[1]+vce.dur[2]
     81       
     82        vce.amp[0]=vchold
     83        vce.amp[2]=vchold
     84       
     85        for j=0, vcsteps-1 {
     86                x=vcbase+j*vcincrement
     87                vce.amp[1]=x
     88
     89                init()
     90
     91                run()
     92                $o2.line(g[$1], dt)
     93
     94                for i=0,$o2.size()-1 {
     95                    $o4.printf("%g %g\n", $o3.x[i], $o2.x[i])
     96                    }
     97
     98                if (stoppedrun()) {
     99                        break
     100                }
     101        }
     102}
     103EOF
     104))
     105)
     106
    62107(define (nemo:vclamp-translator sys . rest)
    63108
     
    101146             
    102147              (if (not (null? vc-components))
     148
    103149                 
    104150                  (case target
     
    140186                             )
    141187
    142 (pp indent (#<<EOF
    143 
    144 vgraphbox.intercept(0)
    145 
    146 vec_sizes = tstop/dt + 1        // recorded traces are all this size
    147 
    148 soma vce=new VClamp(0)
    149 
    150 dt = 0.001
    151 
    152 proc vcrun() {
    153        
    154         vce.dur[0]=vchdur
    155         vce.dur[1]=vcbdur
    156         vce.dur[2]=vchdur
    157 
    158         tstop=vce.dur[0]+vce.dur[1]+vce.dur[2]
    159        
    160         vce.amp[0]=vchold
    161         vce.amp[2]=vchold
    162        
    163         for j=0, vcsteps-1 {
    164                 x=vcbase+j*vcincrement
    165                 vce.amp[1]=x
    166 
    167                 init()
    168 
    169                 run()
    170                 $o2.line(g[$1], dt)
    171 
    172                 for i=0,$o2.size()-1 {
    173                     $o4.printf("%g %g\n", $o3.x[i], $o2.x[i])
    174                     }
    175 
    176                 if (stoppedrun()) {
    177                         break
    178                 }
    179         }
    180 }
    181 
    182 
    183 EOF
    184 ))
    185                     (for-each (lambda (comp i)
    186 
    187                        (let ((name (first comp))
    188                              (sym  (third comp)))
    189 
    190                          (match-let (((vchold vcbase vcinc vcsteps vchdur vcbdur) ((dis 'component-exports) sys sym)))
     188                           (print-hoc-prelude indent)
     189
     190                           (for-each
     191                            (lambda (comp i)
     192                             
     193                              (let ((name (first comp))
     194                                    (sym  (third comp)))
     195                               
     196                                (match-let (((vchold vcbase vcinc vcsteps vchdur vcbdur) ((dis 'component-exports) sys sym)))
    191197
    192198                                    (pp indent ("print \"generating " ,name "\""))
     
    217223                                        "logfile.close()")
    218224                                    )))
    219                      vc-components (list-tabulate (length vc-components) (lambda (i) i)))
    220            
    221            (if (> vcn 1) (pp indent ("for i=0, " ,(- vcn 1) " {")) (pp indent "i=0"))
    222            (pp (if (> vcn 1) indent+ indent) ("g[i].exec_menu(\"View = plot\")"))
    223            (if (> vcn 1) (pp indent ("}")))
    224            (pp indent ("vgraphbox.map()"))
    225 
    226            ))
    227           ))
     225                            vc-components
     226                            (list-tabulate (length vc-components) (lambda (i) i)))
     227                           
     228                           (if (> vcn 1) (pp indent ("for i=0, " ,(- vcn 1) " {")) (pp indent "i=0"))
     229                           (pp (if (> vcn 1) indent+ indent) ("g[i].exec_menu(\"View = plot\")"))
     230                           (if (> vcn 1) (pp indent ("}")))
     231                           (pp indent ("vgraphbox.map()"))
     232                           
     233                           ))
     234                       ))
    228235
    229236          ((matlab)
  • release/4/nemo/trunk/nemo-core.scm

    r26988 r27021  
    11821182                                              (lookup-def 'initial rest))))
    11831183
    1184                                (env-extend! qid '(rate) (and initial (eval-const initial)) `(rhs ,qexpr))
     1184                               (env-extend! qid '(rate)
     1185                                            (and initial (eval-const initial))
     1186                                            `(rhs ,qexpr))
     1187                                           
    11851188                               (list (cons qid qs) scope-subst1)))
    11861189                           
  • release/4/nemo/trunk/nemo.scm

    r26988 r27021  
    301301        (void))))
    302302
     303
    303304(define model->nest
    304305  (if nemo-nest?
     
    308309        (void))))
    309310
     311
    310312(define model->matlab
    311313  (if nemo-matlab?
     
    315317        (void))))
    316318
     319
    317320(define model->vclamp-hoc
    318321  (lambda (options model)
    319322    (nemo:vclamp-translator model 'hoc (lookup-def 'filename options))))
    320323
     324
    321325(define model->vclamp-octave
    322326  (lambda (options model)
    323327    (nemo:vclamp-translator model 'matlab (lookup-def 'filename options))))
     328
    324329
    325330(define model->octave
     
    348353         (else (error 'transition->ncml-transition "invalid transition " x))))
    349354
     355
    350356(define (conseq->ncml-conseq parse-expr)
    351357  (lambda (x)
     
    356362           (else (error 'conseq->ncml-conseq "invalid linear equation " x)))))
    357363
     364
    358365(define builtin-fns
    359366  `(+ - * / pow neg abs atan asin acos sin cos exp ln
    360367      sqrt tan cosh sinh tanh hypot gamma lgamma log10 log2 log1p ldexp cube
    361368      > < <= >= = and or round ceiling floor max min))
     369
    362370
    363371(define (binding->ncml-binding bnd)
     
    394402    ((=)  'ncml:eq)
    395403    (else  (string->symbol (string-append "ncml:" (->string op))))))
     404
    396405
    397406(define (declaration->ncml parse-expr)
Note: See TracChangeset for help on using the changeset viewer.