Class: HDF5::Selection
- Inherits:
-
Object
- Object
- HDF5::Selection
- Defined in:
- lib/hdf5/selection.rb
Instance Attribute Summary collapse
-
#count ⇒ Object
readonly
Returns the value of attribute count.
-
#result_shape ⇒ Object
readonly
Returns the value of attribute result_shape.
-
#start ⇒ Object
readonly
Returns the value of attribute start.
-
#stride ⇒ Object
readonly
Returns the value of attribute stride.
Class Method Summary collapse
Instance Method Summary collapse
- #block(ranges) ⇒ Object
-
#initialize(selectors, shape) ⇒ Selection
constructor
A new instance of Selection.
- #scalar? ⇒ Boolean
- #size ⇒ Object
Constructor Details
#initialize(selectors, shape) ⇒ Selection
Returns a new instance of Selection.
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/hdf5/selection.rb', line 15 def initialize(selectors, shape) @start = [] @stride = [] @count = [] @result_shape = [] @result_axes = [] selectors.zip(shape).each_with_index do |(selector, dimension), axis| @result_axes << axis unless selector.is_a?(Integer) normalize_axis(selector, dimension) end end |
Instance Attribute Details
#count ⇒ Object (readonly)
Returns the value of attribute count.
3 4 5 |
# File 'lib/hdf5/selection.rb', line 3 def count @count end |
#result_shape ⇒ Object (readonly)
Returns the value of attribute result_shape.
3 4 5 |
# File 'lib/hdf5/selection.rb', line 3 def result_shape @result_shape end |
#start ⇒ Object (readonly)
Returns the value of attribute start.
3 4 5 |
# File 'lib/hdf5/selection.rb', line 3 def start @start end |
#stride ⇒ Object (readonly)
Returns the value of attribute stride.
3 4 5 |
# File 'lib/hdf5/selection.rb', line 3 def stride @stride end |
Class Method Details
.normalize(selection, shape) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/hdf5/selection.rb', line 5 def self.normalize(selection, shape) return new(Array.new(shape.length, true), shape) if selection.nil? selectors = selection.is_a?(Array) ? selection.dup : [selection] raise IndexError, 'Too many indices for dataset' if selectors.length > shape.length selectors.concat(Array.new(shape.length - selectors.length, true)) new(selectors, shape) end |
Instance Method Details
#block(ranges) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/hdf5/selection.rb', line 36 def block(ranges) result = dup starts = start.dup counts = count.dup @result_axes.zip(ranges).each do |axis, range| starts[axis] += range.begin * stride[axis] counts[axis] = range.end - range.begin end result.instance_variable_set(:@start, starts) result.instance_variable_set(:@count, counts) result.instance_variable_set(:@result_shape, ranges.map { |range| range.end - range.begin }) result end |
#scalar? ⇒ Boolean
28 29 30 |
# File 'lib/hdf5/selection.rb', line 28 def scalar? result_shape.empty? end |
#size ⇒ Object
32 33 34 |
# File 'lib/hdf5/selection.rb', line 32 def size count.inject(1, :*) end |