technical_graph 0.3.0 → 0.3.1

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.
@@ -77,7 +77,8 @@ class TestTechnicalAutocolor < Test::Unit::TestCase
77
77
  @tg.add_layer(layer_data_d, layer_params_d)
78
78
 
79
79
 
80
- @tg.layers.last.data.size.should > 0
80
+ @tg.layers.last.raw_data.size.should > 0
81
+ @tg.layers.last.processed_data.size.should > 0
81
82
  @tg.layers.size.should == 4
82
83
 
83
84
  @tg.render
@@ -53,7 +53,8 @@ class TestTechnicalAxisEnlarge < Test::Unit::TestCase
53
53
  end
54
54
  @tg.add_layer(layer_data, layer_params)
55
55
  # should be added
56
- @tg.layers.last.data.size.should > 0
56
+ @tg.layers.last.raw_data.size.should > 0
57
+ @tg.layers.last.processed_data.size.should > 0
57
58
  # checking ranger for layer
58
59
 
59
60
  @tg.render
@@ -52,7 +52,8 @@ class TestTechnicalGraph < Test::Unit::TestCase
52
52
  @tg.layers.size.should == layers + 1
53
53
 
54
54
  layer = @tg.layers.last
55
- layer.data.size.should == @data_size
55
+ layer.raw_data.size.should == @data_size
56
+ layer.processed_data.size.should == @data_size
56
57
  end
57
58
 
58
59
  should 'has ability to manipulate layers, add more data' do
@@ -60,11 +61,13 @@ class TestTechnicalGraph < Test::Unit::TestCase
60
61
  layer = @tg.layers.last
61
62
  layer.class.should == DataLayer
62
63
 
63
- layer.data.size.should == @data_size
64
+ layer.raw_data.size.should == @data_size
65
+ layer.processed_data.size.should == @data_size
64
66
 
65
67
  # adding second data
66
68
  layer.append_data(@second_data)
67
- layer.data.size.should == 2 * @data_size
69
+ layer.raw_data.size.should == 2 * @data_size
70
+ layer.processed_data.size.should == 2 * @data_size
68
71
 
69
72
  # @tg.render
70
73
  # @tg.image.save_to_file('samples/tests/test1.png')
@@ -73,29 +76,36 @@ class TestTechnicalGraph < Test::Unit::TestCase
73
76
  should 'has ability to filter records with similar x\'es' do
74
77
  @tg.add_layer
75
78
  layer = @tg.layers.last
76
- layer.data.size.should == 0
79
+ layer.raw_data.size.should == 0
80
+ layer.processed_data.size.should == 0
77
81
  layer.append_data([{ :x => 0, :y => 1 }])
78
- layer.data.size.should == 1
82
+ layer.raw_data.size.should == 1
83
+ layer.processed_data.size.should == 1
79
84
 
80
85
  # uniq check
81
86
  layer.append_data([{ :x => 0, :y => 1 }])
82
87
  layer.append_data([{ :x => 0, :y => 1 }])
83
- layer.data.size.should == 1
88
+ layer.raw_data.size.should == 1
89
+ layer.processed_data.size.should == 1
84
90
  layer.append_data([{ :x => 2, :y => 1 }])
85
- layer.data.size.should == 2
91
+ layer.raw_data.size.should == 2
92
+ layer.processed_data.size.should == 2
86
93
  end
87
94
 
88
95
  should 'has ability to filter bad records' do
89
96
  @tg.add_layer
90
97
  layer = @tg.layers.last
91
- layer.data.size.should == 0
98
+ layer.raw_data.size.should == 0
99
+ layer.processed_data.size.should == 0
92
100
  layer.append_data([{ :x => 0, :y => 1 }])
93
- layer.data.size.should == 1
101
+ layer.raw_data.size.should == 1
102
+ layer.processed_data.size.should == 1
94
103
 
95
104
  # uniq check
96
105
  layer.append_data([{ :z => 0, :y => 1 }])
97
106
  layer.append_data([{}])
98
- layer.data.size.should == 1
107
+ layer.raw_data.size.should == 1
108
+ layer.processed_data.size.should == 1
99
109
  end
100
110
 
101
111
  end
@@ -70,7 +70,8 @@ class TestTechnicalGraphAxis < Test::Unit::TestCase
70
70
  ]
71
71
  @tg.add_layer(layer_data)
72
72
  # should be added
73
- @tg.layers.last.data.size > 0
73
+ @tg.layers.last.raw_data.size > 0
74
+ @tg.layers.last.processed_data.size > 0
74
75
  # checking ranger for layer
