technical_graph 0.5.1 → 0.6.0

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.
@@ -1,64 +0,0 @@
1
- require 'helper'
2
-
3
- class TestTechnicalSimpleGraph < Test::Unit::TestCase
4
- context 'initial options' do
5
- should 'draw simple graph' do
6
- @tg = TechnicalGraph.new(
7
- {
8
- :truncate_string => "%.1f",
9
-
10
- :x_axis_label => 'x',
11
- :y_axis_label => 'y',
12
-
13
- :axis_antialias => true,
14
- :layers_antialias => true,
15
- :font_antialias => true,
16
-
17
- :layers_font_size => 6,
18
- :axis_font_size => 8,
19
- :axis_label_font_size => 20,
20
-
21
- #:x_axis_count => 20,
22
- #:y_axis_count => 20,
23
- #:x_axis_interval => 1.0,
24
- #:y_axis_interval => 1.0,
25
- #:x_axis_fixed_interval => false,
26
- #:y_axis_fixed_interval => false,
27
-
28
- #:x_min => -10.0,
29
- #:x_max => 10.0,
30
- #:y_min => -10.0,
31
- #:y_max => 10.0,
32
-
33
- #:width => 4000,
34
- #:height => 3000,
35
- }
36
- )
37
-
38
- max = 50
39
-
40
- # adding simple layer
41
- layer_params = {
42
- :antialias => false,
43
- #:color => 'red'
44
- :color => '#FFFF00'
45
- }
46
- layer_data = Array.new
47
- (0..max).each do |i|
48
- layer_data << { :x => -10.0 + i.to_f, :y => 10.0 * Math.cos(i.to_f * (4.0 * 3.14 / max.to_f)) }
49
- end
50
- @tg.add_layer(layer_data, layer_params)
51
- # should be added
52
- @tg.layers.last.raw_data.size.should > 0
53
- @tg.layers.last.processed_data.size.should > 0
54
- # checking ranger for layer
55
-
56
- @tg.render
57
-
58
- @tg.image_drawer.save_to_file("samples/tests/test_simple.#{@tg.best_output_format}")
59
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
60
-
61
- end
62
- end
63
-
64
- end
@@ -1,214 +0,0 @@
1
- require 'helper'
2
-
3
- class TestTechnicalSmoother < Test::Unit::TestCase
4
- context 'calculations' do
5
- setup do
6
- max = 500
7
-
8
- # adding simple layer
9
- @layer_params = {
10
- :antialias => true,
11
- :label => 'first',
12
- :value_labels => false,
13
- :simple_smother => 4
14
- }
15
- @layer_data = Array.new
16
- (0..max).each do |i|
17
- x = -10.0 + (20.0 * i.to_f / max.to_f)
18
- y = 10.0 * Math.cos(i.to_f * (0.5 * 3.14 / max.to_f))
19
-
20
- y += rand
21
- x += rand / max.to_f
22
-
23
- @layer_data << { :x => x, :y => y }
24
- end
25
-
26
-
27
- @data_layer = DataLayer.new(@layer_data, @layer_params)
28
- @processor = @data_layer.processor
29
- end
30
-
31
- should 'do some basic tests' do
32
- @processor.should.kind_of? DataLayerProcessor
33
- end
34
-
35
- should 'calculated vector has proper size and sum eq. 1.0' do
36
- @processor.generate_vector.should.kind_of? Array
37
- @processor.generate_vector.size.should == @processor.simple_smoother_level
38
-
39
- DataLayerProcessor::SIMPLE_SMOOTHER_STRATEGIES.keys.each do |s|
40
- @processor.simple_smoother_strategy = s
41
- @processor.simple_smoother_strategy.should == s
42
-
43
- (1...10).each do |i|
44
- @processor.simple_smoother_level = i
45
- @processor.simple_smoother_level.should == i
46
-
47
- @processor.generate_vector.size.should == @processor.simple_smoother_level
48
-
49
- s = 0.0
50
- @processor.generate_vector.each do |t|
51
- s += t
52
- end
53
- s.should be_within(0.01).of(1.0)
54
-
55
- # puts @processor.vector.inspect
56
- end
57
- end
58
-
59
- end
60
-
61
- should 'processed data has the same size that old one' do
62
- DataLayerProcessor::SIMPLE_SMOOTHER_STRATEGIES.keys.each do |s|
63
- @processor.simple_smoother_strategy = s
64
- @processor.simple_smoother_strategy.should == s
65
- (1...9).each do |i|
66
- @processor.simple_smoother_level = i
67
- @processor.simple_smoother_level.should == i
68
-
69
- @processor.generate_vector.size.should == @processor.simple_smoother_level
70
-
71
- new_data = @processor.process
72
- new_data.size.should == @data_layer.raw_data.size
73
- new_data.size.should == @data_layer.processed_data.size
74
-
75
- # add as new layer
76
- #@data_layer = DataLayer.new(@layer_data, @layer_params)
77
- # @tg.add_layer(new_data, @layer_params)
78
- end
79
- end
80
- end
81
-
82
- should 'create simple graph with unprocessed and processed layer (gauss)' do
83
- tg = TechnicalGraph.new(
84
- {
85
- :width => 2000,
86
- :height => 1500,
87
- }
88
- )
89
- max = 1000
90
-
91
- # adding simple layer
92
- layer_params = {
93
- :antialias => true,
94
- :color => 'red',
95
- :label => 'raw',
96
- :value_labels => false,
97
- # :simple_smother => 8
98
- }
99
- layer_data = Array.new
100
- (0..max).each do |i|
101
- x = -10.0 + (20.0 * i.to_f / max.to_f)
102
- y = 10.0 * Math.cos(i.to_f * (0.5 * 3.14 / max.to_f))
103
-
104
- y += rand
105
- x += rand / max.to_f
106
-
107
- layer_data << { :x => x, :y => y }
108
- end
109
-
110
- # non processed
111
- tg.add_layer(layer_data, layer_params)
112
-
113
- # process and add
114
- approx = layer_data_b = tg.layers[0].processor
115
- approx.simple_smoother_strategy = :gauss
116
- approx.simple_smoother_level = 9
117
-
118
- layer_data_b = approx.process
119
- layer_params_b = {
120
- :antialias => false,
121
- :color => 'blue',
122
- :label => 'processed',
123
- :value_labels => false,
124
- # :simple_smother => 9
125
- }
126
- tg.add_layer(layer_data_b, layer_params_b)
127
-
128
- tg.render
129
- tg.image_drawer.save_to_file("samples/tests/test_simple_gauss.#{tg.best_output_format}")
130
- end
131
-
132
- should 'create simple graph using only layer params' do
133
- tg = TechnicalGraph.new(
134
- {
135
- :width => 5000,
136
- :height => 3000,
137
-
138
- :legend => true,
139
- :legend_auto => true,
140
- :legend_width => 90,
141
- :legend_margin => 60,
142
- :legend_x => 50,
143
- :legend_y => 50,
144
- }
145
- )
146
- max = 2000
147
-
148
- layer_data = Array.new
149
- (0..max).each do |i|
150
- x = -10.0 + (20.0 * i.to_f / max.to_f)
151
- y = 10.0 * Math.cos(i.to_f * (2.0 * 3.14 / max.to_f))
152
-
153
- y += rand * 4.0
154
- x += rand / max.to_f
155
-
156
- layer_data << { :x => x, :y => y }
157
- end
158
-
159
- # adding simple layer
160
- layer_params = {
161
- :antialias => false,
162
- :color => 'red',
163
- :label => 'raw',
164
- :value_labels => false,
165
- :simple_smoother => true,
166
- :simple_smoother_level => 1,
167
- :simple_smoother_strategy => :gauss
168
- }
169
- #tg.add_layer(layer_data.clone, layer_params)
170
- #layer_params_b = layer_params.merge({
171
- # :color => 'blue',
172
- # :label => 'processed - level 3',
173
- # :simple_smoother_level => 3,
174
- # :simple_smoother => true
175
- #})
176
- #tg.add_layer(layer_data.clone, layer_params)
177
- layer_params_c = layer_params.clone.merge({
178
- :color => 'green',
179
- :label => 'processed - level 100',
180
- :simple_smoother_level => 100,
181
- :simple_smoother => true
182
- })
183
- #tg.add_layer(layer_data.clone, layer_params)
184
- #layer_params_d = layer_params.clone.merge({
185
- # :color => 'brown',
186
- # :label => 'processed - level 50',
187
- # :simple_smoother_level => 50,
188
- # :simple_smoother => true
189
- #})
190
- tg.add_layer(layer_data.clone, layer_params)
191
- #tg.add_layer(layer_data.clone, layer_params_b)
192
- tg.add_layer(layer_data.clone, layer_params_c)
193
- #tg.add_layer(layer_data.clone, layer_params_d)
194
-
195
-
196
- layer_params_e = layer_params.clone.merge({
197
- :color => 'blue',
198
- :label => 'processed (rectangular) - level 100',
199
- :simple_smoother_level => 100,
200
- :simple_smoother => true,
201
- :simple_smoother_strategy => :rectangular
202
- })
203
- tg.add_layer(layer_data.clone, layer_params_e)
204
-
205
-
206
- tg.render
207
- tg.image_drawer.save_to_file("samples/tests/test_smoothing_multiple.#{tg.best_output_format}")
208
- end
209
-
210
-
211
- end
212
-
213
-
214
- end
@@ -1,125 +0,0 @@
1
- require 'helper'
2
-
3
- class TestTechnicalSmootherAdv < Test::Unit::TestCase
4
- context 'using additional X values in smoothing process' do
5
-
6
- should 'calculate proper values' do
7
- max = 2000
8
-
9
- layer_data = Array.new
10
- (0..max).each do |i|
11
- x = -10.0 + (20.0 * i.to_f / max.to_f)
12
- y = 10.0 * Math.cos(i.to_f * (2.0 * 3.14 / max.to_f))
13
-
14
- y += rand * 4.0
15
- x += rand * 1.5
16
-
17
- layer_data << { :x => x, :y => y }
18
- end
19
- dl = DataLayer.new(layer_data)
20
- dlp = DataLayerProcessor.new(dl)
21
-
22
- level = 50
23
-
24
- dlp.simple_smoother_strategy = :gauss
25
- dlp.simple_smoother_level = level
26
- dlp.simple_smoother_x = true
27
- dlp.generate_vector
28
-
29
- test_array = Array.new
30
- x = 0.0
31
- y = 2.0
32
- level.times do
33
- dp = DataPoint.xy(x, y + rand)
34
- x += 1.0
35
- test_array << dp
36
- end
37
- current_position = (test_array.size / 2.0).floor
38
- current_position_point = test_array[current_position]
39
-
40
- processed_yx = dlp.process_part_only_x(test_array, current_position_point)
41
- processed_x = dlp.process_part_only_y(test_array)
42
-
43
- puts processed_x.inspect
44
- puts processed_yx.inspect
45
-
46
-
47
- end
48
-
49
-
50
- should 'create simple X smoothing' do
51
- #return # TODO
52
-
53
- tg = TechnicalGraph.new(
54
- {
55
- :drawer_class => DRAWER_CLASS,
56
- :width => 2000, #8000,
57
- :height => 1500, #6000,
58
-
59
- :legend => true,
60
- :legend_auto => true,
61
- :legend_width => 90,
62
- :legend_margin => 60,
63
- :legend_x => 50,
64
- :legend_y => 50,
65
-
66
- :log_level => Logger::DEBUG,
67
-
68
- :x_axis_label => "Parameter",
69
- :y_axis_label => "Value",
70
- :axis_label_font_size => 28
71
- }
72
- )
73
- max = 50 #2000
74
-
75
- layer_data = Array.new
76
- (0..max).each do |i|
77
- x = -10.0 + (20.0 * i.to_f / max.to_f)
78
- y = 10.0 * Math.cos(i.to_f * (2.0 * 3.14 / max.to_f))
79
-
80
- y += rand * 4.0
81
- x += rand * 1.5
82
-
83
- layer_data << { :x => x, :y => y }
84
- end
85
-
86
- # adding simple layer
87
- layer_params = {
88
- #:perform_parameter_uniq => true,
89
- :antialias => false,
90
- :color => 'red',
91
- :label => 'raw',
92
- :value_labels => false,
93
- :simple_smoother => false,
94
- :simple_smoother_level => 1,
95
- :simple_smoother_strategy => :gauss,
96
- :simple_smoother_x => false,
97
-
98
- :value_labels => true
99
- }
100
- layer_params_c = layer_params.clone.merge(
101
- {
102
- :color => 'green',
103
- :label => 'processed - level 100',
104
- :simple_smoother_level => 100,
105
- :simple_smoother => true
106
- })
107
- layer_params_d = layer_params_c.clone.merge(
108
- {
109
- :color => 'blue',
110
- :simple_smoother_x => true
111
- })
112
-
113
- tg.add_layer(layer_data.clone, layer_params)
114
- tg.add_layer(layer_data.clone, layer_params_c)
115
- tg.add_layer(layer_data.clone, layer_params_d)
116
-
117
- tg.render
118
- tg.image_drawer.save_to_file("samples/tests/test_smoothing_x_values.#{tg.best_output_format}")
119
- end
120
-
121
-
122
- end
123
-
124
-
125
- end