Project

General

Profile

Bug #4254 ยป exampleCompositeActors.xml

Christopher Brooks, 07/20/2009 05:49 PM

 
1
<?xml version="1.0" standalone="no"?>
2
<!DOCTYPE entity PUBLIC "-//UC Berkeley//DTD MoML 1//EN"
3
    "http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd">
4
<entity name="example2" class="ptolemy.actor.TypedCompositeActor">
5
    <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.1.devel">
6
    </property>
7
    <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={0, 0, 1280, 984}, maximized=true}">
8
    </property>
9
    <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[1017, 860]">
10
    </property>
11
    <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="2.2128238253893">
12
    </property>
13
    <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{364.796875, 299.3218411996067}">
14
    </property>
15
    <property name="PN Director" class="ptolemy.domains.pn.kernel.PNDirector">
16
        <property name="timeResolution" class="ptolemy.actor.parameters.SharedParameter" value="1E-10">
17
        </property>
18
        <property name="initialQueueCapacity" class="ptolemy.data.expr.Parameter" value="1">
19
        </property>
20
        <property name="maximumQueueCapacity" class="ptolemy.data.expr.Parameter" value="65536">
21
        </property>
22
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
23
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
24
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Mudit Goel, Edward A. Lee, Xiaowen Xin</configure></property>
25
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
26
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;&lt;p&gt;PN Directors are natural candidates for managing workflows that require parallel processing on distributed computing systems. PN workflows are powerful because they have few restrictions. On the other hand, they can be very inefficient.&lt;/p&gt;&#10;&#10;&lt;p&gt;The Process Network (PN) Director is similar to the SDF Director in that it does not have a notion of time. However, unlike the SDF Director, the PN Director does not statically calculate firing schedules. Instead, a PN workflow is driven by data availability: tokens are created on output ports whenever input tokens are available and the outputs can be calculated. Output tokens are passed to connected actors, where they are held in a buffer until that next actor collects all required inputs and can fire. The PN Director finishes executing a workflow only when there are no new data token sources anywhere in the workflow. &lt;/p&gt;&#10;&#10;&lt;p&gt;The same execution process that gives the PN Director its flexibility can also lead to some unexpected results: workflows may refuse to automatically terminate because tokens are always generated and available to downstream actors, for example. If one actor fires at a much higher rate than another, a downstream actor's memory buffer may overflow, causing workflow execution to fail.&lt;/p&gt;&#10;&#10;</configure></property>
27
<property name="prop:initialQueueCapacity" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The initial size of the queues for each communication channel. The value is an integer that defaults to 1. This is an advanced parameter that can usually be left at its  default value.</configure></property>
28
<property name="prop:maximumQueueCapacity" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The maximum size of the queues for each communication channel. The value is an integer that defaults to 65536. To specify unbounded queues, set the value to 0. This is an advanced parameter that can usually be left at its  default value.</configure></property>
29
</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:2:1">
30
        </property>
31
        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.pn.kernel.PNDirector">
32
            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:2:1">
33
            </property>
34
        </property>
35
        <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
36
        </property>
37
        <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
38
        </property>
39
        <property name="_location" class="ptolemy.kernel.util.Location" value="[135.0, 115.0]">
40
        </property>
41
    </property>
42
    <entity name="CompositeActor-PN" class="ptolemy.actor.TypedCompositeActor">
43
        <property name="_location" class="ptolemy.kernel.util.Location" value="{150.0, 295.0}">
44
        </property>
45
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={0, 0, 1280, 984}, maximized=true}">
46
        </property>
47
        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[1017, 860]">
48
        </property>
49
        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
50
        </property>
51
        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{508.5, 430.0}">
52
        </property>
53
        <property name="PN Director" class="ptolemy.domains.pn.kernel.PNDirector">
54
            <property name="timeResolution" class="ptolemy.actor.parameters.SharedParameter" value="1E-10">
55
            </property>
56
            <property name="initialQueueCapacity" class="ptolemy.data.expr.Parameter" value="1">
57
            </property>
58
            <property name="maximumQueueCapacity" class="ptolemy.data.expr.Parameter" value="65536">
59
            </property>
60
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
61
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
62
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Mudit Goel, Edward A. Lee, Xiaowen Xin</configure></property>
63
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
64
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;&lt;p&gt;PN Directors are natural candidates for managing workflows that require parallel processing on distributed computing systems. PN workflows are powerful because they have few restrictions. On the other hand, they can be very inefficient.&lt;/p&gt;&#10;&#10;&lt;p&gt;The Process Network (PN) Director is similar to the SDF Director in that it does not have a notion of time. However, unlike the SDF Director, the PN Director does not statically calculate firing schedules. Instead, a PN workflow is driven by data availability: tokens are created on output ports whenever input tokens are available and the outputs can be calculated. Output tokens are passed to connected actors, where they are held in a buffer until that next actor collects all required inputs and can fire. The PN Director finishes executing a workflow only when there are no new data token sources anywhere in the workflow. &lt;/p&gt;&#10;&#10;&lt;p&gt;The same execution process that gives the PN Director its flexibility can also lead to some unexpected results: workflows may refuse to automatically terminate because tokens are always generated and available to downstream actors, for example. If one actor fires at a much higher rate than another, a downstream actor's memory buffer may overflow, causing workflow execution to fail.&lt;/p&gt;&#10;&#10;</configure></property>
65
<property name="prop:initialQueueCapacity" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The initial size of the queues for each communication channel. The value is an integer that defaults to 1. This is an advanced parameter that can usually be left at its  default value.</configure></property>
66
<property name="prop:maximumQueueCapacity" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The maximum size of the queues for each communication channel. The value is an integer that defaults to 65536. To specify unbounded queues, set the value to 0. This is an advanced parameter that can usually be left at its  default value.</configure></property>
67
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:2:1">
68
            </property>
69
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.pn.kernel.PNDirector">
70
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:2:1">
71
                </property>
72
            </property>
73
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
74
            </property>
75
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
76
            </property>
77
            <property name="_location" class="ptolemy.kernel.util.Location" value="{160, 155}">
78
            </property>
79
        </property>
80
        <port name="port" class="ptolemy.actor.TypedIOPort">
81
            <property name="output"/>
82
            <property name="_location" class="ptolemy.kernel.util.Location" value="[755.0, 300.0]">
83
            </property>
84
        </port>
85
        <entity name="String Constant" class="ptolemy.actor.lib.StringConst">
86
            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="1">
87
            </property>
88
            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
89
            </property>
90
            <property name="value" class="ptolemy.data.expr.Parameter" value="&quot;Composite Actor PN director&quot;">
91
            </property>
92
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
93
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
94
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
95
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
96
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The StringConstant actor outputs a string specified via the actor's value parameter.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). &lt;/p&gt;&#10;&#10;&lt;p&gt;NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. &lt;/p&gt;&#10;&#10;</configure></property>
97
<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
98
<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
99
<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
100
<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the actor. Specified strings do not require enclosing quotes. (To include a '$' sign in the string, enter '$$'.)</configure></property>
101
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:204:1">
102
            </property>
103
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.StringConst">
104
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1052:1">
105
                </property>
106
            </property>
107
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#StringFunctionActor">
108
            </property>
109
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
110
            </property>
111
            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
112
                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
113
                </property>
114
                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="60">
115
                </property>
116
            </property>
117
            <property name="_location" class="ptolemy.kernel.util.Location" value="[265.0, 365.0]">
118
            </property>
119
        </entity>
120
        <entity name="Display" class="ptolemy.actor.lib.gui.Display">
121
            <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={223, 357, 426, 214}, maximized=false}">
122
            </property>
123
            <property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute" value="[418, 158]">
124
            </property>
125
            <property name="rowsDisplayed" class="ptolemy.data.expr.Parameter" value="10">
126
            </property>
127
            <property name="columnsDisplayed" class="ptolemy.data.expr.Parameter" value="40">
128
            </property>
129
            <property name="suppressBlankLines" class="ptolemy.data.expr.Parameter" value="false">
130
            </property>
