analytica 0.0.12 → 0.0.13
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/analytica.rb +13 -1
- data/lib/computation.rb +7 -7
- data/lib/visualization.rb +49 -84
- metadata +4 -4
data/lib/analytica.rb
CHANGED
@@ -4,7 +4,7 @@ require File.join(File.dirname(__FILE__), 'computation')
|
|
4
4
|
require File.join(File.dirname(__FILE__), 'visualization')
|
5
5
|
|
6
6
|
module Analytica
|
7
|
-
VERSION = '0.0.
|
7
|
+
VERSION = '0.0.13'
|
8
8
|
|
9
9
|
include Strict
|
10
10
|
|
@@ -15,8 +15,16 @@ module Analytica
|
|
15
15
|
|
16
16
|
register_supertype(:dataset_array, dataset_array_handler)
|
17
17
|
|
18
|
+
string_array_2d_handler = proc do |data, context|
|
19
|
+
enforce_primitive!(Array, data, context)
|
20
|
+
data.each {|item| enforce!(:string_array, item, context)}
|
21
|
+
end
|
22
|
+
|
23
|
+
register_supertype(:string_array_2d, string_array_2d_handler)
|
24
|
+
|
18
25
|
class DataSet < Array
|
19
26
|
include Analytica::Computation
|
27
|
+
include Analytica::Visualization::Common
|
20
28
|
include Analytica::Visualization::DataSet
|
21
29
|
|
22
30
|
def initialize(datapoints=[])
|
@@ -45,11 +53,15 @@ module Analytica
|
|
45
53
|
end
|
46
54
|
|
47
55
|
class DataSystem < Array
|
56
|
+
include Analytica::Visualization::Common
|
48
57
|
include Analytica::Visualization::DataSystem
|
49
58
|
|
50
59
|
def initialize(datasets=[])
|
51
60
|
enforce!(:dataset_array, datasets)
|
52
61
|
|
62
|
+
@labels = []
|
63
|
+
@labels_set = false
|
64
|
+
|
53
65
|
super datasets
|
54
66
|
end
|
55
67
|
|
data/lib/computation.rb
CHANGED
@@ -32,7 +32,7 @@ module Analytica
|
|
32
32
|
sum.to_f / size
|
33
33
|
end
|
34
34
|
|
35
|
-
def linear_mean(params)
|
35
|
+
def linear_mean(params={})
|
36
36
|
enforce_map!({
|
37
37
|
:bias => [:last, :first],
|
38
38
|
:samples => :natural_number}, params)
|
@@ -56,7 +56,7 @@ module Analytica
|
|
56
56
|
numerator / denominator
|
57
57
|
end
|
58
58
|
|
59
|
-
def exponential_mean(params)
|
59
|
+
def exponential_mean(params={})
|
60
60
|
enforce_map!({
|
61
61
|
:bias => [:last, :first],
|
62
62
|
:alpha => :numeric,
|
@@ -89,7 +89,7 @@ module Analytica
|
|
89
89
|
end
|
90
90
|
|
91
91
|
|
92
|
-
def average_filter(params)
|
92
|
+
def average_filter(params={})
|
93
93
|
enforce_map!({
|
94
94
|
:decay => [:simple, :linear, :exponential],
|
95
95
|
:offset => :natural_number, # offset from latest data point
|
@@ -130,7 +130,7 @@ module Analytica
|
|
130
130
|
|
131
131
|
alias_method(:avg, :average_filter)
|
132
132
|
|
133
|
-
def moving_average(params)
|
133
|
+
def moving_average(params={})
|
134
134
|
enforce_map!({
|
135
135
|
:decay => [:simple, :linear, :exponential],
|
136
136
|
:samples => :natural_number}, params)
|
@@ -150,7 +150,7 @@ module Analytica
|
|
150
150
|
d.reverse
|
151
151
|
end
|
152
152
|
|
153
|
-
def simple_moving_average(params)
|
153
|
+
def simple_moving_average(params={})
|
154
154
|
enforce_map!({
|
155
155
|
:samples => :natural_number}, params)
|
156
156
|
moving_average(:decay => :simple, :samples => params[:samples])
|
@@ -158,7 +158,7 @@ module Analytica
|
|
158
158
|
|
159
159
|
alias_method :sma, :simple_moving_average
|
160
160
|
|
161
|
-
def linear_moving_average(params)
|
161
|
+
def linear_moving_average(params={})
|
162
162
|
enforce_map!({
|
163
163
|
:samples => :natural_number}, params)
|
164
164
|
moving_average(:decay => :linear, :samples => params[:samples])
|
@@ -166,7 +166,7 @@ module Analytica
|
|
166
166
|
|
167
167
|
alias_method :lma, :linear_moving_average
|
168
168
|
|
169
|
-
def exponential_moving_average(params)
|
169
|
+
def exponential_moving_average(params={})
|
170
170
|
enforce_map!({
|
171
171
|
:samples => :integer,
|
172
172
|
:alpha => :float}, params)
|
data/lib/visualization.rb
CHANGED
@@ -7,6 +7,37 @@ module Analytica
|
|
7
7
|
{:width => 25, :spacing => 10, :group_spacing => 12}
|
8
8
|
end
|
9
9
|
|
10
|
+
module Common
|
11
|
+
def set_title(params)
|
12
|
+
enforce_map!({
|
13
|
+
:title => :string,
|
14
|
+
:title_size => :natural_number,
|
15
|
+
:title_color => :hex_color}, params)
|
16
|
+
|
17
|
+
@title = params
|
18
|
+
@title_set = true
|
19
|
+
end
|
20
|
+
|
21
|
+
def common_options
|
22
|
+
options = {}
|
23
|
+
|
24
|
+
if @labels_set
|
25
|
+
label = {
|
26
|
+
:axis_with_labels => ['x', 'y'],
|
27
|
+
:axis_labels => [@labels, ["#{0}", "#{(datamax*0.25).to_i}", "#{(datamax*0.5).to_i}", "#{(datamax*0.75).to_i}", "#{datamax.to_i}"]]
|
28
|
+
}
|
29
|
+
|
30
|
+
options.merge!(label)
|
31
|
+
end
|
32
|
+
|
33
|
+
if @title_set
|
34
|
+
options.merge!(@title)
|
35
|
+
end
|
36
|
+
|
37
|
+
options
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
10
41
|
module DataSet
|
11
42
|
include Strict
|
12
43
|
|
@@ -21,7 +52,7 @@ module Analytica
|
|
21
52
|
(max > 0) ? (1.25*max) : 1
|
22
53
|
end
|
23
54
|
|
24
|
-
def to_linegraph(params)
|
55
|
+
def to_linegraph(params={})
|
25
56
|
enforce_map!({
|
26
57
|
:width => :natural_number,
|
27
58
|
:height => :natural_number,
|
@@ -44,14 +75,6 @@ module Analytica
|
|
44
75
|
|
45
76
|
options.merge!(base)
|
46
77
|
|
47
|
-
title = {
|
48
|
-
:title => params[:title],
|
49
|
-
:title_color => params[:title_color],
|
50
|
-
:title_size => params[:title_size]
|
51
|
-
}
|
52
|
-
|
53
|
-
#options.merge!(title)
|
54
|
-
|
55
78
|
color = {
|
56
79
|
:line_colors => params[:color],
|
57
80
|
:background => params[:background_color],
|
@@ -60,19 +83,12 @@ module Analytica
|
|
60
83
|
|
61
84
|
options.merge!(color)
|
62
85
|
|
63
|
-
|
64
|
-
:legend => ['x', 'y'], # TODO number of datasets
|
65
|
-
:axis_with_labels => ['x','r'], #TODO number of datasets
|
66
|
-
:axis_labels => [[],[]] # TODO
|
67
|
-
}
|
68
|
-
|
69
|
-
|
70
|
-
#options.merge!(label)
|
86
|
+
options.merge!(common_options)
|
71
87
|
|
72
88
|
Gchart.line(options)
|
73
89
|
end
|
74
90
|
|
75
|
-
def to_sparkline(params)
|
91
|
+
def to_sparkline(params={})
|
76
92
|
enforce_map!({
|
77
93
|
:width => :natural_number,
|
78
94
|
:height => :natural_number,
|
@@ -95,14 +111,6 @@ module Analytica
|
|
95
111
|
|
96
112
|
options.merge!(base)
|
97
113
|
|
98
|
-
title = {
|
99
|
-
:title => params[:title],
|
100
|
-
:title_color => params[:title_color],
|
101
|
-
:title_size => params[:title_size]
|
102
|
-
}
|
103
|
-
|
104
|
-
#options.merge!(title)
|
105
|
-
|
106
114
|
color = {
|
107
115
|
:line_colors => params[:color],
|
108
116
|
:background => params[:background_color],
|
@@ -111,19 +119,13 @@ module Analytica
|
|
111
119
|
|
112
120
|
options.merge!(color)
|
113
121
|
|
114
|
-
|
115
|
-
:legend => ['x', 'y'], # TODO number of datasets
|
116
|
-
:axis_with_labels => ['x','r'], #TODO number of datasets
|
117
|
-
:axis_labels => [[],[]] # TODO
|
118
|
-
}
|
119
|
-
|
120
|
-
#options.merge!(label)
|
122
|
+
options.merge!(common_options)
|
121
123
|
|
122
124
|
Gchart.sparkline(options)
|
123
125
|
end
|
124
126
|
|
125
127
|
|
126
|
-
def to_bargraph(params)
|
128
|
+
def to_bargraph(params={})
|
127
129
|
enforce_map!({
|
128
130
|
:width => :natural_number,
|
129
131
|
:height => :natural_number,
|
@@ -145,14 +147,6 @@ module Analytica
|
|
145
147
|
|
146
148
|
options.merge!(base)
|
147
149
|
|
148
|
-
title = {
|
149
|
-
:title => params[:title],
|
150
|
-
:title_color => params[:title_color],
|
151
|
-
:title_size => params[:title_size]
|
152
|
-
}
|
153
|
-
|
154
|
-
#options.merge!(title)
|
155
|
-
|
156
150
|
color = {
|
157
151
|
:bar_colors => params[:color],
|
158
152
|
:background => params[:background_color],
|
@@ -161,25 +155,26 @@ module Analytica
|
|
161
155
|
|
162
156
|
options.merge!(color)
|
163
157
|
|
164
|
-
|
165
|
-
:legend => ['x', 'y'], # TODO number of datasets
|
166
|
-
:axis_with_labels => ['x','r'], #TODO number of datasets
|
167
|
-
:axis_labels => [[],[]] # TODO
|
168
|
-
}
|
169
|
-
|
170
|
-
#options.merge!(label)
|
171
|
-
|
158
|
+
options.merge!(common_options)
|
172
159
|
|
173
160
|
return Gchart.bar(options)
|
174
161
|
end
|
175
162
|
end
|
176
163
|
|
177
164
|
module DataSystem
|
165
|
+
|
166
|
+
def set_labels(labels)
|
167
|
+
enforce!(:string_array_2d, labels)
|
168
|
+
|
169
|
+
@labels = labels
|
170
|
+
@labels_set = true
|
171
|
+
end
|
172
|
+
|
178
173
|
def datamax
|
179
174
|
(self.map{|dset| dset.datamax}).max
|
180
175
|
end
|
181
176
|
|
182
|
-
def to_linegraph(params)
|
177
|
+
def to_linegraph(params={})
|
183
178
|
enforce_map!({
|
184
179
|
:width => :natural_number,
|
185
180
|
:height => :natural_number,
|
@@ -202,14 +197,6 @@ module Analytica
|
|
202
197
|
|
203
198
|
options.merge!(base)
|
204
199
|
|
205
|
-
title = {
|
206
|
-
:title => params[:title],
|
207
|
-
:title_color => params[:title_color],
|
208
|
-
:title_size => params[:title_size]
|
209
|
-
}
|
210
|
-
|
211
|
-
#options.merge!(title)
|
212
|
-
|
213
200
|
color = {
|
214
201
|
:line_colors => params[:colors],
|
215
202
|
:background => params[:background_color],
|
@@ -218,19 +205,12 @@ module Analytica
|
|
218
205
|
|
219
206
|
options.merge!(color)
|
220
207
|
|
221
|
-
|
222
|
-
label = {
|
223
|
-
:axis_with_labels => ['x', 'y' ,'r'],
|
224
|
-
:axis_labels => @labels
|
225
|
-
}
|
226
|
-
|
227
|
-
options.merge!(label)
|
228
|
-
end
|
208
|
+
options.merge!(common_options)
|
229
209
|
|
230
210
|
Gchart.line(options)
|
231
211
|
end
|
232
212
|
|
233
|
-
def to_bargraph(params)
|
213
|
+
def to_bargraph(params={})
|
234
214
|
enforce_map!({
|
235
215
|
:width => :natural_number,
|
236
216
|
:height => :natural_number,
|
@@ -253,14 +233,6 @@ module Analytica
|
|
253
233
|
|
254
234
|
options.merge!(base)
|
255
235
|
|
256
|
-
title = {
|
257
|
-
:title => params[:title],
|
258
|
-
:title_color => params[:title_color],
|
259
|
-
:title_size => params[:title_size]
|
260
|
-
}
|
261
|
-
|
262
|
-
#options.merge!(title)
|
263
|
-
|
264
236
|
color = {
|
265
237
|
:bar_colors => params[:colors],
|
266
238
|
:background => params[:background_color],
|
@@ -269,14 +241,7 @@ module Analytica
|
|
269
241
|
|
270
242
|
options.merge!(color)
|
271
243
|
|
272
|
-
|
273
|
-
:legend => ['x', 'y'], # TODO number of datasets
|
274
|
-
:axis_with_labels => ['x','r'], #TODO number of datasets
|
275
|
-
:axis_labels => [[],[]] # TODO
|
276
|
-
}
|
277
|
-
|
278
|
-
#options.merge!(label)
|
279
|
-
|
244
|
+
options.merge!(common_options)
|
280
245
|
|
281
246
|
return Gchart.bar(options)
|
282
247
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: analytica
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 13
|
10
|
+
version: 0.0.13
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Raeez Lorgat
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-14 00:00:00
|
18
|
+
date: 2010-08-14 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|