nifty.re.multi_grid.grid module#

class FlatGrid(grid, *, ordering='serial', atLevel=<class 'nifty.re.multi_grid.grid.FlatGridAtLevel'>)[source]#

Bases: Grid

Same as Grid but with a single global integer index for each voxel.

__init__(grid, *, ordering='serial', atLevel=<class 'nifty.re.multi_grid.grid.FlatGridAtLevel'>)[source]#
amend(splits)[source]#
at(level: int)[source]#
grid: Grid#
ordering: str#
class FlatGridAtLevel(grid_at_level, *, all_shapes, all_splits, ordering='nest')[source]#

Bases: GridAtLevel

Same as GridAtLevel but with a single global integer index for each voxel.

__init__(grid_at_level, *, all_shapes, all_splits, ordering='nest')[source]#
all_shapes: tuple[NDArray[int64]]#
all_splits: tuple[NDArray[int64]]#
children(index) → NDArray[source]#
coord2index(coord, *, return_valid=False, **kwargs)[source]#
flatindex2index(index, levelshift=0)[source]#
grid_at_level: GridAtLevel#
index2coord(index, **kwargs)[source]#
index2flatindex(index, levelshift=0)[source]#
index2volume(index, **kwargs)[source]#
neighborhood(index, window_size: Iterable[int])[source]#
ordering: str#
parent(index)[source]#
property raw_grids#
refined_indices()[source]#
resort(batched_ar, /)[source]#
class Grid(*, shape0, splits, atLevel=<class 'nifty.re.multi_grid.grid.GridAtLevel'>)[source]#

Bases: object

Dense grid with periodic boundary conditions.

__init__(*, shape0, splits, atLevel=<class 'nifty.re.multi_grid.grid.GridAtLevel'>)[source]#
amend(splits)[source]#
at(level: int)[source]#
atLevel: Callable#
property depth#
shape0: NDArray[int64]#
splits: tuple[NDArray[int64]]#
class GridAtLevel(shape, splits=None, parent_splits=None)[source]#

Bases: object

__init__(shape, splits=None, parent_splits=None)[source]#
children(index)[source]#
coord2index(coord, dtype=<class 'numpy.int64'>, **kwargs)[source]#
index2coord(index)[source]#
index2volume(index)[source]#
property ndim#
neighborhood(index, window_size: Iterable[int])[source]#
parent(index)[source]#
parent_splits: NDArray[int64] | None#
property raw_grids#
refined_indices()[source]#
resort(batched_ar, /)[source]#
shape: NDArray[int64]#
property size#
splits: NDArray[int64] | None#
class MGrid(*grids, atLevel=<class 'nifty.re.multi_grid.grid.MGridAtLevel'>)[source]#

Bases: Grid

Multi-dimensional meshgrid product of multiple grids.

__init__(*grids, atLevel=<class 'nifty.re.multi_grid.grid.MGridAtLevel'>)[source]#
amend(splits)[source]#
at(level: int)[source]#
property depth#
grids: tuple[Grid]#
property ngrids#
class MGridAtLevel(*grids)[source]#

Bases: GridAtLevel

Multi-dimensional meshgrid product of multiple grids.

__init__(*grids)[source]#
children(index) → NDArray[source]#
coord2index(coord, return_valid=False, **kwargs)[source]#
grids: tuple[GridAtLevel]#
index2coord(index, **kwargs)[source]#
index2volume(index, **kwargs)[source]#
neighborhood(index, window_size: tuple[int])[source]#
property ngrids#
parent(index)[source]#
property parent_splits#
property raw_grids#
refined_indices()[source]#
resort(batched_ar, /)[source]#
property shape#
property splits#
class OpenGrid(*, shape0, splits, padding, atLevel=<class 'nifty.re.multi_grid.grid.OpenGridAtLevel'>)[source]#

Bases: Grid

Dense grid with open boundary conditions.

At each level the grid has all required indices for a full refinement/convolution even for those that are not split. However, indices used for padding don’t have children. The coordinates for the refinement/convolution span the full space including any padding on all previous layers.

__init__(*, shape0, splits, padding, atLevel=<class 'nifty.re.multi_grid.grid.OpenGridAtLevel'>)[source]#
amend(splits, padding)[source]#
at(level: int)[source]#
padding: tuple[NDArray[int64]]#
class OpenGridAtLevel(shape, splits=None, parent_splits=None, *, padding=None, parent_padding=None, shifts=None, level=None, all_splits=None)[source]#

Bases: GridAtLevel

__init__(shape, splits=None, parent_splits=None, *, padding=None, parent_padding=None, shifts=None, level=None, all_splits=None)[source]#
children(index)[source]#
coord2index(coord, dtype=<class 'numpy.int64'>, **kwargs)[source]#
index2coord(index)[source]#
index2volume(index)[source]#
neighborhood(index, window_size: Iterable[int])[source]#
padding: NDArray[int64] | None#
parent(index)[source]#
parent_padding: NDArray[int64] | None#
refined_indices()[source]#
shifts: NDArray[int64] | None#
class SparseGrid(grid, mapping, *, atLevel=<class 'nifty.re.multi_grid.grid.SparseGridAtLevel'>, _check_mapping=True, _debug=False)[source]#

Bases: FlatGrid

Same as FlatGrid but keeping track of the indices that are actually being modeled. This class is especially convenient for open boundary conditions but works for arbitrarily sparsely resolved grids.

__init__(grid, mapping, *, atLevel=<class 'nifty.re.multi_grid.grid.SparseGridAtLevel'>, _check_mapping=True, _debug=False)[source]#
amend(splits, mapping, **kwargs)[source]#
at(level: int)[source]#
get_flat_grid()[source]#
mapping: tuple[Array]#
class SparseGridAtLevel(grid_at_level, all_shapes, all_splits, mapping, parent_mapping=None, children_mapping=None, _debug=False)[source]#

Bases: FlatGridAtLevel

__init__(grid_at_level, all_shapes, all_splits, mapping, parent_mapping=None, children_mapping=None, _debug=False)[source]#
arrayindex2flatindex(index, levelshift=0)[source]#
children(index) → Array[source]#
children_mapping: Array | None = None#
coord2index(coord, return_valid=False, **kwargs)[source]#
flatindex2arrayindex(index, levelshift=0, return_valid=False)[source]#
index2coord(index, **kwargs)[source]#
index2volume(index, **kwargs)[source]#
is_leaf(index)[source]#
mapping: Array#
neighborhood(index, window_size: Iterable[int])[source]#
parent(index)[source]#
parent_mapping: Array | None = None#
refined_indices()[source]#
resort(batched_ar, /)[source]#
to_flat_grid()[source]#