y_nelson 2.3.6 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{Introduction_to_Ruby_for_YNelson_Users.lyx → Introduction_to_Ruby_for_YPetri_and_YNelson_Users.lyx} +21 -33
- data/Introduction_to_Ruby_for_YPetri_and_YNelson_Users.pdf +0 -0
- data/{Introduction_to_YNelson_and_YPetri.lyx → Introduction_to_YPetri_and_YNelson.lyx} +404 -522
- data/Introduction_to_YPetri_and_YNelson.pdf +0 -0
- data/{Object_model_of_YNelson_and_YPetri.lyx → Object_model_of_YPetri_and_YNelson.lyx} +48 -51
- data/Object_model_of_YPetri_and_YNelson.pdf +0 -0
- data/lib/y_nelson/version.rb +1 -1
- metadata +8 -8
- data/Introduction_to_Ruby_for_YNelson_Users.pdf +0 -0
- data/Introduction_to_YNelson_and_YPetri.pdf +0 -0
- data/Object_model_of_YNelson_and_YPetri.pdf +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d8ae630804969be734da51a5b79f46d4ecca69b
|
|
4
|
+
data.tar.gz: 56a6b0a5c3271882bfd872c4c99de8046703c105
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f8db0f66ffda5c2e43dd179b5f7d2360a67c4662f578ed165a29eadacee87ac07d72f5052229e884f070872402aeb791a4e5d69cfd6af83432ef79521b56181a
|
|
7
|
+
data.tar.gz: 3d571c38e86c48b3c5f0b881406821c25d858c5c03826c51bcee5b0f036f417eda6a3a6fa80e862ce74d2cef71d919bba9edde88c9edc531049fb0182180a4de
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#LyX 2.
|
|
2
|
-
\lyxformat
|
|
1
|
+
#LyX 2.1 created this file. For more info see http://www.lyx.org/
|
|
2
|
+
\lyxformat 474
|
|
3
3
|
\begin_document
|
|
4
4
|
\begin_header
|
|
5
5
|
\textclass article
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
\font_roman default
|
|
13
13
|
\font_sans default
|
|
14
14
|
\font_typewriter default
|
|
15
|
+
\font_math auto
|
|
15
16
|
\font_default_family default
|
|
16
17
|
\use_non_tex_fonts false
|
|
17
18
|
\font_sc false
|
|
18
19
|
\font_osf false
|
|
19
20
|
\font_sf_scale 100
|
|
20
21
|
\font_tt_scale 100
|
|
21
|
-
|
|
22
22
|
\graphics default
|
|
23
23
|
\default_output_format default
|
|
24
24
|
\output_sync 0
|
|
@@ -29,15 +29,24 @@
|
|
|
29
29
|
\use_hyperref false
|
|
30
30
|
\papersize default
|
|
31
31
|
\use_geometry true
|
|
32
|
-
\
|
|
33
|
-
\
|
|
34
|
-
\
|
|
35
|
-
\
|
|
36
|
-
\
|
|
32
|
+
\use_package amsmath 1
|
|
33
|
+
\use_package amssymb 1
|
|
34
|
+
\use_package cancel 1
|
|
35
|
+
\use_package esint 1
|
|
36
|
+
\use_package mathdots 1
|
|
37
|
+
\use_package mathtools 1
|
|
38
|
+
\use_package mhchem 1
|
|
39
|
+
\use_package stackrel 1
|
|
40
|
+
\use_package stmaryrd 1
|
|
41
|
+
\use_package undertilde 1
|
|
42
|
+
\cite_engine natbib
|
|
43
|
+
\cite_engine_type authoryear
|
|
44
|
+
\biblio_style plainnat
|
|
37
45
|
\use_bibtopic false
|
|
38
46
|
\use_indices false
|
|
39
47
|
\paperorientation portrait
|
|
40
48
|
\suppress_date false
|
|
49
|
+
\justification true
|
|
41
50
|
\use_refstyle 0
|
|
42
51
|
\index Index
|
|
43
52
|
\shortcut idx
|
|
@@ -124,11 +133,11 @@ Variables and constants
|
|
|
124
133
|
\begin_layout Standard
|
|
125
134
|
In Ruby, everything
|
|
126
135
|
\begin_inset Foot
|
|
127
|
-
status
|
|
136
|
+
status open
|
|
128
137
|
|
|
129
138
|
\begin_layout Plain Layout
|
|
130
139
|
Almost everything.
|
|
131
|
-
Non-
|
|
140
|
+
Non-objects include eg.
|
|
132
141
|
variables or argument fields.
|
|
133
142
|
\end_layout
|
|
134
143
|
|
|
@@ -2906,14 +2915,8 @@ YNelson
|
|
|
2906
2915
|
YPetri
|
|
2907
2916
|
\family default
|
|
2908
2917
|
domain model is parametrized subclassing.
|
|
2909
|
-
Literature on the topic does exist
|
|
2910
|
-
|
|
2911
|
-
LatexCommand citep
|
|
2912
|
-
key "Roberts1996efp"
|
|
2913
|
-
|
|
2914
|
-
\end_inset
|
|
2915
|
-
|
|
2916
|
-
, but again, the concept is best explained on examples:
|
|
2918
|
+
Literature on the topic does exist, but the concept is best explained on
|
|
2919
|
+
examples:
|
|
2917
2920
|
\end_layout
|
|
2918
2921
|
|
|
2919
2922
|
\begin_layout LyX-Code
|
|
@@ -3258,20 +3261,5 @@ Convenience methods are especially suited for non-reusable code, but their
|
|
|
3258
3261
|
use may sometimes be efficient also in reusable code.
|
|
3259
3262
|
\end_layout
|
|
3260
3263
|
|
|
3261
|
-
\begin_layout LyX-Code
|
|
3262
|
-
|
|
3263
|
-
\end_layout
|
|
3264
|
-
|
|
3265
|
-
\begin_layout LyX-Code
|
|
3266
|
-
\begin_inset CommandInset bibtex
|
|
3267
|
-
LatexCommand bibtex
|
|
3268
|
-
bibfiles "/home/boris/b/5ced/ced"
|
|
3269
|
-
options "plainnat"
|
|
3270
|
-
|
|
3271
|
-
\end_inset
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
\end_layout
|
|
3275
|
-
|
|
3276
3264
|
\end_body
|
|
3277
3265
|
\end_document
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#LyX 2.
|
|
2
|
-
\lyxformat
|
|
1
|
+
#LyX 2.1 created this file. For more info see http://www.lyx.org/
|
|
2
|
+
\lyxformat 474
|
|
3
3
|
\begin_document
|
|
4
4
|
\begin_header
|
|
5
5
|
\textclass article
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
\font_roman default
|
|
13
13
|
\font_sans default
|
|
14
14
|
\font_typewriter default
|
|
15
|
+
\font_math auto
|
|
15
16
|
\font_default_family default
|
|
16
17
|
\use_non_tex_fonts false
|
|
17
18
|
\font_sc false
|
|
18
19
|
\font_osf false
|
|
19
20
|
\font_sf_scale 100
|
|
20
21
|
\font_tt_scale 100
|
|
21
|
-
|
|
22
22
|
\graphics default
|
|
23
23
|
\default_output_format default
|
|
24
24
|
\output_sync 0
|
|
@@ -29,15 +29,24 @@
|
|
|
29
29
|
\use_hyperref false
|
|
30
30
|
\papersize default
|
|
31
31
|
\use_geometry true
|
|
32
|
-
\
|
|
33
|
-
\
|
|
34
|
-
\
|
|
35
|
-
\
|
|
36
|
-
\
|
|
32
|
+
\use_package amsmath 1
|
|
33
|
+
\use_package amssymb 1
|
|
34
|
+
\use_package cancel 1
|
|
35
|
+
\use_package esint 1
|
|
36
|
+
\use_package mathdots 1
|
|
37
|
+
\use_package mathtools 1
|
|
38
|
+
\use_package mhchem 1
|
|
39
|
+
\use_package stackrel 1
|
|
40
|
+
\use_package stmaryrd 1
|
|
41
|
+
\use_package undertilde 1
|
|
42
|
+
\cite_engine natbib
|
|
43
|
+
\cite_engine_type authoryear
|
|
44
|
+
\biblio_style plainnat
|
|
37
45
|
\use_bibtopic false
|
|
38
46
|
\use_indices false
|
|
39
47
|
\paperorientation portrait
|
|
40
48
|
\suppress_date false
|
|
49
|
+
\justification true
|
|
41
50
|
\use_refstyle 0
|
|
42
51
|
\index Index
|
|
43
52
|
\shortcut idx
|
|
@@ -76,40 +85,30 @@ Introduction
|
|
|
76
85
|
This document is a hands-on guide to
|
|
77
86
|
\family typewriter
|
|
78
87
|
\color blue
|
|
79
|
-
|
|
88
|
+
YPetri
|
|
80
89
|
\family default
|
|
81
90
|
\color inherit
|
|
82
91
|
,
|
|
92
|
+
\family typewriter
|
|
93
|
+
\color blue
|
|
94
|
+
YNelson
|
|
95
|
+
\family default
|
|
96
|
+
\color inherit
|
|
97
|
+
and
|
|
83
98
|
\emph on
|
|
84
99
|
\color green
|
|
85
100
|
Nelson nets
|
|
86
101
|
\emph default
|
|
87
102
|
\color inherit
|
|
88
|
-
|
|
103
|
+
, which in turn rely on
|
|
89
104
|
\color red
|
|
90
105
|
Ruby
|
|
91
106
|
\color inherit
|
|
92
107
|
language.
|
|
93
|
-
It is not assumed
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
\color blue
|
|
98
|
-
YPetri
|
|
99
|
-
\family default
|
|
100
|
-
\color inherit
|
|
101
|
-
, which is one of the two main components of
|
|
102
|
-
\family typewriter
|
|
103
|
-
YNelson
|
|
104
|
-
\family default
|
|
105
|
-
, and which caters solely to the concerns of Petri net-based modelling of
|
|
106
|
-
dynamical systems.
|
|
107
|
-
|
|
108
|
-
\end_layout
|
|
109
|
-
|
|
110
|
-
\begin_layout Standard
|
|
111
|
-
If you have never heard about Nelson nets, do not wonder: it is a semi-novel
|
|
112
|
-
concept based on
|
|
108
|
+
It is not assumed you are familiar with Ruby, you can follow this guide
|
|
109
|
+
even if you never heard about it (but you will have to install it).
|
|
110
|
+
You more than likely never heard about Nelson nets.
|
|
111
|
+
Nelson net is a novel concept of
|
|
113
112
|
\emph on
|
|
114
113
|
\color green
|
|
115
114
|
Petri nets
|
|
@@ -122,15 +121,10 @@ ZZ structures
|
|
|
122
121
|
\emph default
|
|
123
122
|
\color inherit
|
|
124
123
|
.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
only the Petri net aspect defined by YPetri is covered in this version
|
|
130
|
-
of this guide.
|
|
131
|
-
ZZ structure aspect will be covered in the future versions of this manual.)
|
|
132
|
-
\emph default
|
|
133
|
-
Newly introduced
|
|
124
|
+
Do not worry about them: just follow the guide and you will learn everything
|
|
125
|
+
in time.
|
|
126
|
+
The text of this guide lets you know when new keywords and are introduced.
|
|
127
|
+
When mentioned for the first time,
|
|
134
128
|
\color red
|
|
135
129
|
Ruby keywords and terms
|
|
136
130
|
\color inherit
|
|
@@ -141,7 +135,7 @@ Petri net terms
|
|
|
141
135
|
in green, and
|
|
142
136
|
\family typewriter
|
|
143
137
|
\color blue
|
|
144
|
-
YNelson
|
|
138
|
+
YPetri / YNelson
|
|
145
139
|
\family default
|
|
146
140
|
keywords and terms
|
|
147
141
|
\color inherit
|
|
@@ -155,8 +149,7 @@ YNelson
|
|
|
155
149
|
YNelson
|
|
156
150
|
\family default
|
|
157
151
|
\color inherit
|
|
158
|
-
|
|
159
|
-
type of
|
|
152
|
+
serves to specify and simulate Nelson nets, a derivative of
|
|
160
153
|
\emph on
|
|
161
154
|
\color green
|
|
162
155
|
functional
|
|
@@ -166,40 +159,56 @@ functional
|
|
|
166
159
|
Petri nets
|
|
167
160
|
\emph default
|
|
168
161
|
\color inherit
|
|
169
|
-
|
|
162
|
+
that live in
|
|
170
163
|
\emph on
|
|
171
164
|
\color green
|
|
172
165
|
ZZ space
|
|
173
166
|
\emph default
|
|
174
167
|
\color inherit
|
|
175
168
|
.
|
|
176
|
-
|
|
169
|
+
(You don't need to worry about ZZ space yet.)
|
|
170
|
+
\family typewriter
|
|
171
|
+
\color blue
|
|
172
|
+
YPetri
|
|
173
|
+
\family default
|
|
174
|
+
\color inherit
|
|
175
|
+
serves to specify and simulate Petri nets.
|
|
176
|
+
Petri nets are one of the basic formalisms in systems simulation.
|
|
177
|
+
I designed
|
|
178
|
+
\family typewriter
|
|
179
|
+
YPetri
|
|
180
|
+
\family default
|
|
181
|
+
and
|
|
177
182
|
\family typewriter
|
|
178
183
|
YNelson
|
|
179
184
|
\family default
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
For a review of the various flavors of Petri nets used in modelling biochemical
|
|
185
|
-
systems, see eg.
|
|
186
|
-
|
|
185
|
+
because I needed to specify biochemical systems and I believed a Ruby DSL
|
|
186
|
+
would be ideal for that task.
|
|
187
|
+
Use of Petri nets for specifying biochemical systems is reviewed eg.
|
|
188
|
+
in
|
|
187
189
|
\begin_inset CommandInset citation
|
|
188
190
|
LatexCommand citet
|
|
189
191
|
key "Bos2008mbs"
|
|
190
192
|
|
|
193
|
+
\end_inset
|
|
194
|
+
|
|
195
|
+
and
|
|
196
|
+
\begin_inset CommandInset citation
|
|
197
|
+
LatexCommand citet
|
|
198
|
+
key "Koch2015pns"
|
|
199
|
+
|
|
191
200
|
\end_inset
|
|
192
201
|
|
|
193
202
|
.
|
|
194
203
|
|
|
195
204
|
\family typewriter
|
|
196
|
-
|
|
205
|
+
YPetri
|
|
197
206
|
\family default
|
|
198
|
-
|
|
199
|
-
|
|
207
|
+
provides a universal Petri net abstraction similar, but not identical with
|
|
208
|
+
|
|
200
209
|
\emph on
|
|
201
210
|
\color green
|
|
202
|
-
hybrid functional Petri
|
|
211
|
+
hybrid functional Petri net (HFPN)
|
|
203
212
|
\emph default
|
|
204
213
|
\color inherit
|
|
205
214
|
introduced by
|
|
@@ -210,132 +219,103 @@ key "Matsuno2011brs"
|
|
|
210
219
|
\end_inset
|
|
211
220
|
|
|
212
221
|
.
|
|
213
|
-
|
|
222
|
+
|
|
214
223
|
\family typewriter
|
|
215
224
|
YPetri
|
|
216
225
|
\family default
|
|
217
|
-
|
|
226
|
+
/
|
|
218
227
|
\family typewriter
|
|
219
228
|
YNelson
|
|
220
229
|
\family default
|
|
221
|
-
|
|
222
|
-
|
|
230
|
+
serve equally well not just for biochemical systems, but for arbitrary
|
|
231
|
+
dynamical systems.
|
|
223
232
|
\end_layout
|
|
224
233
|
|
|
225
234
|
\begin_layout Standard
|
|
226
|
-
|
|
235
|
+
Finally, please forgive me for taking your time with this guide.
|
|
236
|
+
If you want to seriously work with
|
|
237
|
+
\emph on
|
|
238
|
+
complicated
|
|
239
|
+
\emph default
|
|
240
|
+
Petri Nets, no tool can avoid taking you through the process of learning
|
|
241
|
+
the language and the tool's interface.
|
|
242
|
+
Visual Petri net modelling tools are nice for simple tasks, such as drawing
|
|
243
|
+
arcs between places and transitions, but you need text anyway to write
|
|
244
|
+
the mathematical functions that govern firing of transitions.
|
|
245
|
+
|
|
227
246
|
\family typewriter
|
|
228
|
-
|
|
247
|
+
YPetri
|
|
229
248
|
\family default
|
|
230
|
-
|
|
249
|
+
/
|
|
231
250
|
\family typewriter
|
|
232
|
-
|
|
251
|
+
YNelson
|
|
233
252
|
\family default
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
internal domain-specific language (DSL)
|
|
238
|
-
\emph default
|
|
239
|
-
\color inherit
|
|
240
|
-
in
|
|
253
|
+
are all textual without commiting the sin of introducing a new programming
|
|
254
|
+
language.
|
|
255
|
+
They are implemented as
|
|
241
256
|
\emph on
|
|
242
257
|
\color red
|
|
243
|
-
|
|
258
|
+
internal domain-specific languages (DSL)
|
|
244
259
|
\emph default
|
|
245
260
|
\color inherit
|
|
246
|
-
|
|
261
|
+
using Ruby as a host language.
|
|
262
|
+
You can run them interactively from
|
|
247
263
|
\color red
|
|
248
|
-
|
|
264
|
+
Ruby interpreter (
|
|
249
265
|
\emph on
|
|
250
266
|
irb
|
|
251
267
|
\emph default
|
|
252
268
|
)
|
|
253
269
|
\color inherit
|
|
254
270
|
.
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
\
|
|
258
|
-
|
|
259
|
-
\begin_inset CommandInset href
|
|
260
|
-
LatexCommand href
|
|
261
|
-
name "y_nelson gem"
|
|
262
|
-
target "https://rubygems.org/gems/y_nelson"
|
|
263
|
-
|
|
264
|
-
\end_inset
|
|
271
|
+
In this way, you can freely use the host language to automate your interaction
|
|
272
|
+
with Petri nets.
|
|
273
|
+
\end_layout
|
|
265
274
|
|
|
275
|
+
\begin_layout Standard
|
|
266
276
|
|
|
267
|
-
\emph default
|
|
268
|
-
\color inherit
|
|
269
|
-
(
|
|
270
|
-
\emph on
|
|
271
|
-
\color red
|
|
272
|
-
gem
|
|
273
|
-
\emph default
|
|
274
|
-
\color inherit
|
|
275
|
-
= Ruby library).
|
|
276
|
-
|
|
277
277
|
\family typewriter
|
|
278
|
-
|
|
279
|
-
\family default
|
|
280
|
-
belongs to a series of Ruby gems (
|
|
281
|
-
\family typewriter
|
|
282
|
-
\color blue
|
|
283
|
-
|
|
284
|
-
\begin_inset CommandInset href
|
|
285
|
-
LatexCommand href
|
|
286
|
-
name "YPetri"
|
|
287
|
-
target "https://rubygems.org/gems/y_petri"
|
|
288
|
-
|
|
289
|
-
\end_inset
|
|
290
|
-
|
|
291
|
-
|
|
278
|
+
YPetri
|
|
292
279
|
\family default
|
|
293
|
-
|
|
294
|
-
,
|
|
280
|
+
/
|
|
295
281
|
\family typewriter
|
|
296
282
|
YNelson
|
|
297
283
|
\family default
|
|
298
|
-
|
|
299
|
-
\
|
|
300
|
-
\color blue
|
|
301
|
-
YChem
|
|
302
|
-
\family default
|
|
303
|
-
\color inherit
|
|
304
|
-
,
|
|
305
|
-
\family typewriter
|
|
306
|
-
\color blue
|
|
307
|
-
YCell
|
|
308
|
-
\family default
|
|
309
|
-
\color inherit
|
|
310
|
-
,
|
|
311
|
-
\family typewriter
|
|
284
|
+
are publicly available as
|
|
285
|
+
\emph on
|
|
312
286
|
\color blue
|
|
313
287
|
|
|
314
288
|
\begin_inset CommandInset href
|
|
315
289
|
LatexCommand href
|
|
316
|
-
name "
|
|
317
|
-
target "https://rubygems.org/gems/
|
|
290
|
+
name "y_petri"
|
|
291
|
+
target "https://rubygems.org/gems/y_petri"
|
|
318
292
|
|
|
319
293
|
\end_inset
|
|
320
294
|
|
|
321
295
|
|
|
322
|
-
\
|
|
296
|
+
\emph default
|
|
323
297
|
\color inherit
|
|
324
|
-
|
|
325
|
-
\
|
|
298
|
+
and
|
|
299
|
+
\emph on
|
|
326
300
|
\color blue
|
|
327
301
|
|
|
328
302
|
\begin_inset CommandInset href
|
|
329
303
|
LatexCommand href
|
|
330
|
-
name "
|
|
331
|
-
target "https://rubygems.org/gems/
|
|
304
|
+
name "y_nelson gem"
|
|
305
|
+
target "https://rubygems.org/gems/y_nelson"
|
|
332
306
|
|
|
333
307
|
\end_inset
|
|
334
308
|
|
|
335
309
|
|
|
336
|
-
\
|
|
310
|
+
\emph default
|
|
337
311
|
\color inherit
|
|
338
|
-
|
|
312
|
+
gems (
|
|
313
|
+
\emph on
|
|
314
|
+
\color red
|
|
315
|
+
gem
|
|
316
|
+
\emph default
|
|
317
|
+
\color inherit
|
|
318
|
+
= Ruby library).
|
|
339
319
|
|
|
340
320
|
\family typewriter
|
|
341
321
|
YNelson
|
|
@@ -348,68 +328,32 @@ YPetri
|
|
|
348
328
|
\family typewriter
|
|
349
329
|
Yzz
|
|
350
330
|
\family default
|
|
351
|
-
gems,
|
|
331
|
+
gems, which in turn depend on our
|
|
352
332
|
\family typewriter
|
|
353
|
-
|
|
333
|
+
YSupport
|
|
354
334
|
\family default
|
|
355
|
-
|
|
356
|
-
|
|
335
|
+
gem.
|
|
336
|
+
Splitting the more general concerns to multiple gem is a desirable feature
|
|
337
|
+
– separation of concerns is a maxim of good software engineering.
|
|
338
|
+
I also separated dealing with physical units in your models out into
|
|
357
339
|
\family typewriter
|
|
358
|
-
|
|
340
|
+
SY
|
|
359
341
|
\family default
|
|
360
|
-
|
|
361
|
-
in Ruby.
|
|
362
|
-
DSLs designed for the purpose of modelling are known from other languages,
|
|
363
|
-
but they are generally
|
|
342
|
+
gem (
|
|
364
343
|
\emph on
|
|
365
|
-
\color
|
|
366
|
-
|
|
367
|
-
\
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
\
|
|
373
|
-
|
|
374
|
-
\family default
|
|
375
|
-
.
|
|
376
|
-
\end_layout
|
|
344
|
+
\color blue
|
|
345
|
+
|
|
346
|
+
\begin_inset CommandInset href
|
|
347
|
+
LatexCommand href
|
|
348
|
+
name "sy"
|
|
349
|
+
target "https://rubygems.org/gems/sy"
|
|
350
|
+
|
|
351
|
+
\end_inset
|
|
352
|
+
|
|
377
353
|
|
|
378
|
-
\begin_layout Standard
|
|
379
|
-
All in all, if you want to seriously work with
|
|
380
|
-
\emph on
|
|
381
|
-
complicated
|
|
382
354
|
\emph default
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
This language can be visual only partially.
|
|
386
|
-
GUI Petri net modelling tools can provide visual commands for simple tasks,
|
|
387
|
-
such as creating places and transitions, or drawing arcs between them,
|
|
388
|
-
but a textual language is needed anyway for more complex tasks, such as
|
|
389
|
-
writing mathematical functions that govern firing of transitions, or managing
|
|
390
|
-
the Petri net in an automated manner.
|
|
391
|
-
|
|
392
|
-
\family typewriter
|
|
393
|
-
YNelson
|
|
394
|
-
\family default
|
|
395
|
-
is all textual, but it does not introduce its own language.
|
|
396
|
-
It relies on powerful and intuitive syntax of a widely adopted general-purpose
|
|
397
|
-
computer language – Ruby.
|
|
398
|
-
|
|
399
|
-
\family typewriter
|
|
400
|
-
YNelson
|
|
401
|
-
\family default
|
|
402
|
-
is open source and leverages on the freedom and respect for the user inherent
|
|
403
|
-
to its host language, whose role in making
|
|
404
|
-
\family typewriter
|
|
405
|
-
YNelson
|
|
406
|
-
\family default
|
|
407
|
-
good can hardly be overstated.
|
|
408
|
-
Possible bugs or missing features will never get you as a
|
|
409
|
-
\family typewriter
|
|
410
|
-
YNelson
|
|
411
|
-
\family default
|
|
412
|
-
user in a dead end situation.
|
|
355
|
+
\color inherit
|
|
356
|
+
).
|
|
413
357
|
\end_layout
|
|
414
358
|
|
|
415
359
|
\begin_layout Part*
|
|
@@ -502,7 +446,11 @@ That's it.
|
|
|
502
446
|
very
|
|
503
447
|
\emph default
|
|
504
448
|
difficult at first, but stick with it.
|
|
505
|
-
It seems stupidly obvious, but
|
|
449
|
+
It seems stupidly obvious, but if you have a problem installing
|
|
450
|
+
\family typewriter
|
|
451
|
+
YPetri
|
|
452
|
+
\family default
|
|
453
|
+
and
|
|
506
454
|
\family typewriter
|
|
507
455
|
YNelson
|
|
508
456
|
\family default
|
|
@@ -540,7 +488,7 @@ Prerequisites
|
|
|
540
488
|
\end_layout
|
|
541
489
|
|
|
542
490
|
\begin_layout Standard
|
|
543
|
-
|
|
491
|
+
Firstly, you will need a working installation of Ruby 2.3 or later on your
|
|
544
492
|
computer.
|
|
545
493
|
Once this condition is met, basic
|
|
546
494
|
\family typewriter
|
|
@@ -559,6 +507,11 @@ gem install y_nelson
|
|
|
559
507
|
\end_inset
|
|
560
508
|
|
|
561
509
|
in the command prompt.
|
|
510
|
+
This will install most other dependencies, such as
|
|
511
|
+
\family typewriter
|
|
512
|
+
YPetri
|
|
513
|
+
\family default
|
|
514
|
+
.
|
|
562
515
|
However,
|
|
563
516
|
\family typewriter
|
|
564
517
|
YNelson
|
|
@@ -631,16 +584,10 @@ require
|
|
|
631
584
|
include
|
|
632
585
|
\family default
|
|
633
586
|
' statements before each of the usage examples written below.
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
\family typewriter
|
|
637
|
-
YNelson
|
|
638
|
-
\family default
|
|
639
|
-
version you will be using may somewhat differ from this guide.
|
|
640
|
-
Also, the nucleotide metabolism model in Example 3 is yet to be tuned to
|
|
641
|
-
be realistic.
|
|
587
|
+
The nucleotide metabolism model in Example 3 is not realiscit (its kinetics
|
|
588
|
+
is not precise).
|
|
642
589
|
If something in this guide does not work, please do not hesitate to notify
|
|
643
|
-
|
|
590
|
+
me, I will appreciate your feedback.
|
|
644
591
|
\end_layout
|
|
645
592
|
|
|
646
593
|
\begin_layout Part*
|
|
@@ -653,7 +600,7 @@ This example is a gentle introduction to Petri net terminology,
|
|
|
653
600
|
YNelson
|
|
654
601
|
\family default
|
|
655
602
|
DSL terminology, and Ruby syntax.
|
|
656
|
-
The most basic capability
|
|
603
|
+
The most basic capability that
|
|
657
604
|
\family typewriter
|
|
658
605
|
YNelson
|
|
659
606
|
\family default
|
|
@@ -2000,7 +1947,24 @@ Example II: Convenience
|
|
|
2000
1947
|
\end_layout
|
|
2001
1948
|
|
|
2002
1949
|
\begin_layout Standard
|
|
2003
|
-
So far,
|
|
1950
|
+
So far, to avoid confusing you, I used fairly conservative syntax.
|
|
1951
|
+
|
|
1952
|
+
\family typewriter
|
|
1953
|
+
YNelson
|
|
1954
|
+
\family default
|
|
1955
|
+
can do better than that.
|
|
1956
|
+
For convenience, many long keywords have short aliases.
|
|
1957
|
+
Frequently used syntactic constructs usually have shorter way of expressing
|
|
1958
|
+
the same.
|
|
1959
|
+
\end_layout
|
|
1960
|
+
|
|
1961
|
+
\begin_layout Standard
|
|
1962
|
+
As you have seen, in
|
|
1963
|
+
\family typewriter
|
|
1964
|
+
YNelson
|
|
1965
|
+
\family default
|
|
1966
|
+
one often uses transition constructors.
|
|
1967
|
+
Thus far, we have seen only one
|
|
2004
1968
|
\emph on
|
|
2005
1969
|
constructor method
|
|
2006
1970
|
\emph default
|
|
@@ -2049,14 +2013,18 @@ YNelson::Transition
|
|
|
2049
2013
|
\end_layout
|
|
2050
2014
|
|
|
2051
2015
|
\begin_layout Standard
|
|
2052
|
-
|
|
2016
|
+
Using long keywords in the constructor method makes the
|
|
2053
2017
|
\family typewriter
|
|
2054
2018
|
YNelson
|
|
2055
2019
|
\family default
|
|
2056
|
-
|
|
2057
|
-
But for the cases
|
|
2058
|
-
|
|
2059
|
-
|
|
2020
|
+
code easy to read.
|
|
2021
|
+
But for the cases where trading readability for brevity is desirable, such
|
|
2022
|
+
as when you are playing with YNelson inside
|
|
2023
|
+
\emph on
|
|
2024
|
+
irb
|
|
2025
|
+
\emph default
|
|
2026
|
+
session, you will appreciate convenience.
|
|
2027
|
+
Actually, we already used syntactic shorthands in the earlier examples.
|
|
2060
2028
|
We didn't type :
|
|
2061
2029
|
\end_layout
|
|
2062
2030
|
|
|
@@ -2069,7 +2037,15 @@ A2B
|
|
|
2069
2037
|
\begin_inset Quotes erd
|
|
2070
2038
|
\end_inset
|
|
2071
2039
|
|
|
2072
|
-
,
|
|
2040
|
+
,
|
|
2041
|
+
\end_layout
|
|
2042
|
+
|
|
2043
|
+
\begin_layout LyX-Code
|
|
2044
|
+
codomain: [A, B],
|
|
2045
|
+
\end_layout
|
|
2046
|
+
|
|
2047
|
+
\begin_layout LyX-Code
|
|
2048
|
+
stoichiometry: [-1, 1] )
|
|
2073
2049
|
\end_layout
|
|
2074
2050
|
|
|
2075
2051
|
\begin_layout LyX-Code
|
|
@@ -2085,33 +2061,35 @@ A2B = Transition( stoichiometry: { A: -1, B: 1 } )
|
|
|
2085
2061
|
\end_layout
|
|
2086
2062
|
|
|
2087
2063
|
\begin_layout Standard
|
|
2088
|
-
|
|
2064
|
+
Just so you know, the above shorthand is not easy to program in Ruby.
|
|
2065
|
+
When designing
|
|
2066
|
+
\family typewriter
|
|
2067
|
+
YNelson
|
|
2068
|
+
\family default
|
|
2069
|
+
, I took a lot of pain for your convenience.
|
|
2070
|
+
Even shorter way to express the same would be:
|
|
2089
2071
|
\end_layout
|
|
2090
2072
|
|
|
2091
2073
|
\begin_layout LyX-Code
|
|
2092
|
-
A2B = Transition
|
|
2074
|
+
A2B = Transition
|
|
2075
|
+
\color blue
|
|
2076
|
+
s
|
|
2077
|
+
\color inherit
|
|
2078
|
+
: { A: -1, B: 1 }
|
|
2093
2079
|
\end_layout
|
|
2094
2080
|
|
|
2095
2081
|
\begin_layout Standard
|
|
2096
|
-
The above is a timeless transition
|
|
2097
|
-
|
|
2098
|
-
about a more complicated transition, that would transfer tokens from
|
|
2099
|
-
\family typewriter
|
|
2100
|
-
B
|
|
2101
|
-
\family default
|
|
2102
|
-
to
|
|
2082
|
+
The above is a very simple timeless transition that just takes one token
|
|
2083
|
+
from
|
|
2103
2084
|
\family typewriter
|
|
2104
2085
|
A
|
|
2105
2086
|
\family default
|
|
2106
|
-
|
|
2107
|
-
\family typewriter
|
|
2108
|
-
C
|
|
2109
|
-
\family default
|
|
2110
|
-
and
|
|
2087
|
+
and puts it into
|
|
2111
2088
|
\family typewriter
|
|
2112
|
-
|
|
2089
|
+
B
|
|
2113
2090
|
\family default
|
|
2114
2091
|
.
|
|
2092
|
+
(Constructor convenience is even more powerful for complex transitions.)
|
|
2115
2093
|
Start a new
|
|
2116
2094
|
\family typewriter
|
|
2117
2095
|
irb
|
|
@@ -2128,163 +2106,127 @@ include YNelson
|
|
|
2128
2106
|
\end_layout
|
|
2129
2107
|
|
|
2130
2108
|
\begin_layout LyX-Code
|
|
2131
|
-
A = Place
|
|
2109
|
+
A = Place
|
|
2110
|
+
\color blue
|
|
2111
|
+
default_marking
|
|
2112
|
+
\color inherit
|
|
2113
|
+
: 5
|
|
2132
2114
|
\end_layout
|
|
2133
2115
|
|
|
2134
|
-
\begin_layout
|
|
2135
|
-
|
|
2136
|
-
\
|
|
2137
|
-
|
|
2138
|
-
|
|
2116
|
+
\begin_layout Standard
|
|
2117
|
+
Constantly typing
|
|
2118
|
+
\family typewriter
|
|
2119
|
+
default_marking
|
|
2120
|
+
\family default
|
|
2121
|
+
is tiresome.
|
|
2122
|
+
Shorter way to say the same is by using the alias
|
|
2123
|
+
\family typewriter
|
|
2124
|
+
\color blue
|
|
2139
2125
|
m!
|
|
2140
|
-
\
|
|
2141
|
-
\
|
|
2142
|
-
|
|
2143
|
-
alias for
|
|
2144
|
-
\begin_inset Quotes eld
|
|
2145
|
-
\end_inset
|
|
2146
|
-
|
|
2147
|
-
default marking
|
|
2148
|
-
\begin_inset Quotes erd
|
|
2149
|
-
\end_inset
|
|
2150
|
-
|
|
2151
|
-
|
|
2126
|
+
\family default
|
|
2127
|
+
\color inherit
|
|
2128
|
+
of the same:
|
|
2152
2129
|
\end_layout
|
|
2153
2130
|
|
|
2154
2131
|
\begin_layout LyX-Code
|
|
2155
|
-
|
|
2132
|
+
B = Place m!: 5
|
|
2156
2133
|
\end_layout
|
|
2157
2134
|
|
|
2158
2135
|
\begin_layout LyX-Code
|
|
2159
|
-
|
|
2160
|
-
\end_layout
|
|
2161
|
-
|
|
2162
|
-
\begin_layout Standard
|
|
2163
|
-
Let's check our work:
|
|
2164
|
-
\end_layout
|
|
2165
|
-
|
|
2166
|
-
\begin_layout LyX-Code
|
|
2167
|
-
places.map &:marking
|
|
2136
|
+
C = Place m!: 1
|
|
2168
2137
|
\end_layout
|
|
2169
2138
|
|
|
2170
2139
|
\begin_layout LyX-Code
|
|
2171
|
-
|
|
2140
|
+
D = Place m!: 1
|
|
2172
2141
|
\end_layout
|
|
2173
2142
|
|
|
2174
2143
|
\begin_layout Standard
|
|
2175
|
-
|
|
2176
|
-
the places.
|
|
2177
|
-
Now let's define the transition we want:
|
|
2178
|
-
\end_layout
|
|
2179
|
-
|
|
2180
|
-
\begin_layout LyX-Code
|
|
2181
|
-
B2A = Transition( stoichiometry: { B: -1, A: 1 },
|
|
2182
|
-
\end_layout
|
|
2183
|
-
|
|
2184
|
-
\begin_layout LyX-Code
|
|
2185
|
-
domain: [C, D],
|
|
2144
|
+
Let's check the net's marking vector now:
|
|
2186
2145
|
\end_layout
|
|
2187
2146
|
|
|
2188
2147
|
\begin_layout LyX-Code
|
|
2189
|
-
|
|
2190
|
-
\end_layout
|
|
2191
|
-
|
|
2192
|
-
\begin_layout LyX-Code
|
|
2193
|
-
#=> B2A
|
|
2148
|
+
places.map &:marking #=> [5, 5, 1, 1]
|
|
2194
2149
|
\end_layout
|
|
2195
2150
|
|
|
2196
2151
|
\begin_layout Standard
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
\begin_layout LyX-Code
|
|
2201
|
-
B2A.fire! 0.1
|
|
2202
|
-
\end_layout
|
|
2203
|
-
|
|
2204
|
-
\begin_layout LyX-Code
|
|
2205
|
-
#=> nil
|
|
2206
|
-
\end_layout
|
|
2207
|
-
|
|
2208
|
-
\begin_layout LyX-Code
|
|
2209
|
-
places.map &:marking
|
|
2152
|
+
If you typed everything correctly, you should see the above result.
|
|
2153
|
+
Shorter way to ask for the same information is:
|
|
2210
2154
|
\end_layout
|
|
2211
2155
|
|
|
2212
2156
|
\begin_layout LyX-Code
|
|
2213
|
-
#=> [5
|
|
2157
|
+
net.marking #=> [5, 5, 1, 1]
|
|
2214
2158
|
\end_layout
|
|
2215
2159
|
|
|
2216
2160
|
\begin_layout Standard
|
|
2217
|
-
|
|
2161
|
+
Even shorter way to say the same is:
|
|
2218
2162
|
\end_layout
|
|
2219
2163
|
|
|
2220
2164
|
\begin_layout LyX-Code
|
|
2221
|
-
|
|
2165
|
+
net.
|
|
2222
2166
|
\color blue
|
|
2223
|
-
|
|
2167
|
+
m
|
|
2168
|
+
\color inherit
|
|
2169
|
+
#=> [5, 5, 1, 1]
|
|
2224
2170
|
\end_layout
|
|
2225
2171
|
|
|
2226
|
-
\begin_layout
|
|
2227
|
-
|
|
2172
|
+
\begin_layout Standard
|
|
2173
|
+
Now let's define the transition we want:
|
|
2228
2174
|
\end_layout
|
|
2229
2175
|
|
|
2230
2176
|
\begin_layout LyX-Code
|
|
2231
|
-
|
|
2177
|
+
B2A = Transition( stoichiometry: { B: -1, A: 1 },
|
|
2232
2178
|
\end_layout
|
|
2233
2179
|
|
|
2234
2180
|
\begin_layout LyX-Code
|
|
2235
|
-
|
|
2181
|
+
domain: [C, D],
|
|
2236
2182
|
\end_layout
|
|
2237
2183
|
|
|
2238
2184
|
\begin_layout LyX-Code
|
|
2239
|
-
|
|
2185
|
+
rate: lambda { |x, y| ( x * y ) ** 0.5 } )
|
|
2240
2186
|
\end_layout
|
|
2241
2187
|
|
|
2242
|
-
\begin_layout
|
|
2243
|
-
|
|
2188
|
+
\begin_layout Standard
|
|
2189
|
+
To prove that it works, let's fire it for 0.1 time units:
|
|
2244
2190
|
\end_layout
|
|
2245
2191
|
|
|
2246
2192
|
\begin_layout LyX-Code
|
|
2247
|
-
|
|
2193
|
+
B2A.fire! 0.1 #=> nil
|
|
2248
2194
|
\end_layout
|
|
2249
2195
|
|
|
2250
2196
|
\begin_layout LyX-Code
|
|
2251
|
-
#=> [5.
|
|
2197
|
+
net.m #=> [5.1, 4.9, 1, 1]
|
|
2252
2198
|
\end_layout
|
|
2253
2199
|
|
|
2254
2200
|
\begin_layout Standard
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
B2A
|
|
2258
|
-
\family default
|
|
2259
|
-
has risen 6 times as expected (4 * 9 is 36), so
|
|
2260
|
-
\family typewriter
|
|
2261
|
-
B2A
|
|
2262
|
-
\family default
|
|
2263
|
-
works.
|
|
2264
|
-
The question is, could we have written
|
|
2201
|
+
Can we express its constructor more concisely? The answer is yes.
|
|
2202
|
+
|
|
2265
2203
|
\family typewriter
|
|
2266
2204
|
B2A
|
|
2267
2205
|
\family default
|
|
2268
|
-
|
|
2206
|
+
is a
|
|
2269
2207
|
\family typewriter
|
|
2270
2208
|
TS
|
|
2271
2209
|
\family default
|
|
2272
|
-
|
|
2210
|
+
transition (check
|
|
2273
2211
|
\family typewriter
|
|
2274
2212
|
B2A.type
|
|
2275
2213
|
\family default
|
|
2276
|
-
to make sure
|
|
2214
|
+
to make sure it is true), and for
|
|
2277
2215
|
\family typewriter
|
|
2278
2216
|
TS
|
|
2279
2217
|
\family default
|
|
2280
|
-
|
|
2218
|
+
transitions,
|
|
2281
2219
|
\family typewriter
|
|
2282
2220
|
\color blue
|
|
2283
2221
|
TS()
|
|
2284
2222
|
\family default
|
|
2285
2223
|
\color inherit
|
|
2286
|
-
constructor is available
|
|
2287
|
-
|
|
2224
|
+
convenience constructor is available.
|
|
2225
|
+
With
|
|
2226
|
+
\family typewriter
|
|
2227
|
+
TS()
|
|
2228
|
+
\family default
|
|
2229
|
+
constructor, the definition of B2A would be much shorter:
|
|
2288
2230
|
\end_layout
|
|
2289
2231
|
|
|
2290
2232
|
\begin_layout LyX-Code
|
|
@@ -2292,31 +2234,22 @@ B2A = TS domain: [C, D], A: 1, B: -1 do |x, y| ( x * y ) ** 0.5 end
|
|
|
2292
2234
|
\end_layout
|
|
2293
2235
|
|
|
2294
2236
|
\begin_layout Standard
|
|
2295
|
-
|
|
2296
|
-
\family typewriter
|
|
2297
|
-
irb
|
|
2298
|
-
\family default
|
|
2299
|
-
session again and use this shorter construct to see that the resulting
|
|
2300
|
-
transition behaves like before.
|
|
2301
|
-
Note the
|
|
2237
|
+
Note the
|
|
2302
2238
|
\family typewriter
|
|
2303
2239
|
\color red
|
|
2304
2240
|
do ...
|
|
2305
2241
|
end
|
|
2306
2242
|
\family default
|
|
2307
2243
|
\color inherit
|
|
2308
|
-
part
|
|
2244
|
+
part in the above line: Using lambda syntax, it defines the rate function
|
|
2309
2245
|
of the transition.
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
\begin_layout Standard
|
|
2313
|
-
One more convenience constructor I want to mention here is
|
|
2246
|
+
Another convenience constructor worth mentioning is
|
|
2314
2247
|
\family typewriter
|
|
2315
2248
|
\color blue
|
|
2316
2249
|
AT()
|
|
2317
2250
|
\family default
|
|
2318
2251
|
\color inherit
|
|
2319
|
-
|
|
2252
|
+
for assignment transition.
|
|
2320
2253
|
Earlier, we defined:
|
|
2321
2254
|
\end_layout
|
|
2322
2255
|
|
|
@@ -2325,11 +2258,11 @@ A_to_42 = Transition codomain: A, assignment: lambda { 42 }
|
|
|
2325
2258
|
\end_layout
|
|
2326
2259
|
|
|
2327
2260
|
\begin_layout Standard
|
|
2328
|
-
|
|
2261
|
+
Using
|
|
2329
2262
|
\family typewriter
|
|
2330
2263
|
AT()
|
|
2331
2264
|
\family default
|
|
2332
|
-
constructor
|
|
2265
|
+
constructor, we can shorten this to:
|
|
2333
2266
|
\end_layout
|
|
2334
2267
|
|
|
2335
2268
|
\begin_layout LyX-Code
|
|
@@ -2337,13 +2270,42 @@ A_to_42 = AT A do 42 end
|
|
|
2337
2270
|
\end_layout
|
|
2338
2271
|
|
|
2339
2272
|
\begin_layout Standard
|
|
2340
|
-
In short, syntactic shorthands
|
|
2273
|
+
In short, syntactic shorthands can save a lot of typing.
|
|
2274
|
+
If you still miss some syntactic shorthand, feel free to define it on your
|
|
2275
|
+
own.
|
|
2276
|
+
For example, let us define a custom method named
|
|
2341
2277
|
\family typewriter
|
|
2342
|
-
|
|
2278
|
+
Foo
|
|
2343
2279
|
\family default
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2280
|
+
that acts as a constructor of places with default marking.
|
|
2281
|
+
\end_layout
|
|
2282
|
+
|
|
2283
|
+
\begin_layout LyX-Code
|
|
2284
|
+
|
|
2285
|
+
\color red
|
|
2286
|
+
def
|
|
2287
|
+
\color inherit
|
|
2288
|
+
Foo( m )
|
|
2289
|
+
\end_layout
|
|
2290
|
+
|
|
2291
|
+
\begin_layout LyX-Code
|
|
2292
|
+
Place( default_marking: m )
|
|
2293
|
+
\end_layout
|
|
2294
|
+
|
|
2295
|
+
\begin_layout LyX-Code
|
|
2296
|
+
end
|
|
2297
|
+
\end_layout
|
|
2298
|
+
|
|
2299
|
+
\begin_layout Standard
|
|
2300
|
+
After this, you can define places with default marking with even less typing:
|
|
2301
|
+
\end_layout
|
|
2302
|
+
|
|
2303
|
+
\begin_layout LyX-Code
|
|
2304
|
+
X = Foo 42
|
|
2305
|
+
\end_layout
|
|
2306
|
+
|
|
2307
|
+
\begin_layout LyX-Code
|
|
2308
|
+
Y = Foo 43
|
|
2347
2309
|
\end_layout
|
|
2348
2310
|
|
|
2349
2311
|
\begin_layout Part*
|
|
@@ -2379,34 +2341,28 @@ TimedSimulation
|
|
|
2379
2341
|
YNelson::Place
|
|
2380
2342
|
\family default
|
|
2381
2343
|
instances is irrelevant.
|
|
2382
|
-
We just need to specify the initial state.
|
|
2383
|
-
|
|
2384
|
-
\family typewriter
|
|
2385
|
-
\color blue
|
|
2386
|
-
:default_marking
|
|
2387
|
-
\family default
|
|
2388
|
-
\color inherit
|
|
2389
|
-
named argument:
|
|
2344
|
+
We just need to specify the initial state eg.
|
|
2345
|
+
by specifying the default marking of the places:
|
|
2390
2346
|
\end_layout
|
|
2391
2347
|
|
|
2392
2348
|
\begin_layout LyX-Code
|
|
2393
|
-
|
|
2394
|
-
\color blue
|
|
2395
|
-
default_marking:
|
|
2396
|
-
\color inherit
|
|
2397
|
-
0.5 )
|
|
2349
|
+
require 'y_nelson'
|
|
2398
2350
|
\end_layout
|
|
2399
2351
|
|
|
2400
2352
|
\begin_layout LyX-Code
|
|
2401
|
-
|
|
2353
|
+
include YNelson
|
|
2402
2354
|
\end_layout
|
|
2403
2355
|
|
|
2404
2356
|
\begin_layout LyX-Code
|
|
2405
|
-
|
|
2357
|
+
A = Place
|
|
2358
|
+
\color blue
|
|
2359
|
+
m!:
|
|
2360
|
+
\color inherit
|
|
2361
|
+
0.5
|
|
2406
2362
|
\end_layout
|
|
2407
2363
|
|
|
2408
2364
|
\begin_layout LyX-Code
|
|
2409
|
-
|
|
2365
|
+
B = Place m!: 0.5
|
|
2410
2366
|
\end_layout
|
|
2411
2367
|
|
|
2412
2368
|
\begin_layout Standard
|
|
@@ -2418,11 +2374,11 @@ A
|
|
|
2418
2374
|
\end_layout
|
|
2419
2375
|
|
|
2420
2376
|
\begin_layout LyX-Code
|
|
2421
|
-
A_pump = Transition
|
|
2422
|
-
\
|
|
2423
|
-
|
|
2424
|
-
\
|
|
2425
|
-
|
|
2377
|
+
A_pump = Transition s: { A: -1 }, rate:
|
|
2378
|
+
\color red
|
|
2379
|
+
proc
|
|
2380
|
+
\color inherit
|
|
2381
|
+
{ 0.005 }
|
|
2426
2382
|
\end_layout
|
|
2427
2383
|
|
|
2428
2384
|
\begin_layout Standard
|
|
@@ -2440,18 +2396,14 @@ proc { 0.005 }
|
|
|
2440
2396
|
A
|
|
2441
2397
|
\family default
|
|
2442
2398
|
.
|
|
2443
|
-
You can notice
|
|
2399
|
+
You can notice that this closure expects no arguments and always outputs
|
|
2444
2400
|
0.005 as its return value.
|
|
2445
2401
|
It is the simplest possible way to write a constant function.
|
|
2446
2402
|
For comparison,
|
|
2447
2403
|
\end_layout
|
|
2448
2404
|
|
|
2449
2405
|
\begin_layout LyX-Code
|
|
2450
|
-
B_decay = Transition
|
|
2451
|
-
\end_layout
|
|
2452
|
-
|
|
2453
|
-
\begin_layout LyX-Code
|
|
2454
|
-
#=> B_decay
|
|
2406
|
+
B_decay = Transition s: { B: -1 }, rate: 0.05
|
|
2455
2407
|
\end_layout
|
|
2456
2408
|
|
|
2457
2409
|
\begin_layout Standard
|
|
@@ -2473,25 +2425,23 @@ net
|
|
|
2473
2425
|
\end_layout
|
|
2474
2426
|
|
|
2475
2427
|
\begin_layout LyX-Code
|
|
2476
|
-
#=> #<Net: name: Top, 2
|
|
2428
|
+
#=> #<Net: name: Top, 2 places, 2 transitions>
|
|
2477
2429
|
\end_layout
|
|
2478
2430
|
|
|
2479
2431
|
\begin_layout Standard
|
|
2480
|
-
We can execute this Petri net as
|
|
2432
|
+
We can execute this Petri net as a
|
|
2481
2433
|
\family typewriter
|
|
2482
|
-
|
|
2434
|
+
Simulation
|
|
2483
2435
|
\family default
|
|
2484
|
-
simply by typing:
|
|
2436
|
+
object simply by typing:
|
|
2485
2437
|
\end_layout
|
|
2486
2438
|
|
|
2487
2439
|
\begin_layout LyX-Code
|
|
2488
2440
|
|
|
2489
2441
|
\color blue
|
|
2490
2442
|
run!
|
|
2491
|
-
\
|
|
2492
|
-
|
|
2493
|
-
\begin_layout LyX-Code
|
|
2494
|
-
#=> 60
|
|
2443
|
+
\color inherit
|
|
2444
|
+
#=> 60
|
|
2495
2445
|
\end_layout
|
|
2496
2446
|
|
|
2497
2447
|
\begin_layout Standard
|
|
@@ -2501,7 +2451,7 @@ run!
|
|
|
2501
2451
|
\family default
|
|
2502
2452
|
creates and executes a
|
|
2503
2453
|
\family typewriter
|
|
2504
|
-
|
|
2454
|
+
Simulation
|
|
2505
2455
|
\family default
|
|
2506
2456
|
instance.
|
|
2507
2457
|
The return value is the simulation instance itself (see the inspect string
|
|
@@ -2542,11 +2492,7 @@ YNelson::Place
|
|
|
2542
2492
|
\end_layout
|
|
2543
2493
|
|
|
2544
2494
|
\begin_layout LyX-Code
|
|
2545
|
-
|
|
2546
|
-
\end_layout
|
|
2547
|
-
|
|
2548
|
-
\begin_layout LyX-Code
|
|
2549
|
-
#=> [0.5, 0.5]
|
|
2495
|
+
net.marking #=> [0.5, 0.5]
|
|
2550
2496
|
\end_layout
|
|
2551
2497
|
|
|
2552
2498
|
\begin_layout Standard
|
|
@@ -2562,8 +2508,7 @@ settings
|
|
|
2562
2508
|
\end_layout
|
|
2563
2509
|
|
|
2564
2510
|
\begin_layout LyX-Code
|
|
2565
|
-
#=> {:method=>:
|
|
2566
|
-
0}
|
|
2511
|
+
#=> {:method=>:basic, :guarded=>false, :step=>0.1, :sampling=>5, :time=>0..60}
|
|
2567
2512
|
\end_layout
|
|
2568
2513
|
|
|
2569
2514
|
\begin_layout Standard
|
|
@@ -2660,15 +2605,11 @@ gnuplot
|
|
|
2660
2605
|
\begin_layout LyX-Code
|
|
2661
2606
|
|
|
2662
2607
|
\color blue
|
|
2663
|
-
recording.plot
|
|
2608
|
+
recording.plot
|
|
2664
2609
|
\color inherit
|
|
2665
2610
|
# plots a graph
|
|
2666
2611
|
\end_layout
|
|
2667
2612
|
|
|
2668
|
-
\begin_layout LyX-Code
|
|
2669
|
-
#=> ""
|
|
2670
|
-
\end_layout
|
|
2671
|
-
|
|
2672
2613
|
\begin_layout Standard
|
|
2673
2614
|
Previous command plots the default feature set, which is marking of the
|
|
2674
2615
|
places.
|
|
@@ -2677,15 +2618,31 @@ Previous command plots the default feature set, which is marking of the
|
|
|
2677
2618
|
\end_layout
|
|
2678
2619
|
|
|
2679
2620
|
\begin_layout LyX-Code
|
|
2680
|
-
recording.
|
|
2621
|
+
recording.
|
|
2622
|
+
\color blue
|
|
2623
|
+
gradient
|
|
2624
|
+
\color inherit
|
|
2625
|
+
.plot
|
|
2681
2626
|
\end_layout
|
|
2682
2627
|
|
|
2683
2628
|
\begin_layout LyX-Code
|
|
2684
|
-
recording.
|
|
2629
|
+
recording.
|
|
2630
|
+
\color blue
|
|
2631
|
+
flux
|
|
2632
|
+
\color inherit
|
|
2633
|
+
.plot
|
|
2685
2634
|
\end_layout
|
|
2686
2635
|
|
|
2687
2636
|
\begin_layout LyX-Code
|
|
2688
|
-
recording.
|
|
2637
|
+
recording.
|
|
2638
|
+
\color blue
|
|
2639
|
+
delta
|
|
2640
|
+
\color inherit
|
|
2641
|
+
(
|
|
2642
|
+
\color blue
|
|
2643
|
+
delta_time
|
|
2644
|
+
\color inherit
|
|
2645
|
+
: 0.1 ).plot
|
|
2689
2646
|
\end_layout
|
|
2690
2647
|
|
|
2691
2648
|
\begin_layout Standard
|
|
@@ -2697,8 +2654,10 @@ delta_time
|
|
|
2697
2654
|
given delta time.
|
|
2698
2655
|
As for
|
|
2699
2656
|
\family typewriter
|
|
2657
|
+
\color blue
|
|
2700
2658
|
firing
|
|
2701
2659
|
\family default
|
|
2660
|
+
\color inherit
|
|
2702
2661
|
, a feature of
|
|
2703
2662
|
\family typewriter
|
|
2704
2663
|
tS
|
|
@@ -2715,17 +2674,17 @@ Example IV: A real system.
|
|
|
2715
2674
|
\end_layout
|
|
2716
2675
|
|
|
2717
2676
|
\begin_layout Standard
|
|
2718
|
-
A highly simplified cell-biological pathway
|
|
2719
|
-
\family typewriter
|
|
2720
|
-
YNelson::TimedSimulation
|
|
2721
|
-
\family default
|
|
2722
|
-
.
|
|
2677
|
+
A highly simplified cell-biological pathway.
|
|
2723
2678
|
Let's first define some assumptions.
|
|
2724
2679
|
Type in the following commands (output not shown):
|
|
2725
2680
|
\end_layout
|
|
2726
2681
|
|
|
2727
2682
|
\begin_layout LyX-Code
|
|
2728
|
-
require 'y_nelson'
|
|
2683
|
+
require 'y_nelson'
|
|
2684
|
+
\end_layout
|
|
2685
|
+
|
|
2686
|
+
\begin_layout LyX-Code
|
|
2687
|
+
include YNelson
|
|
2729
2688
|
\end_layout
|
|
2730
2689
|
|
|
2731
2690
|
\begin_layout LyX-Code
|
|
@@ -3252,6 +3211,12 @@ Flux of the transitions can be plotted by:
|
|
|
3252
3211
|
recording.flux.plot
|
|
3253
3212
|
\end_layout
|
|
3254
3213
|
|
|
3214
|
+
\begin_layout Standard
|
|
3215
|
+
Please note that although this system qualitatively represents part of the
|
|
3216
|
+
deoxynucleotide metabolism network, its behavior is not realistic, because
|
|
3217
|
+
the available kinetic constants are not precise.
|
|
3218
|
+
\end_layout
|
|
3219
|
+
|
|
3255
3220
|
\begin_layout Part*
|
|
3256
3221
|
Example V: Using SY.
|
|
3257
3222
|
\end_layout
|
|
@@ -3270,7 +3235,7 @@ SY
|
|
|
3270
3235
|
\color inherit
|
|
3271
3236
|
.
|
|
3272
3237
|
If you are experienced with biochemical modeling, then you surely know
|
|
3273
|
-
how big pain
|
|
3238
|
+
how big pain the physical units are.
|
|
3274
3239
|
Also, in
|
|
3275
3240
|
\series bold
|
|
3276
3241
|
Example III
|
|
@@ -3328,35 +3293,19 @@ Numeric
|
|
|
3328
3293
|
\end_layout
|
|
3329
3294
|
|
|
3330
3295
|
\begin_layout LyX-Code
|
|
3331
|
-
1.m
|
|
3332
|
-
\end_layout
|
|
3333
|
-
|
|
3334
|
-
\begin_layout LyX-Code
|
|
3335
|
-
#=> #<±Magnitude: 1.m>
|
|
3296
|
+
1.m #=> #<±Magnitude: 1.m>
|
|
3336
3297
|
\end_layout
|
|
3337
3298
|
|
|
3338
3299
|
\begin_layout LyX-Code
|
|
3339
|
-
1.s
|
|
3300
|
+
1.s #=> #<±Magnitude: 1.s>
|
|
3340
3301
|
\end_layout
|
|
3341
3302
|
|
|
3342
3303
|
\begin_layout LyX-Code
|
|
3343
|
-
#=> #<±Magnitude: 1.
|
|
3304
|
+
1.kg.m.s(-2) #=> #<±Magnitude: 1.N>
|
|
3344
3305
|
\end_layout
|
|
3345
3306
|
|
|
3346
3307
|
\begin_layout LyX-Code
|
|
3347
|
-
1.
|
|
3348
|
-
\end_layout
|
|
3349
|
-
|
|
3350
|
-
\begin_layout LyX-Code
|
|
3351
|
-
#=> #<±Magnitude: 1.N>
|
|
3352
|
-
\end_layout
|
|
3353
|
-
|
|
3354
|
-
\begin_layout LyX-Code
|
|
3355
|
-
1.cm + 1.mm
|
|
3356
|
-
\end_layout
|
|
3357
|
-
|
|
3358
|
-
\begin_layout LyX-Code
|
|
3359
|
-
#=> #<±Magnitude: 0.011.m>
|
|
3308
|
+
1.cm + 1.mm #=> #<±Magnitude: 0.011.m>
|
|
3360
3309
|
\end_layout
|
|
3361
3310
|
|
|
3362
3311
|
\begin_layout Standard
|
|
@@ -3369,19 +3318,11 @@ SY::Magnitude
|
|
|
3369
3318
|
\end_layout
|
|
3370
3319
|
|
|
3371
3320
|
\begin_layout LyX-Code
|
|
3372
|
-
1.m.quantity
|
|
3373
|
-
\end_layout
|
|
3374
|
-
|
|
3375
|
-
\begin_layout LyX-Code
|
|
3376
|
-
#=> #<Quantity:Length±>
|
|
3377
|
-
\end_layout
|
|
3378
|
-
|
|
3379
|
-
\begin_layout LyX-Code
|
|
3380
|
-
1.cm.min⁻¹.quantity
|
|
3321
|
+
1.m.quantity #=> #<Quantity:Length>
|
|
3381
3322
|
\end_layout
|
|
3382
3323
|
|
|
3383
3324
|
\begin_layout LyX-Code
|
|
3384
|
-
#=> #<Quantity:Speed
|
|
3325
|
+
1.cm.min⁻¹.quantity #=> #<Quantity:Speed>
|
|
3385
3326
|
\end_layout
|
|
3386
3327
|
|
|
3387
3328
|
\begin_layout Standard
|
|
@@ -3409,19 +3350,11 @@ to_f)
|
|
|
3409
3350
|
\end_layout
|
|
3410
3351
|
|
|
3411
3352
|
\begin_layout LyX-Code
|
|
3412
|
-
1.km.amount
|
|
3353
|
+
1.km.amount #=> 1000.0
|
|
3413
3354
|
\end_layout
|
|
3414
3355
|
|
|
3415
3356
|
\begin_layout LyX-Code
|
|
3416
|
-
#=>
|
|
3417
|
-
\end_layout
|
|
3418
|
-
|
|
3419
|
-
\begin_layout LyX-Code
|
|
3420
|
-
1.cm.to_f
|
|
3421
|
-
\end_layout
|
|
3422
|
-
|
|
3423
|
-
\begin_layout LyX-Code
|
|
3424
|
-
#=> 0.01
|
|
3357
|
+
1.cm.to_f #=> 0.01
|
|
3425
3358
|
\end_layout
|
|
3426
3359
|
|
|
3427
3360
|
\begin_layout Subsection*
|
|
@@ -3443,138 +3376,92 @@ irb
|
|
|
3443
3376
|
\end_layout
|
|
3444
3377
|
|
|
3445
3378
|
\begin_layout LyX-Code
|
|
3446
|
-
require 'sy'
|
|
3379
|
+
require 'sy'
|
|
3447
3380
|
\end_layout
|
|
3448
3381
|
|
|
3449
3382
|
\begin_layout LyX-Code
|
|
3450
|
-
|
|
3383
|
+
require 'y_nelson'
|
|
3451
3384
|
\end_layout
|
|
3452
3385
|
|
|
3453
3386
|
\begin_layout LyX-Code
|
|
3454
|
-
|
|
3387
|
+
include YNelson
|
|
3455
3388
|
\end_layout
|
|
3456
3389
|
|
|
3457
3390
|
\begin_layout LyX-Code
|
|
3458
|
-
|
|
3391
|
+
A = Place m!: 3.mM
|
|
3459
3392
|
\end_layout
|
|
3460
3393
|
|
|
3461
3394
|
\begin_layout LyX-Code
|
|
3462
|
-
|
|
3395
|
+
B = Place m!: 4.mM
|
|
3463
3396
|
\end_layout
|
|
3464
3397
|
|
|
3465
3398
|
\begin_layout LyX-Code
|
|
3466
3399
|
A2B = Transition s: { A: -1, B: 1 }, rate: 0.05.s⁻¹
|
|
3467
3400
|
\end_layout
|
|
3468
3401
|
|
|
3469
|
-
\begin_layout LyX-Code
|
|
3470
|
-
#=> A2B
|
|
3471
|
-
\end_layout
|
|
3472
|
-
|
|
3473
3402
|
\begin_layout LyX-Code
|
|
3474
3403
|
B_decay = Transition s: { B: -1 }, rate: 0.002.s⁻¹
|
|
3475
3404
|
\end_layout
|
|
3476
3405
|
|
|
3477
|
-
\begin_layout LyX-Code
|
|
3478
|
-
#=>
|
|
3479
|
-
\family typewriter
|
|
3480
|
-
B_decay
|
|
3481
|
-
\end_layout
|
|
3482
|
-
|
|
3483
3406
|
\begin_layout Standard
|
|
3484
|
-
|
|
3485
|
-
are defined in physical units.
|
|
3407
|
+
We hereby specified marking and rate in physical units.
|
|
3486
3408
|
Presently,
|
|
3487
3409
|
\family typewriter
|
|
3488
|
-
YNelson
|
|
3410
|
+
YNelson
|
|
3489
3411
|
\family default
|
|
3490
|
-
|
|
3491
|
-
token game ourselves:
|
|
3492
|
-
\end_layout
|
|
3493
|
-
|
|
3494
|
-
\begin_layout LyX-Code
|
|
3495
|
-
fire_both_transitions = proc { |delta_t|
|
|
3412
|
+
is not able to simulate such nets, but we can play token game with it:
|
|
3496
3413
|
\end_layout
|
|
3497
3414
|
|
|
3498
3415
|
\begin_layout LyX-Code
|
|
3499
|
-
|
|
3416
|
+
net.m #=> [#<±Magnitude: 0.003.M>, #<±Magnitude: 0.004.M>]
|
|
3500
3417
|
\end_layout
|
|
3501
3418
|
|
|
3502
3419
|
\begin_layout LyX-Code
|
|
3503
|
-
|
|
3420
|
+
A2B.fire! 1.s
|
|
3504
3421
|
\end_layout
|
|
3505
3422
|
|
|
3506
3423
|
\begin_layout LyX-Code
|
|
3507
|
-
|
|
3424
|
+
B_decay.fire! 1.s
|
|
3508
3425
|
\end_layout
|
|
3509
3426
|
|
|
3510
3427
|
\begin_layout LyX-Code
|
|
3511
|
-
#=>
|
|
3428
|
+
net.m #=> [#<±Magnitude: 0.00285.M>, #<±Magnitude: 0.00414.M>]
|
|
3512
3429
|
\end_layout
|
|
3513
3430
|
|
|
3514
3431
|
\begin_layout Standard
|
|
3515
|
-
|
|
3516
|
-
\begin_inset Formula $\Delta$
|
|
3517
|
-
\end_inset
|
|
3518
|
-
|
|
3519
|
-
t, which it will use to
|
|
3520
|
-
\family typewriter
|
|
3521
|
-
fire!
|
|
3522
|
-
\family default
|
|
3523
|
-
both
|
|
3524
|
-
\family typewriter
|
|
3525
|
-
A2B
|
|
3526
|
-
\family default
|
|
3527
|
-
and
|
|
3528
|
-
\family typewriter
|
|
3529
|
-
B_decay
|
|
3530
|
-
\family default
|
|
3531
|
-
.
|
|
3532
|
-
By calling this closure repeatedly, we can simulate the network without
|
|
3533
|
-
use of
|
|
3534
|
-
\family typewriter
|
|
3535
|
-
TimedSimulation
|
|
3536
|
-
\family default
|
|
3537
|
-
:
|
|
3432
|
+
Let us fire the 2 defined transitions for 100 seconds:
|
|
3538
3433
|
\end_layout
|
|
3539
3434
|
|
|
3540
3435
|
\begin_layout LyX-Code
|
|
3541
|
-
|
|
3436
|
+
100.times do
|
|
3542
3437
|
\end_layout
|
|
3543
3438
|
|
|
3544
3439
|
\begin_layout LyX-Code
|
|
3545
|
-
|
|
3440
|
+
A2B.fire! 1.s
|
|
3546
3441
|
\end_layout
|
|
3547
3442
|
|
|
3548
3443
|
\begin_layout LyX-Code
|
|
3549
|
-
|
|
3444
|
+
B_decay.fire! 1.s
|
|
3550
3445
|
\end_layout
|
|
3551
3446
|
|
|
3552
3447
|
\begin_layout LyX-Code
|
|
3553
|
-
|
|
3448
|
+
end
|
|
3554
3449
|
\end_layout
|
|
3555
3450
|
|
|
3556
3451
|
\begin_layout LyX-Code
|
|
3557
|
-
|
|
3452
|
+
net.m #=> [#<±Magnitude: 1.69e-05.M>, #<±Magnitude: 0.0058.M>]
|
|
3558
3453
|
\end_layout
|
|
3559
3454
|
|
|
3560
|
-
\begin_layout
|
|
3561
|
-
|
|
3562
|
-
\
|
|
3563
|
-
|
|
3564
|
-
\
|
|
3565
|
-
|
|
3566
|
-
\
|
|
3567
|
-
|
|
3568
|
-
\
|
|
3569
|
-
|
|
3570
|
-
\end_layout
|
|
3571
|
-
|
|
3572
|
-
\begin_layout LyX-Code
|
|
3573
|
-
places.map &:marking
|
|
3574
|
-
\end_layout
|
|
3575
|
-
|
|
3576
|
-
\begin_layout LyX-Code
|
|
3577
|
-
#=> [#<±Magnitude: 1.69e-05.M>, #<±Magnitude: 0.0058.M>]
|
|
3455
|
+
\begin_layout Standard
|
|
3456
|
+
Finally, let us inspect the resulting marking of
|
|
3457
|
+
\family typewriter
|
|
3458
|
+
A
|
|
3459
|
+
\family default
|
|
3460
|
+
and
|
|
3461
|
+
\family typewriter
|
|
3462
|
+
B
|
|
3463
|
+
\family default
|
|
3464
|
+
expressed in micromolars:
|
|
3578
3465
|
\end_layout
|
|
3579
3466
|
|
|
3580
3467
|
\begin_layout LyX-Code
|
|
@@ -3582,19 +3469,11 @@ A.marking.
|
|
|
3582
3469
|
\color blue
|
|
3583
3470
|
in
|
|
3584
3471
|
\color inherit
|
|
3585
|
-
:µM
|
|
3472
|
+
:µM #=> 16.873508277951963
|
|
3586
3473
|
\end_layout
|
|
3587
3474
|
|
|
3588
3475
|
\begin_layout LyX-Code
|
|
3589
|
-
#=>
|
|
3590
|
-
\end_layout
|
|
3591
|
-
|
|
3592
|
-
\begin_layout LyX-Code
|
|
3593
|
-
B.marking.in :µM
|
|
3594
|
-
\end_layout
|
|
3595
|
-
|
|
3596
|
-
\begin_layout LyX-Code
|
|
3597
|
-
#=> 5797.976678013365
|
|
3476
|
+
B.marking.in :µM #=> 5797.976678013365
|
|
3598
3477
|
\end_layout
|
|
3599
3478
|
|
|
3600
3479
|
\begin_layout Part*
|
|
@@ -3602,21 +3481,24 @@ Example VI: Other simulation methods
|
|
|
3602
3481
|
\end_layout
|
|
3603
3482
|
|
|
3604
3483
|
\begin_layout Standard
|
|
3605
|
-
At this moment, the default simulation method
|
|
3484
|
+
At this moment, the default simulation method
|
|
3606
3485
|
\family typewriter
|
|
3607
|
-
|
|
3486
|
+
basic
|
|
3608
3487
|
\family default
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
From other simulation methods, Gillespie algorithm is available:
|
|
3488
|
+
method.
|
|
3489
|
+
This method is also called is implicit Euler, because when simulating timed
|
|
3490
|
+
nets, it implies first-order Euler method.
|
|
3491
|
+
For timed nets, YNelson provides two other methods: Runge-Kutta 4th order
|
|
3492
|
+
method and Gillespie stochastic method.
|
|
3493
|
+
Demonstrating Gillespie method:
|
|
3616
3494
|
\end_layout
|
|
3617
3495
|
|
|
3618
3496
|
\begin_layout LyX-Code
|
|
3619
|
-
require 'y_nelson'
|
|
3497
|
+
require 'y_nelson'
|
|
3498
|
+
\end_layout
|
|
3499
|
+
|
|
3500
|
+
\begin_layout LyX-Code
|
|
3501
|
+
include YNelson
|
|
3620
3502
|
\end_layout
|
|
3621
3503
|
|
|
3622
3504
|
\begin_layout LyX-Code
|
|
@@ -3688,8 +3570,8 @@ plot_state
|
|
|
3688
3570
|
\end_layout
|
|
3689
3571
|
|
|
3690
3572
|
\begin_layout Standard
|
|
3691
|
-
The state recording should show
|
|
3692
|
-
50 time units.
|
|
3573
|
+
The state recording should show a random walk of the system state over the
|
|
3574
|
+
period of 50 time units.
|
|
3693
3575
|
\end_layout
|
|
3694
3576
|
|
|
3695
3577
|
\begin_layout LyX-Code
|