75
76
 
76
77
  @tg.render
@@ -100,7 +101,8 @@ class TestTechnicalGraphAxis < Test::Unit::TestCase
100
101
  ]
101
102
  @tg.add_layer(layer_data)
102
103
  # should be added
103
- @tg.layers.last.data.size > 1
104
+ @tg.layers.last.raw_data.size > 1
105
+ @tg.layers.last.processed_data.size > 1
104
106
 
105
107
  @tg.render
106
108
 
@@ -145,7 +147,8 @@ class TestTechnicalGraphAxis < Test::Unit::TestCase
145
147
  ]
146
148
  @tg.add_layer(layer_data)
147
149
  # should be added
148
- @tg.layers.last.data.size > 0
150
+ @tg.layers.last.raw_data.size > 0
151
+ @tg.layers.last.processed_data.size > 0
149
152
  # checking ranger for layer
150
153
 
151
154
  @tg.render
@@ -212,7 +215,8 @@ class TestTechnicalGraphAxis < Test::Unit::TestCase
212
215
  ]
213
216
  @tg.add_layer(layer_data)
214
217
  # should be added
215
- @tg.layers.last.data.size > 0
218
+ @tg.layers.last.raw_data.size > 0
219
+ @tg.layers.last.processed_data.size > 0
216
220
  # checking ranger for layer
217
221
 
218
222
  @tg.render
@@ -254,7 +258,8 @@ class TestTechnicalGraphAxis < Test::Unit::TestCase
254
258
  ]
255
259
  @tg.add_layer(layer_data)
256
260
  # should be added
257
- @tg.layers.last.data.size > 0
261
+ @tg.layers.last.raw_data.size > 0
262
+ @tg.layers.last.processed_data.size > 0
258
263
  # checking ranger for layer
259
264
 
260
265
  @tg.render
@@ -292,7 +297,8 @@ class TestTechnicalGraphAxis < Test::Unit::TestCase
292
297
  end
293
298
  @tg.add_layer(layer_data)
294
299
  # should be added
295
- @tg.layers.last.data.size > 0
300
+ @tg.layers.last.raw_data.size > 0
301
+ @tg.layers.last.processed_data.size > 0
296
302
  # checking ranger for layer
297
303
 
298
304
  @tg.render
@@ -81,7 +81,8 @@ class TestTechnicalMultilayer < Test::Unit::TestCase
81
81
  @tg.add_layer(layer_data_d, layer_params_d)
82
82
 
83
83
 
84
- @tg.layers.last.data.size.should > 0
84
+ @tg.layers.last.raw_data.size.should > 0
85
+ @tg.layers.last.processed_data.size.should > 0
85
86
  @tg.layers.size.should == 4
86
87
 
87
88
  @tg.render