131
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
132
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
133
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong, Edward A. Lee</configure></property>
134
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
135
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Display actor reads tokens of any type via its input multiport, and displays each token on a separate line in a text display window.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specify the size of the text display window with the rowsDisplayed and columnsDisplayed parameters. Simply resizing the window onscreen does not persistently change the size when the workflow is saved, closed, and then re-opened. &lt;/p&gt;&#10;&#10;&lt;p&gt;If the input is a string token, then the actor strips the surrounding quotation marks before displaying the value.&lt;/p&gt; &#10;&#10;&lt;p&gt;Select the suppressBlankLines parameter to specify that the actor not add blank lines to the display. By default, the actor will add blank lines.&lt;/p&gt;&#10;&#10;&lt;p&gt;Note: this actor can consume large amounts of memory. It is not advisable to use it to display large output streams.&lt;/p&gt;</configure></property>
136
<property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts tokens of any type.</configure></property>
137
<property name="prop:suppressBlankLines" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the actor should display blank lines (the default) or suppress them.</configure></property>
138
<property name="prop:rowsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical size of the display, in rows. The value is an integer that defaults to 10.</configure></property>
139
<property name="prop:columnsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal size of the display, in columns. The value is an integer that defaults to 40.</configure></property>
140
<property name="prop:title" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The title of the text display window. If specified, the value will appear in the title bar of the text display window.</configure></property>
141
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:7:1">
142
            </property>
143
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.gui.Display">
144
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:883:1">
145
                </property>
146
            </property>
147
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
148
            </property>
149
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
150
            </property>
151
            <property name="_location" class="ptolemy.kernel.util.Location" value="{625, 570}">
152
            </property>
153
        </entity>
154
        <relation name="relation2" class="ptolemy.actor.TypedIORelation">
155
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
156
            </property>
157
            <vertex name="vertex1" value="{510.0, 430.0}">
158
            </vertex>
159
        </relation>
160
        <link port="port" relation="relation2"/>
161
        <link port="String Constant.output" relation="relation2"/>
162
        <link port="Display.input" relation="relation2"/>
163
    </entity>
164
    <entity name="CompositeActor-SDF-Display" class="ptolemy.actor.TypedCompositeActor">
165
        <property name="_location" class="ptolemy.kernel.util.Location" value="{410.0, 300.0}">
166
        </property>
167
        <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
168
            <property name="iterations" class="ptolemy.data.expr.Parameter" value="1">
169
            </property>
170
            <property name="vectorizationFactor" class="ptolemy.data.expr.Parameter" value="1">
171
            </property>
172
            <property name="allowDisconnectedGraphs" class="ptolemy.data.expr.Parameter" value="false">
173
            </property>
174
            <property name="allowRateChanges" class="ptolemy.data.expr.Parameter" value="false">
175
            </property>
176
            <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="true">
177
            </property>
178
            <property name="period" class="ptolemy.data.expr.Parameter" value="0.0">
179
            </property>
180
            <property name="synchronizeToRealTime" class="ptolemy.data.expr.Parameter" value="false">
181
            </property>
182
            <property name="timeResolution" class="ptolemy.actor.parameters.SharedParameter" value="1E-10">
183
            </property>
184
            <property name="Scheduler" class="ptolemy.domains.sdf.kernel.SDFScheduler">
185
                <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="constrainBufferSizes">
186
                </property>
187
            </property>
188
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
189
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
190
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Steve Neuendorffer</configure></property>
191
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
192
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;&lt;p&gt;The SDF Director is often used to oversee fairly simple, sequential workflows in which the director can determine the order of actor invocation from the workflow. Types of workflows that would run well under an SDF Director include processing and reformatting tabular data, converting one data type to another, and reading and plotting a series of data points. A workflow in which an image is read, processed (rotated, scaled, clipped, filtered, etc.), and then displayed, is also an example of a sequential workflow that requires a director simply to ensure that each actor fires in the proper order (i.e., that each actor executes only after it receives its required inputs).&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director is very efficient and will not tax system resources with overhead. However, this efficiency requires that certain conditions be met, namely that the data consumption and production rate of each actor in an SDF workflow be constant and declared. If an actor reads one piece of data and calculates and outputs a single result, it must always read and output a single token of data. This data rate cannot change during workflow execution and, in general, workflows that require dynamic scheduling and/or flow control cannot use this director. Additionally, the SDF Director has no understanding of passing time (at least by default), and actors that depend on a notion of time may not work as expected. For example, a TimedPlotter actor will plot all values at time zero when used in SDF. &lt;/p&gt;&#10;&#10;&lt;p&gt;By default, the SDF Director requires that all actors in its workflow be connected. Otherwise, the director cannot account for concurrency between disconnected workflow parts. Usually, a PN Director should be used for workflows that contain disconnected actors; however, the SDF Director's allowDisconnectedGraphs parameter may also be set to true. The SDF Director will then schedule each disconnected &quot;island&quot; independently. The director cannot infer the sequential relationship between disconnected actors (i.e., nothing forces the director to finish executing all actors on one island before firing actors on another). However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF model indicate an error.&lt;/p&gt;&#10; &#10;&lt;p&gt;Because SDF Directors schedule actors to fire only after they receive their inputs, workflows that require loops (feeding an actor's output back into its input port for further processing) can cause &quot;deadlock&quot; errors. The deadlock errors occur because the actor depends on its own output value as an initial input. To fix this problem, use a SampleDelay actor to generate and inject an initial input value into the workflow.&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director determines the order in which actors execute and how many times each actor needs to be fired to complete a single iteration of the workflow. This schedule is calculated BEFORE the director begins to iterate the workflow. Because the SDF Director calculates a schedule in advance, it is quite efficient. However, SDF workflows must be static. In other words, the same number of tokens must be consumed/produced at every iteration of the workflow. Workflows that require dynamic control structures, such as a BooleanSwitch actor that sends output on one of two ports depending on the value of a 'control', cannot be used with an SDF Director because the number of tokens on each output can change for each execution.&lt;/p&gt;&#10;&#10;&lt;p&gt;Unless otherwise specified, the SDF Director assumes that each actor consumes and produces exactly one token per channel on each firing. Actors that do not follow the one-token-per-channel firing convention (e.g., Repeat or Ramp) must declare the number of tokens they produce or consume via the appropriate parameters. &lt;/p&gt;&#10;&#10;&lt;p&gt;The number of times a workflow is iterated is controlled by the director's iterations parameter. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. &lt;/p&gt;&#10;&#10;&lt;p&gt;The amount of data processed by an SDF workflow is a function of both the number of times the workflow iterates and the value of the director's vectorizationFactor parameter. The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. &lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director has several advanced parameters that are generally only relevant when an SDF workflow contains composite components. In most cases the period, timeResolution, synchronizeToRealTime, allowRateChanges, timeResolution, and constrainBufferSizes parameters can be left at their default values.&lt;/p&gt;&#10;&#10;&lt;p&gt;For more information about the SDF Director, see the Ptolemy documentation (http://ptolemy.eecs.berkeley.edu/papers/05/ptIIdesign3-domains/ptIIdesign3-domains.pdf).&lt;/p&gt;&#10;&#10;</configure></property>
193
<property name="prop:allowDisconnectedGraphs" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether to allow disconnected actors in the workflow (by default, all actors are required to be connected). If disconnected actors are permitted, the SDF Director will schedule each disconnected 'island' independently. Nothing &quot;forces&quot; the director to finish executing all actors on one island before firing actors on another. However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF workflow indicate an error.</configure></property>
194
<property name="prop:allowRateChanges" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether dynamic rate changes are permitted or not. By default, rate changes are not permitted, and the director will perform a check to disallow such workflows. If the parameter is selected, then workflows that require rate parameters to be modified during execution are valid, and the SDF Director will dynamically compute a new schedule at runtime. This is an advanced parameter that can usually be left at its default value.</configure></property>
195
<property name="prop:constrainBufferSizes" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether buffer sizes are fixed. By default, buffers are fixed, and attempts to write to the buffer that cause the buffer to exceed its scheduled size result in an error. This is an advanced parameter that can usually be left at its default value.</configure></property>
196
<property name="prop:timeResolution" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time precision used by this director. All time values are rounded to the nearest multiple of this number. The value is a double that defaults to &quot;1E-10&quot; (which is 10-10). This is an advanced parameter that can usually be left at its default value.</configure></property>
197
<property name="prop:iterations" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify the number of times a workflow is iterated. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. </configure></property>
198
<property name="prop:vectorizationFactor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. </configure></property>
199
<property name="prop:synchronizeToRealTime" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the execution should synchronize to real time or not. By default, the director does not synchronize to real time. If synchronize is selected, the director will only process the workflow when elapsed real time matches the product of the period parameter and the iteration count. Note: if the period parameter has a value of 0.0 (the default), then selecting this parameter has no effect. This is an advanced parameter that can usually be left at its default value.</configure></property>
200
<property name="prop:period" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time period of each iteration. The value is a double that defaults to 0.0, which means that the director does not increment workflow time. If the value greater than 0.0, the actor will increment workflow time each time it fires. This is an advanced parameter that can usually be left at its default value. </configure></property>
201
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:1:1">
202
            </property>
