Changeset 31874 in project


Ignore:
Timestamp:
11/20/14 14:57:41 (6 years ago)
Author:
Ivan Raikov
Message:

9ML-toolkit: updates to new NineML syntax; moved tensor library from signal-diagram

Location:
release/4/9ML-toolkit/trunk
Files:
5 added
8 edited

Legend:

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

    r31058 r31874  
    378378(copy-file-to-9ML-dir "templates/Makefile.tmpl")
    379379
     380(copy-file-to-9ML-dir "sml-lib/IntMap.sml")
    380381(copy-file-to-9ML-dir "sml-lib/DynArray.sml")
    381382(copy-file-to-9ML-dir "sml-lib/SkewBinomialHeap.sml")
     
    389390(copy-file-to-9ML-dir "sml-lib/elecgraph.sml")
    390391(copy-file-to-9ML-dir "sml-lib/elecgraph.mlb")
    391 
     392(copy-file-to-9ML-dir "sml-lib/tensor/tensor.sml")
     393(copy-file-to-9ML-dir "sml-lib/tensor/sparse.sml")
     394(copy-file-to-9ML-dir "sml-lib/tensor/tensor.mlb")
     395(copy-file-to-9ML-dir "sml-lib/tensor/sparse.mlb")
  • release/4/9ML-toolkit/trunk/NineMLrandom.scm

    r31764 r31874  
    2727           (lambda (name)
    2828             (Value_sig (ident-create name)
     29                        (make-valtype '() (arrow-type sigfun-type (arrow-type sigfun-type sigfun-type)))))
     30           '("int"))
     31
     32          (map
     33           (lambda (name)
     34             (Value_sig (ident-create name)
    2935                        (make-valtype '() (arrow-type sigfun-type sigfun-type))))
    3036           '("exponential"))
     
    3642           '("uniform" "normal"))
    3743
     44
     45
    3846          ))
    3947
     
    4149         (append
    4250
    43           (map (lambda (name) (datacon 'random name 1))
    44                '(uniform normal)
     51          (map (lambda (name) (datacon 'random name 2))
     52               '(int)
    4553               )
    4654
     
    4856               '(exponential)
    4957               )
     58
     59          (map (lambda (name) (datacon 'random name 1))
     60               '(uniform normal)
     61               )
     62
    5063
    5164          ))
  • release/4/9ML-toolkit/trunk/eval.scm

    r31770 r31874  
    8080                (cddr sexpr)))
    8181       ((uniform)
     82        (list (string->symbol (sprintf "~A_~A" (car sexpr) (cadr sexpr)))))
     83       ((int)
    8284        (list (string->symbol (sprintf "~A_~A" (car sexpr) (cadr sexpr)))))
    8385       (else sexpr)))
     
    787789           (recur (cdr sexpr)))
    788790
     791          ((int)     
     792           (let ((low   (real-eval (cadr sexpr)))
     793                 (high  (real-eval (caddr sexpr))))
     794             (let ((rlo (if (< low high) low high))
     795                   (rhi (if (< low high) high low)))
     796               (let ((delta (+ 1 (- rhi rlo)))
     797                     (v (random-mtzig:randu! random-state)))
     798                 (+ rlo (floor (* delta v)))
     799                 ))
     800             ))
     801
    789802          ((uniform)     
    790803           (let ((low   (real-eval (cadr sexpr)))
     
    794807               (let ((delta (+ 1 (- rhi rlo)))
    795808                     (v (random-mtzig:randu! random-state)))
    796                  (+ rlo (floor (* delta v)))
     809                 (+ rlo (* delta v))
    797810                 ))
    798811             ))
  • release/4/9ML-toolkit/trunk/examples/Brunel00/Brunel_network_alpha.xml

    r31807 r31874  
    339339    </Population>
    340340
    341     <Set name="All neurons"> <!-- The set of all neurons --> 
    342       <union>
    343         <left><singleton>Exc</singleton></left>
    344         <right><singleton>Inh</singleton></right>
    345       </union>
    346     </Set>
     341    <Selection name="All neurons"> <!-- The set of all neurons --> 
     342      <Union>
     343        <Left><Item>Exc</Item></Left>
     344        <Right><Item>Inh</Item></Right>
     345      </Union>
     346    </Selection>
    347347
    348348    <!-- Projection from external sources to all neurons --> 
  • release/4/9ML-toolkit/trunk/examples/Brunel00/Brunel_network_delta.xml

    r31807 r31874  
    259259    </Population>
    260260
    261     <Set name="All neurons"> <!-- The set of all neurons --> 
    262       <union>
    263         <left><singleton>Exc</singleton></left>
    264         <right><singleton>Inh</singleton></right>
    265       </union>
    266     </Set>
     261    <Selection name="All neurons"> <!-- The set of all neurons --> 
     262      <Union>
     263        <Left><Item>Exc</Item></Left>
     264        <Right><Item>Inh</Item></Right>
     265      </Union>
     266    </Selection>
    267267
    268268    <!-- Projection from external sources to all neurons --> 
  • release/4/9ML-toolkit/trunk/network.scm

    r31792 r31874  
    10171017      (
    10181018
    1019        (fromlist-template
    1020         (sxml:match 'nml:fromList
     1019       (concatenate-template
     1020        (sxml:match 'nml:Concatenate
    10211021                    (lambda (node bindings root env)
    10221022                      (let ((kids (sxml:kids node)))
     
    10291029
    10301030       (union-template
    1031         (sxml:match 'nml:union
     1031        (sxml:match 'nml:Union
    10321032                    (lambda (node bindings root env)
    1033                       (let ((left (sxml:kidn* 'nml:left node))
    1034                             (right (sxml:kidn* 'nml:right node)))
     1033                      (let ((left (sxml:kidn* 'nml:Left node))
     1034                            (right (sxml:kidn* 'nml:Right node)))
    10351035                        (lset-union population=
    10361036                                    (make-population-set (sxml:kid left) populations)
     
    10401040
    10411041       (intersection-template
    1042         (sxml:match 'nml:intersection
     1042        (sxml:match 'nml:Intersection
    10431043                    (lambda (node bindings root env)
    1044                       (let ((left (sxml:kidn* 'nml:left node))
    1045                             (right (sxml:kidn* 'nml:right node)))
     1044                      (let ((left (sxml:kidn* 'nml:Left node))
     1045                            (right (sxml:kidn* 'nml:Right node)))
    10461046                        (lset-intersection population=
    10471047                                           (make-population-set (sxml:kid left) populations)
     
    10511051
    10521052       (difference-template
    1053         (sxml:match 'nml:difference
     1053        (sxml:match 'nml:Difference
    10541054                    (lambda (node bindings root env)
    1055                       (let ((left (sxml:kidn* 'nml:left node))
    1056                             (right (sxml:kidn* 'nml:right node)))
     1055                      (let ((left (sxml:kidn* 'nml:Left node))
     1056                            (right (sxml:kidn* 'nml:Right node)))
    10571057                        (lset-difference population=
    10581058                                         (make-population-set (sxml:kid left) populations)
     
    10621062
    10631063       (singleton-template
    1064         (sxml:match 'nml:singleton
     1064        (sxml:match 'nml:Item
    10651065                    (lambda (node bindings root env)
    10661066                      (let ((name ($ (sxml:text node))))
     
    10781078                        intersection-template
    10791079                        difference-template
    1080                         singleton-template)
     1080                        singleton-template
     1081                        concatenate-template)
    10811082     node (list))
    10821083    ))
     
    12571258  (let (
    12581259        (group-name       (sxml:attr node 'name))
    1259         (populations-sxml ((sxpath `(// (*or* nml:Population nml:population)))  node))
    1260         (sets-sxml        ((sxpath `(// (*or* nml:Set nml:set)))  node))
    1261         (projections-sxml ((sxpath `(// (*or* nml:Projection nml:projection))) node))
    1262         (properties-sxml  ((sxpath `(*or* nml:Property nml:property)) node))
     1260        (populations-sxml ((sxpath `(// nml:Population))  node))
     1261        (selections-sxml  ((sxpath `(// nml:Selection))  node))
     1262        (projections-sxml ((sxpath `(// nml:Projection)) node))
     1263        (properties-sxml  ((sxpath `(// nml:Property)) node))
    12631264        (spikerecord-sxml ((sxpath `(nml:SpikeRecording)) node))
    12641265        )
    12651266
    1266     (d "UL group: ~A properties: ~A populations: ~A sets: ~A projections: ~A~%"
    1267        group-name properties-sxml populations-sxml sets-sxml projections-sxml)
     1267    (d "UL group: ~A properties: ~A populations: ~A selections: ~A projections: ~A~%"
     1268       group-name properties-sxml populations-sxml selections-sxml projections-sxml)
    12681269
    12691270    (if (null? populations-sxml)
     
    13081309                    (let* ((name (sxml:attr node 'name))
    13091310                           (set (make-population-set (sxml:kid node) populations)))
    1310 
    13111311                      `(,($ name) . ,(make-population-set-tenv ($ name) set))))
    1312                   sets-sxml)))
     1312                  selections-sxml)))
    13131313
    13141314           (projections+types
  • release/4/9ML-toolkit/trunk/parse.scm

    r31778 r31874  
    250250
    251251(define (op->random-function op)
    252   (define opmap '((random.uniform . "uniform")
     252  (define opmap '((random.int     . "int")
     253                  (random.uniform . "uniform")
    253254                  (random.normal  . "normal")
    254255                  (random.poisson . "poisson")
     
    272273(define (random-operation? op)
    273274  (case op
    274     ((random.normal random.uniform random.poisson random.exponential) #t)
     275    ((random.int random.normal random.uniform random.poisson random.exponential) #t)
    275276    (else #f)))
    276277
  • release/4/9ML-toolkit/trunk/templates/Network.sml.tmpl

    r31807 r31874  
    5151
    5252  val ZigInit = RandomMTZig.ztnew
     53
    5354       
    5455  exception Index       
     
    9394  fun random_normal () = RandomMTZig.randNormal(seed_init,zt_init)
    9495  fun random_uniform () = RandomMTZig.randUniform(seed_init)
     96  fun random_int (imin,imax) = imin + ((imax - imin + 1) * Real.floor(RandomMTZig.randUniform(seed_init)))
    9597
    9698{% for pop in dict (group.populations) %}
     
    358360
    359361{% macro cartesian_product(sp, tp) %}
    360    {% for s in sp %}
    361    {% for t in tp %}
    362    {{ caller(s,t) }}{% if not loop.last %},{% endif %}{% endfor %}{% if not loop.last %},{% endif %}
     362   {% for s,t in allCombs(sp,tp) %}
     363   {{ caller(s,t) }}{% if not loop.last %},{% endif %}
    363364   {% endfor %}
    364365{% endmacro %}
     
    430431                                  ]
    431432                                end
     433{% endmacro %}
     434
     435
     436{% macro preorder(sp, tp) %}
     437   {% for s in sp %}
     438   {{ caller(s,tp) }}{% if not loop.last %},{% endif %}
     439   {% endfor %}
     440{% endmacro %}
     441
     442
     443{% macro postorder(sp, tp) %}
     444   {% for t in tp %}
     445   {{ caller(sp,t) }}{% if not loop.last %},{% endif %}
     446   {% endfor %}
     447{% endmacro %}
     448
     449
     450{% macro fan_in(name, sp, tp, plasticity, component, cstate) %}
     451             val Pr_{{name}} = let
     452                                  val weight  = {% if plasticity %}#weight({{plasticity}}_initial){% else %}1.0{% endif %}
     453
     454                               in
     455                                  SparseMatrix.fromMapGeneratorList [N,N]
     456                                  [
     457{% call postorder (sp,tp) %}          {offset=[{{t.start}},{{s.start}}],
     458                                       forder=SparseMatrix.Index.CSR,
     459                                       fshape=[{{t.size}},{{s.size}}],
     460                                       f=(fn (i) => Real.* (weight, #{{cstate}}({{component}}_f {{component}}_initial) ))}{% endcall %}
     461                                  ]
     462                               end
     463{% endmacro %}
     464
     465
     466{% macro fan_out(name, sp, tp, plasticity, component, cstate) %}
     467             val Pr_{{name}} = let
     468                                  val weight  = {% if plasticity %}#weight({{plasticity}}_initial){% else %}1.0{% endif %}
     469
     470                               in
     471                                  SparseMatrix.fromMapGeneratorList [N,N]
     472                                  [
     473{% call preorder (sp,tp) %}         {offset=[{{t.start}},{{s.start}}],
     474                                     forder=SparseMatrix.Index.CSC,
     475                                     fshape=[{{t.size}},{{s.size}}],
     476                                     f=(fn (i) => Real.* (weight, #{{cstate}}({{component}}_f {{component}}_initial) ))}{% endcall %}
     477                                  ]
     478                               end
    432479{% endmacro %}
    433480
     
    476523                 pr.value.rule.cstate) %}
    477524{% endcall %}
    478 {% else %}
    479 {% if pr.value.rule.operator == "one-to-one" %}
     525{% elseif pr.value.rule.operator == "one-to-one" %}
    480526{% call one_to_one(pr.name,
    481527                   pr.value.source.populations,
     
    483529                   pr.value.plasticity) %}
    484530{% endcall %}
    485 {% else %}
    486 {% if pr.value.rule.operator == "all-to-all" %}
     531{% elseif pr.value.rule.operator == "all-to-all" %}
    487532{% call all_to_all(pr.name,
    488533                   pr.value.source.populations,
     
    490535                   pr.value.plasticity) %}
    491536{% endcall %}
    492 {% else %}
    493 {% if pr.value.rule.operator == "from-file" %}
     537{% elseif pr.value.rule.operator == "from-file" %}
    494538{% call from_file(pr.name,
    495539                  pr.value.source.populations,
     
    497541                  pr.value.rule.properties.filename.exprML) %}
    498542{% endcall %}
    499 {% endif %}
    500 {% endif %}
    501 {% endif %}
     543{% elseif pr.value.rule.operator == "fan-in" %}
     544{% call fan_in(pr.name,
     545               pr.value.source.populations,
     546               pr.value.target.populations,
     547               pr.value.plasticity,
     548               pr.value.rule.component,
     549               pr.value.rule.cstate) %}
     550{% endcall %}
     551{% elseif pr.value.rule.operator == "fan-out" %}
     552{% call fan_out(pr.name,
     553               pr.value.source.populations,
     554               pr.value.target.populations,
     555               pr.value.plasticity,
     556               pr.value.rule.component,
     557               pr.value.rule.cstate) %}
     558{% endcall %}
    502559{% endif %}
    503560{% endfor %}
Note: See TracChangeset for help on using the changeset viewer.