Module: DTW::Sequence
- Defined in:
- lib/dtwrb/sequence.rb,
sig/dtwrb.rbs
Class Method Summary collapse
- .assert_uniform_dimension!(collection) ⇒ ::Integer
- .compact(sequences) ⇒ ::Array[sequence]
- .dimension_of(frames) ⇒ ::Integer
- .scalar?(sequence) ⇒ Boolean
- .scalarize(frames) ⇒ ::Array[::Numeric]
- .usable?(sequence) ⇒ Boolean
- .vectorize(sequence) ⇒ frames
Class Method Details
.assert_uniform_dimension!(collection) ⇒ ::Integer
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/dtwrb/sequence.rb', line 33 def assert_uniform_dimension!(collection) dimension = dimension_of(collection.first) collection.each do |frames| frames.each do |frame| next if frame.is_a?(Array) && frame.length == dimension raise DimensionMismatchError, "all frames must share dimension #{dimension}, got #{frame.inspect}" end end dimension end |
.compact(sequences) ⇒ ::Array[sequence]
19 20 21 22 23 24 |
# File 'lib/dtwrb/sequence.rb', line 19 def compact(sequences) usable = Array(sequences).select { |sequence| usable?(sequence) } raise EmptyInputError, "expected at least one non-empty sequence, got none" if usable.empty? usable end |
.dimension_of(frames) ⇒ ::Integer
26 27 28 29 30 31 |
# File 'lib/dtwrb/sequence.rb', line 26 def dimension_of(frames) frame = frames.first raise InvalidSequenceError, "expected a vector frame, got #{frame.class}" unless frame.is_a?(Array) frame.length end |
.scalar?(sequence) ⇒ Boolean
9 |
# File 'lib/dtwrb/sequence.rb', line 9 def scalar?(sequence) = usable?(sequence) && sequence.first.is_a?(Numeric) |
.scalarize(frames) ⇒ ::Array[::Numeric]
17 |
# File 'lib/dtwrb/sequence.rb', line 17 def scalarize(frames) = frames.map(&:first) |
.usable?(sequence) ⇒ Boolean
7 |
# File 'lib/dtwrb/sequence.rb', line 7 def usable?(sequence) = sequence.is_a?(Array) && !sequence.empty? |
.vectorize(sequence) ⇒ frames
11 12 13 14 15 |
# File 'lib/dtwrb/sequence.rb', line 11 def vectorize(sequence) raise InvalidSequenceError, "expected an Array of frames, got #{sequence.class}" unless sequence.is_a?(Array) scalar?(sequence) ? sequence.map { |value| [value] } : sequence end |