y_petri 2.0.2 → 2.0.3

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.
data/lib/y_petri.rb CHANGED
@@ -1,5 +1,3 @@
1
- #encoding: utf-8
2
-
3
1
  require 'gnuplot'
4
2
  require 'csv'
5
3
  require 'graphviz'
@@ -12,8 +10,8 @@ require 'y_support/typing'
12
10
  require 'y_support/core_ext/hash'
13
11
  require 'y_support/core_ext/array'
14
12
  require 'y_support/stdlib_ext/matrix'
15
-
16
13
  require 'y_support/abstract_algebra'
14
+ require 'y_support/kde'
17
15
 
18
16
  require 'active_support/core_ext/module/delegation'
19
17
  require 'active_support/core_ext/array/extract_options'
@@ -46,8 +44,6 @@ require_relative 'y_petri/manipulator'
46
44
  # Float (continuous) - the decision should be on the simulator.
47
45
  #
48
46
  module YPetri
49
- DEBUG = false
50
-
51
47
  DEFAULT_SIMULATION_SETTINGS = lambda do
52
48
  { step_size: 0.02,
53
49
  sampling_period: 2,
@@ -66,68 +62,44 @@ module YPetri
66
62
  }
67
63
  end
68
64
 
69
- delegate( :workspace,
70
- :place, :transition,
71
- :p, :t,
65
+ delegate( :workspace, to: :y_petri_manipulator )
66
+
67
+ # Petri net-related methods.
68
+ delegate( :Place, :Transition, :Net,
69
+ :place, :transition, :pl, :tr,
72
70
  :places, :transitions, :nets,
73
- :simulations,
74
71
  :pp, :tt, :nn,
72
+ :net_point,
73
+ :net_selection,
74
+ :net, :ne,
75
+ :net_point_reset,
76
+ :net_point_set,
77
+ to: :y_petri_manipulator )
78
+
79
+ # Simulation-related methods.
80
+ delegate( :simulation_point, :ssc_point, :cc_point, :imc_point,
81
+ :simulation_selection, :ssc_selection,
82
+ :cc_selection, :imc_selection,
83
+ :simulations,
75
84
  :clamp_collections,
76
- :inital_marking_collections,
85
+ :initial_marking_collections,
77
86
  :simulation_settings_collections,
87
+ :clamp_collection_names, :cc_names,
88
+ :initial_marking_collection_names, :imc_names,
89
+ :simulation_settings_collection_names, :ssc_names,
90
+ :set_clamp_collection, :set_cc,
91
+ :set_initial_marking_collection, :set_imc,
92
+ :set_simulation_settings_collection, :set_ssc,
93
+ :new_timed_simulation,
78
94
  :clamp_cc, :initial_marking_cc, :simulation_settings_cc,
79
- :Place,
80
- :Transition,
81
- :Net,
82
- :net_point_reset,
83
- :net_point_to, :net→,
84
- :net,
85
- :simulation_point_reset,
86
- :simulation_point_to,
87
- :simulation,
88
95
  :simulation_point_position,
89
- :cc_point_reset,
90
- :cc_point_to, :cc→,
96
+ :simulation,
91
97
  :clamp_collection, :cc,
92
- :cc_point_position,
93
- :imc_point_reset,
94
- :imc_point_to, :imc→,
95
98
  :initial_marking_collection, :imc,
96
- :imc_point_position,
97
- :ssc_point_reset,
98
- :ssc_point_to, :ssc→,
99
99
  :simulation_settings_collection, :ssc,
100
- :ssc_point_position,
101
- :net_selection,
102
- :simulation_selection,
103
- :ssc_selection,
104
- :cc_selection,
105
- :imc_selection,
106
- :net_selection_clear,
107
- :net_select!,
108
- :net_select,
109
- :net_unselect,
110
- :simulation_selection_clear,
111
- :simulation_select!,
112
- :simulation_select,
113
- :simulation_unselect,
114
- :cc_selection_clear,
115
- :cc_select!,
116
- :cc_select,
117
- :cc_unselect,
118
- :imc_selection_clear,
119
- :imc_select!,
120
- :imc_select,
121
- :imc_unselect,
122
- :ssc_selection_clear,
123
- :ssc_select!,
124
- :ssc_select,
125
- :ssc_unselect,
126
100
  :clamp,
127
- :initial_marking, :im,
128
- :set_step, :set_step_size,
129
- :set_time, :set_target_time,
130
- :set_sampling,
101
+ :initial_marking,
102
+ :set_step, :set_time, :set_sampling,
131
103
  :set_simulation_method,
132
104
  :new_timed_simulation,
133
105
  :run!,
@@ -136,6 +108,5 @@ module YPetri
136
108
  :plot_selected,
137
109
  :plot_state,
138
110
  :plot_flux,
139
- :plot_all,
140
111
  to: :y_petri_manipulator )
141
112
  end
data/test/y_petri_test.rb CHANGED
@@ -302,11 +302,11 @@ describe ::YPetri::Transition do
302
302
  describe "6. stoichiometric transitions with rate (SR transitions)" do
303
303
  before do
304
304
  # now this should give standard mass action by magic:
305
- @SR1 = @ç.new s: { @p1 => -1, @p2 => -1, @p4 => 1 }, flux: 0.1
306
- # while this has custom flux closure
307
- @SR2 = @ç.new s: { @p1 => -1, @p3 => 1 }, flux: λ { |a| a * 0.5 }
305
+ @SR1 = @ç.new s: { @p1 => -1, @p2 => -1, @p4 => 1 }, rate: 0.1
306
+ # while this has custom closure
307
+ @SR2 = @ç.new s: { @p1 => -1, @p3 => 1 }, rate: λ { |a| a * 0.5 }
308
308
  # while this one even has domain specified:
309
- @SR3 = @ç.new s: { @p1 => -1, @p2 => -1, @p4 => 1 }, upstream_arcs: @p3, flux: λ { |a| a * 0.5 }
309
+ @SR3 = @ç.new s: { @p1 => -1, @p2 => -1, @p4 => 1 }, upstream_arcs: @p3, rate: λ { |a| a * 0.5 }
310
310
  end
311
311
 
312
312
  it "should init and work" do
@@ -598,13 +598,14 @@ describe ::YPetri::Simulation do
598
598
  @p5 = @pç.new name: "P5", default_marking: 5
599
599
  @t1 = @tç.new name: "T1",
600
600
  s: { @p1 => -1, @p2 => -1, @p4 => 1 },
601
- flux: 0.1
601
+ rate: 0.1
602
602
  @t2 = @tç.new name: "T2",
603
603
  s: { @p1 => -1, @p3 => 1 },
604
- flux: λ { |a| a * 0.5 }
604
+ rate: λ { |a| a * 0.5 }
605
605
  @t3 = @tç.new name: "T3",
606
606
  s: { @p1 => -1, @p2 => -1, @p4 => 1 },
607
- domain: @p3, flux: λ { |a| a * 0.5 }
607
+ domain: @p3,
608
+ rate: λ { |a| a * 0.5 }
608
609
  @net = @nç.new << @p1 << @p2 << @p3 << @p4 << @p5
609
610
  @net.include_transition! @t1
610
611
  @net.include_transition! @t2
@@ -818,7 +819,7 @@ describe ::YPetri::Simulation do
818
819
  it "5. handles sR transitions" do
819
820
  assert_equal [], @s.rate_closures_for_sR
820
821
  assert_equal [], @s.rate_closures_for_s
821
- @s.gradient_for_sR.must_equal Matrix.zero( @s.free_pp.size, 1 )
822
+ # @s.gradient_for_sR.must_equal Matrix.zero( @s.free_pp.size, 1 )
822
823
  @s.Δ_Euler_for_sR( 1.0 ).must_equal Matrix.zero( @s.free_pp.size, 1 )
823
824
  end
824
825
 
@@ -934,7 +935,7 @@ describe ::YPetri::TimedSimulation do
934
935
  end
935
936
  end
936
937
 
937
- describe "timed 'isomerization' with flux given as λ" do
938
+ describe "timed 'isomerization' with given as λ" do
938
939
  before do
939
940
  @t2 = ::YPetri::Transition.new s: { @a => -1, @c => 1 },
940
941
  rate_closure: λ { |a| a * 0.5 }
@@ -1020,9 +1021,9 @@ describe ::YPetri::Workspace do
1020
1021
  it "should present places, transitions, nets, simulations" do
1021
1022
  assert_kind_of ::YPetri::Net, @w.Net::Top
1022
1023
  assert_equal @pp[0], @w.place( "AA" )
1023
- assert_equal :AA, @w.p( @pp[0] )
1024
+ assert_equal :AA, @w.pl( @pp[0] )
1024
1025
  assert_equal @tt[0], @w.transition( "AA_BB_assembly" )
1025
- assert_equal :AA_appearing, @w.t( @tt[1] )
1026
+ assert_equal :AA_appearing, @w.tr( @tt[1] )
1026
1027
  assert_equal @pp, @w.places
1027
1028
  assert_equal @tt, @w.transitions
1028
1029
  assert_equal 1, @w.nets.size
@@ -1070,49 +1071,43 @@ describe ::YPetri::Manipulator do
1070
1071
  it "has net basic points" do
1071
1072
  # --- net point related assets ---
1072
1073
  @m.net_point_reset
1073
- @m.net_point_to @m.workspace.net( :Top )
1074
+ @m.net_point_set @m.workspace.net( :Top )
1074
1075
  @m.net.must_equal @m.workspace.Net::Top
1075
1076
  # --- simulation point related assets ---
1076
- @m.simulation_point_reset
1077
- @m.simulation_point_to nil
1077
+ @m.simulation_point.reset
1078
1078
  @m.simulation.must_equal nil
1079
- @m.simulation_point_position.must_equal nil
1079
+ @m.simulation_point.key.must_equal nil
1080
1080
  # --- cc point related assets ---
1081
- @m.cc_point_reset
1082
- @m.cc_point_to :Base
1081
+ @m.cc_point.reset
1082
+ @m.cc_point.set :Base
1083
1083
  @m.cc.must_equal @m.workspace.clamp_collection
1084
1084
  @m.cc.wont_equal :Base
1085
- @m.cc_point_position.must_equal :Base
1085
+ @m.cc_point.key.must_equal :Base
1086
1086
  # --- imc point related assets ---
1087
- @m.imc_point_reset
1088
- @m.imc_point_to :Base
1087
+ @m.imc_point.reset
1088
+ @m.imc_point.set :Base
1089
1089
  @m.imc.must_equal @m.workspace.initial_marking_collection
1090
1090
  @m.imc.wont_equal :Base
1091
- @m.imc_point_position.must_equal :Base
1091
+ @m.imc_point.key.must_equal :Base
1092
1092
  # --- ssc point related assets ---
1093
- @m.ssc_point_reset
1094
- @m.ssc_point_to :Base
1093
+ @m.ssc_point.reset
1094
+ @m.ssc_point.set :Base
1095
1095
  @m.ssc.must_equal @m.workspace.simulation_settings_collection
1096
1096
  @m.ssc.wont_equal :Base
1097
- @m.ssc_point_position.must_equal :Base
1097
+ @m.ssc_point.key.must_equal :Base
1098
1098
  end
1099
1099
 
1100
1100
  it "has basic selections" do
1101
- @m.net_selection_clear
1102
- @m.simulation_selection_clear
1103
- @m.cc_selection_clear
1104
- @m.imc_selection_clear
1105
- @m.ssc_selection_clear
1106
- @m.net_selection.must_equal []
1107
- @m.simulation_selection.must_equal []
1108
- @m.ssc_selection.must_equal []
1109
- @m.cc_selection.must_equal []
1110
- @m.imc_selection.must_equal []
1111
- [ :net, :simulation, :cc, :imc, :ssc ].each { |sym1|
1112
- [ :select!, :select, :unselect ].each { |sym2|
1113
- @m.must_respond_to "#{sym1}_#{sym2}"
1114
- }
1115
- }
1101
+ @m.net_selection.clear
1102
+ @m.simulation_selection.clear
1103
+ @m.cc_selection.clear
1104
+ @m.imc_selection.clear
1105
+ @m.ssc_selection.clear
1106
+ @m.net_selection.get.must_equal []
1107
+ @m.simulation_selection.get.must_equal []
1108
+ @m.ssc_selection.get.must_equal []
1109
+ @m.cc_selection.get.must_equal []
1110
+ @m.imc_selection.get.must_equal []
1116
1111
  end
1117
1112
 
1118
1113
  it "presents some methods from workspace" do
@@ -1198,7 +1193,7 @@ end
1198
1193
  # @m.place( :B ).marking = 5
1199
1194
  # @m.places.map( &:name ).must_equal [:A, :B, :C]
1200
1195
  # @m.places.map( &:marking ).must_equal [2, 5, 7.77]
1201
- # @m.transition( :A2B ).connectivity.must_equal [ @m.place( :A ), @m.place( :B ) ]
1196
+ # @m.transition( :A2B ).arcs.must_equal [ @m.place( :A ), @m.place( :B ) ]
1202
1197
  # @m.transition( :A2B ).fire!
1203
1198
  # @m.places.map( &:marking ).must_equal [1, 6, 7.77]
1204
1199
  # @m.transition( :A2B ).fire!
@@ -1228,7 +1223,7 @@ end
1228
1223
  # @m.net.must_be_kind_of ::YPetri::Net
1229
1224
  # @m.run!
1230
1225
  # @m.simulation.must_be_kind_of ::YPetri::TimedSimulation
1231
- # @m.plot_recording
1226
+ # @m.plot_state
1232
1227
  # sleep 3
1233
1228
  # end
1234
1229
  # end
@@ -1369,7 +1364,7 @@ end
1369
1364
 
1370
1365
  # it "should work" do
1371
1366
  # @m.run!
1372
- # @m.plot_recording
1367
+ # @m.plot_state
1373
1368
  # sleep 3
1374
1369
  # end
1375
1370
  # end
@@ -1514,7 +1509,7 @@ end
1514
1509
  # # === Simulation execution
1515
1510
  # @m.run!
1516
1511
  # # === Plotting of the results
1517
- # @m.plot_recording
1512
+ # @m.plot_state
1518
1513
  # sleep 20
1519
1514
  # end
1520
1515
  # end
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.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - boris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-02 00:00:00.000000000 Z
11
+ date: 2013-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: y_support
@@ -70,6 +70,10 @@ files:
70
70
  - lib/y_petri/demonstrator_3.rb
71
71
  - lib/y_petri/demonstrator_4.rb
72
72
  - lib/y_petri/manipulator.rb
73
+ - lib/y_petri/manipulator/hash_key_pointer.rb
74
+ - lib/y_petri/manipulator/petri_net_related_methods.rb
75
+ - lib/y_petri/manipulator/selection.rb
76
+ - lib/y_petri/manipulator/simulation_related_methods.rb
73
77
  - lib/y_petri/net.rb
74
78
  - lib/y_petri/place.rb
75
79
  - lib/y_petri/simulation.rb
@@ -77,10 +81,10 @@ files:
77
81
  - lib/y_petri/transition.rb
78
82
  - lib/y_petri/version.rb
79
83
  - lib/y_petri/workspace.rb
80
- - lib/y_petri/workspace/instance_methods.rb
81
84
  - lib/y_petri/workspace/parametrized_subclassing.rb
85
+ - lib/y_petri/workspace/petri_net_related_methods.rb
86
+ - lib/y_petri/workspace/simulation_related_methods.rb
82
87
  - test/simple_manual_examples.rb
83
- - test/y_petri_graph.png
84
88
  - test/y_petri_test.rb
85
89
  - y_petri.gemspec
86
90
  homepage: ''
@@ -102,11 +106,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
106
  version: '0'
103
107
  requirements: []
104
108
  rubyforge_project:
105
- rubygems_version: 2.0.0
109
+ rubygems_version: 2.0.3
106
110
  signing_key:
107
111
  specification_version: 4
108
112
  summary: a Petri net domain model and simulator
109
113
  test_files:
110
114
  - test/simple_manual_examples.rb
111
- - test/y_petri_graph.png
112
115
  - test/y_petri_test.rb
Binary file