mini_histogram 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/mini_histogram.rb +35 -28
- data/lib/mini_histogram/version.rb +1 -1
- data/mini_histogram.gemspec +3 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f74ffb350c63f9f26ea90db6a41c8135c3b2e180de663a1747d649a47e8e2df4
|
4
|
+
data.tar.gz: 3a69ae4f5a0f4d64d830f7a39b0b79f3ab011cae5cf7479328ee8a907b5f7820
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 477c617614b9ed9202dc2f42aa6c3571a44651173ffb7357c5650aefedaeb599b9a98b38daa107e9c2002f8c59700cc2e349ddb2ead5412e99c339d37f4f6691
|
7
|
+
data.tar.gz: a6dc9302632ab19b9264c5787d31fe8387dc9130669ec0fe2ae7860bab6fbcb10fee9d712943aa00a3a41167873fee214df9c07c5af2101dc5914da5662f9472
|
data/CHANGELOG.md
CHANGED
data/lib/mini_histogram.rb
CHANGED
@@ -21,12 +21,13 @@ class MiniHistogram
|
|
21
21
|
class Error < StandardError; end
|
22
22
|
attr_reader :array, :left_p, :max
|
23
23
|
|
24
|
-
def initialize(array, left_p:
|
24
|
+
def initialize(array, left_p: true, edges: nil)
|
25
25
|
@array = array
|
26
26
|
@left_p = left_p
|
27
27
|
@edges = edges
|
28
28
|
@weights = nil
|
29
|
-
|
29
|
+
|
30
|
+
@min, @max = array.minmax
|
30
31
|
end
|
31
32
|
|
32
33
|
def edges_min
|
@@ -42,7 +43,7 @@ class MiniHistogram
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def closed
|
45
|
-
:left
|
46
|
+
@left_p ? :left : :right
|
46
47
|
end
|
47
48
|
|
48
49
|
# Sets the edge value to something new,
|
@@ -54,6 +55,8 @@ class MiniHistogram
|
|
54
55
|
end
|
55
56
|
|
56
57
|
def bin_size
|
58
|
+
return 0 if edges.length <= 1
|
59
|
+
|
57
60
|
edges[1] - edges[0]
|
58
61
|
end
|
59
62
|
|
@@ -86,6 +89,7 @@ class MiniHistogram
|
|
86
89
|
# 4 values between 4.0 and 6.0 and three values between 10.0 and 12.0
|
87
90
|
def weights
|
88
91
|
return @weights if @weights
|
92
|
+
return @weights = [] if array.empty?
|
89
93
|
|
90
94
|
lo = edges.first
|
91
95
|
step = edges[1] - edges[0]
|
@@ -118,16 +122,18 @@ class MiniHistogram
|
|
118
122
|
def edges
|
119
123
|
return @edges if @edges
|
120
124
|
|
121
|
-
|
122
|
-
lo = array.min
|
125
|
+
return @edges = [0.0] if array.empty?
|
123
126
|
|
124
|
-
|
127
|
+
lo = @min
|
128
|
+
hi = @max
|
129
|
+
|
130
|
+
nbins = sturges.to_f
|
125
131
|
|
126
132
|
if hi == lo
|
127
|
-
start =
|
133
|
+
start = lo
|
128
134
|
step = 1.0
|
129
135
|
divisor = 1.0
|
130
|
-
len = 1
|
136
|
+
len = 1
|
131
137
|
else
|
132
138
|
bw = (hi - lo) / nbins
|
133
139
|
lbw = Math.log10(bw)
|
@@ -163,31 +169,32 @@ class MiniHistogram
|
|
163
169
|
start = (lo * divisor).floor
|
164
170
|
len = (hi * divisor - start).ceil
|
165
171
|
end
|
172
|
+
end
|
166
173
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
end
|
171
|
-
|
172
|
-
while (start + (len - 1)*step)/divisor <= hi
|
173
|
-
len += 1
|
174
|
-
end
|
175
|
-
else
|
176
|
-
while lo <= start/divisor
|
177
|
-
start -= step
|
178
|
-
end
|
179
|
-
while (start + (len - 1)*step)/divisor < hi
|
180
|
-
len += 1
|
181
|
-
end
|
174
|
+
if left_p
|
175
|
+
while (lo < start/divisor)
|
176
|
+
start -= step
|
182
177
|
end
|
183
178
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
179
|
+
while (start + (len - 1)*step)/divisor <= hi
|
180
|
+
len += 1
|
181
|
+
end
|
182
|
+
else
|
183
|
+
while lo <= start/divisor
|
184
|
+
start -= step
|
188
185
|
end
|
189
|
-
|
186
|
+
while (start + (len - 1)*step)/divisor < hi
|
187
|
+
len += 1
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
@edges = []
|
192
|
+
len.times.each do
|
193
|
+
@edges << start/divisor
|
194
|
+
start += step
|
190
195
|
end
|
196
|
+
|
197
|
+
return @edges
|
191
198
|
end
|
192
199
|
alias :edge :edges
|
193
200
|
|
data/mini_histogram.gemspec
CHANGED
@@ -26,4 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
|
28
28
|
spec.add_development_dependency "m"
|
29
|
+
# Used for comparison testing, but only supports Ruby 2.4+
|
30
|
+
# spec.add_development_dependency "enumerable-statistics"
|
31
|
+
spec.add_development_dependency "benchmark-ips"
|
29
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_histogram
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- schneems
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: benchmark-ips
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
description: It makes histograms out of Ruby data. How cool is that!? Pretty cool
|
28
42
|
if you ask me.
|
29
43
|
email:
|