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,96 +0,0 @@
1
- require 'helper'
2
-
3
- class TestTechnicalMultilayer < Test::Unit::TestCase
4
- context 'initial options' do
5
- should 'draw multilayer 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 => 11,
18
- :axis_font_size => 11,
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
- :legend => true,
37
- :legend_auto => true,
38
- :legend_width => 90,
39
- :legend_margin => 60,
40
- :legend_x => 50,
41
- :legend_y => 50,
42
- }
43
- )
44
-
45
- max = 50
46
-
47
- # adding simple layer
48
- layer_params_a = {
49
- :antialias => true,
50
- :color => 'red',
51
- :label => 'first'
52
- }
53
- layer_params_b = {
54
- :antialias => true,
55
- :color => 'green',
56
- :label => 'second'
57
- }
58
- layer_params_c = {
59
- :antialias => true,
60
- :color => 'blue',
61
- :label => 'third'
62
- }
63
- layer_params_d = {
64
- :antialias => true,
65
- :color => 'purple',
66
- :label => 'fourth'
67
- }
68
- layer_data_a = Array.new
69
- layer_data_b = Array.new
70
- layer_data_c = Array.new
71
- layer_data_d = Array.new
72
- (0..max).each do |i|
73
- layer_data_a << { :x => -10.0 + i.to_f, :y => 10.0 * Math.cos(i.to_f * (4.0 * 3.14 / max.to_f)) }
74
- layer_data_b << { :x => -10.0 + i.to_f, :y => 10.0 * Math.cos(0.3 + i.to_f * (4.0 * 3.14 / max.to_f)) }
75
- layer_data_c << { :x => -10.0 + i.to_f, :y => 10.0 * Math.cos(0.6 + i.to_f * (4.0 * 3.14 / max.to_f)) }
76
- layer_data_d << { :x => -10.0 + i.to_f, :y => 10.0 * Math.cos(0.9 + i.to_f * (4.0 * 3.14 / max.to_f)) }
77
- end
78
- @tg.add_layer(layer_data_a, layer_params_a)
79
- @tg.add_layer(layer_data_b, layer_params_b)
80
- @tg.add_layer(layer_data_c, layer_params_c)
81
- @tg.add_layer(layer_data_d, layer_params_d)
82
-
83
-
84
- @tg.layers.last.raw_data.size.should > 0
85
- @tg.layers.last.processed_data.size.should > 0
86
- @tg.layers.size.should == 4
87
-
88
- @tg.render
89
-
90
- @tg.image_drawer.save_to_file("samples/tests/test_multilayer.#{@tg.best_output_format}")
91
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
92
-
93
- end
94
- end
95
-
96
- end
@@ -1,36 +0,0 @@
1
- require 'helper'
2
-
3
- class TestTechnicalNoiseRemoval < Test::Unit::TestCase
4
- context 'basic noise (wrong data) removal' do
5
-
6
- should 'do linear dry test' do
7
- layer_data = Array.new
8
- size = 100
9
- (0..size).each do |i|
10
- layer_data << { :x => i.to_f, :y => 5.0 }
11
- end
12
- # noise, spike
13
- layer_data << { :x => 50.1, :y => 12.0 }
14
-
15
- layer_params = {
16
- :noise_removal => true,
17
- :noise_removal_level => 3,
18
- :noise_removal_window_size => 10,
19
- }
20
-
21
- dl = DataLayer.new(layer_data, layer_params)
22
- dlp = DataLayerProcessor.new(dl)
23
-
24
- dlp.noise_removal.should == true
25
- dlp.noise_removal_level.should == 3
26
- dlp.noise_removal_window_size.should == 10
27
-
28
- # start only noise removal for test
29
- #dlp.noise_removal_process
30
- # start everything
31
- dl.process!
32
-
33
- end
34
- end
35
-
36
- end
@@ -1,22 +0,0 @@
1
- require 'helper'
2
-
3
- class TestTechnicalRasem < Test::Unit::TestCase
4
- context 'drawing SVG graphs using rasem' do
5
-
6
- should 'do some initials' do
7
- fake_drawer_class = Struct.new('GraphImageDrawerFake', :width, :height)
8
- fake_drawer = fake_drawer_class.new
9
- fake_drawer[:width] = 800
10
- fake_drawer[:height] = 600
11
- d = GraphImageDrawerRasem.new(fake_drawer)
12
- d.x_axis([ 0, 100, 200, 300 ])
13
- d.close
14
-
15
- d.save("samples/tests/rasem_init.svg")
16
- end
17
-
18
-
19
- end
20
-
21
-
22
- end
@@ -1,525 +0,0 @@
1
- require 'helper'
2
-
3
- # run only latest test to create new graphs for documentation
4
- DO_NOT_RUN_OLD_TESTS = true
5
- README_RENDERED = :rmagick
6
-
7
- class TestTechnicalReadme < Test::Unit::TestCase
8
- context 'generate sample graphs using readme options description' do
9
- setup do
10
- @simple_data_array = [
11
- { :x => 0, :y => 0 },
12
- { :x => 1, :y => 1 },
13
- { :x => 2, :y => 2 },
14
- { :x => 3, :y => 2 },
15
- { :x => 4, :y => 1 },
16
- { :x => 5, :y => 0 },
17
- ]
18
- @simple_data_array_b = [
19
- { :x => 0.5, :y => 0.5 },
20
- { :x => 1.5, :y => 0.5 },
21
- { :x => 2.5, :y => 1.5 },
22
- { :x => 3.5, :y => 1.0 },
23
- { :x => 4.5, :y => 1.5 },
24
- { :x => 5.5, :y => 1.5 },
25
- ]
26
- @float_data_array = [
27
- { :x => 0, :y => 0 },
28
- { :x => 0.111, :y => 0.123 },
29
- { :x => 1.222, :y => 1.456 },
30
- { :x => 1.333, :y => 2.8756 },
31
- { :x => 2.555, :y => 1.042 },
32
- { :x => 2.888, :y => 0.988 },
33
- ]
34
- end
35
-
36
- #
37
- should 'create simplest graph' do
38
- return if DO_NOT_RUN_OLD_TESTS
39
- @tg = TechnicalGraph.new({:drawer_class => README_RENDERED})
40
- @tg.add_layer(@simple_data_array)
41
- @tg.render
42
- file_name = 'samples/readme/01_simplest.png'
43
- @tg.image_drawer.save_to_file(file_name)
44
-
45
- # test
46
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
47
- File.exist?(file_name).should == true
48
- end
49
-
50
- #
51
- should 'create 2-layer graph' do
52
- return if DO_NOT_RUN_OLD_TESTS
53
- @tg = TechnicalGraph.new({:drawer_class => README_RENDERED})
54
- @tg.add_layer(@simple_data_array)
55
- @tg.add_layer(@simple_data_array_b)
56
- @tg.render
57
- file_name = 'samples/readme/02_two_layers.png'
58
- @tg.image_drawer.save_to_file(file_name)
59
-
60
- # test
61
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
62
- File.exist?(file_name).should == true
63
- end
64
-
65
- #
66
- should 'change ranges' do
67
- return if DO_NOT_RUN_OLD_TESTS
68
- @tg = TechnicalGraph.new(
69
- {
70
- :x_min => -2,
71
- :x_max => 10,
72
- :y_min => -1,
73
- :y_max => 10,
74
- :drawer_class => README_RENDERED
75
- })
76
- @tg.add_layer(@simple_data_array)
77
- @tg.render
78
- file_name = 'samples/readme/03_changed_ranges.png'
79
- @tg.image_drawer.save_to_file(file_name)
80
-
81
- # test
82
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
83
- File.exist?(file_name).should == true
84
- end
85
-
86
- should 'change ranges (fixed)' do
87
- return if DO_NOT_RUN_OLD_TESTS
88
- @tg = TechnicalGraph.new(
89
- {
90
- :x_min => 1,
91
- :x_max => 2,
92
- :y_min => 1,
93
- :y_max => 2,
94
- :xy_behaviour => :fixed,
95
- :drawer_class => README_RENDERED
96
- })
97
- @tg.add_layer(@simple_data_array)
98
- @tg.render
99
- file_name = 'samples/readme/04_changed_ranges_fixed.png'
100
- @tg.image_drawer.save_to_file(file_name)
101
-
102
- # test
103
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
104
- File.exist?(file_name).should == true
105
- end
106
-
107
- should 'fixed amount of axis' do
108
- return if DO_NOT_RUN_OLD_TESTS
109
- @tg = TechnicalGraph.new(
110
- {
111
- :x_axis_fixed_interval => false,
112
- :y_axis_fixed_interval => false,
113
- :y_axis_count => 20,
114
- :x_axis_count => 20,
115
- :drawer_class => README_RENDERED
116
- })
117
- @tg.add_layer(@simple_data_array)
118
- @tg.render
119
- file_name = 'samples/readme/05_axis_fixed_amount.png'
120
- @tg.image_drawer.save_to_file(file_name)
121
-
122
- # test
123
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
124
- File.exist?(file_name).should == true
125
- end
126
-
127
- should 'fixed axis interval' do
128
- return if DO_NOT_RUN_OLD_TESTS
129
- @tg = TechnicalGraph.new(
130
- {
131
- :x_axis_fixed_interval => true,
132
- :y_axis_fixed_interval => true,
133
- :y_axis_interval => 0.8,
134
- :x_axis_interval => 0.6,
135
- :drawer_class => README_RENDERED
136
- })
137
- @tg.axis.x_axis_interval.should == 0.6
138
- @tg.axis.y_axis_interval.should == 0.8
139
- @tg.add_layer(@simple_data_array)
140
- @tg.axis.x_axis_interval.should == 0.6
141
- @tg.axis.y_axis_interval.should == 0.8
142
-
143
- # axis_x = @tg.axis.calc_axis(@simple_data_array.first[:x], @simple_data_array.last[:x], 0.1, nil, true)
144
- # axis_y = @tg.axis.calc_axis(@simple_data_array.first[:y], @simple_data_array.last[:y], 0.1, nil, true)
145
- # puts axis_x.inspect
146
- # puts axis_y.inspect
147
-
148
- @tg.render
149
- file_name = 'samples/readme/06_axis_fixed_interval.png'
150
- @tg.image_drawer.save_to_file(file_name)
151
-
152
- # test
153
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
154
- File.exist?(file_name).should == true
155
- end
156
-
157
- should 'let choose axis label' do
158
- return if DO_NOT_RUN_OLD_TESTS
159
- @tg = TechnicalGraph.new(
160
- {
161
- :x_axis_label => 'parameter',
162
- :y_axis_label => 'value',
163
- :axis_label_font_size => 36,
164
- :drawer_class => README_RENDERED
165
- })
166
- @tg.add_layer(@simple_data_array)
167
- @tg.render
168
- file_name = 'samples/readme/07_axis_label.png'
169
- @tg.image_drawer.save_to_file(file_name)
170
-
171
- # test
172
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
173
- File.exist?(file_name).should == true
174
- end
175
-
176
-
177
- should 'test truncate string' do
178
- return if DO_NOT_RUN_OLD_TESTS
179
- @tg = TechnicalGraph.new(
180
- {
181
- :truncate_string => "%.3f",
182
- :drawer_class => README_RENDERED
183
- })
184
- @layer_params = {
185
- :value_labels => true
186
- }
187
- @tg.add_layer(@float_data_array, @layer_params)
188
- @tg.render
189
- file_name = 'samples/readme/08a_truncate_string.png'
190
- @tg.image_drawer.save_to_file(file_name)
191
-
192
- # test
193
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
194
- File.exist?(file_name).should == true
195
- end
196
-
197
- should 'test truncate string 2' do
198
- return if DO_NOT_RUN_OLD_TESTS
199
- @tg = TechnicalGraph.new(
200
- {
201
- :truncate_string => "%.1f",
202
- :drawer_class => README_RENDERED
203
- })
204
- @layer_params = {
205
- :value_labels => true
206
- }
207
- @tg.add_layer(@float_data_array, @layer_params)
208
- @tg.render
209
- file_name = 'samples/readme/08b_truncate_string.png'
210
- @tg.image_drawer.save_to_file(file_name)
211
-
212
- # test
213
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
214
- File.exist?(file_name).should == true
215
- end
216
-
217
- should 'test image size' do
218
- return if DO_NOT_RUN_OLD_TESTS
219
- @tg = TechnicalGraph.new(
220
- {
221
- :width => 600,
222
- :height => 300,
223
- :drawer_class => README_RENDERED,
224
- })
225
- @tg.add_layer(@simple_data_array)
226
- @tg.render
227
- file_name = 'samples/readme/09_image_size.png'
228
- @tg.image_drawer.save_to_file(file_name)
229
-
230
- # test
231
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
232
- File.exist?(file_name).should == true
233
- end
234
-
235
- should 'test colors' do
236
- return if DO_NOT_RUN_OLD_TESTS
237
- @tg = TechnicalGraph.new(
238
- {
239
- :background_color => '#000000',
240
- :background_hatch_color => '#222222',
241
- :axis_color => '#FFFFFF',
242
- :drawer_class => README_RENDERED,
243
- })
244
- @tg.add_layer(@simple_data_array, {:color => '#0000FF'})
245
- @tg.render
246
- file_name = 'samples/readme/10_colors.png'
247
- @tg.image_drawer.save_to_file(file_name)
248
-
249
- # test
250
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
251
- File.exist?(file_name).should == true
252
- end
253
-
254
- should 'test renderer' do
255
- return if DO_NOT_RUN_OLD_TESTS
256
-
257
- @tg = TechnicalGraph.new(
258
- {
259
- :drawer_class => :rmagick,
260
- })
261
- @tg.add_layer(@simple_data_array)
262
- @tg.render
263
- file_name = 'samples/readme/11_renderer_rmagick.png'
264
- @tg.image_drawer.save_to_file(file_name)
265
-
266
- @tg = TechnicalGraph.new(
267
- {
268
- :drawer_class => :rasem
269
- })
270
- @tg.add_layer(@simple_data_array)
271
- @tg.render
272
- file_name = 'samples/readme/11_renderer_rasem.png'
273
- @tg.image_drawer.save_to_file(file_name)
274
-
275
- # test
276
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
277
- File.exist?(file_name).should == true
278
- end
279
-
280
- should 'test anti-aliasing' do
281
- return if DO_NOT_RUN_OLD_TESTS
282
-
283
- @tg = TechnicalGraph.new(
284
- {
285
- :antialias => true,
286
- :drawer_class => :rmagick
287
- })
288
- @tg.add_layer(@simple_data_array)
289
- @tg.render
290
- file_name = 'samples/readme/12_aa_true.png'
291
- @tg.image_drawer.save_to_file(file_name)
292
-
293
- # only for size comparison
294
- @tg = TechnicalGraph.new(
295
- {
296
- :antialias => false,
297
- :drawer_class => :rmagick
298
- })
299
- @tg.add_layer(@simple_data_array)
300
- @tg.render
301
- file_name = 'samples/readme/12_aa_false.png'
302
- @tg.image_drawer.save_to_file(file_name)
303
-
304
- # test
305
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
306
- File.exist?(file_name).should == true
307
- end
308
-
309
-
310
- should 'test font sizes' do
311
- return if DO_NOT_RUN_OLD_TESTS
312
-
313
- @tg = TechnicalGraph.new(
314
- {
315
- :x_axis_label => 'parameter',
316
- :y_axis_label => 'value',
317
- :layers_font_size => 14,
318
- :axis_font_size => 18,
319
- :axis_label_font_size => 48,
320
- :drawer_class => README_RENDERED
321
- })
322
- @tg.add_layer(@simple_data_array, {:value_labels => true})
323
- @tg.render
324
- file_name = 'samples/readme/13_font_sizes.png'
325
- @tg.image_drawer.save_to_file(file_name)
326
-
327
- # test
328
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
329
- File.exist?(file_name).should == true
330
- end
331
-
332
-
333
- should 'test layer labels, colors and legend' do
334
- return if DO_NOT_RUN_OLD_TESTS
335
-
336
- @simple_data_array_second = @simple_data_array.collect{|a| {:x => a[:x] + 0.31, :y => a[:y] + 0.21 }}
337
- @simple_data_array_third = @simple_data_array.collect{|a| {:x => a[:x] * 0.99 + 0.23, :y => a[:y] * 1.2 - 0.12 }}
338
-
339
- @tg = TechnicalGraph.new(
340
- {
341
- :legend => true,
342
- :legend_font_size => 20,
343
- :drawer_class => README_RENDERED
344
- })
345
- @tg.add_layer(@simple_data_array, {:label => 'simple', :color => '#FFFF00'})
346
- @tg.add_layer(@simple_data_array_second, {:label => 'offset', :color => '#00FFFF'})
347
- @tg.add_layer(@simple_data_array_third, {:label => 'scaled', :color => '#FF00FF'})
348
-
349
- @tg.render
350
- file_name = 'samples/readme/14_simple_legend.png'
351
- @tg.image_drawer.save_to_file(file_name)
352
-
353
- # test
354
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
355
- File.exist?(file_name).should == true
356
- end
357
-
358
-
359
- should 'test smoothing' do
360
- return if DO_NOT_RUN_OLD_TESTS
361
-
362
- @tg = TechnicalGraph.new(
363
- {
364
- :width => 2000,
365
- :height => 1500,
366
- :legend => true,
367
- :x_axis_label => "Parameter",
368
- :y_axis_label => "Value",
369
- :drawer_class => README_RENDERED,
370
- }
371
- )
372
- max = 250 #2000
373
-
374
- @layer_data = Array.new
375
- (0..max).each do |i|
376
- x = -10.0 + (20.0 * i.to_f / max.to_f)
377
- y = 10.0 * Math.cos(i.to_f * (2.0 * 3.14 / max.to_f))
378
-
379
- y += rand * 2.0
380
-
381
- @layer_data << { :x => x, :y => y }
382
- end
383
-
384
- # adding simple layer
385
- @layer_params = {
386
- :label => 'raw',
387
- :value_labels => false,
388
- :simple_smoother => false,
389
- :simple_smoother_level => 1,
390
- :simple_smoother_strategy => :gauss,
391
- :simple_smoother_x => false,
392
- }
393
- @layer_params_b = @layer_params.clone.merge(
394
- {
395
- :label => 'smoothed - level 3',
396
- :simple_smoother_level => 3,
397
- :simple_smoother => true
398
- })
399
- @layer_params_e = @layer_params.clone.merge(
400
- {
401
- :label => 'smoothed - level 50',
402
- :simple_smoother_level => 50,
403
- :simple_smoother => true
404
- })
405
-
406
- @tg.add_layer(@layer_data.clone, @layer_params)
407
- @tg.add_layer(@layer_data.clone, @layer_params_b)
408
- @tg.add_layer(@layer_data.clone, @layer_params_e)
409
-
410
- @tg.render
411
- file_name = 'samples/readme/15_smoothing.png'
412
- @tg.image_drawer.save_to_file(file_name)
413
-
414
- # test
415
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
416
- File.exist?(file_name).should == true
417
- end
418
-
419
-
420
-
421
- should 'test noise filtering' do
422
- return if DO_NOT_RUN_OLD_TESTS
423
-
424
- @tg = TechnicalGraph.new(
425
- {
426
- #:log_level => Logger::DEBUG,
427
- :legend => true,
428
- :drawer_class => README_RENDERED
429
- }
430
- )
431
- max = 250 #2000
432
-
433
- @layer_data = Array.new
434
- (0..max).each do |i|
435
- x = -10.0 + (20.0 * i.to_f / max.to_f)
436
- y = -10.0 + (20.0 * i.to_f / max.to_f)
437
- @layer_data << { :x => x, :y => y }
438
- end
439
-
440
- # custom spikes
441
- [3, 36, 99, 187, 204].each do |i|
442
- offset = 5.0
443
- offset *= -1.0 if rand(100) % 2 == 1
444
- @layer_data[i][:y] += offset
445
- end
446
-
447
- 150.times do
448
- i = rand(@layer_data.size)
449
- offset = rand(80).to_f / 10.0
450
- offset *= -1.0 if rand(100) % 2 == 1
451
-
452
- @layer_data[i][:y] += offset
453
- end
454
-
455
- # adding simple layer
456
- @layer_params = {
457
- :label => 'raw',
458
- :value_labels => false,
459
- }
460
- @layer_params_b = @layer_params.clone.merge(
461
- {
462
- :label => 'n.r. level 3, window 10',
463
- :noise_removal_window_size => 10,
464
- :noise_removal_level => 3,
465
- :noise_removal => true
466
- })
467
- @layer_params_e = @layer_params.clone.merge(
468
- {
469
- :label => 'n.r level 10, window 30',
470
- :noise_removal_window_size => 10,
471
- :noise_removal_level => 30,
472
- :noise_removal => true
473
- })
474
-
475
- @tg.add_layer(@layer_data.clone, @layer_params)
476
- @tg.add_layer(@layer_data.clone, @layer_params_b)
477
- @tg.add_layer(@layer_data.clone, @layer_params_e)
478
-
479
- @tg.render
480
- file_name = 'samples/readme/16_noise_removal.png'
481
- @tg.image_drawer.save_to_file(file_name)
482
-
483
- # test
484
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
485
- File.exist?(file_name).should == true
486
- end
487
-
488
-
489
- should 'test axis enlargement' do
490
- return if DO_NOT_RUN_OLD_TESTS
491
-
492
- @tg = TechnicalGraph.new(
493
- {
494
- :log_level => Logger::DEBUG,
495
- :drawer_class => README_RENDERED,
496
- :axis_density_enlarge_image => true,
497
- :x_axis_min_distance => 500,
498
- :x_axis_interval => 1.0,
499
- :x_axis_fixed_interval => true,
500
- :width => 400
501
- }
502
- )
503
- max = 250 #2000
504
-
505
- @layer_data = Array.new
506
- (0..max).each do |i|
507
- x = -10.0 + (20.0 * i.to_f / max.to_f)
508
- y = -10.0 + rand(2000).to_f / 100.0
509
- @layer_data << { :x => x, :y => y }
510
- end
511
-
512
- @tg.add_layer(@layer_data)
513
-
514
- @tg.render
515
- file_name = 'samples/readme/17_axis_enlargement.png'
516
- @tg.image_drawer.save_to_file(file_name)
517
-
518
- # test
519
- @tg.image_drawer.to_format(@tg.best_output_format).class.should == String
520
- File.exist?(file_name).should == true
521
- end
522
-
523
-
524
- end
525
- end