203
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
204
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
205
                </property>
206
            </property>
207
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
208
            </property>
209
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
210
            </property>
211
            <property name="_location" class="ptolemy.kernel.util.Location" value="{-55, 100}">
212
            </property>
213
        </property>
214
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={204, 116, 871, 792}, maximized=false}">
215
        </property>
216
        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 659]">
217
        </property>
218
        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
219
        </property>
220
        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{366.0, 290.5}">
221
        </property>
222
        <port name="port_0" class="ptolemy.actor.TypedIOPort">
223
            <property name="input"/>
224
            <property name="_location" class="ptolemy.kernel.util.Location" value="[100.0, 355.0]">
225
            </property>
226
        </port>
227
        <entity name="Constant3" class="ptolemy.actor.lib.Const">
228
            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
229
            </property>
230
            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
231
            </property>
232
            <property name="value" class="ptolemy.data.expr.Parameter" value="&quot;Composite Actor SDF director&quot;">
233
            </property>
234
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
235
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
236
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
237
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
238
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Constant actor outputs a constant, which is specified by the value parameter. By default, the actor outputs the integer 1.&lt;/p&gt;&#10;&#10;&lt;p&gt;The actor can be used to output other types of values, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The actor'&#10;s output type matches the type of the specified value.&lt;/p&gt;&#10;&#10;&lt;p&gt;NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. &lt;/p&gt;&#10;</configure></property>
239
<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the specified constant. By default, the output is 1.</configure></property>
240
<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time.</configure></property>
241
<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
242
<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the Constant actor. By default, the value is the integer token 1. The value can be set to another type, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The  output type matches the type of the value specified here.</configure></property>
243
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:1:1">
244
            </property>
245
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Const">
246
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:877:1">
247
                </property>
248
            </property>
249
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#ConstantActor">
250
            </property>
251
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
252
            </property>
253
            <property name="kar" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:kar:57:1">
254
            </property>
255
            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
256
                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
257
                </property>
258
                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
259
                </property>
260
            </property>
261
            <property name="_location" class="ptolemy.kernel.util.Location" value="[395.0, 355.0]">
262
            </property>
263
            <property name="" class="ptolemy.vergil.basic.DocAttribute">
264
                <property name="description" class="ptolemy.data.expr.StringParameter" value="&lt;p&gt;The Constant actor outputs a constant, which is specified by the value parameter. By default, the actor outputs the integer 1.&lt;/p&gt;&#10;&#10;&lt;p&gt;The actor can be used to output other types of values, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The actor'&#10;s output type matches the type of the specified value.&lt;/p&gt;&#10;&#10;&lt;p&gt;NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. &lt;/p&gt;&#10;">
265
                </property>
266
                <property name="author" class="ptolemy.kernel.util.StringAttribute" value="null">
267
                </property>
268
                <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
269
                </property>
270
                <property name="firingCountLimit (parameter)" class="ptolemy.data.expr.StringParameter" value="The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.">
271
                </property>
272
                <property name="value (parameter)" class="ptolemy.data.expr.StringParameter" value="The value produced by the Constant actor. By default, the value is the integer token 1. The value can be set to another type, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The  output type matches the type of the value specified here.">
273
                </property>
274
                <property name="output (port)" class="ptolemy.kernel.util.StringAttribute" value="An output port that broadcasts the specified constant. By default, the output is 1.">
275
                </property>
276
                <property name="trigger (port)" class="ptolemy.kernel.util.StringAttribute" value="A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time.">
277
                </property>
278
            </property>
279
        </entity>
280
        <entity name="Display" class="ptolemy.actor.lib.gui.Display">
281
            <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={660, 166, 426, 214}, maximized=false}">
282
            </property>
283
            <property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute" value="[418, 158]">
284
            </property>
285
            <property name="rowsDisplayed" class="ptolemy.data.expr.Parameter" value="10">
286
            </property>
287
            <property name="columnsDisplayed" class="ptolemy.data.expr.Parameter" value="40">
288
            </property>
289
            <property name="suppressBlankLines" class="ptolemy.data.expr.Parameter" value="false">
290
            </property>
291
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
292
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
293
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong, Edward A. Lee</configure></property>
294
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
295
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Display actor reads tokens of any type via its input multiport, and displays each token on a separate line in a text display window.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specify the size of the text display window with the rowsDisplayed and columnsDisplayed parameters. Simply resizing the window onscreen does not persistently change the size when the workflow is saved, closed, and then re-opened. &lt;/p&gt;&#10;&#10;&lt;p&gt;If the input is a string token, then the actor strips the surrounding quotation marks before displaying the value.&lt;/p&gt; &#10;&#10;&lt;p&gt;Select the suppressBlankLines parameter to specify that the actor not add blank lines to the display. By default, the actor will add blank lines.&lt;/p&gt;&#10;&#10;&lt;p&gt;Note: this actor can consume large amounts of memory. It is not advisable to use it to display large output streams.&lt;/p&gt;</configure></property>
296
<property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts tokens of any type.</configure></property>
297
<property name="prop:suppressBlankLines" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the actor should display blank lines (the default) or suppress them.</configure></property>
298
<property name="prop:rowsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical size of the display, in rows. The value is an integer that defaults to 10.</configure></property>
299
<property name="prop:columnsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal size of the display, in columns. The value is an integer that defaults to 40.</configure></property>
300
<property name="prop:title" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The title of the text display window. If specified, the value will appear in the title bar of the text display window.</configure></property>
301
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:7:1">
302
            </property>
303
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.gui.Display">
304
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:883:1">
305
                </property>
306
            </property>
307
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
308
            </property>
309
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
310
            </property>
311
            <property name="_location" class="ptolemy.kernel.util.Location" value="[550.0, 365.0]">
312
            </property>
313
        </entity>
314
        <relation name="relation" class="ptolemy.actor.TypedIORelation">
315
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
316
            </property>
317
        </relation>
318
        <relation name="relation6_0" class="ptolemy.actor.TypedIORelation">
319
        </relation>
320
        <link port="port_0" relation="relation6_0"/>
321
        <link port="Constant3.output" relation="relation"/>
322
        <link port="Constant3.trigger" relation="relation6_0"/>
323
        <link port="Display.input" relation="relation"/>
324
    </entity>
325
    <entity name="CompositeActor-SDF" class="ptolemy.actor.TypedCompositeActor">
326
        <property name="_location" class="ptolemy.kernel.util.Location" value="[420.0, 185.0]">
327
        </property>
328
        <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
329
            <property name="iterations" class="ptolemy.data.expr.Parameter" value="1">
330
            </property>
331
            <property name="vectorizationFactor" class="ptolemy.data.expr.Parameter" value="1">
332
            </property>
333
            <property name="allowDisconnectedGraphs" class="ptolemy.data.expr.Parameter" value="false">
334
            </property>
335
            <property name="allowRateChanges" class="ptolemy.data.expr.Parameter" value="false">
336
            </property>
337
            <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="true">
338
            </property>
339
            <property name="period" class="ptolemy.data.expr.Parameter" value="0.0">
340
            </property>
341
            <property name="synchronizeToRealTime" class="ptolemy.data.expr.Parameter" value="false">
342
            </property>
343
            <property name="timeResolution" class="ptolemy.actor.parameters.SharedParameter" value="1E-10">
344
            </property>
345
            <property name="Scheduler" class="ptolemy.domains.sdf.kernel.SDFScheduler">
346
                <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="constrainBufferSizes">
347
                </property>
348
            </property>
