kenjutsu.kenjutsu module¶
The module kenjutsu
provides support for working with slice
s.
Overview¶
The module kenjutsu
provides several functions that are useful for working
with a Python slice
or tuple
of slice
s. This is of particular
value when working with NumPy.
API¶
-
exception
kenjutsu.kenjutsu.
UnknownSliceLengthException
[source]¶ Bases:
exceptions.Exception
Raised if a slice does not have a known length.
-
kenjutsu.kenjutsu.
len_slice
(a_slice, a_length=None)[source]¶ Determines how many elements a slice will contain.
Raises: UnknownSliceLengthException
– Will raise an exception if- a_slice.stop and a_length is None.
Parameters: - a_slice (slice) – a slice to reformat.
- a_length (int) – a length to fill for stopping if not provided.
Returns: - a new slice with as many values filled in as
possible.
Return type: (slice)
Examples
>>> len_slice(slice(2, None), 10) 8
>>> len_slice(slice(2, 6)) 4
-
kenjutsu.kenjutsu.
len_slices
(slices, lengths=None)[source]¶ Takes a tuple of slices and reformats them to fill in as many undefined values as possible.
Parameters: - slices (tuple(slice)) – a tuple of slices to reformat.
- lengths (tuple(int)) – a tuple of lengths to fill.
Returns: - a tuple of slices with all default
values filled if possible.
Return type: (slice)
Examples
>>> len_slices( ... ( ... slice(None), ... slice(3, None), ... slice(None, 5), ... slice(None, None, 2) ... ), ... (10, 13, 15, 20) ... ) (10, 10, 5, 10)
-
kenjutsu.kenjutsu.
reformat_slice
(a_slice, a_length=None)[source]¶ Takes a slice and reformats it to fill in as many undefined values as possible.
Parameters: - a_slice (slice) – a slice to reformat.
- a_length (int) – a length to fill for stopping if not provided.
Returns: - a new slice with as many values filled in as
possible.
Return type: (slice)
Examples
>>> reformat_slice(slice(2, -1, None)) slice(2, -1, 1)
>>> reformat_slice(slice(2, -1, None), 10) slice(2, 9, 1)
-
kenjutsu.kenjutsu.
reformat_slices
(slices, lengths=None)[source]¶ Takes a tuple of slices and reformats them to fill in as many undefined values as possible.
Parameters: - slices (tuple(slice)) – a tuple of slices to reformat.
- lengths (tuple(int)) – a tuple of lengths to fill.
Returns: - a tuple of slices with all default
values filled if possible.
Return type: (slice)
Examples
>>> reformat_slices( ... ( ... slice(None), ... slice(3, None), ... slice(None, 5), ... slice(None, None, 2) ... ), ... (10, 13, 15, 20) ... ) (slice(0, 10, 1), slice(3, 13, 1), slice(0, 5, 1), slice(0, 20, 2))
-
kenjutsu.kenjutsu.
split_blocks
(space_shape, block_shape, block_halo=None)[source]¶ Return a list of slicings to cut each block out of an array or other.
Takes an array with
space_shape
andblock_shape
for every dimension and ablock_halo
to extend each block on each side. From this, it can compute slicings to use for cutting each block out from the original array, HDF5 dataset or other.Note
Blocks on the boundary that cannot extend the full range will be truncated to the largest block that will fit. This will raise a warning, which can be converted to an exception, if needed.
Parameters: - space_shape (tuple) – Shape of array to slice
- block_shape (tuple) – Size of each block to take
- block_halo (tuple) – Halo to tack on to each block
Returns: Provides tuples of slices for retrieving blocks.
Return type: collections.Sequence of tuples of slices
Examples
>>> split_blocks( ... (2, 3,), (1, 1,), (1, 1,) ... ) ([(slice(0, 1, 1), slice(0, 1, 1)), (slice(0, 1, 1), slice(1, 2, 1)), (slice(0, 1, 1), slice(2, 3, 1)), (slice(1, 2, 1), slice(0, 1, 1)), (slice(1, 2, 1), slice(1, 2, 1)), (slice(1, 2, 1), slice(2, 3, 1))], [(slice(0, 2, 1), slice(0, 2, 1)), (slice(0, 2, 1), slice(0, 3, 1)), (slice(0, 2, 1), slice(1, 3, 1)), (slice(0, 2, 1), slice(0, 2, 1)), (slice(0, 2, 1), slice(0, 3, 1)), (slice(0, 2, 1), slice(1, 3, 1))], [(slice(0, 1, 1), slice(0, 1, 1)), (slice(0, 1, 1), slice(1, 2, 1)), (slice(0, 1, 1), slice(1, 2, 1)), (slice(1, 2, 1), slice(0, 1, 1)), (slice(1, 2, 1), slice(1, 2, 1)), (slice(1, 2, 1), slice(1, 2, 1))])