Changeset 21580 in project


Ignore:
Timestamp:
11/22/10 00:55:26 (10 years ago)
Author:
Ivan Raikov
Message:

9ML-toolkit: more fixes and modifications related to new examples

Location:
release/4/9ML-toolkit/trunk
Files:
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • release/4/9ML-toolkit/trunk/NineML.l

    r21504 r21580  
    7878                               (cond ((eq? 'eof c) (lexer-error "unexpected end of comment"))
    7979                                     ((and (char=? #\* c) (char=? #\) (yygetc))) (kont))
    80                                      ((and (char=? #\( c) (char=? #\* (yygetc))) (loop loop))
     80                                     ((and (char=? #\( c) (char=? #\* (yygetc))) (loop (lambda () (loop kont))))
    8181                                     (else (loop kont)))))
    8282
  • release/4/9ML-toolkit/trunk/NineMLdiagram.scm

    r21566 r21580  
    3232                      (make-valtype '() (arrow-type label-type (arrow-type label-type (arrow-type sigfun-type (arrow-type diagram-type diagram-type))))))
    3333
    34            (Value_sig (ident-create "RELATION")
    35                       (make-valtype '() (arrow-type label-type (arrow-type label-type (arrow-type sigfun-type diagram-type)))))
    36 
    3734           (Value_sig (ident-create "PURE")
    3835                      (make-valtype '() (arrow-type sigfun-type diagram-type)))
     
    4542
    4643           (Value_sig (ident-create "TRANSITION")
     44                      (make-valtype '() (arrow-type diagram-type (arrow-type diagram-type (arrow-type sigfun-type diagram-type)))))
     45           
     46           (Value_sig (ident-create "TRANSIENT")
    4747                      (make-valtype '() (arrow-type diagram-type (arrow-type diagram-type (arrow-type sigfun-type diagram-type)))))
    4848           
     
    6767          (datacon 'diagram 'IDENTITY 0)
    6868          (datacon 'diagram 'TRANSITION 3)
     69          (datacon 'diagram 'TRANSIENT 3)
    6970          (datacon 'diagram 'RTRANSITION 4)
    7071          (datacon 'diagram 'SEQUENCE 2)
  • release/4/9ML-toolkit/trunk/NineMLgraph.scm

    r21566 r21580  
    4949
    5050
    51            (Value_sig (ident-create "make_nodes")
     51           (Value_sig (ident-create "nodes")
    5252                      (make-valtype `(,alpha ,beta) (arrow-type nat-type (graph-type talpha tbeta))))
    5353
     
    6060
    6161
     62           (Value_sig (ident-create "node_property")
     63                      (make-valtype `(,alpha ,beta)
     64                                    (arrow-type (graph-type talpha tbeta)
     65                                                (arrow-type nat-type
     66                                                            (arrow-type label-type
     67                                                                        (Tvar alpha) )))))
     68           
    6269           (Value_sig (ident-create "set_node_property")
    6370                      (make-valtype `(,alpha ,beta)
     
    126133           (Value_sig (ident-create "small_world_graph")
    127134                      (make-valtype `(,alpha ,beta)
     135
    128136                                    (arrow-type nat-type
    129137                                                (arrow-type nat-type
     
    144152           (datacon 'graph 'empty 0)
    145153           (datacon 'graph 'add_node 2)
    146            (datacon 'graph 'make_nodes 1)
     154           (datacon 'graph 'nodes 1)
    147155           (datacon 'graph 'add_edge 3)
     156           (datacon 'graph 'node_property 3)
    148157           (datacon 'graph 'set_node_property 4)
    149158           (datacon 'graph 'set_node_interval_property 4)
  • release/4/9ML-toolkit/trunk/NineMLparse.scm

    r21566 r21580  
    138138
    139139
    140 (define (make-relation relation-list value)
     140(define (make-relations relation-list value)
    141141  (if (null? relation-list) value
    142142      (let ((relation (car relation-list)))
     
    147147           (Const `(label ,(relation-var relation))))
    148148          (relation-rhs relation))
    149          (make-relation (cdr relation-list) value)))
     149         (make-relations (cdr relation-list) value)))
    150150      ))
    151151
     
    164164   
    165165
    166 (define (make-pure sf)
    167   (Apply diagram-pure sf))
     166(define (op->relation op)
     167  (Apply
     168   (Longid (Pdot (Pident (ident-create "Signal")) "relation"))
     169   (Const `(label ,op))))
     170
     171(define (signal-operation? op)
     172  (case op
     173    ((add mul div gt gte lte neg cosh tanh log ln) #t)
     174    (else #f)))
     175
     176   
     177(define (make-pure sf) (Apply diagram-pure sf))
    168178
    169179(define (make-signal-expr expr)
     
    197207               
    198208                (((and op (? symbol?)) a)
    199                  (Apply (op->signal-function op)
    200                         (make-signal-expr a)))
     209                 (if (signal-operation? op)
     210                     (Apply (op->signal-function op)
     211                            (make-signal-expr a))
     212                     (Apply (op->relation op)
     213                            (make-signal-expr a))))
    201214               
    202215                (else (error 'make-signal-expr "invalid signal expression" expr))))
     
    294307                              (Apply (Apply (Apply diagram-ode (Const `(label ,indep)))
    295308                                            (make-list (map (lambda (x) (Const `(label ,x))) deps)))
    296                                      (make-relation relations (make-union (map make-pure   (map ode-eqn-rhs ode-eqs))))))
     309                                     (make-relations relations (make-union (map make-pure   (map ode-eqn-rhs ode-eqs))))))
    297310                             (else (error 'sexpr-parser "invalid system of DAE equations" eqlst))))))
    298311                         
  • release/4/9ML-toolkit/trunk/NineMLsignal.scm

    r21566 r21580  
    3333                      (make-valtype '() (arrow-type label-type sigfun-type)))
    3434           
     35           (Value_sig (ident-create "relation")
     36                      (make-valtype '() (arrow-type label-type (arrow-type sigfun-type sigfun-type))))
     37           
    3538           (Value_sig (ident-create "realconst")
    3639                      (make-valtype '() (arrow-type real-type sigfun-type)))
     
    4548                      (make-valtype '() (arrow-type label-type (arrow-type  bool-type sigfun-type))))
    4649           
    47            (Value_sig (ident-create "neg")
    48                       (make-valtype '() (arrow-type sigfun-type sigfun-type)))
    49 
    5050           (Value_sig (ident-create "if")
    5151                      (make-valtype '() (arrow-type sigfun-type (arrow-type sigfun-type (arrow-type sigfun-type sigfun-type))))))
     
    5656                        (make-valtype '() (arrow-type sigfun-type (arrow-type sigfun-type sigfun-type)))))
    5757           '("add" "sub" "mul" "div" "gte" "lte" "gt" "lt" ))
     58
     59          (map
     60           (lambda (name)
     61             (Value_sig (ident-create name)
     62                        (make-valtype '() (arrow-type sigfun-type sigfun-type))))
     63           '("neg" "log" "ln" "cosh" "tanh" ))
     64
    5865          ))
    5966
     
    6673
    6774           (datacon 'sigfun 'signal 1)
     75           (datacon 'sigfun 'relation 2)
    6876           (datacon 'sigfun 'realsig 2)
    6977           (datacon 'sigfun 'boolsig 2)
    7078           (datacon 'sigfun 'realconst 1)
    7179           (datacon 'sigfun 'boolconst 1)
    72            (datacon 'sigfun 'neg 1)
    7380           (datacon 'sigfun 'if 3))
    7481         
     
    7683               '(add sub mul div gte lte gt lt)
    7784               '(+ - * / >= <= > <))
     85
     86          (map (lambda (name) (datacon 'sigfun name 1))
     87               '(log ln tanh cosh neg))
    7888
    7989         
  • release/4/9ML-toolkit/trunk/examples/Izhikevich03.9ML

    r21566 r21580  
    2424                 
    2525    binding refractory_eq        = [
    26                                      [ t =  t]
     26                                     [ t      =  t ]
    2727                                     [ spike  = false ]
    2828                                     [ tspike = tspike ]
    29                                      [ V = c ]
    30                                      [ U = (U + d) ]
     29                                     [ V      = c ]
     30                                     [ U      = (U + d) ]
    3131                                    ]
    3232
  • release/4/9ML-toolkit/trunk/examples/LeakyIAF.9ML

    r21504 r21580  
    11
    2 
    3 component S = Signal  ;;
    4 component D = Diagram ;;
    5 component G = Graph ;;
    62
    73component LeakyIAF =
    84struct
    95
    10   component Parameters =
    11   struct
     6 binding construct_diagram V t gL vL Isyn C theta tspike spike Vreset trefractory refractory_end tstep =
    127
    13    val V        = S.signal `V
    14    val t        = S.signal `t
    15    val gL       = S.signal `gL
    16    val vL       = S.signal `vL 
    17    val Isyn     = S.signal `Isyn
    18    val C        = S.signal `C
    19    val theta    = S.signal `theta 
    20    val tspike   = S.signal `tspike
    21    val spike    = S.signal `spike 
    22    val Vreset   = S.signal `Vreset
    23    val trefractory    = S.signal `trefractory
    24    val refractory_end = S.signal `refractory_end
    25  
    26  end
     8        binding subthreshold_eq       = [ D (V t) = (((- gL) * (V - vL)) + Isyn) / C ]
     9        val threshold_detect          = [ spike = (V >= theta) ]
     10        val tspike_assignment         = [ tspike = if spike then t else tspike ]
     11        val subthreshold_regime       = Diagram.SEQUENCE subthreshold_eq (Diagram.SEQUENCE threshold_detect tspike_assignment)
     12        val refractory_eq             = [ V = Vreset ]
     13        val refractory_regime         = [
     14                                          [ V = Vreset ]
     15                                          [ refractory_end = (t >= (tspike + trefractory)) ]
     16                                          [ t = t + tstep ]
     17                                        ]
     18        return Diagram.RTRANSITION subthreshold_regime refractory_regime spike refractory_end
    2719
    28 
    29 
    30 val make_diagram V t gL vL Isyn C theta tspike spike Vreset trefractory refractory_end tstep =
    31 
    32   val subthreshold_eq           = D.ODE `t `V (S.div (S.add (S.mul (S.neg gL) (S.sub V vL)) Isyn) C)
    33   val threshold_detect          = D.ASSIGN `spike (S.gte V theta)
    34   val tspike_assignment         = D.ASSIGN `tspike (S.cond spike t tspike)
    35   val subthreshold_regime       = D.DUP subthreshold_eq (D.DUP threshold_detect tspike_assignment)
    36   val refractory_eq             = D.ASSIGN `V Vreset
    37   val check_refractory_time     = D.ASSIGN `refractory_end (S.gte t (S.add tspike trefractory))
    38   val increment_refractory_time = D.ASSIGN `t (S.add t tstep)
    39   val refractory_regime         = D.UNION (D.UNION refractory_eq check_refractory_time )
    40                                           increment_refractory_time
    41  
    42   return D.RTRANSITION subthreshold_regime refractory_regime spike refractory_end
    43 
    44 
    45 
    46   val diagram = make_diagram   ( S.realsig `V      -65.0 )
    47                                ( S.realsig `t      0.0 )
    48                                ( S.realsig `gL     0.2 )
    49                                ( S.realsig `vL     -70.0 )
    50                                ( S.realsig `Isyn   20.0 )
    51                                ( S.realsig `C      1.0 )
    52                                ( S.realsig `theta  -25.0 )
    53                                ( S.realsig `tspike  0.0 )
    54                                ( S.boolsig `spike  false )
    55                                ( S.realsig `Vreset -65.0 )
    56                                ( S.realsig `trefractory 5.0 )
    57                                ( S.boolsig `refractory_end false )
    58                                ( S.realsig `tstep  0.001 )
    59 
    60 (* a graph to represent the excitatory population *)
    61 
    62 val N_exc = 0d100
    63 val I_exc = Interval.closed_interval 0d1 N_exc
    64 val excitatory_population = G.set_node_interval_property (G.make_nodes (N_exc))
    65                               I_exc `synapticPrototype make_diagram
    66 
    67 (* a graph to represent the inhibitory population *)
    68 
    69 val N_inh = 0d100
    70 val I_inh = Interval.closed_interval 0d1 N_inh
    71 val inhibitory_population = G.set_node_interval_property (G.make_nodes (N_inh))
    72                               I_inh `synapticPrototype make_diagram
    73 
    74 (* disjoint union of the two populations *)
    75 val populations = G.disjoint_union excitatory_population inhibitory_population
    76 
    77 (* random graph G(N,P) *)
    78 val P = 0.02
    79 val connections = G.gnp_graph (N_exc + N_inh) P
    80 
    81 (* graph union: node attributes take precedence from left to right *)
    82 val populations_and_connections = G.union populations connections
    83 
    84 (* final network *)
    85 val I_network = Interval.closed_interval 0d1 (N_exc + N_inh)
    86 val network = G.set_edge_interval_property populations_and_connections
    87                    I_network I_network `synapticPrototype make_diagram
    8820
    8921
  • release/4/9ML-toolkit/trunk/expr-parser.scm

    r21504 r21580  
    138138                            (begin (stack-push! is (cdr p))
    139139                                   (match x
    140                                           ((or '< '> '>= '>= '^ '+ '- '* '/ '= )      x)
     140                                          ((or '< '> '<= '>= '^ '+ '- '* '/ '= )      x)
    141141                                          ('?                 (tok (QUESTION)))
    142142                                          (':                 (tok (COLON)))
  • release/4/9ML-toolkit/trunk/expr.grm

    r21504 r21580  
    1111   ( ID NUM IF THEN ELSE RPAREN  ;;LET
    1212       (right: QUESTION COLON)
    13        (left: < > =)
     13       (left: < > = >= <=)
    1414       (left: + -)
    1515       (left: * /)
     
    3333             (expr < = expr)          : `(<= ,$1 ,$3)
    3434             (expr > = expr)          : `(>= ,$1 ,$3)
     35             (expr <= expr)           : `(<= ,$1 ,$3)
     36             (expr >= expr)           : `(>= ,$1 ,$3)
    3537             (expr QUESTION expr COLON expr) :  `(if ,$1 ,$3 ,$5)
    3638;;           (LET LPAREN bnds RPAREN expr)   :  `(let ,(reverse $3) ,$5)
  • release/4/9ML-toolkit/trunk/report.scm

    r21566 r21580  
    3636  (make-mod-typing core-syntax core-typing))
    3737
    38 (include "NineMLparse.scm")
    3938(include "NineMLcore.scm")
    4039(include "NineMLsignal.scm")
     
    4342(include "NineMLgraph.scm")
    4443
     44(include "NineMLparse.scm")
    4545(import NineMLparse)
    4646
Note: See TracChangeset for help on using the changeset viewer.