Changeset 30917 in project


Ignore:
Timestamp:
05/25/14 13:44:22 (6 years ago)
Author:
Ivan Raikov
Message:

9ML-toolkit: reformulation of regimes to use ON signal combinator; added LIF UL xml file; fixes to AEIF example

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

Legend:

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

    r30870 r30917  
    362362(copy-file-to-9ML-dir "examples/Izhikevich03.9ML")
    363363(copy-file-to-9ML-dir "examples/Destexhe94.9ML")
    364 (copy-file-to-9ML-dir "examples/LeakyIAF.9ML")
    365364
    366365(copy-file-to-9ML-dir "templates/Network.sml.tmpl")
  • release/4/9ML-toolkit/trunk/NineMLdiagram.scm

    r30085 r30917  
    6464                      (make-valtype '() (arrow-type diagram-type (arrow-type diagram-type (arrow-type sigfun-type diagram-type)))))
    6565           
     66           (Value_sig (ident-create "ON")
     67                      (make-valtype '() (arrow-type diagram-type (arrow-type sigfun-type diagram-type))))
     68           
    6669           (Value_sig (ident-create "RTRANSITION")
    6770                      (make-valtype '() (arrow-type diagram-type
     
    9093          (datacon 'diagram 'TRANSIENT 3)
    9194          (datacon 'diagram 'RTRANSITION 5)
     95          (datacon 'diagram 'ON 2)
    9296          (datacon 'diagram 'SEQUENCE 2)
    9397          (datacon 'diagram 'UNION 2)
  • release/4/9ML-toolkit/trunk/eval.scm

    r30827 r30917  
    436436                         `(DiagramLib:Transient
    437437                           (@ (e ,e) ,(recur f) ,(recur fk)))
     438                         ))
     439
     440                      ((ON) 
     441                       (let ((f (cadr sexpr))
     442                             (e (caddr sexpr)))
     443                         `(DiagramLib:On
     444                           (@ (e ,e) ,(recur f)))
    438445                         ))
    439446
     
    818825    (let ((diagram
    819826           (let recur ((sexpr sexpr))
     827
    820828             (if (pair? sexpr)
    821829                 (case (car sexpr)
     
    854862                      (case (car sexpr)
    855863                       
    856                         ((PURE)           (let ((f  (sexpr->function (cadr sexpr)))) (diagram:PURE f)))
     864                        ((PURE)           (let ((f (sexpr->function (cadr sexpr)))) (diagram:PURE f)))
    857865                        ((GROUP)          (diagram:UNION (recur (cadr sexpr)) (recur (caddr sexpr))))
    858866                        ((IDENTITY)       (diagram:IDENTITY (recur (cadr sexpr))))
     
    861869                        ((SENSE)          (diagram:SENSE (cadr sexpr) (recur (caddr sexpr))))
    862870                        ((ACTUATE)        (diagram:ACTUATE (cadr sexpr) (recur (caddr sexpr))))
     871                        ((ON)             (let ((e1 (recur (cadr sexpr)))
     872                                                (e2 (recur (caddr sexpr))))
     873                                            (diagram:ON e1 e2)))
    863874                        ((TRANSIENT)      (diagram:TRANSIENT (recur (cadr sexpr)) (recur (caddr sexpr))
    864875                                                             (recur (cadddr sexpr))))
     
    954965                   
    955966                   (else (map recur sexpr)))
     967
    956968                 sexpr)
    957969          )))
  • release/4/9ML-toolkit/trunk/examples/AEIF_AL.xml

    r30913 r30917  
    66  <ComponentClass name="adExIaF">
    77
    8     <Parameter name="C"/>
    9     <Parameter name="gL"/>
    10     <Parameter name="EL"/>
    11     <Parameter name="VT"/>
    12     <Parameter name="thresh"/>
    13     <Parameter name="reset"/>
    14     <Parameter name="delT"/>
    15     <Parameter name="tauw"/>
    16     <Parameter name="Iamp"/>
    17     <Parameter name="Idel"/>
    18     <Parameter name="Idur"/>
     8    <Parameter name="C_m"/>
     9    <Parameter name="g_L"/>
     10    <Parameter name="E_L"/>
     11    <Parameter name="V_T"/>
     12    <Parameter name="V_R"/>
     13    <Parameter name="Delta"/>
     14    <Parameter name="tau_w"/>
     15    <Parameter name="tau_rp"/>
    1916    <Parameter name="a"/>
    2017    <Parameter name="b"/>
    2118
    22     <AnalogPort name="t" mode="send" dimension='none'/>
    23     <AnalogPort name="V" mode="send" dimension='none'/>
     19    <AnalogPort name="Isyn" mode='reduce' dimension='current'/>
     20    <AnalogPort name="t" mode="send" dimension='time'/>
     21    <AnalogPort name="V" mode="send" dimension='voltage'/>
    2422    <AnalogPort name="W" mode="send" dimension='none'/>
     23    <AnalogPort name="t_rpend" mode="send" dimension='time'/>
    2524
     25    <EventPort name="refractoryEnd" mode="send"/>
    2626    <EventPort name="spikeOutput" mode="send"/>
    2727
     
    3434
    3535          <TimeDerivative variable="V">
    36             <MathInline>
    37             ((((0 - (gL * (V - EL))) + (((gL * delT) * exp(((V - VT) / delT))) - W)) + I) / C)
    38             </MathInline>
     36            <MathInline> (-g_L * (V - E_L) + g_L * Delta * exp ((V - V_T) / Delta) + Isyn - W) / C_m </MathInline>
     37
    3938          </TimeDerivative>
    4039
    4140          <TimeDerivative variable="W">
    42             <MathInline>
    43               (((a * (V - EL)) - W) / tauw)
    44             </MathInline>
     41            <MathInline> (a * (V - E_L) - W) / tau_w </MathInline>
    4542          </TimeDerivative>
    4643
    4744          <OnCondition>
     45
    4846            <Trigger>
    49               <MathInline>V &gt; Vpeak </MathInline>
     47              <MathInline>V &gt; V_T </MathInline>
    5048            </Trigger>
    5149
    52             <StateAssignment variable="V" >
    53               <MathInline> reset </MathInline>
     50            <StateAssignment variable="W">
     51              <MathInline> W + b </MathInline>
    5452            </StateAssignment>
    5553
    56             <TimeDerivative variable="W">
    57               <MathInline> (w + b) </MathInline>
    58             </TimeDerivative>
    59 
     54            <StateAssignment variable="t_rpend" >
     55              <MathInline> t + tau_rp </MathInline>
     56            </StateAssignment>
     57           
    6058            <EventOut port="spikeOutput" />
    6159
     
    6361
    6462        </Regime>
     63
     64        <Regime name="refractoryRegime">
     65           
     66          <StateAssignment variable="V" >
     67            <MathInline> V_R </MathInline>
     68          </StateAssignment>
     69
     70          <StateAssignment variable="W" >
     71            <MathInline> W </MathInline>
     72          </StateAssignment>
     73
     74          <StateAssignment variable="t" >
     75            <MathInline> t + h </MathInline>
     76          </StateAssignment>
     77
     78          <OnCondition>
     79           
     80            <Trigger>
     81              <MathInline>t &gt; t_rpend </MathInline>
     82            </Trigger>
     83           
     84            <EventOut port="refractoryEnd" />
     85           
     86          </OnCondition>
     87         
     88        </Regime>
     89
    6590    </Dynamics>
    6691
  • release/4/9ML-toolkit/trunk/examples/AEIF_UL.xml

    r30913 r30917  
    44    xsi:schemaLocation="http://nineml.incf.org/9ML/1.0/NineML_v0.3.xsd">
    55
    6     <Component name="adExBurst2">
     6    <Component name="TestLeakyIAF">
    77
    88        <Definition>
    9             <link> adExIaF_AL.xml </link>
     9            <link> AEIF_AL.xml </link>
    1010            <language> NineML </language>
    1111        </Definition>
     
    1414
    1515          <Property>
    16             <label>C</label>
    17             <value>2.81E-10</value>
    18             <unit>kg^-1 m^-2 s^4 A^2</unit>
     16            <label>C_m</label>
     17            <value>0.281</value>
    1918          </Property>
    2019
    2120          <Property>
    22             <label>gL</label>
    23             <value>3.0E-8</value>
    24             <unit>kg^-1 m^-2 s^3 A^2</unit>
     21            <label>g_L</label>
     22            <value>0.025</value>
    2523          </Property>
    2624
    2725          <Property>
    28             <label>EL</label>
    29             <value>-0.0706</value>
    30             <unit>kg m^2 s^-3 A^-1</unit>
     26            <label>E_L</label>
     27            <value>-70.6</value>
    3128          </Property>
    3229
    3330          <Property>
    34             <label>VT</label>
    35             <value>-0.0504</value>
    36             <unit>kg m^2 s^-3 A^-1</unit>
     31            <label>Delta</label>
     32            <value>2.0</value>
    3733          </Property>
    3834
    3935          <Property>
    40             <label>thresh</label>
    41             <value>-0.0404</value>
    42             <unit>kg m^2 s^-3 A^-1</unit>
     36            <label>V_T</label>
     37            <value>-50.4</value>
    4338          </Property>
    4439
    4540          <Property>
    46             <label>reset</label>
    47             <value>-0.0485</value>
    48             <unit>kg m^2 s^-3 A^-1</unit>
     41            <label>V_R</label>
     42            <value>-70.6</value>
    4943          </Property>
    5044
    5145          <Property>
    52             <label>delT</label>
    53             <value>0.002</value>
    54             <unit>kg m^2 s^-3 A^-1</unit>
     46            <label>tau_w</label>
     47            <value>20.0</value>
    5548          </Property>
    5649
    57           <Property>
    58             <label>tauw</label>
    59             <value>0.04</value>
    60             <unit>s</unit>
    61           </Property>
    62 
    63           <Property>
    64             <label>Iamp</label>
    65             <value>8.0E-10</value>
    66             <unit>A</unit>
    67           </Property>
    68 
    69           <Property>
    70             <label>Idel</label>
    71             <value>0.0</value>
    72             <unit>s</unit>
    73           </Property>
    74 
    75           <Property>
    76             <label>Idur</label>
     50          <Initial>
     51            <label>tau_rp</label>
    7752            <value>2.0</value>
    78             <unit>s</unit>
    79           </Property>
     53          </Initial>
    8054
    8155          <Property>
    8256            <label>a</label>
    83             <value>4.0E-9</value>
    84             <unit>kg^-1 m^-2 s^3 A^2</unit>
     57            <value>4.0</value>
    8558          </Property>
    8659
    8760          <Property>
    8861            <label>b</label>
    89             <value>8.0E-11</value>
    90             <unit>A</unit>
     62            <value>0.0805</value>
    9163          </Property>
    9264
    9365          <Initial>
    9466            <label>V</label>
    95             <value>-65.0</value>
     67            <value>-70.0</value>
    9668          </Initial>
    9769
    9870          <Initial>
    9971            <label>W</label>
    100             <value>-1.625</value>
     72            <value>0.1</value>
    10173          </Initial>
    10274         
     
    10678          </Initial>
    10779
     80          <Initial>
     81            <label>refractoryEnd</label>
     82            <value>false</value>
     83          </Initial>
     84
     85          <Initial>
     86            <label>Isyn</label>
     87            <value>10.0</value>
     88          </Initial>
     89
     90          <Initial>
     91            <label>tspike</label>
     92            <value>0.0</value>
     93          </Initial>
     94
     95          <Initial>
     96            <label>t_rpend</label>
     97            <value>0.0</value>
     98          </Initial>
     99
    108100        </properties>
    109101
    110         <ivp name="adExBurst2">
     102        <ivp name="TestAdExBurst2">
    111103          <timestep>0.001</timestep>
    112           <duration>800.0</duration>
     104          <duration>100.0</duration>
    113105        </ivp>
    114106
    115107    </Component>
    116108
    117 
    118     <Component name="adExBurst4">
    119 
    120         <Definition>
    121             <link> adExIaF_AL.xml </link>
    122             <language> NineML </language>
    123         </Definition>
    124 
    125         <properties>
    126 
    127           <Property>
    128             <label>C</label>
    129             <value>2.81E-10</value>
    130             <unit>kg^-1 m^-2 s^4 A^2</unit>
    131           </Property>
    132 
    133           <Property>
    134             <label>gL</label>
    135             <value>3.0E-8</value>
    136             <unit>kg^-1 m^-2 s^3 A^2</unit>
    137           </Property>
    138 
    139           <Property>
    140             <label>EL</label>
    141             <value>-0.0706</value>
    142             <unit>kg m^2 s^-3 A^-1</unit>
    143           </Property>
    144 
    145           <Property>
    146             <label>VT</label>
    147             <value>-0.0504</value>
    148             <unit>kg m^2 s^-3 A^-1</unit>
    149           </Property>
    150 
    151           <Property>
    152             <label>thresh</label>
    153             <value>-0.0404</value>
    154             <unit>kg m^2 s^-3 A^-1</unit>
    155           </Property>
    156 
    157           <Property>
    158             <label>reset</label>
    159             <value>-0.0472</value>
    160             <unit>kg m^2 s^-3 A^-1</unit>
    161           </Property>
    162 
    163           <Property>
    164             <label>delT</label>
    165             <value>0.002</value>
    166             <unit>kg m^2 s^-3 A^-1</unit>
    167           </Property>
    168 
    169           <Property>
    170             <label>tauw</label>
    171             <value>0.04</value>
    172             <unit>s</unit>
    173           </Property>
    174 
    175           <Property>
    176             <label>Iamp</label>
    177             <value>8.0E-10</value>
    178             <unit>A</unit>
    179           </Property>
    180 
    181           <Property>
    182             <label>Idel</label>
    183             <value>0.0</value>
    184             <unit>s</unit>
    185           </Property>
    186 
    187           <Property>
    188             <label>Idur</label>
    189             <value>2.0</value>
    190             <unit>s</unit>
    191           </Property>
    192 
    193           <Property>
    194             <label>a</label>
    195             <value>4.0E-9</value>
    196             <unit>kg^-1 m^-2 s^3 A^2</unit>
    197           </Property>
    198 
    199           <Property>
    200             <label>b</label>
    201             <value>8.0E-11</value>
    202             <unit>A</unit>
    203           </Property>
    204 
    205           <Initial>
    206             <label>V</label>
    207             <value>-65.0</value>
    208           </Initial>
    209 
    210           <Initial>
    211             <label>W</label>
    212             <value>-1.625</value>
    213           </Initial>
    214          
    215           <Initial>
    216             <label>spikeOutput</label>
    217             <value>false</value>
    218           </Initial>
    219 
    220         </properties>
    221 
    222         <ivp name="adExBurst2">
    223           <timestep>0.001</timestep>
    224           <duration>800.0</duration>
    225         </ivp>
    226 
    227     </Component>
    228 
    229 
    230     <Component name="adExBurstChaos">
    231 
    232         <Definition>
    233             <link> adExIaF_AL.xml </link>
    234             <language> NineML </language>
    235         </Definition>
    236 
    237         <properties>
    238 
    239           <Property>
    240             <label>C</label>
    241             <value>2.81E-10</value>
    242             <unit>kg^-1 m^-2 s^4 A^2</unit>
    243           </Property>
    244 
    245           <Property>
    246             <label>gL</label>
    247             <value>3.0E-8</value>
    248             <unit>kg^-1 m^-2 s^3 A^2</unit>
    249           </Property>
    250 
    251           <Property>
    252             <label>EL</label>
    253             <value>-0.0706</value>
    254             <unit>kg m^2 s^-3 A^-1</unit>
    255           </Property>
    256 
    257           <Property>
    258             <label>VT</label>
    259             <value>-0.0504</value>
    260             <unit>kg m^2 s^-3 A^-1</unit>
    261           </Property>
    262 
    263           <Property>
    264             <label>thresh</label>
    265             <value>-0.0404</value>
    266             <unit>kg m^2 s^-3 A^-1</unit>
    267           </Property>
    268 
    269           <Property>
    270             <label>reset</label>
    271             <value>-0.048</value>
    272             <unit>kg m^2 s^-3 A^-1</unit>
    273           </Property>
    274 
    275           <Property>
    276             <label>delT</label>
    277             <value>0.002</value>
    278             <unit>kg m^2 s^-3 A^-1</unit>
    279           </Property>
    280 
    281           <Property>
    282             <label>tauw</label>
    283             <value>0.04</value>
    284             <unit>s</unit>
    285           </Property>
    286 
    287           <Property>
    288             <label>Iamp</label>
    289             <value>8.0E-10</value>
    290             <unit>A</unit>
    291           </Property>
    292 
    293           <Property>
    294             <label>Idel</label>
    295             <value>0.0</value>
    296             <unit>s</unit>
    297           </Property>
    298 
    299           <Property>
    300             <label>Idur</label>
    301             <value>2.0</value>
    302             <unit>s</unit>
    303           </Property>
    304 
    305           <Property>
    306             <label>a</label>
    307             <value>4.0E-9</value>
    308             <unit>kg^-1 m^-2 s^3 A^2</unit>
    309           </Property>
    310 
    311           <Property>
    312             <label>b</label>
    313             <value>8.0E-11</value>
    314             <unit>A</unit>
    315           </Property>
    316 
    317           <Initial>
    318             <label>V</label>
    319             <value>-65.0</value>
    320           </Initial>
    321 
    322           <Initial>
    323             <label>W</label>
    324             <value>-1.625</value>
    325           </Initial>
    326          
    327           <Initial>
    328             <label>spikeOutput</label>
    329             <value>false</value>
    330           </Initial>
    331 
    332         </properties>
    333 
    334         <ivp name="adExBurst2">
    335           <timestep>0.001</timestep>
    336           <duration>800.0</duration>
    337         </ivp>
    338 
    339     </Component>
    340 
    341 
    342     <Component name="adExRebound">
    343 
    344         <Definition>
    345             <link> adExIaF_AL.xml </link>
    346             <language> NineML </language>
    347         </Definition>
    348 
    349         <properties>
    350 
    351           <Property>
    352             <label>C</label>
    353             <value>2.81E-10</value>
    354             <unit>kg^-1 m^-2 s^4 A^2</unit>
    355           </Property>
    356 
    357           <Property>
    358             <label>gL</label>
    359             <value>3.0E-8</value>
    360             <unit>kg^-1 m^-2 s^3 A^2</unit>
    361           </Property>
    362 
    363           <Property>
    364             <label>EL</label>
    365             <value>-0.06</value>
    366             <unit>kg m^2 s^-3 A^-1</unit>
    367           </Property>
    368 
    369           <Property>
    370             <label>VT</label>
    371             <value>-0.0054</value>
    372             <unit>kg m^2 s^-3 A^-1</unit>
    373           </Property>
    374 
    375           <Property>
    376             <label>thresh</label>
    377             <value>-0.03</value>
    378             <unit>kg m^2 s^-3 A^-1</unit>
    379           </Property>
    380 
    381           <Property>
    382             <label>reset</label>
    383             <value>-0.051</value>
    384             <unit>kg m^2 s^-3 A^-1</unit>
    385           </Property>
    386 
    387           <Property>
    388             <label>delT</label>
    389             <value>0.002</value>
    390             <unit>kg m^2 s^-3 A^-1</unit>
    391           </Property>
    392 
    393           <Property>
    394             <label>tauw</label>
    395             <value>0.15</value>
    396             <unit>s</unit>
    397           </Property>
    398 
    399           <Property>
    400             <label>Iamp</label>
    401             <value>-5.0E-10</value>
    402             <unit>A</unit>
    403           </Property>
    404 
    405           <Property>
    406             <label>Idel</label>
    407             <value>0.15</value>
    408             <unit>s</unit>
    409           </Property>
    410 
    411           <Property>
    412             <label>Idur</label>
    413             <value>0.05</value>
    414             <unit>s</unit>
    415           </Property>
    416 
    417           <Property>
    418             <label>a</label>
    419             <value>2.0E-7</value>
    420             <unit>kg^-1 m^-2 s^3 A^2</unit>
    421           </Property>
    422 
    423           <Property>
    424             <label>b</label>
    425             <value>1.0E-10</value>
    426             <unit>A</unit>
    427           </Property>
    428 
    429           <Initial>
    430             <label>V</label>
    431             <value>-65.0</value>
    432           </Initial>
    433 
    434           <Initial>
    435             <label>W</label>
    436             <value>-1.625</value>
    437           </Initial>
    438          
    439           <Initial>
    440             <label>spikeOutput</label>
    441             <value>false</value>
    442           </Initial>
    443 
    444         </properties>
    445 
    446         <ivp name="adExBurst2">
    447           <timestep>0.001</timestep>
    448           <duration>800.0</duration>
    449         </ivp>
    450 
    451     </Component>
    452 
    453 
    454 
    455109</NineML>
  • release/4/9ML-toolkit/trunk/examples/TestLeakyIAF.9ML

    r23765 r30917  
    55struct
    66
    7  binding construct V t gL vL Isyn C theta tspike spike Vreset trefractory refractory_end h =
     7 binding construct t V gL vL Isyn C theta tspike spike Vreset trefractory refractory_end rst h =
    88
    99        binding subthreshold_eq       = [ D (V t h) = (((- gL) * (V - vL)) + Isyn) / C ]
    1010        binding threshold_detect      = [ spike = (V >= theta) ]
    1111        binding tspike_assignment     = [ tspike = if spike then t else tspike ]
    12         binding subthreshold_regime   = Diagram.SEQUENCE subthreshold_eq (Diagram.SEQUENCE threshold_detect tspike_assignment)
     12        binding vreset_assignment     = [ V = Vreset ]
     13        binding spike_assignments     = Diagram.SEQUENCE tspike_assignment vreset_assignment
     14        binding subthreshold_regime   = Diagram.SEQUENCE subthreshold_eq (Diagram.SEQUENCE threshold_detect (Diagram.ON spike_assignments spike))
    1315        binding refractory_regime     = [
    1416                                          [ V = Vreset ]
     
    1618                                          [ t = t + h ]
    1719                                        ]
    18         return Diagram.RTRANSITION subthreshold_regime refractory_regime spike refractory_end
     20        return Diagram.RTRANSITION subthreshold_regime refractory_regime spike refractory_end rst
    1921
    2022
     
    2729  binding diagram =
    2830    LeakyIAF.construct
     31        ( S.realsig `t       (S.realconst 0.0 ))
    2932        ( S.realsig `V       (S.realconst -65.0 ))
    30         ( S.realsig `t       (S.realconst 0.0 ))
    3133        ( S.realsig `gL      (S.realconst 0.2 ))
    3234        ( S.realsig `vL      (S.realconst -70.0 ))
     
    3941        ( S.realsig `trefractory (S.realconst 5.0 ))
    4042        ( S.boolsig `refractory_end (S.boolconst false ))
    41         ( S.realsig `h  (S.realconst 0.001 ))
     43        ( S.boolsig `rst     (S.boolconst false ))
     44        ( S.realsig `h       (S.realconst 0.001 ))
    4245
    4346
    44   binding ivp = IVP.construct diagram `t `h 0.0 5.0
     47  binding TestLeakyIF = IVP.run diagram `t `h 0.0 100.0
    4548
    4649end
  • release/4/9ML-toolkit/trunk/parse.scm

    r30881 r30917  
    177177(define diagram-sequence     (Longid (Pdot (Pident (ident-create "Diagram")) "SEQUENCE")))
    178178(define diagram-union         (Longid (Pdot (Pident (ident-create "Diagram")) "UNION")))
     179(define diagram-on            (Longid (Pdot (Pident (ident-create "Diagram")) "ON")))
    179180(define diagram-transient     (Longid (Pdot (Pident (ident-create "Diagram")) "TRANSIENT")))
    180181(define diagram-transition    (Longid (Pdot (Pident (ident-create "Diagram")) "TRANSITION")))
     
    446447
    447448(define (make-rtransition state-name relations aliases
    448                           ode-variables1 ode-rhss1 trigger-name1 trigger-rhs1 assign-variables1 assign-rhss1 e1
    449                           ode-variables2 ode-rhss2 trigger-name2 trigger-rhs2 assign-variables2 assign-rhss2 e2)
     449                          ode-variables1 ode-rhss1 trigger-name1 trigger-rhs1 assign-variables1 assign-rhss1
     450                          c-assign-variables1 c-assign-rhss1 e1
     451                          ode-variables2 ode-rhss2 trigger-name2 trigger-rhs2 assign-variables2 assign-rhss2
     452                          c-assign-variables2 c-assign-rhss2 e2)
    450453
    451454  (let (
     
    468471           )))
    469472
     473        (c-assignments1
     474         (make-algebraic-eqn-lst-expr
     475          (map (lambda (var rhs) (make-algebraic-eqn var (make-signal-expr rhs subst: aliases))  )
     476               c-assign-variables1 c-assign-rhss1)
     477           ))
     478       
     479
     480        (c-assignments2
     481         (make-algebraic-eqn-lst-expr
     482          (map (lambda (var rhs) (make-algebraic-eqn var (make-signal-expr rhs subst: aliases))  )
     483               c-assign-variables2 c-assign-rhss2)
     484           ))
     485
    470486        (odes1
    471487         (if (null? relations)
     
    513529                    sys))
    514530
    515               (if assignments1
    516                   (Apply
    517                    (Apply diagram-sequence odes1)
    518                    assignments1)
    519                   odes1)))
     531              ((lambda (sys)
     532                 (if c-assignments1
     533                     (Apply
     534                      (Apply diagram-sequence sys)
     535                      (Apply (Apply diagram-on c-assignments1)
     536                             (Apply
     537                              (Apply signal-boolsig (Const `(label ,trigger-name1)))
     538                              (Apply signal-boolconst (Const `(bool #f))))))
     539                      sys))
     540
     541               (if assignments1
     542                   (Apply
     543                    (Apply diagram-sequence odes1)
     544                    assignments1)
     545                   odes1))))
    520546     
    521547      ((lambda (sys)
     
    524550             sys))
    525551
    526        (if (null? ode-variables2)
    527            
    528            (if (null? relations)
    529                
    530                assignments2
    531                
    532                (make-relations relations assignments2))
    533            
    534            (if assignments2
    535                (Apply
    536                 (Apply diagram-sequence odes2)
    537                 assignments2)
    538                odes2))
     552       ((lambda (sys)
     553          (if c-assignments2
     554              (Apply
     555               (Apply diagram-sequence sys)
     556               (Apply (Apply diagram-on c-assignments2)
     557                      (Apply
     558                       (Apply signal-boolsig (Const `(label ,trigger-name2)))
     559                       (Apply signal-boolconst (Const `(bool #f))))))
     560              sys))
     561       
     562        (if (null? ode-variables2)
     563           
     564            (if (null? relations)
     565               
     566                assignments2
     567               
     568                (make-relations relations assignments2))
     569           
     570            (if assignments2
     571                (Apply
     572                 (Apply diagram-sequence odes2)
     573                 assignments2)
     574                odes2)))
    539575       ))
    540576     
     
    697733 
    698734  (let ((lst (sexpr-macro-text mac)))
     735
    699736    (match lst
    700737
     
    767804                  (state-assignments  ((sxpath `(nml:StateAssignment)) r))
    768805                  )
    769              
     806
    770807              (if (> (length on-conditions) 1)
    771808                  (error 'parse-al-sxml-dynamics "multiple on-conditions blocks in regime are not supported" r))
     
    9951032                                   
    9961033                                   (assign-variables (map (lambda (x)
    997                                                             (string->symbol (sxml:attr  x 'variable)))
    998                                                           (append state-assignments
    999                                                                   c-state-assignments)))
     1034                                                            (string->symbol (sxml:attr  x 'variable)))
     1035                                                          state-assignments))
     1036
     1037                                   (c-assign-variables (map (lambda (x)
     1038                                                              (string->symbol (sxml:attr  x 'variable)))
     1039                                                            c-state-assignments))
    10001040                                   
    10011041                                   (assign-rhss      (map (lambda (x)
     
    10031043                                                             (sxml:kidn-cadr 'nml:MathInline x)
    10041044                                                             'parse-al-sxml-dynamics))
    1005                                                           (append state-assignments
    1006                                                                   c-state-assignments)))
     1045                                                          state-assignments))
     1046
     1047                                   (c-assign-rhss      (map (lambda (x)
     1048                                                              (parse-string-expr
     1049                                                               (sxml:kidn-cadr 'nml:MathInline x)
     1050                                                               'parse-al-sxml-dynamics))
     1051                                                            c-state-assignments))
     1052
    10071053                                   )
    10081054                              (list ode-variables ode-rhss trigger-name trigger-rhs assign-variables assign-rhss
     1055                                    c-assign-variables c-assign-rhss
    10091056                                    (and (not (null? on-events)) (car on-events)))
    10101057                             
     
    10151062                    )
    10161063
    1017                 (match-let ((((ode-variables1 ode-rhss1 trigger-name1 trigger-rhs1 assign-variables1 assign-rhss1 e1)
    1018                               (ode-variables2 ode-rhss2 trigger-name2 trigger-rhs2 assign-variables2 assign-rhss2 e2))
     1064                (match-let ((((ode-variables1 ode-rhss1 trigger-name1 trigger-rhs1 assign-variables1 assign-rhss1
     1065                                              c-assign-variables1 c-assign-rhss1 e1)
     1066                              (ode-variables2 ode-rhss2 trigger-name2 trigger-rhs2 assign-variables2 assign-rhss2
     1067                                              c-assign-variables2 c-assign-rhss2 e2))
    10191068                             regimes))
    10201069
    10211070                      (make-rtransition state-name relations aliases
    1022                                         ode-variables1 ode-rhss1 trigger-name1 trigger-rhs1 assign-variables1 assign-rhss1 e1
    1023                                         ode-variables2 ode-rhss2 trigger-name2 trigger-rhs2 assign-variables2 assign-rhss2 e2))
     1071                                        ode-variables1 ode-rhss1 trigger-name1 trigger-rhs1 assign-variables1 assign-rhss1
     1072                                        c-assign-variables1 c-assign-rhss1 e1
     1073                                        ode-variables2 ode-rhss2 trigger-name2 trigger-rhs2 assign-variables2 assign-rhss2
     1074                                        c-assign-variables2 c-assign-rhss2 e2))
    10241075               
    10251076                ))
  • release/4/9ML-toolkit/trunk/plot.scm

    r27072 r30917  
    130130                               (fknode (recur fk)))
    131131                           (set-label node "TRANSIENT")
     132                           (let ((edge1  (register-edge node fnode)))
     133                             (set-label edge1 e)
     134                             node
     135                             ))))
     136                     
     137                      ((ON) 
     138                       (let ((f (cadr sexpr)) (e (recur (caddr sexpr))) )
     139                         (let ((node (register-node (gensym 'on)))
     140                               (fnode (recur f)))
     141                           (set-label node "ON")
    132142                           (let ((edge1  (register-edge node fnode)))
    133143                             (set-label edge1 e)
Note: See TracChangeset for help on using the changeset viewer.