Source code for kenjutsu.kenjutsu
"""
Warning:
The module ``kenjutsu.kenjutsu`` is deprecated. Please use
``kenjutsu.core`` instead.
"""
from __future__ import absolute_import
__author__ = "John Kirkham <kirkhamj@janelia.hhmi.org>"
__date__ = "$Sep 08, 2016 15:46:46 EDT$"
import warnings
warnings.warn(
"Please use `kenjutsu.core` instead.",
DeprecationWarning
)
[docs]def reformat_slice(a_slice, a_length=None):
"""
Takes a slice and reformats it to fill in as many undefined values as
possible.
Warning:
This function is deprecated. Please use
``kenjutsu.core.reformat_slice`` instead.
Args:
a_slice(slice): a slice to reformat.
a_length(int): a length to fill for stopping if not
provided.
Returns:
(slice): a new slice with as many values filled in as
possible.
Examples:
>>> reformat_slice(slice(2, -1, None))
slice(2, -1, 1)
>>> reformat_slice(slice(2, -1, None), 10)
slice(2, 9, 1)
"""
warnings.warn(
"Please use `kenjutsu.core.reformat_slice` instead.",
DeprecationWarning
)
from kenjutsu import core
return core.reformat_slice(a_slice, a_length)
[docs]def reformat_slices(slices, lengths=None):
"""
Takes a tuple of slices and reformats them to fill in as many undefined
values as possible.
Warning:
This function is deprecated. Please use
``kenjutsu.core.reformat_slices`` instead.
Args:
slices(tuple(slice)): a tuple of slices to reformat.
lengths(tuple(int)): a tuple of lengths to fill.
Returns:
(slice): a tuple of slices with all default
values filled if possible.
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))
"""
warnings.warn(
"Please use `kenjutsu.core.reformat_slices` instead.",
DeprecationWarning
)
from kenjutsu import core
return core.reformat_slices(slices, lengths)
from kenjutsu.core import UnknownSliceLengthException
[docs]def len_slice(a_slice, a_length=None):
"""
Determines how many elements a slice will contain.
Warning:
This function is deprecated. Please use
``kenjutsu.core.len_slice`` instead.
Raises:
UnknownSliceLengthException: Will raise an exception if
a_slice.stop and a_length is None.
Args:
a_slice(slice): a slice to reformat.
a_length(int): a length to fill for stopping if not
provided.
Returns:
(slice): a new slice with as many values filled in as
possible.
Examples:
>>> len_slice(slice(2, None), 10)
8
>>> len_slice(slice(2, 6))
4
"""
warnings.warn(
"Please use `kenjutsu.core.len_slice` instead.",
DeprecationWarning
)
from kenjutsu import core
return core.len_slice(a_slice, a_length)
[docs]def len_slices(slices, lengths=None):
"""
Takes a tuple of slices and reformats them to fill in as many undefined
values as possible.
Warning:
This function is deprecated. Please use
``kenjutsu.core.len_slices`` instead.
Args:
slices(tuple(slice)): a tuple of slices to reformat.
lengths(tuple(int)): a tuple of lengths to fill.
Returns:
(slice): a tuple of slices with all default
values filled if possible.
Examples:
>>> len_slices(
... (
... slice(None),
... slice(3, None),
... slice(None, 5),
... slice(None, None, 2)
... ),
... (10, 13, 15, 20)
... )
(10, 10, 5, 10)
"""
warnings.warn(
"Please use `kenjutsu.core.len_slices` instead.",
DeprecationWarning
)
from kenjutsu import core
return core.len_slices(slices, lengths)
[docs]def split_blocks(space_shape, block_shape, block_halo=None):
"""
Return a list of slicings to cut each block out of an array or other.
Takes an array with ``space_shape`` and ``block_shape`` for every
dimension and a ``block_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.
Warning:
This function is deprecated. Please use
``kenjutsu.core.split_blocks`` instead.
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.
Args:
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:
collections.Sequence of \
tuples of slices: Provides tuples of slices for \
retrieving blocks.
Examples:
>>> split_blocks(
... (2, 3,), (1, 1,), (1, 1,)
... ) #doctest: +NORMALIZE_WHITESPACE
([(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))],
<BLANKLINE>
[(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))],
<BLANKLINE>
[(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))])
"""
warnings.warn(
"Please use `kenjutsu.core.split_blocks` instead.",
DeprecationWarning
)
from kenjutsu import core
return core.split_blocks(space_shape, block_shape, block_halo)