349
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
350
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
351
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Steve Neuendorffer</configure></property>
352
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
353
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;&lt;p&gt;The SDF Director is often used to oversee fairly simple, sequential workflows in which the director can determine the order of actor invocation from the workflow. Types of workflows that would run well under an SDF Director include processing and reformatting tabular data, converting one data type to another, and reading and plotting a series of data points. A workflow in which an image is read, processed (rotated, scaled, clipped, filtered, etc.), and then displayed, is also an example of a sequential workflow that requires a director simply to ensure that each actor fires in the proper order (i.e., that each actor executes only after it receives its required inputs).&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director is very efficient and will not tax system resources with overhead. However, this efficiency requires that certain conditions be met, namely that the data consumption and production rate of each actor in an SDF workflow be constant and declared. If an actor reads one piece of data and calculates and outputs a single result, it must always read and output a single token of data. This data rate cannot change during workflow execution and, in general, workflows that require dynamic scheduling and/or flow control cannot use this director. Additionally, the SDF Director has no understanding of passing time (at least by default), and actors that depend on a notion of time may not work as expected. For example, a TimedPlotter actor will plot all values at time zero when used in SDF. &lt;/p&gt;&#10;&#10;&lt;p&gt;By default, the SDF Director requires that all actors in its workflow be connected. Otherwise, the director cannot account for concurrency between disconnected workflow parts. Usually, a PN Director should be used for workflows that contain disconnected actors; however, the SDF Director's allowDisconnectedGraphs parameter may also be set to true. The SDF Director will then schedule each disconnected &quot;island&quot; independently. The director cannot infer the sequential relationship between disconnected actors (i.e., nothing forces the director to finish executing all actors on one island before firing actors on another). However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF model indicate an error.&lt;/p&gt;&#10; &#10;&lt;p&gt;Because SDF Directors schedule actors to fire only after they receive their inputs, workflows that require loops (feeding an actor's output back into its input port for further processing) can cause &quot;deadlock&quot; errors. The deadlock errors occur because the actor depends on its own output value as an initial input. To fix this problem, use a SampleDelay actor to generate and inject an initial input value into the workflow.&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director determines the order in which actors execute and how many times each actor needs to be fired to complete a single iteration of the workflow. This schedule is calculated BEFORE the director begins to iterate the workflow. Because the SDF Director calculates a schedule in advance, it is quite efficient. However, SDF workflows must be static. In other words, the same number of tokens must be consumed/produced at every iteration of the workflow. Workflows that require dynamic control structures, such as a BooleanSwitch actor that sends output on one of two ports depending on the value of a 'control', cannot be used with an SDF Director because the number of tokens on each output can change for each execution.&lt;/p&gt;&#10;&#10;&lt;p&gt;Unless otherwise specified, the SDF Director assumes that each actor consumes and produces exactly one token per channel on each firing. Actors that do not follow the one-token-per-channel firing convention (e.g., Repeat or Ramp) must declare the number of tokens they produce or consume via the appropriate parameters. &lt;/p&gt;&#10;&#10;&lt;p&gt;The number of times a workflow is iterated is controlled by the director's iterations parameter. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. &lt;/p&gt;&#10;&#10;&lt;p&gt;The amount of data processed by an SDF workflow is a function of both the number of times the workflow iterates and the value of the director's vectorizationFactor parameter. The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. &lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director has several advanced parameters that are generally only relevant when an SDF workflow contains composite components. In most cases the period, timeResolution, synchronizeToRealTime, allowRateChanges, timeResolution, and constrainBufferSizes parameters can be left at their default values.&lt;/p&gt;&#10;&#10;&lt;p&gt;For more information about the SDF Director, see the Ptolemy documentation (http://ptolemy.eecs.berkeley.edu/papers/05/ptIIdesign3-domains/ptIIdesign3-domains.pdf).&lt;/p&gt;&#10;&#10;</configure></property>
354
<property name="prop:allowDisconnectedGraphs" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether to allow disconnected actors in the workflow (by default, all actors are required to be connected). If disconnected actors are permitted, the SDF Director will schedule each disconnected 'island' independently. Nothing &quot;forces&quot; the director to finish executing all actors on one island before firing actors on another. However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF workflow indicate an error.</configure></property>
355
<property name="prop:allowRateChanges" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether dynamic rate changes are permitted or not. By default, rate changes are not permitted, and the director will perform a check to disallow such workflows. If the parameter is selected, then workflows that require rate parameters to be modified during execution are valid, and the SDF Director will dynamically compute a new schedule at runtime. This is an advanced parameter that can usually be left at its default value.</configure></property>
356
<property name="prop:constrainBufferSizes" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether buffer sizes are fixed. By default, buffers are fixed, and attempts to write to the buffer that cause the buffer to exceed its scheduled size result in an error. This is an advanced parameter that can usually be left at its default value.</configure></property>
357
<property name="prop:timeResolution" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time precision used by this director. All time values are rounded to the nearest multiple of this number. The value is a double that defaults to &quot;1E-10&quot; (which is 10-10). This is an advanced parameter that can usually be left at its default value.</configure></property>
358
<property name="prop:iterations" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify the number of times a workflow is iterated. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. </configure></property>
359
<property name="prop:vectorizationFactor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. </configure></property>
360
<property name="prop:synchronizeToRealTime" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the execution should synchronize to real time or not. By default, the director does not synchronize to real time. If synchronize is selected, the director will only process the workflow when elapsed real time matches the product of the period parameter and the iteration count. Note: if the period parameter has a value of 0.0 (the default), then selecting this parameter has no effect. This is an advanced parameter that can usually be left at its default value.</configure></property>
361
<property name="prop:period" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time period of each iteration. The value is a double that defaults to 0.0, which means that the director does not increment workflow time. If the value greater than 0.0, the actor will increment workflow time each time it fires. This is an advanced parameter that can usually be left at its default value. </configure></property>
362
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:1:1">
363
            </property>
364
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
365
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
366
                </property>
367
            </property>
368
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
369
            </property>
370
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
371
            </property>
372
            <property name="_location" class="ptolemy.kernel.util.Location" value="{85, 100}">
373
            </property>
374
        </property>
375
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={204, 116, 871, 792}, maximized=false}">
376
        </property>
377
        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 659]">
378
        </property>
379
        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
380
        </property>
381
        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{577.0, 329.5}">
382
        </property>
383
        <port name="port_3" class="ptolemy.actor.TypedIOPort">
384
            <property name="input"/>
385
            <property name="_location" class="ptolemy.kernel.util.Location" value="[115.0, 255.0]">
386
            </property>
387
        </port>
388
        <entity name="Constant" class="ptolemy.actor.lib.Const">
389
            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
390
            </property>
391
            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
392
            </property>
393
            <property name="value" class="ptolemy.data.expr.Parameter" value="3">
394
            </property>
395
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
396
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
397
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
398
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
399
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Constant actor outputs a constant, which is specified by the value parameter. By default, the actor outputs the integer 1.&lt;/p&gt;&#10;&#10;&lt;p&gt;The actor can be used to output other types of values, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The actor'&#10;s output type matches the type of the specified value.&lt;/p&gt;&#10;&#10;&lt;p&gt;NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. &lt;/p&gt;&#10;</configure></property>
400
<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the specified constant. By default, the output is 1.</configure></property>
401
<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time.</configure></property>
402
<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
403
<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the Constant actor. By default, the value is the integer token 1. The value can be set to another type, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The  output type matches the type of the value specified here.</configure></property>
404
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:1:1">
405
            </property>
406
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Const">
407
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:877:1">
408
                </property>
409
            </property>
410
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#ConstantActor">
411
            </property>
412
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
413
            </property>
414
            <property name="kar" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:kar:57:1">
415
            </property>
416
            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
417
                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
418
                </property>
419
                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
420
                </property>
421
            </property>
422
            <property name="_location" class="ptolemy.kernel.util.Location" value="[365.0, 185.0]">
423
            </property>
424
        </entity>
425
        <entity name="Constant2" class="ptolemy.actor.lib.Const">
426
            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
427
            </property>
428
            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
429
            </property>
430
            <property name="value" class="ptolemy.data.expr.Parameter" value="2">
431
            </property>
