Class: SPCore::Features

Inherits:
Object
  • Object
show all
Defined in:
lib/spcore/analysis/features.rb

Overview

Features analysis methods.

Class Method Summary collapse

Class Method Details

.envelope(samples) ⇒ Object



64
65
66
67
68
# File 'lib/spcore/analysis/features.rb', line 64

def self.envelope samples
  outline = self.outline samples
  upsample_factor = samples.count / outline.count.to_f
  return PolynomialResampling.upsample(outline, upsample_factor)
end

.extrema(samples) ⇒ Object

Returns all minima and maxima (including positive minima and negative maxima).



5
6
7
8
# File 'lib/spcore/analysis/features.rb', line 5

def self.extrema samples
  remove_inner = false
  self.extrema_hash(samples, remove_inner)[:extrema]
end

.maxima(samples) ⇒ Object

Returns maxima (includes negative maxima).



29
30
31
32
# File 'lib/spcore/analysis/features.rb', line 29

def self.maxima samples
  remove_inner = false
  self.extrema_hash(samples, remove_inner)[:maxima]
end

.minima(samples) ⇒ Object

Returns all minima (including positive minima).



17
18
19
20
# File 'lib/spcore/analysis/features.rb', line 17

def self.minima samples
  remove_inner = false
  self.extrema_hash(samples, remove_inner)[:minima]
end

.negative_minima(samples) ⇒ Object

Returns all minima (excludes positive minima).



23
24
25
26
# File 'lib/spcore/analysis/features.rb', line 23

def self.negative_minima samples
  remove_inner = true
  self.extrema_hash(samples, remove_inner)[:minima]
end

.outer_extrema(samples) ⇒ Object

Returns outer minima and maxima (excludes positive minima and negative maxima).



11
12
13
14
# File 'lib/spcore/analysis/features.rb', line 11

def self.outer_extrema samples
  remove_inner = true
  self.extrema_hash(samples, remove_inner)[:extrema]
end

.outline(samples) ⇒ Object



57
58
59
60
61
62
# File 'lib/spcore/analysis/features.rb', line 57

def self.outline samples
  starting_outline = make_starting_outline samples
  filled_in_outline = fill_in_starting_outline starting_outline, samples.count
  dropsample_factor = (samples.count / starting_outline.count).to_i
  return dropsample_filled_in_outline filled_in_outline, dropsample_factor
end

.positive_maxima(samples) ⇒ Object

Returns maxima (excludes negative maxima).



35
36
37
38
# File 'lib/spcore/analysis/features.rb', line 35

def self.positive_maxima samples
  remove_inner = true
  self.extrema_hash(samples, remove_inner)[:maxima]
end

.top_n(values, n) ⇒ Object

return the n greatest values of the given array of values.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/spcore/analysis/features.rb', line 41

def self.top_n values, n
  top_n = []
  values.each do |value|
    if top_n.count < n
      top_n.push value
    else
      smaller = top_n.select {|x| x < value}
      if smaller.any?
        top_n.delete smaller.min
        top_n.push value
      end
    end
  end
  return top_n.sort
end