y_petri 2.1.49 → 2.1.50
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/lib/y_petri/transition/construction_convenience.rb +34 -10
- data/lib/y_petri/version.rb +1 -1
- data/test/net_test.rb +1 -1
- data/test/simulation_test.rb +6 -6
- data/test/transition_test.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 07695fc1b0877e3f17285581c526067846e37333
|
|
4
|
+
data.tar.gz: 7c7445c48f5803b021e7d1689f51d0eae2adfff2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 81b8ba81ab47a6782efdeef2e1add45ffebaec2112116aa3f85e0c1293b26521005ed3b7f394fb459e7a33c65172419170256da19c469a1693794a780d0e29d0
|
|
7
|
+
data.tar.gz: 79a23f7e0c5e6fe82c24b037a3d3f8b44fb26ed03c55fb6d678b0b52c3977c3e65227a3be8679d4556bb5013575886eeaacb9fd08ff56f21863bc8ce07d27c8d
|
|
@@ -21,9 +21,11 @@ module YPetri::Transition::ConstructionConvenience
|
|
|
21
21
|
:downstream,
|
|
22
22
|
:downstream_arcs, :downstream_places,
|
|
23
23
|
:action_arcs ]
|
|
24
|
-
nn.may_have :rate, syn!: [ :rate_closure,
|
|
24
|
+
nn.may_have :rate, syn!: [ :rate_closure,
|
|
25
|
+
:propensity,
|
|
25
26
|
:propensity_closure ]
|
|
26
27
|
nn.may_have :action, syn!: :action_closure
|
|
28
|
+
nn.may_have :assignment, syn!: :assignment_closure
|
|
27
29
|
nn.may_have :stoichiometry, syn!: [ :stoichio, :s ]
|
|
28
30
|
nn.may_have :domain_guard
|
|
29
31
|
nn.may_have :codomain_guard
|
|
@@ -34,6 +36,9 @@ module YPetri::Transition::ConstructionConvenience
|
|
|
34
36
|
# If stoichiometry was given, the transition is stoichiometric:
|
|
35
37
|
@stoichiometric = nn.has? :stoichiometry
|
|
36
38
|
|
|
39
|
+
# If the assignment closure was given, the transition is of A type:
|
|
40
|
+
@assignment_action = __assignment_action__( **nn )
|
|
41
|
+
|
|
37
42
|
# Downstream description involves the codomain, and the stochiometry
|
|
38
43
|
# (for stoichiometric transitions only):
|
|
39
44
|
if stoichiometric? then
|
|
@@ -52,12 +57,13 @@ module YPetri::Transition::ConstructionConvenience
|
|
|
52
57
|
if timed? then
|
|
53
58
|
@domain, @rate_closure, @functional = __upstream_for_T__( **nn )
|
|
54
59
|
else
|
|
55
|
-
|
|
60
|
+
if assignment_action? then
|
|
61
|
+
@domain, @action_closure, @functional = __upstream_for_A__( **nn )
|
|
62
|
+
else
|
|
63
|
+
@domain, @action_closure, @functional = __upstream_for_t__( **nn )
|
|
64
|
+
end
|
|
56
65
|
end
|
|
57
66
|
|
|
58
|
-
# Optional assignment action:
|
|
59
|
-
@assignment_action = __assignment_action__( **nn )
|
|
60
|
-
|
|
61
67
|
# Optional type guards for domain / codomain:
|
|
62
68
|
@domain_guard, @codomain_guard = __guards__( **nn )
|
|
63
69
|
end
|
|
@@ -139,7 +145,7 @@ module YPetri::Transition::ConstructionConvenience
|
|
|
139
145
|
funct = true # "functional?"
|
|
140
146
|
# Was action given explicitly?
|
|
141
147
|
if nn.has? :action then
|
|
142
|
-
λ = nn[:action].aT_is_a Proc, "supplied action
|
|
148
|
+
λ = nn[:action].aT_is_a Proc, "supplied :action argument"
|
|
143
149
|
# Time to worry about the domain_missing, guess the user's intention:
|
|
144
150
|
if dom == :missing then
|
|
145
151
|
dom = λ.arity == 0 ? [] : codomain
|
|
@@ -156,6 +162,21 @@ module YPetri::Transition::ConstructionConvenience
|
|
|
156
162
|
end
|
|
157
163
|
return dom, λ, funct
|
|
158
164
|
end
|
|
165
|
+
|
|
166
|
+
# Private method, part of the init process for assignment transitions.
|
|
167
|
+
#
|
|
168
|
+
def __upstream_for_A__( **nn )
|
|
169
|
+
dom = domain
|
|
170
|
+
funct = true
|
|
171
|
+
λ = nn[:assignment].aT_is_a Proc, "supplied :assigmnent argument"
|
|
172
|
+
if dom == :missing then
|
|
173
|
+
dom = λ.arity == 0 ? [] : codomain
|
|
174
|
+
else
|
|
175
|
+
msg = "Assignment closure arity (#{λ.arity}) > domain (#{dom.size})!"
|
|
176
|
+
fail TypeError, msg if λ.arity.abs > dom.size
|
|
177
|
+
end
|
|
178
|
+
return dom, λ, funct
|
|
179
|
+
end
|
|
159
180
|
|
|
160
181
|
# Default rate closure for SR transitions whose rate is hinted as a number.
|
|
161
182
|
#
|
|
@@ -214,13 +235,16 @@ module YPetri::Transition::ConstructionConvenience
|
|
|
214
235
|
# Private method, part of #initialize argument checking-in.
|
|
215
236
|
#
|
|
216
237
|
def __assignment_action__( **oo )
|
|
217
|
-
if oo.has? :
|
|
238
|
+
if oo.has? :assignment then
|
|
218
239
|
if timed? then
|
|
219
240
|
false.tap do
|
|
220
|
-
|
|
221
|
-
|
|
241
|
+
fail TypeError, "Timed transitions may not have assignment action!"
|
|
242
|
+
end
|
|
243
|
+
elsif stoichiometric? then
|
|
244
|
+
false.tap do
|
|
245
|
+
fail TypeError, "S transitions may not have assignment action!"
|
|
222
246
|
end
|
|
223
|
-
else
|
|
247
|
+
else true end # ts transition with assignment keyword
|
|
224
248
|
else false end # the default value
|
|
225
249
|
end
|
|
226
250
|
|
data/lib/y_petri/version.rb
CHANGED
data/test/net_test.rb
CHANGED
data/test/simulation_test.rb
CHANGED
|
@@ -25,7 +25,7 @@ describe YPetri::Simulation do
|
|
|
25
25
|
before do
|
|
26
26
|
@p = @w.Place.send :new, name: :A, default_marking: 1
|
|
27
27
|
@q = @w.Place.send :new, name: :B, default_marking: 2
|
|
28
|
-
@net = @w.Net.of @p, @q
|
|
28
|
+
@net = @w.Net.of [ @p, @q ]
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it "should allow to set up a simplistic simulation instance" do
|
|
@@ -104,7 +104,7 @@ describe YPetri::Simulation do
|
|
|
104
104
|
|
|
105
105
|
describe "ts transition" do
|
|
106
106
|
before do
|
|
107
|
-
@net = @w.Net.of @p, @q, @ts
|
|
107
|
+
@net = @w.Net.of [ @p, @q, @ts ]
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
describe "no clamps" do
|
|
@@ -154,7 +154,7 @@ describe YPetri::Simulation do
|
|
|
154
154
|
|
|
155
155
|
describe "tS transition" do
|
|
156
156
|
before do
|
|
157
|
-
@net = @w.Net.of @p, @q, @tS
|
|
157
|
+
@net = @w.Net.of [ @p, @q, @tS ]
|
|
158
158
|
end
|
|
159
159
|
|
|
160
160
|
describe "no clamps" do
|
|
@@ -184,7 +184,7 @@ describe YPetri::Simulation do
|
|
|
184
184
|
|
|
185
185
|
describe "Ts transition" do
|
|
186
186
|
before do
|
|
187
|
-
@net = @w.Net.of @p, @q, @Ts
|
|
187
|
+
@net = @w.Net.of [ @p, @q, @Ts ]
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
describe "no clamps" do
|
|
@@ -219,7 +219,7 @@ describe YPetri::Simulation do
|
|
|
219
219
|
|
|
220
220
|
describe "TS transition" do
|
|
221
221
|
before do
|
|
222
|
-
@net = @w.Net.of @p, @q, @TS
|
|
222
|
+
@net = @w.Net.of [ @p, @q, @TS ]
|
|
223
223
|
end
|
|
224
224
|
|
|
225
225
|
describe "no clamps" do
|
|
@@ -305,7 +305,7 @@ describe "timed simulation" do
|
|
|
305
305
|
self.class.class_exec { include YPetri }
|
|
306
306
|
A = Place m!: 0.5
|
|
307
307
|
B = Place m!: 0.5
|
|
308
|
-
A_pump =
|
|
308
|
+
A_pump = TT s: { A: -1 } do 0.005 end
|
|
309
309
|
B_decay = Transition s: { B: -1 }, rate: 0.05
|
|
310
310
|
run!
|
|
311
311
|
end
|
data/test/transition_test.rb
CHANGED
|
@@ -210,7 +210,7 @@ describe "upstream and downstream reference mτs of places and transitions" do
|
|
|
210
210
|
describe "assignment action transitions" do
|
|
211
211
|
before do
|
|
212
212
|
@p = @pç.send :new, default_marking: 1.0
|
|
213
|
-
@t = @tç.send :new, codomain: @p,
|
|
213
|
+
@t = @tç.send :new, codomain: @p, assignment_closure: -> { 1 }
|
|
214
214
|
end
|
|
215
215
|
|
|
216
216
|
it "should work" do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: y_petri
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.
|
|
4
|
+
version: 2.1.50
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- boris
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-08-
|
|
11
|
+
date: 2013-08-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: y_support
|