432
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
433
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
434
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
435
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
436
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Constant actor outputs a constant, which is specified by the value parameter. By default, the actor outputs the integer 1.&lt;/p&gt;&#10;&#10;&lt;p&gt;The actor can be used to output other types of values, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The actor'&#10;s output type matches the type of the specified value.&lt;/p&gt;&#10;&#10;&lt;p&gt;NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. &lt;/p&gt;&#10;</configure></property>
437
<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the specified constant. By default, the output is 1.</configure></property>
438
<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time.</configure></property>
439
<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
440
<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the Constant actor. By default, the value is the integer token 1. The value can be set to another type, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The  output type matches the type of the value specified here.</configure></property>
441
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:1:1">
442
            </property>
443
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Const">
444
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:877:1">
445
                </property>
446
            </property>
447
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#ConstantActor">
448
            </property>
449
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
450
            </property>
451
            <property name="kar" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:kar:57:1">
452
            </property>
453
            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
454
                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
455
                </property>
456
                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
457
                </property>
458
            </property>
459
            <property name="_location" class="ptolemy.kernel.util.Location" value="[370.0, 250.0]">
460
            </property>
461
        </entity>
462
        <entity name="Monitor Value" class="ptolemy.actor.lib.MonitorValue">
463
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
464
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
465
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
466
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
467
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The MonitorValue actor displays a received value on the Workflow canvas. The actor accepts tokens of any type and stores the most recently received token in its value parameter, which is displayed on the Workflow canvas.&lt;/p&gt;</configure></property>
468
<property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts tokens of any type. </configure></property>
469
<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The most recent input value. The value is displayed on the Workflow canvas, and has the same type as the input.</configure></property>
470
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:8:1">
471
            </property>
472
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.MonitorValue">
473
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:884:1">
474
                </property>
475
            </property>
476
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
477
            </property>
478
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
479
            </property>
480
            <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="20">
481
            </property>
482
            <property name="_icon" class="ptolemy.vergil.icon.UpdatedValueIcon">
483
                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
484
                </property>
485
                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="displayWidth">
486
                </property>
487
            </property>
488
            <property name="_location" class="ptolemy.kernel.util.Location" value="[655.0, 220.0]">
489
            </property>
490
            <property name="" class="ptolemy.vergil.basic.DocAttribute">
491
                <property name="description" class="ptolemy.data.expr.StringParameter" value="&lt;p&gt;The MonitorValue actor displays a received value on the Workflow canvas. The actor accepts tokens of any type and stores the most recently received token in its value parameter, which is displayed on the Workflow canvas.&lt;/p&gt;">
492
                </property>
493
                <property name="author" class="ptolemy.kernel.util.StringAttribute" value="Edward A. Lee">
494
                </property>
495
                <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
496
                </property>
497
                <property name="value (parameter)" class="ptolemy.data.expr.StringParameter" value="The most recent input value. The value is displayed on the Workflow canvas, and has the same type as the input.">
498
                </property>
499
                <property name="input (port)" class="ptolemy.kernel.util.StringAttribute" value="A multiport that accepts tokens of any type. ">
500
                </property>
501
            </property>
502
        </entity>
503
        <entity name="Add or Subtract" class="ptolemy.actor.lib.AddSubtract">
504
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
505
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
506
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>yuhong xiong and Edward lee</configure></property>
507
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
508
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The AddOrSubtract actor reads values via its two input ports (plus and minus), performs an add and/or subtract operation, and outputs the result.&lt;/p&gt;&#10;&#10;&lt;p&gt;The input ports are multiports, meaning that they can accept multiple inputs. Any values received via the plus port will be added; any values received via the minus port will be subtracted. Either port can be left unconnected. Leave the minus port unconnected to create a simple adder, for example. &lt;/p&gt;&#10;&#10;&lt;p&gt;Both of the input ports are polymorphic, accepting data of multiple types. The actor will automatically resolve the input type to the least upper bound of the presented values. For example, if the plus input port receives a Boolean value on one input channel and an integer on another, the resolved type will be a string, permitting the two inputs to be concatenated as strings. Note that strings cannot be subtracted. If the actor resolves an input type into a type that cannot be subtracted, it will generate an error.&lt;/p&gt;&#10;&#10;&lt;p&gt;The actor outputs the sum or difference and derives an output type based on the input values.&lt;/p&gt;</configure></property>
509
<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the sum or difference of the inputs. The actor derives the output type based on the type of the inputs.</configure></property>
510
<property name="port:minus" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A muliport that accepts values to be subtracted. The actor automatically infers the input type based on the type of the input values.</configure></property>
511
<property name="port:plus" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A muliport that accepts values to be added. The actor automatically infers the input type based on the type of the input values.</configure></property>
512
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:69:1">
513
            </property>
514
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.AddSubtract">
515
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:944:1">
516
                </property>
517
            </property>
518
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#ArithmeticMathOperationActor">
519
            </property>
520
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#ArithmeticOperation">
521
            </property>
522
            <property name="_location" class="ptolemy.kernel.util.Location" value="[470.0, 195.0]">
523
            </property>
524
        </entity>
525
        <relation name="relation4" class="ptolemy.actor.TypedIORelation">
526
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
527
            </property>
528
        </relation>
529
        <relation name="relation5" class="ptolemy.actor.TypedIORelation">
530
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
531
            </property>
532
        </relation>
533
        <relation name="relation3" class="ptolemy.actor.TypedIORelation">
534
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
535
            </property>
536
        </relation>
537
        <relation name="relation6_3" class="ptolemy.actor.TypedIORelation">
538
        </relation>
539
        <link port="port_3" relation="relation6_3"/>
540
        <link port="Constant.output" relation="relation3"/>
541
        <link port="Constant2.output" relation="relation4"/>
542
        <link port="Constant2.trigger" relation="relation6_3"/>
543
        <link port="Monitor Value.input" relation="relation5"/>
544
        <link port="Add or Subtract.plus" relation="relation3"/>
545
        <link port="Add or Subtract.plus" relation="relation4"/>
546
        <link port="Add or Subtract.output" relation="relation5"/>
547
    </entity>
548
    <entity name="CompositeActor-SDF-Statistics" class="ptolemy.actor.TypedCompositeActor">
549
        <property name="_location" class="ptolemy.kernel.util.Location" value="{415.0, 425.0}">
550
        </property>
551
        <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
552
            <property name="iterations" class="ptolemy.data.expr.Parameter" value="1">
553
            </property>
554
            <property name="vectorizationFactor" class="ptolemy.data.expr.Parameter" value="1">
555
            </property>
556
            <property name="allowDisconnectedGraphs" class="ptolemy.data.expr.Parameter" value="false">
557
            </property>
558
            <property name="allowRateChanges" class="ptolemy.data.expr.Parameter" value="false">
559
            </property>
560
            <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="true">
561
            </property>
562
            <property name="period" class="ptolemy.data.expr.Parameter" value="0.0">
563
            </property>
564
            <property name="synchronizeToRealTime" class="ptolemy.data.expr.Parameter" value="false">
565
            </property>
566
            <property name="timeResolution" class="ptolemy.actor.parameters.SharedParameter" value="1E-10">
567
            </property>
568
            <property name="Scheduler" class="ptolemy.domains.sdf.kernel.SDFScheduler">
569
                <property name="constrainBufferSizes" class="ptolemy.data.expr.Parameter" value="constrainBufferSizes">
570
                </property>
571
            </property>
