to_histogram 1.0.9 → 1.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d76599692e37ff86d3d2ebaa05aa54da8b9da7ab
4
- data.tar.gz: 3149b591c776df617496904bb2066a8f8fd64d41
3
+ metadata.gz: eca08f2d21e518ea5e4db6a1c30a59a2fb63b520
4
+ data.tar.gz: c174cf44570b3ce27d012e71d29e61481e72f521
5
5
  SHA512:
6
- metadata.gz: dd0e9518fe1e6841687b91093acf793edbe89ec56b85b7778f3272a1b48146375893a4a3b08ff073b0efd9ed5d35d3356ad063d1aa5d1d702a408783f720bbf8
7
- data.tar.gz: 609d746f2f3fe63a9a12b2db5480aaddaf17d9e66cbdd71f15b7829777c7f7d28766593e6024e8be57320cc13f4486b3a2daec52167ac2e5553a0de3154e5444
6
+ metadata.gz: 072f67a79f664adeda1a608045795e8eb8c4d6e5a688717ac4a860a2a9e6814a9d9dc3ff652bbdf782a39e1b55d04441bbec3a7a01148abe00f79d14cb476ea1
7
+ data.tar.gz: ae1d70a20e0fd9cd98c83efd66061cb51e5986ffb9cf96ad081b7ce82df9e22e0ef9e31e0ddfd846ae5bd838ad5aea0ae5ff95286893be381055ab7375c69bab
data/lib/bucketizer.rb CHANGED
@@ -2,19 +2,19 @@ module ToHistogram
2
2
 
3
3
  class Bucketizer
4
4
 
5
- def initialize(array, num_buckets, percentile)
5
+ def initialize(array, num_buckets: 10, bucket_width: 'auto', percentile: 100)
6
6
  @arr = array.sort
7
7
  @num_buckets = num_buckets
8
- @percentile =percentile
8
+ @percentile = percentile
9
9
 
10
10
  remove_elements_outside_of_percentile
11
- @bucket_increments = get_bucket_increment
11
+ @bucket_width = (bucket_width == 'auto') ? get_bucket_increment : bucket_width
12
12
  end
13
- attr_reader :bucket_increments, :arr
13
+ attr_reader :bucket_width
14
14
 
15
15
  def create_buckets
16
16
  l_index = 0
17
- next_bucket = get_initial_next_bucket(@bucket_increments)
17
+ next_bucket = get_initial_next_bucket(@bucket_width)
18
18
  buckets = []
19
19
 
20
20
  # Deal with the special case where we have elements that == 0 and an increment sizes of 1 (count 0 as a value and don't lump it in with 1)
@@ -40,7 +40,7 @@ module ToHistogram
40
40
  end
41
41
 
42
42
  l_index = i
43
- next_bucket += @bucket_increments
43
+ next_bucket += @bucket_width
44
44
  end
45
45
  end
46
46
 
data/lib/histogram.rb CHANGED
@@ -5,15 +5,15 @@ module ToHistogram
5
5
  class Histogram
6
6
  include Enumerable
7
7
 
8
- def initialize(array, num_buckets, percentile)
9
- bucketizer = Bucketizer.new(array, num_buckets, percentile)
10
- @buckets = bucketizer.create_buckets
11
- @increments = bucketizer.bucket_increments
12
- @percentile = percentile
13
- @num_buckets = num_buckets
14
- @arr = bucketizer.arr
8
+ def initialize(array, num_buckets: 10, bucket_width: 'auto', percentile: 100)
9
+ bucketizer = Bucketizer.new(array, num_buckets: num_buckets, bucket_width: bucket_width, percentile: percentile)
10
+
11
+ @buckets = bucketizer.create_buckets
12
+ @bucket_width = bucketizer.bucket_width
13
+ @percentile = percentile
14
+ @num_buckets = num_buckets
15
15
  end
16
- attr_reader :increments, :percentile, :num_buckets, :arr
16
+ attr_reader :percentile, :num_buckets, :bucket_width, :buckets
17
17
 
18
18
  def each(&block)
19
19
  @buckets.each do |b|
data/lib/stdout_print.rb CHANGED
@@ -20,18 +20,19 @@ module ToHistogram
20
20
  private
21
21
  def print_header
22
22
  @stdout.puts "\n**************************************************************"
23
- @stdout.puts "Results for #to_histogram(num_buckets: #{@histogram.num_buckets}, percentile: #{@histogram.percentile}, print_info: true)"
23
+ @stdout.puts "Results for #to_histogram(num_buckets: #{@histogram.num_buckets}, bucket_width: #{@histogram.bucket_width}, percentile: #{@histogram.percentile}, print_info: true)"
24
24
 
25
25
  @stdout.puts "\n"
26
26
 
27
27
  percentile_info = (@histogram.percentile == 100) ? '' : "(Numbers limited to the #{@histogram.percentile}th percentile)"
28
28
  @stdout.puts "Data set used in this calculation #{percentile_info}"
29
- @stdout.puts "Data set Size: #{@histogram.arr.length} items"
30
- @stdout.puts "Min Value: #{@histogram.arr[0]}, Max Value: #{@histogram.arr[-1]}"
31
- @stdout.puts "Mean: #{mean(@histogram.arr)}, Median: #{median(@histogram.arr)}, Mode: #{mode(@histogram.arr)}"
29
+ @stdout.puts "Data set Size: #{@histogram.reduce(:+).length} items"
30
+
31
+ @stdout.puts "Min Value: #{@histogram[0][0]}, Max Value: #{@histogram[-1][-1]}"
32
+ @stdout.puts "Mean: #{mean(@histogram.reduce(:+))}, Median: #{median(@histogram.reduce(:+))}, Mode: #{mode(@histogram.reduce(:+))}"
32
33
  @stdout.puts "\n"
33
34
 
34
- @stdout.puts "Histogram bucket sizes: #{@histogram.increments}"
35
+ @stdout.puts "Histogram bucket width: #{@histogram.bucket_width}"
35
36
  @stdout.puts "**************************************************************\n\n"
36
37
  end
37
38
 
@@ -48,7 +49,7 @@ module ToHistogram
48
49
  percentage.round.times { |x| stars << '*' }
49
50
 
50
51
  if(i == (@histogram.length - 1))
51
- if(b[-1] - b[0] != 0 && (b[-1] - b[0] > @histogram.increments))
52
+ if(b[-1] - b[0] != 0 && (b[-1] - b[0] > @histogram.bucket_width))
52
53
  range = "> than #{b[0]}"
53
54
  end
54
55
  end
data/lib/to_histogram.rb CHANGED
@@ -2,8 +2,8 @@ require_relative './histogram'
2
2
  require_relative './stdout_print'
3
3
 
4
4
  class Array
5
- def to_histogram(num_buckets: 10, percentile: 100, print_info: true)
6
- histogram = ToHistogram::Histogram.new(self, num_buckets, percentile)
5
+ def to_histogram(num_buckets: 10, bucket_width: 'auto', percentile: 100, print_info: true)
6
+ histogram = ToHistogram::Histogram.new(self, num_buckets: num_buckets, bucket_width: bucket_width, percentile: percentile)
7
7
  stdout_print = ToHistogram::StdoutPrint.new(histogram, self)
8
8
 
9
9
  stdout_print.invoke if print_info
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: to_histogram
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Sykes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-08 00:00:00.000000000 Z
11
+ date: 2015-11-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'Adds #to_histogram to Array. Returns a histogram distribution object
14
14
  from an Array and optionally prints detailed info to stdout.'