Changeset 30902 in project


Ignore:
Timestamp:
05/21/14 15:02:45 (6 years ago)
Author:
Ivan Raikov
Message:

9ML-toolkit: bugfixes related to multiple synapse handling in code generation templates

Location:
release/4/9ML-toolkit/trunk/templates
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/9ML-toolkit/trunk/templates/Network.sml.tmpl

    r30895 r30902  
    205205        let
    206206            {% if group.psrtypes %}
    207             val (W,T) = case I of SOME (W,T) => (W,T)
    208                              | NONE => (RTensor.new ([N,1],0.0),
    209                                         RTensor.new ([N,1],0.0))
     207            val (T,W) = case I of SOME I' => List.nth (I',{{loop.index0}})
     208                                | NONE => (RTensor.new ([N,1],0.0),
     209                                           List.tabulate ({{length (group.psrtypes)}}, fn (i) => (RTensor.new ([N,1],0.0))))
    210210            {% for psr in dict (group.psrtypes) %}
     211            val W' = List.nth (W,{{loop.index0}})
    211212            val {{psr.name}}_state_vector' =
    212                 Vector.mapi ({{psr.name}}_response (W,T))
    213                             {{psr.name}}_state_vector
    214 
     213                Vector.mapi ({{psr.name}}_response (W',T)) {{psr.name}}_state_vector
    215214            {% endfor %}{% else %}
    216215            val W = case I of SOME (W,T) => W
  • release/4/9ML-toolkit/trunk/templates/Sim.sml.tmpl

    r30881 r30902  
    5858                        then NONE
    5959                        else SOME
    60                                  (let
    61                                       val T = Real64Array.array (N, 0.0)
    62                                   in
    63                                       List.app
    64                                           (fn (W) =>
    65                                               List.app
    66                                                   (fn (i,nv) =>
    67                                                       let
    68                                                           val sl = SparseMatrix.slice (W,1,i)
    69                                                       in
    70                                                           SparseMatrix.sliceAppi
    71                                                               (fn (j,x) => update (T,j,Real.+ (Real.* (nv,x), sub(T,j))))
    72                                                               sl
    73                                                       end)
    74                                                   spike_i)
    75                                           S;
    76                                       RTensor.fromArray ([N,1], T)
    77                                   end)
     60                                 (List.map
     61                                      (fn (W) =>
     62                                          let
     63                                              val T = Real64Array.array (N, 0.0)
     64                                          in
     65                                              (List.app
     66                                                   (fn (i,nv) =>
     67                                                       let
     68                                                           val sl = SparseMatrix.slice (W,1,i)
     69                                                       in
     70                                                           SparseMatrix.sliceAppi
     71                                                               (fn (j,x) => update (T,j,Real.+ (Real.* (nv,x), sub(T,j))))
     72                                                               sl
     73                                                       end)
     74                                                   spike_i;
     75                                               RTensor.fromArray ([N,1], T))
     76                                          end)
     77                                      S)
    7878
    7979            val _ = if not (List.null log_spike_i)
     
    8888                               val T = RTensor.new ([N,1],t_i)
    8989                           in
    90                                {{group.name}}.TEQ.addEvent ((Real.+ (t_i,D),(W,T)), DQ')
     90                               {{group.name}}.TEQ.addEvent ((Real.+ (t_i,D),(T,W)), DQ')
    9191                           end
    9292                         | NONE => DQ'
Note: See TracChangeset for help on using the changeset viewer.