572
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
573
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
574
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Steve Neuendorffer</configure></property>
575
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
576
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&#10;&lt;p&gt;The SDF Director is often used to oversee fairly simple, sequential workflows in which the director can determine the order of actor invocation from the workflow. Types of workflows that would run well under an SDF Director include processing and reformatting tabular data, converting one data type to another, and reading and plotting a series of data points. A workflow in which an image is read, processed (rotated, scaled, clipped, filtered, etc.), and then displayed, is also an example of a sequential workflow that requires a director simply to ensure that each actor fires in the proper order (i.e., that each actor executes only after it receives its required inputs).&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director is very efficient and will not tax system resources with overhead. However, this efficiency requires that certain conditions be met, namely that the data consumption and production rate of each actor in an SDF workflow be constant and declared. If an actor reads one piece of data and calculates and outputs a single result, it must always read and output a single token of data. This data rate cannot change during workflow execution and, in general, workflows that require dynamic scheduling and/or flow control cannot use this director. Additionally, the SDF Director has no understanding of passing time (at least by default), and actors that depend on a notion of time may not work as expected. For example, a TimedPlotter actor will plot all values at time zero when used in SDF. &lt;/p&gt;&#10;&#10;&lt;p&gt;By default, the SDF Director requires that all actors in its workflow be connected. Otherwise, the director cannot account for concurrency between disconnected workflow parts. Usually, a PN Director should be used for workflows that contain disconnected actors; however, the SDF Director's allowDisconnectedGraphs parameter may also be set to true. The SDF Director will then schedule each disconnected &quot;island&quot; independently. The director cannot infer the sequential relationship between disconnected actors (i.e., nothing forces the director to finish executing all actors on one island before firing actors on another). However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF model indicate an error.&lt;/p&gt;&#10; &#10;&lt;p&gt;Because SDF Directors schedule actors to fire only after they receive their inputs, workflows that require loops (feeding an actor's output back into its input port for further processing) can cause &quot;deadlock&quot; errors. The deadlock errors occur because the actor depends on its own output value as an initial input. To fix this problem, use a SampleDelay actor to generate and inject an initial input value into the workflow.&lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director determines the order in which actors execute and how many times each actor needs to be fired to complete a single iteration of the workflow. This schedule is calculated BEFORE the director begins to iterate the workflow. Because the SDF Director calculates a schedule in advance, it is quite efficient. However, SDF workflows must be static. In other words, the same number of tokens must be consumed/produced at every iteration of the workflow. Workflows that require dynamic control structures, such as a BooleanSwitch actor that sends output on one of two ports depending on the value of a 'control', cannot be used with an SDF Director because the number of tokens on each output can change for each execution.&lt;/p&gt;&#10;&#10;&lt;p&gt;Unless otherwise specified, the SDF Director assumes that each actor consumes and produces exactly one token per channel on each firing. Actors that do not follow the one-token-per-channel firing convention (e.g., Repeat or Ramp) must declare the number of tokens they produce or consume via the appropriate parameters. &lt;/p&gt;&#10;&#10;&lt;p&gt;The number of times a workflow is iterated is controlled by the director's iterations parameter. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. &lt;/p&gt;&#10;&#10;&lt;p&gt;The amount of data processed by an SDF workflow is a function of both the number of times the workflow iterates and the value of the director's vectorizationFactor parameter. The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. &lt;/p&gt;&#10;&#10;&lt;p&gt;The SDF Director has several advanced parameters that are generally only relevant when an SDF workflow contains composite components. In most cases the period, timeResolution, synchronizeToRealTime, allowRateChanges, timeResolution, and constrainBufferSizes parameters can be left at their default values.&lt;/p&gt;&#10;&#10;&lt;p&gt;For more information about the SDF Director, see the Ptolemy documentation (http://ptolemy.eecs.berkeley.edu/papers/05/ptIIdesign3-domains/ptIIdesign3-domains.pdf).&lt;/p&gt;&#10;&#10;</configure></property>
577
<property name="prop:allowDisconnectedGraphs" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether to allow disconnected actors in the workflow (by default, all actors are required to be connected). If disconnected actors are permitted, the SDF Director will schedule each disconnected 'island' independently. Nothing &quot;forces&quot; the director to finish executing all actors on one island before firing actors on another. However, the order of execution within each island should be correct. Usually, disconnected graphs in an SDF workflow indicate an error.</configure></property>
578
<property name="prop:allowRateChanges" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether dynamic rate changes are permitted or not. By default, rate changes are not permitted, and the director will perform a check to disallow such workflows. If the parameter is selected, then workflows that require rate parameters to be modified during execution are valid, and the SDF Director will dynamically compute a new schedule at runtime. This is an advanced parameter that can usually be left at its default value.</configure></property>
579
<property name="prop:constrainBufferSizes" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether buffer sizes are fixed. By default, buffers are fixed, and attempts to write to the buffer that cause the buffer to exceed its scheduled size result in an error. This is an advanced parameter that can usually be left at its default value.</configure></property>
580
<property name="prop:timeResolution" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time precision used by this director. All time values are rounded to the nearest multiple of this number. The value is a double that defaults to &quot;1E-10&quot; (which is 10-10). This is an advanced parameter that can usually be left at its default value.</configure></property>
581
<property name="prop:iterations" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify the number of times a workflow is iterated. By default, this parameter is set to &quot;0&quot;. Note that &quot;0&quot; does not mean &quot;no iterations.&quot; Rather, &quot;0&quot; means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. A value of 1, meaning that the director will run the workflow once, is often the best setting when building an SDF workflow. </configure></property>
582
<property name="prop:vectorizationFactor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vectorizationFactor is used to increase the efficiency of a workflow by increasing the number of times actors fire each time the workflow iterates. If the parameter is set to a positive integer (other than 1), the director will fire each actor the specified number of times more than normal. The default is 1, indicating that no vectorization should be performed. Keep in mind that changing the vectorizationFactor parameter changes the meaning of a nested SDF workflow and may cause deadlock in a workflow that uses it. </configure></property>
583
<property name="prop:synchronizeToRealTime" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the execution should synchronize to real time or not. By default, the director does not synchronize to real time. If synchronize is selected, the director will only process the workflow when elapsed real time matches the product of the period parameter and the iteration count. Note: if the period parameter has a value of 0.0 (the default), then selecting this parameter has no effect. This is an advanced parameter that can usually be left at its default value.</configure></property>
584
<property name="prop:period" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The time period of each iteration. The value is a double that defaults to 0.0, which means that the director does not increment workflow time. If the value greater than 0.0, the actor will increment workflow time each time it fires. This is an advanced parameter that can usually be left at its default value. </configure></property>
585
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:1:1">
586
            </property>
587
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.domains.sdf.kernel.SDFDirector">
588
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:directorclass:1:1">
589
                </property>
590
            </property>
591
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Director">
592
            </property>
593
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Director">
594
            </property>
595
            <property name="_location" class="ptolemy.kernel.util.Location" value="{-15, 80}">
596
            </property>
597
        </property>
598
        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={204, 116, 871, 792}, maximized=false}">
599
        </property>
600
        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 659]">
601
        </property>
602
        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
603
        </property>
604
        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{178.0, 329.5}">
605
        </property>
606
        <port name="port_0" class="ptolemy.actor.TypedIOPort">
607
            <property name="input"/>
608
            <property name="_location" class="ptolemy.kernel.util.Location" value="[40.0, 555.0]">
609
            </property>
610
        </port>
611
        <entity name="Mean" class="ptolemy.actor.lib.gui.Display">
612
            <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={747, 182, 492, 220}, maximized=false}">
613
            </property>
614
            <property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute" value="[484, 164]">
615
            </property>
616
            <property name="rowsDisplayed" class="ptolemy.data.expr.Parameter" value="10">
617
            </property>
618
            <property name="columnsDisplayed" class="ptolemy.data.expr.Parameter" value="40">
619
            </property>
620
            <property name="suppressBlankLines" class="ptolemy.data.expr.Parameter" value="false">
621
            </property>
622
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
623
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
624
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong, Edward A. Lee</configure></property>
625
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
626
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Display actor reads tokens of any type via its input multiport, and displays each token on a separate line in a text display window.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specify the size of the text display window with the rowsDisplayed and columnsDisplayed parameters. Simply resizing the window onscreen does not persistently change the size when the workflow is saved, closed, and then re-opened. &lt;/p&gt;&#10;&#10;&lt;p&gt;If the input is a string token, then the actor strips the surrounding quotation marks before displaying the value.&lt;/p&gt; &#10;&#10;&lt;p&gt;Select the suppressBlankLines parameter to specify that the actor not add blank lines to the display. By default, the actor will add blank lines.&lt;/p&gt;&#10;&#10;&lt;p&gt;Note: this actor can consume large amounts of memory. It is not advisable to use it to display large output streams.&lt;/p&gt;</configure></property>
627
<property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts tokens of any type.</configure></property>
628
<property name="prop:suppressBlankLines" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the actor should display blank lines (the default) or suppress them.</configure></property>
629
<property name="prop:rowsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical size of the display, in rows. The value is an integer that defaults to 10.</configure></property>
630
<property name="prop:columnsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal size of the display, in columns. The value is an integer that defaults to 40.</configure></property>
631
<property name="prop:title" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The title of the text display window. If specified, the value will appear in the title bar of the text display window.</configure></property>
632
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:7:1">
633
            </property>
