module GeneValidator::ExtraArrayMethods

extention of the Array Class (i.e new methods for vectors)

Public Instance Methods

all_quartiles() click to toggle source
# File lib/genevalidator/ext/array.rb, line 33
def all_quartiles
  sorted = sort
  len    = sorted.length
  split  = sorted.median_split
  [
    split[0].median(true),
    sorted.median(true),
    split[1].median(true)
  ]
end
mean() click to toggle source
# File lib/genevalidator/ext/array.rb, line 8
def mean
  sum / length.to_f
end
median(already_sorted = false) click to toggle source
# File lib/genevalidator/ext/array.rb, line 12
def median(already_sorted = false)
  sorted = already_sorted ? self : sort
  len    = sorted.length
  (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0
end
median_split() click to toggle source
# File lib/genevalidator/ext/array.rb, line 44
def median_split
  len    = length
  center = len % 2
  [self[0..len / 2 - 1], self[len / 2 + center..-1]]
end
mode() click to toggle source
# File lib/genevalidator/ext/array.rb, line 18
def mode
  freq = each_with_object(Hash.new(0)) { |v, h| h[v] += 1; }
  max_by { |v| freq[v] }
end
sample_variance() click to toggle source
# File lib/genevalidator/ext/array.rb, line 23
def sample_variance
  m   = mean
  sum = inject(0) { |accum, i| accum + (i - m)**2 }
  sum / (length - 1).to_f
end
standard_deviation() click to toggle source
# File lib/genevalidator/ext/array.rb, line 29
def standard_deviation
  Math.sqrt(sample_variance)
end
sum() click to toggle source
# File lib/genevalidator/ext/array.rb, line 4
def sum
  inject(0) { |accum, i| accum + i }
end