tdigest 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/lib/tdigest/tdigest.rb +17 -6
- data/lib/tdigest/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb2b554c557253ae6826b504943a315bf4f660a0
|
4
|
+
data.tar.gz: 4f86fdef222ec8f3ddd7746ccfb7767cfbd1bd26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5b5567069b6958c551721f8c6c6d707e9a08f6f20c23473b39e732c853a92e4ef1e20406dba46d67ddf2b496ce94224501f6605def6f36be0b65b7f586aaa01
|
7
|
+
data.tar.gz: c00dfc8c3bb483793c5f5b2c8a4ea8ad9b324c4ce506a7930db362d31f42e2f1759215552d25140ab5667be969e62ee79fcc4e72cf7dcb0ca976d0fbae8b95d3
|
data/lib/tdigest/tdigest.rb
CHANGED
@@ -72,12 +72,16 @@ module TDigest
|
|
72
72
|
def p_rank(x)
|
73
73
|
is_array = x.is_a? Array
|
74
74
|
x = [x] unless is_array
|
75
|
+
|
76
|
+
min = @centroids.first
|
77
|
+
max = @centroids.last
|
78
|
+
|
75
79
|
x.map! do |item|
|
76
80
|
if size == 0
|
77
81
|
nil
|
78
|
-
elsif item <
|
82
|
+
elsif item < min[1].mean
|
79
83
|
0.0
|
80
|
-
elsif item >
|
84
|
+
elsif item > max[1].mean
|
81
85
|
1.0
|
82
86
|
else
|
83
87
|
_cumulate(true)
|
@@ -97,6 +101,9 @@ module TDigest
|
|
97
101
|
is_array = p.is_a? Array
|
98
102
|
p = [p] unless is_array
|
99
103
|
p.map! do |item|
|
104
|
+
unless (0..1).include? item
|
105
|
+
fail ArgumentError, "p should be in [0,1], got #{item}"
|
106
|
+
end
|
100
107
|
if size == 0
|
101
108
|
nil
|
102
109
|
else
|
@@ -135,7 +142,7 @@ module TDigest
|
|
135
142
|
end
|
136
143
|
|
137
144
|
def size
|
138
|
-
@centroids.
|
145
|
+
@centroids.size
|
139
146
|
end
|
140
147
|
|
141
148
|
def to_a
|
@@ -161,7 +168,8 @@ module TDigest
|
|
161
168
|
|
162
169
|
def _cumulate(exact = false)
|
163
170
|
factor = @last_cumulate == 0 ? Float::INFINITY : (@n / @last_cumulate)
|
164
|
-
if @n == @last_cumulate
|
171
|
+
if @n == @last_cumulate ||
|
172
|
+
!exact && @cx && @cx > (factor)
|
165
173
|
return
|
166
174
|
end
|
167
175
|
|
@@ -175,8 +183,11 @@ module TDigest
|
|
175
183
|
end
|
176
184
|
|
177
185
|
def _digest(x, n)
|
178
|
-
min
|
179
|
-
|
186
|
+
# Use 'first' and 'last' instead of min/max because of performance reasons
|
187
|
+
# This works because RBTree is sorted
|
188
|
+
min = @centroids.first
|
189
|
+
max = @centroids.last
|
190
|
+
|
180
191
|
min = min.nil? ? nil : min[1]
|
181
192
|
max = max.nil? ? nil : max[1]
|
182
193
|
nearest = find_nearest(x)
|
data/lib/tdigest/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tdigest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Wallin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbtree
|