634
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.gui.Display">
635
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:883:1">
636
                </property>
637
            </property>
638
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
639
            </property>
640
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
641
            </property>
642
            <property name="_location" class="ptolemy.kernel.util.Location" value="[680.0, 475.0]">
643
            </property>
644
        </entity>
645
        <entity name="Constant" class="ptolemy.actor.lib.Const">
646
            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
647
            </property>
648
            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
649
            </property>
650
            <property name="value" class="ptolemy.data.expr.Parameter" value="{1,2,3,4,5,6,7,8,9,10}">
651
            </property>
652
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
653
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
654
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
655
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
656
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Constant actor outputs a constant, which is specified by the value parameter. By default, the actor outputs the integer 1.&lt;/p&gt;&#10;&#10;&lt;p&gt;The actor can be used to output other types of values, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The actor'&#10;s output type matches the type of the specified value.&lt;/p&gt;&#10;&#10;&lt;p&gt;NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. &lt;/p&gt;&#10;</configure></property>
657
<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the specified constant. By default, the output is 1.</configure></property>
658
<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time.</configure></property>
659
<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
660
<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the Constant actor. By default, the value is the integer token 1. The value can be set to another type, e.g., a string (such as &quot;Hello&quot;) or a double (such as 1.2). The  output type matches the type of the value specified here.</configure></property>
661
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:1:1">
662
            </property>
663
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Const">
664
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:877:1">
665
                </property>
666
            </property>
667
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#ConstantActor">
668
            </property>
669
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
670
            </property>
671
            <property name="kar" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:kar:57:1">
672
            </property>
673
            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
674
                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
675
                </property>
676
                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
677
                </property>
678
            </property>
679
            <property name="_location" class="ptolemy.kernel.util.Location" value="[300.0, 540.0]">
680
            </property>
681
        </entity>
682
        <entity name="SummaryStatistics" class="org.ecoinformatics.seek.R.RExpression">
683
            <property name="expression" class="ptolemy.kernel.util.StringAttribute" value="xmean = mean(x)&#10;xstd = sd(x)&#10;xvar = var(x)">
684
<display name="R function or script"/>                <property name="R Expression" class="ptolemy.actor.gui.style.TextStyle">
685
                    <property name="height" class="ptolemy.data.expr.Parameter" value="10">
686
                    </property>
687
                    <property name="width" class="ptolemy.data.expr.Parameter" value="30">
688
                    </property>
689
                </property>
690
            </property>
691
            <property name="Rcwd" class="ptolemy.data.expr.StringParameter" value="C:\Documents and Settings\Dan Higgins\.kepler\">
692
<display name="R working directory"/>            </property>
693
            <property name="save_nosave" class="ptolemy.data.expr.StringParameter" value="--no-save">
694
<display name="Save or not"/>            </property>
695
            <property name="graphicsFormat" class="ptolemy.data.expr.StringParameter" value="png">
696
<display name="Graphics Format"/>            </property>
697
            <property name="graphicsOutput" class="ptolemy.data.expr.Parameter" value="true">
698
<display name="Graphics Output"/>            </property>
699
            <property name="displayGraphicsOutput" class="ptolemy.data.expr.Parameter" value="false">
700
<display name="Automatically display graphics"/>            </property>
701
            <property name="numXPixels" class="ptolemy.data.expr.StringParameter" value="480">
702
<display name="Number of X pixels in image"/>            </property>
703
            <property name="numYPixels" class="ptolemy.data.expr.StringParameter" value="480">
704
<display name="Number of Y pixels in image"/>            </property>
705
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
706
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
707
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Dan Higgins</configure></property>
708
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
709
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The SummaryStatistics actor accepts an array of values and uses R to calculate their mean, standard deviation, and variance.  The actor outputs both a graphical and textual representation of the summary analysis.&lt;/p&gt;&#10;&#10;&lt;p&gt;The R application must be installed on the local system to use this actor. R is a language and environment for statistical computing and graphics. For more information about R, see http://www.r-project.org/.&lt;/p&gt;&#10;&#10;&lt;p&gt;The actor performs the analysis and saves a graphic of the results to the Kepler working directory. To view the results, connect an ImageJ actor to the graphicsFileName output port and/or a Display actor to the xmean, xstd, and xvar output port.&lt;/p&gt;&#10;</configure></property>
710
<property name="port:x" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An input port that accepts an array of values to evaluate.</configure></property>
711
<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a copy of the text output that R generates. As the actor communicates with R to run the R function or script, the output port sends back the response (i.e., the values and statistical outputs).</configure></property>
712
<property name="port:graphicsFileName" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the filename of the JPEG representing the generated results.</configure></property>
713
<property name="port:xstd" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the standard deviation of the input.</configure></property>
714
<property name="port:xvar" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the variance of the input.</configure></property>
715
<property name="port:xmean" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the mean of the input.</configure></property>
716
<property name="prop:Rcwd" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The 'R' working directory (the home directory by default). </configure></property>
717
<property name="prop:displayGraphicsOutput" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to display the plot once the actor has generated it.</configure></property>
718
<property name="prop:graphicsFormat" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The graphics output format. Currently the actor supports either  *.pdf or  *.png.</configure></property>
719
<property name="prop:numXPixels" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The width of the output graphic in pixels.</configure></property>
720
<property name="prop:numYPixels" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The height of the output graphic in pixels.</configure></property>
721
<property name="prop:expression" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The expression that is evaluated to produce the output.</configure></property>
722
<property name="prop:save_nosave" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether or not to save the R workspace when R is closed; set to '--save' to retrieve the workspace later in a workflow in another R-actor.</configure></property>
723
<property name="prop:graphicsOutput" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether or not to create a graphics output port. By default, the actor will create a graphics output port.</configure></property>
724
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:447:1">
725
            </property>
726
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.ecoinformatics.seek.R.RExpression">
727
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1126:2">
728
                </property>
729
            </property>
730
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#StatisticMathOperationActor">
731
            </property>
732
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#StatisticalOperation">
733
            </property>
734
            <property name="save or not" class="ptolemy.data.expr.StringParameter" value="--no-save">
735
            </property>
736
            <property name="_semType" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#StatisticMathOperationActor">
737
            </property>
738
            <property name="_location" class="ptolemy.kernel.util.Location" value="[460.0, 515.0]">
739
            </property>
740
            <port name="x" class="ptolemy.actor.TypedIOPort">
741
                <property name="input"/>
742
                <property name="_semType" class="org.kepler.sms.SemanticType" value="urn:lsid:lsid.ecoinformatics.org:onto:2:1#DependentVariable">
743
                </property>
744
            </port>
745
            <port name="xmean" class="ptolemy.actor.TypedIOPort">
746
                <property name="output"/>
747
                <property name="_semType" class="org.kepler.sms.SemanticType" value="urn:lsid:lsid.ecoinformatics.org:onto:2:1#Mean">
748
                </property>
749
            </port>
750
            <port name="xstd" class="ptolemy.actor.TypedIOPort">
751
                <property name="output"/>
752
                <property name="_semType" class="org.kepler.sms.SemanticType" value="urn:lsid:lsid.ecoinformatics.org:onto:2:1#StandardDeviation">
753
                </property>
754
            </port>
755
            <port name="xvar" class="ptolemy.actor.TypedIOPort">
756
                <property name="output"/>
757
                <property name="_semType" class="org.kepler.sms.SemanticType" value="urn:lsid:lsid.ecoinformatics.org:onto:2:1#Variance">
758
                </property>
759
            </port>
760
        </entity>
761
        <entity name="StandardDeviation" class="ptolemy.actor.lib.gui.Display">
762
<display name="Standard Deviation"/>            <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={751, 610, 492, 220}, maximized=false}">
763
            </property>
764
            <property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute" value="[484, 164]">
765
            </property>
766
            <property name="rowsDisplayed" class="ptolemy.data.expr.Parameter" value="10">
767
            </property>
768
            <property name="columnsDisplayed" class="ptolemy.data.expr.Parameter" value="40">