@@ -0,0 +1,36 @@
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
@@ -0,0 +1,207 @@
1
+ require 'helper'
2
+
3
+ class TestTechnicalReadme < Test::Unit::TestCase
4
+ context 'generate sample graphs using readme options description' do
5
+ setup do
6
+ @simple_data_array = [
7
+ { :x => 0, :y => 0 },
8
+ { :x => 1, :y => 1 },
9
+ { :x => 2, :y => 2 },
10
+ { :x => 3, :y => 2 },
11
+ { :x => 4, :y => 1 },
12
+ { :x => 5, :y => 0 },
13
+ ]
14
+ @simple_data_array_b = [
15
+ { :x => 0.5, :y => 0.5 },
16
+ { :x => 1.5, :y => 0.5 },
17
+ { :x => 2.5, :y => 1.5 },
18
+ { :x => 3.5, :y => 1.0 },
19
+ { :x => 4.5, :y => 1.5 },
20
+ { :x => 5.5, :y => 1.5 },
21
+ ]
22
+ @float_data_array = [
23
+ { :x => 0, :y => 0 },
24
+ { :x => 0.111, :y => 0.123 },
25
+ { :x => 1.222, :y => 1.456 },
26
+ { :x => 1.333, :y => 2.8756 },
27
+ { :x => 2.555, :y => 1.042 },
28
+ { :x => 2.888, :y => 0.988 },
29
+ ]
30
+ end
31
+
32
+ #
33
+ should 'create simplest graph' do
34
+ return # TODO remove it later, when all tests are done
35
+ @tg = TechnicalGraph.new
36
+ @tg.add_layer(@simple_data_array)
37
+ @tg.render
38
+ file_name = 'samples/readme/01_simplest.png'
39
+ @tg.image_drawer.save_to_file(file_name)
40
+
41
+ # test
42
+ @tg.image_drawer.to_png.class.should == String
43
+ File.exist?(file_name).should == true
44
+ end
45
+
46
+ #
47
+ should 'create 2-layer graph' do
48
+ return # TODO remove it later, when all tests are done
49
+ @tg = TechnicalGraph.new
50
+ @tg.add_layer(@simple_data_array)
51
+ @tg.add_layer(@simple_data_array_b)
52
+ @tg.render
53
+ file_name = 'samples/readme/02_two_layers.png'
54
+ @tg.image_drawer.save_to_file(file_name)
55
+
56
+ # test
57
+ @tg.image_drawer.to_png.class.should == String
58
+ File.exist?(file_name).should == true
59
+ end
60
+
61
+ #
62
+ should 'change ranges' do
63
+ return # TODO remove it later, when all tests are done
64
+ @tg = TechnicalGraph.new(
65
+ {
66
+ :x_min => -2,
67
+ :x_max => 10,
68
+ :y_min => -1,
69
+ :y_max => 10,
70
+ })
71
+ @tg.add_layer(@simple_data_array)
72
+ @tg.render
73
+ file_name = 'samples/readme/03_changed_ranges.png'
74
+ @tg.image_drawer.save_to_file(file_name)
75
+
76
+ # test
77
+ @tg.image_drawer.to_png.class.should == String
78
+ File.exist?(file_name).should == true
79
+ end
80
+
81
+ should 'change ranges (fixed)' do
82
+ return # TODO remove it later, when all tests are done
83
+ @tg = TechnicalGraph.new(
84
+ {
85
+ :x_min => 1,
86
+ :x_max => 2,
87
+ :y_min => 1,
88
+ :y_max => 2,
89
+ :xy_behaviour => :fixed
90
+ })
91
+ @tg.add_layer(@simple_data_array)
92
+ @tg.render
93
+ file_name = 'samples/readme/04_changed_ranges_fixed.png'
94
+ @tg.image_drawer.save_to_file(file_name)
95
+
96
+ # test
97
+ @tg.image_drawer.to_png.class.should == String
98
+ File.exist?(file_name).should == true
99
+ end
100
+
101
+ should 'fixed amount of axis' do
102
+ return # TODO remove it later, when all tests are done
103
+ @tg = TechnicalGraph.new(
104
+ {
105
+ :x_axis_fixed_interval => false,
106
+ :y_axis_fixed_interval => false,
107
+ :y_axis_count => 20,
108
+ :x_axis_count => 20,
109
+ })
110
+ @tg.add_layer(@simple_data_array)
111
+ @tg.render
112
+ file_name = 'samples/readme/05_axis_fixed_amount.png'
113
+ @tg.image_drawer.save_to_file(file_name)
114
+
115
+ # test
116
+ @tg.image_drawer.to_png.class.should == String
117
+ File.exist?(file_name).should == true
118
+ end
119
+
120
+ should 'fixed axis interval' do
121
+ return # TODO remove it later, when all tests are done
122
+ @tg = TechnicalGraph.new(
123
+ {
124
+ :x_axis_fixed_interval => true,
125
+ :y_axis_fixed_interval => true,
126
+ :y_axis_interval => 0.8,
127
+ :x_axis_interval => 0.6,
128
+ })
129
+ @tg.axis.x_axis_interval.should == 0.6
130
+ @tg.axis.y_axis_interval.should == 0.8
131
+ @tg.add_layer(@simple_data_array)
132
+ @tg.axis.x_axis_interval.should == 0.6
133
+ @tg.axis.y_axis_interval.should == 0.8
134
+
135
+ # axis_x = @tg.axis.calc_axis(@simple_data_array.first[:x], @simple_data_array.last[:x], 0.1, nil, true)
136
+ # axis_y = @tg.axis.calc_axis(@simple_data_array.first[:y], @simple_data_array.last[:y], 0.1, nil, true)
137
+ # puts axis_x.inspect
138
+ # puts axis_y.inspect
139
+
140
+ @tg.render
141
+ file_name = 'samples/readme/06_axis_fixed_interval.png'
142
+ @tg.image_drawer.save_to_file(file_name)
143
+
144
+ # test
145
+ @tg.image_drawer.to_png.class.should == String
146
+ File.exist?(file_name).should == true
147
+ end
148
+
149
+ should 'let choose axis label' do
150
+ return # TODO remove it later, when all tests are done
151
+ @tg = TechnicalGraph.new(
152
+ {
153
+ :x_axis_label => 'parameter',
154
+ :y_axis_label => 'value',
155
+ :axis_label_font_size => 36
156
+ })
157
+ @tg.add_layer(@simple_data_array)
158
+ @tg.render
159
+ file_name = 'samples/readme/07_axis_label.png'
160
+ @tg.image_drawer.save_to_file(file_name)
161
+
162
+ # test
163
+ @tg.image_drawer.to_png.class.should == String
164
+ File.exist?(file_name).should == true
165
+ end
166
+
167
+
168
+ should 'test truncate string' do
169
+ #return # TODO remove it later, when all tests are done
170
+ @tg = TechnicalGraph.new(
171
+ {
172
+ :truncate_string => "%.3f"
173
+ })
174
+ @layer_params = {
175
+ :value_labels => true
176
+ }
177
+ @tg.add_layer(@float_data_array, @layer_params)
178
+ @tg.render
179
+ file_name = 'samples/readme/08a_truncate_string.png'
180
+ @tg.image_drawer.save_to_file(file_name)
181
+
182
+ # test
183
+ @tg.image_drawer.to_png.class.should == String
184
+ File.exist?(file_name).should == true
185
+ end
186
+
187
+ should 'test truncate string 2' do
188
+ #return # TODO remove it later, when all tests are done
189
+ @tg = TechnicalGraph.new(
190
+ {
191
+ :truncate_string => "%.1f"
192
+ })
193
+ @layer_params = {
194
+ :value_labels => true
195
+ }
196
+ @tg.add_layer(@float_data_array, @layer_params)
197
+ @tg.render
198
+ file_name = 'samples/readme/08b_truncate_string.png'
199
+ @tg.image_drawer.save_to_file(file_name)
200
+
201
+ # test
202
+ @tg.image_drawer.to_png.class.should == String
203
+ File.exist?(file_name).should == true
204
+ end
205
+
206
+ end
207
+ end
@@ -49,7 +49,8 @@ class TestTechnicalSimpleGraph < Test::Unit::TestCase
49
49
  end