769
            </property>
770
            <property name="suppressBlankLines" class="ptolemy.data.expr.Parameter" value="false">
771
            </property>
772
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
773
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
774
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong, Edward A. Lee</configure></property>
775
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
776
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Display actor reads tokens of any type via its input multiport, and displays each token on a separate line in a text display window.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specify the size of the text display window with the rowsDisplayed and columnsDisplayed parameters. Simply resizing the window onscreen does not persistently change the size when the workflow is saved, closed, and then re-opened. &lt;/p&gt;&#10;&#10;&lt;p&gt;If the input is a string token, then the actor strips the surrounding quotation marks before displaying the value.&lt;/p&gt; &#10;&#10;&lt;p&gt;Select the suppressBlankLines parameter to specify that the actor not add blank lines to the display. By default, the actor will add blank lines.&lt;/p&gt;&#10;&#10;&lt;p&gt;Note: this actor can consume large amounts of memory. It is not advisable to use it to display large output streams.&lt;/p&gt;</configure></property>
777
<property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts tokens of any type.</configure></property>
778
<property name="prop:suppressBlankLines" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the actor should display blank lines (the default) or suppress them.</configure></property>
779
<property name="prop:rowsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical size of the display, in rows. The value is an integer that defaults to 10.</configure></property>
780
<property name="prop:columnsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal size of the display, in columns. The value is an integer that defaults to 40.</configure></property>
781
<property name="prop:title" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The title of the text display window. If specified, the value will appear in the title bar of the text display window.</configure></property>
782
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:7:1">
783
            </property>
784
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.gui.Display">
785
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:883:1">
786
                </property>
787
            </property>
788
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
789
            </property>
790
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
791
            </property>
792
            <property name="_location" class="ptolemy.kernel.util.Location" value="[685.0, 535.0]">
793
            </property>
794
        </entity>
795
        <entity name="Variance" class="ptolemy.actor.lib.gui.Display">
796
            <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={748, 394, 492, 220}, maximized=false}">
797
            </property>
798
            <property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute" value="[484, 164]">
799
            </property>
800
            <property name="rowsDisplayed" class="ptolemy.data.expr.Parameter" value="10">
801
            </property>
802
            <property name="columnsDisplayed" class="ptolemy.data.expr.Parameter" value="40">
803
            </property>
804
            <property name="suppressBlankLines" class="ptolemy.data.expr.Parameter" value="false">
805
            </property>
806
<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
807
<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
808
<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong, Edward A. Lee</configure></property>
809
<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
810
<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>&lt;p&gt;The Display actor reads tokens of any type via its input multiport, and displays each token on a separate line in a text display window.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specify the size of the text display window with the rowsDisplayed and columnsDisplayed parameters. Simply resizing the window onscreen does not persistently change the size when the workflow is saved, closed, and then re-opened. &lt;/p&gt;&#10;&#10;&lt;p&gt;If the input is a string token, then the actor strips the surrounding quotation marks before displaying the value.&lt;/p&gt; &#10;&#10;&lt;p&gt;Select the suppressBlankLines parameter to specify that the actor not add blank lines to the display. By default, the actor will add blank lines.&lt;/p&gt;&#10;&#10;&lt;p&gt;Note: this actor can consume large amounts of memory. It is not advisable to use it to display large output streams.&lt;/p&gt;</configure></property>
811
<property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts tokens of any type.</configure></property>
812
<property name="prop:suppressBlankLines" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify whether the actor should display blank lines (the default) or suppress them.</configure></property>
813
<property name="prop:rowsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical size of the display, in rows. The value is an integer that defaults to 10.</configure></property>
814
<property name="prop:columnsDisplayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal size of the display, in columns. The value is an integer that defaults to 40.</configure></property>
815
<property name="prop:title" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The title of the text display window. If specified, the value will appear in the title bar of the text display window.</configure></property>
816
</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:7:1">
817
            </property>
818
            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.gui.Display">
819
                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:883:1">
820
                </property>
821
            </property>
822
            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#TextualOutputActor">
823
            </property>
824
            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#TextualOutput">
825
            </property>
826
            <property name="_location" class="ptolemy.kernel.util.Location" value="[695.0, 595.0]">
827
            </property>
828
            <property name="" class="ptolemy.vergil.basic.DocAttribute">
829
                <property name="description" class="ptolemy.data.expr.StringParameter" value="&lt;p&gt;The Display actor reads tokens of any type via its input multiport, and displays each token on a separate line in a text display window.&lt;/p&gt;&#10;&#10;&lt;p&gt;Specify the size of the text display window with the rowsDisplayed and columnsDisplayed parameters. Simply resizing the window onscreen does not persistently change the size when the workflow is saved, closed, and then re-opened. &lt;/p&gt;&#10;&#10;&lt;p&gt;If the input is a string token, then the actor strips the surrounding quotation marks before displaying the value.&lt;/p&gt; &#10;&#10;&lt;p&gt;Select the suppressBlankLines parameter to specify that the actor not add blank lines to the display. By default, the actor will add blank lines.&lt;/p&gt;&#10;&#10;&lt;p&gt;Note: this actor can consume large amounts of memory. It is not advisable to use it to display large output streams.&lt;/p&gt;">
830
                </property>
831
                <property name="author" class="ptolemy.kernel.util.StringAttribute" value="Yuhong Xiong, Edward A. Lee">
832
                </property>
833
                <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
834
                </property>
835
                <property name="rowsDisplayed (parameter)" class="ptolemy.data.expr.StringParameter" value="The vertical size of the display, in rows. The value is an integer that defaults to 10.">
836
                </property>
837
                <property name="columnsDisplayed (parameter)" class="ptolemy.data.expr.StringParameter" value="The horizontal size of the display, in columns. The value is an integer that defaults to 40.">
838
                </property>
839
                <property name="suppressBlankLines (parameter)" class="ptolemy.data.expr.StringParameter" value="Specify whether the actor should display blank lines (the default) or suppress them.">
840
                </property>
841
                <property name="title (parameter)" class="ptolemy.data.expr.StringParameter" value="The title of the text display window. If specified, the value will appear in the title bar of the text display window.">
842
                </property>
843
                <property name="input (port)" class="ptolemy.kernel.util.StringAttribute" value="A multiport that accepts tokens of any type.">
844
                </property>
845
            </property>
846
        </entity>
847
        <relation name="relation2" class="ptolemy.actor.TypedIORelation">
848
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
849
            </property>
850
        </relation>
851
        <relation name="relation4" class="ptolemy.actor.TypedIORelation">
852
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
853
            </property>
854
        </relation>
855
        <relation name="relation3" class="ptolemy.actor.TypedIORelation">
856
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
857
            </property>
858
        </relation>
859
        <relation name="relation" class="ptolemy.actor.TypedIORelation">
860
            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
861
            </property>
862
        </relation>
863
        <relation name="relation6_0" class="ptolemy.actor.TypedIORelation">
864
        </relation>
865
        <link port="port_0" relation="relation6_0"/>
866
        <link port="Mean.input" relation="relation4"/>
867
        <link port="Constant.output" relation="relation"/>
868
        <link port="Constant.trigger" relation="relation6_0"/>
869
        <link port="SummaryStatistics.x" relation="relation"/>
870
        <link port="SummaryStatistics.xmean" relation="relation4"/>
871
        <link port="SummaryStatistics.xstd" relation="relation2"/>
872
        <link port="SummaryStatistics.xvar" relation="relation3"/>
873
        <link port="StandardDeviation.input" relation="relation2"/>
874
        <link port="Variance.input" relation="relation3"/>
875
    </entity>
876
    <relation name="relation6" class="ptolemy.actor.TypedIORelation">
877
        <property name="width" class="ptolemy.data.expr.Parameter" value="1">
878
        </property>
879
        <vertex name="vertex1" value="[315.0, 320.0]">
880
        </vertex>
881
    </relation>
882
    <link port="CompositeActor-PN.port" relation="relation6"/>
883
    <link port="CompositeActor-SDF-Display.port_0" relation="relation6"/>
884
    <link port="CompositeActor-SDF.port_3" relation="relation6"/>
885
    <link port="CompositeActor-SDF-Statistics.port_0" relation="relation6"/>
886
</entity>
    (1-1/1)