50
50
  @tg.add_layer(layer_data, layer_params)
51
51
  # should be added
52
- @tg.layers.last.data.size.should > 0
52
+ @tg.layers.last.raw_data.size.should > 0
53
+ @tg.layers.last.processed_data.size.should > 0
53
54
  # checking ranger for layer
54
55
 
55
56
  @tg.render
@@ -34,17 +34,17 @@ class TestTechnicalSmoother < Test::Unit::TestCase
34
34
 
35
35
  should 'calculated vector has proper size and sum eq. 1.0' do
36
36
  @processor.generate_vector.should.kind_of? Array
37
- @processor.generate_vector.size.should == @processor.level
37
+ @processor.generate_vector.size.should == @processor.simple_smoother_level
38
38
 
39
- DataLayerProcessor::STRATEGIES.keys.each do |s|
40
- @processor.strategy = s
41
- @processor.strategy.should == s
39
+ DataLayerProcessor::SIMPLE_SMOOTHER_STRATEGIES.keys.each do |s|
40
+ @processor.simple_smoother_strategy = s
41
+ @processor.simple_smoother_strategy.should == s
42
42
 
43
43
  (1...10).each do |i|
44
- @processor.level = i
45
- @processor.level.should == i
44
+ @processor.simple_smoother_level = i
45
+ @processor.simple_smoother_level.should == i
46
46
 
47
- @processor.generate_vector.size.should == @processor.level
47
+ @processor.generate_vector.size.should == @processor.simple_smoother_level
48
48
 
49
49
  s = 0.0
50
50
  @processor.generate_vector.each do |t|
@@ -59,17 +59,18 @@ class TestTechnicalSmoother < Test::Unit::TestCase
59
59
  end
60
60
 
61
61
  should 'processed data has the same size that old one' do
62
- DataLayerProcessor::STRATEGIES.keys.each do |s|
63
- @processor.strategy = s
64
- @processor.strategy.should == s
62
+ DataLayerProcessor::SIMPLE_SMOOTHER_STRATEGIES.keys.each do |s|
63
+ @processor.simple_smoother_strategy = s
64
+ @processor.simple_smoother_strategy.should == s
65
65
  (1...9).each do |i|
66
- @processor.level = i
67
- @processor.level.should == i
66
+ @processor.simple_smoother_level = i
67
+ @processor.simple_smoother_level.should == i
68
68
 
69
- @processor.generate_vector.size.should == @processor.level
69
+ @processor.generate_vector.size.should == @processor.simple_smoother_level
70
70
 
71
71
  new_data = @processor.process
72
- new_data.size.should == @data_layer.data.size
72
+ new_data.size.should == @data_layer.raw_data.size
73
+ new_data.size.should == @data_layer.processed_data.size
73
74
 
74
75
  # add as new layer
75
76
  #@data_layer = DataLayer.new(@layer_data, @layer_params)
@@ -111,10 +112,9 @@ class TestTechnicalSmoother < Test::Unit::TestCase
111
112
 
112
113
  # process and add
113
114
  approx = layer_data_b = tg.layers[0].processor
114
- approx.strategy = :gauss
115
- approx.level = 9
116
- approx.generate_vector
117
-
115
+ approx.simple_smoother_strategy = :gauss
116
+ approx.simple_smoother_level = 9
117
+
118
118
  layer_data_b = approx.process
119
119
  layer_params_b = {
120
120
  :antialias => false,
@@ -0,0 +1,115 @@
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
+ :width => 8000,
56
+ :height => 6000,
57
+
58
+ :legend => true,
59
+ :legend_auto => true,
60
+ :legend_width => 90,
61
+ :legend_margin => 60,
62
+ :legend_x => 50,
63
+ :legend_y => 50,
64
+ }
65
+ )
66
+ max = 2000
67
+
68
+ layer_data = Array.new
69
+ (0..max).each do |i|
70
+ x = -10.0 + (20.0 * i.to_f / max.to_f)
71
+ y = 10.0 * Math.cos(i.to_f * (2.0 * 3.14 / max.to_f))
72
+
73
+ y += rand * 4.0
74
+ x += rand * 1.5
75
+
76
+ layer_data << { :x => x, :y => y }
77
+ end
78
+
79
+ # adding simple layer
80
+ layer_params = {
81
+ :antialias => false,
82
+ :color => 'red',
83
+ :label => 'raw',
84
+ :value_labels => false,
85
+ :simple_smoother => false,
86
+ :simple_smoother_level => 1,
87
+ :simple_smoother_strategy => :gauss,
88
+ :simple_smoother_x => false
89
+ }
90
+ layer_params_c = layer_params.clone.merge(
91
+ {
92
+ :color => 'green',
93
+ :label => 'processed - level 100',
94
+ :simple_smoother_level => 100,
95
+ :simple_smoother => true
96
+ })
97
+ layer_params_d = layer_params_c.clone.merge(
98
+ {
99
+ :color => 'blue',
100
+ :simple_smoother_x => true
101
+ })
102
+
103
+ tg.add_layer(layer_data.clone, layer_params)
104
+ tg.add_layer(layer_data.clone, layer_params_c)
105
+ tg.add_layer(layer_data.clone, layer_params_d)
106
+
107
+ tg.render
108
+ tg.image_drawer.save_to_file('samples/tests/test_smoothing_x_values.png')
109
+ end
110
+
111
+
112
+ end
113
+
114
+
115
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: technical_graph
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Aleksander Kwiatkowski
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-12 00:00:00 +02:00
18
+ date: 2011-10-16 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -114,6 +114,7 @@ extra_rdoc_files:
114
114
  - LICENSE.txt
115
115
  - README.md
116
116
  files:
117
+ - DOCUMENTATION.textile
117
118
  - Gemfile
118
119
  - Gemfile.lock
119
120
  - LICENSE.txt
@@ -121,8 +122,12 @@ files:
121
122
  - Rakefile
122
123
  - VERSION
123
124
  - lib/technical_graph.rb
125
+ - lib/technical_graph/array.rb
124
126
  - lib/technical_graph/data_layer.rb
125
127
  - lib/technical_graph/data_layer_processor.rb
128
+ - lib/technical_graph/data_layer_processor_noise_removal.rb
129
+ - lib/technical_graph/data_layer_processor_simple_smoother.rb
130
+ - lib/technical_graph/data_point.rb
126
131
  - lib/technical_graph/graph_axis.rb
127
132
  - lib/technical_graph/graph_color_library.rb
128
133
  - lib/technical_graph/graph_data_processor.rb
@@ -133,8 +138,11 @@ files:
133
138
  - test/test_technical_graph.rb
134
139
  - test/test_technical_graph_axis.rb
135
140
  - test/test_technical_multilayer.rb
141
+ - test/test_technical_noise_removal.rb
142
+ - test/test_technical_readme.rb
136
143
  - test/test_technical_simple_graph.rb
137
144
  - test/test_technical_smoother.rb
145
+ - test/test_technical_smoother_adv.rb
138
146
  has_rdoc: true
139
147
  homepage: http://github.com/akwiatkowski/technical_graph
140
148
  licenses: