use None for no selection, empty list is 'nothing'
This commit is contained in:
parent
bafc45d259
commit
d7ba853859
|
@ -958,7 +958,7 @@ class Grid:
|
||||||
"""
|
"""
|
||||||
def mostFrequent(arr: np.ndarray, selection: List, invert: bool):
|
def mostFrequent(arr: np.ndarray, selection: List, invert: bool):
|
||||||
me = arr[arr.size//2]
|
me = arr[arr.size//2]
|
||||||
if len(selection) == 0 or np.isin(me,selection,invert=invert):
|
if selection is None or np.isin(me,selection,invert=invert):
|
||||||
unique, inverse = np.unique(arr, return_inverse=True)
|
unique, inverse = np.unique(arr, return_inverse=True)
|
||||||
return unique[np.argmax(np.bincount(inverse))]
|
return unique[np.argmax(np.bincount(inverse))]
|
||||||
else:
|
else:
|
||||||
|
@ -1179,7 +1179,7 @@ class Grid:
|
||||||
"""
|
"""
|
||||||
def tainted_neighborhood(stencil: np.ndarray, selection):
|
def tainted_neighborhood(stencil: np.ndarray, selection):
|
||||||
me = stencil[stencil.shape[0]//2]
|
me = stencil[stencil.shape[0]//2]
|
||||||
return np.any(stencil != me if len(selection) == 0 else
|
return np.any(stencil != me if selection is None else
|
||||||
np.in1d(stencil,np.array(list(set(selection) - {me}))))
|
np.in1d(stencil,np.array(list(set(selection) - {me}))))
|
||||||
|
|
||||||
offset_ = np.nanmax(self.material)+1 if offset is None else offset
|
offset_ = np.nanmax(self.material)+1 if offset is None else offset
|
||||||
|
|
|
@ -135,7 +135,7 @@ def from_grid(grid,
|
||||||
"""
|
"""
|
||||||
material = grid.material.reshape((-1,1),order='F')
|
material = grid.material.reshape((-1,1),order='F')
|
||||||
selection_ = _util.tbd(selection)
|
selection_ = _util.tbd(selection)
|
||||||
mask = _np.full(grid.cells.prod(),True,dtype=bool) if len(selection_) == 0 else \
|
mask = _np.full(grid.cells.prod(),True,dtype=bool) if selection_ is None else \
|
||||||
_np.isin(material,selection_,invert=invert_selection).flatten()
|
_np.isin(material,selection_,invert=invert_selection).flatten()
|
||||||
coords = _grid_filters.coordinates0_point(grid.cells,grid.size).reshape(-1,3,order='F')
|
coords = _grid_filters.coordinates0_point(grid.cells,grid.size).reshape(-1,3,order='F')
|
||||||
|
|
||||||
|
|
|
@ -754,7 +754,7 @@ def tail_repack(extended: Union[str, Sequence[str]],
|
||||||
|
|
||||||
def tbd(arg) -> List:
|
def tbd(arg) -> List:
|
||||||
if arg is None:
|
if arg is None:
|
||||||
return []
|
return None
|
||||||
elif isinstance(arg,(np.ndarray,Collection)):
|
elif isinstance(arg,(np.ndarray,Collection)):
|
||||||
return list(arg)
|
return list(arg)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -182,6 +182,11 @@ class TestGrid:
|
||||||
assert random.clean(selection=selection,invert_selection=invert) == \
|
assert random.clean(selection=selection,invert_selection=invert) == \
|
||||||
random.clean(selection=selection_inverse,invert_selection=not invert)
|
random.clean(selection=selection_inverse,invert_selection=not invert)
|
||||||
|
|
||||||
|
def test_clean_selection_empty(self,random):
|
||||||
|
assert random.clean(selection=[],invert_selection=False) == random and \
|
||||||
|
random.clean(selection=[],invert_selection=True) == random.clean()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('cells',[
|
@pytest.mark.parametrize('cells',[
|
||||||
(10,11,10),
|
(10,11,10),
|
||||||
[10,13,10],
|
[10,13,10],
|
||||||
|
@ -319,7 +324,7 @@ class TestGrid:
|
||||||
assert grid_equal(G_1,G_2)
|
assert grid_equal(G_1,G_2)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('selection',[1,[]])
|
@pytest.mark.parametrize('selection',[1,None])
|
||||||
def test_vicinity_offset(self,selection):
|
def test_vicinity_offset(self,selection):
|
||||||
offset = np.random.randint(2,4)
|
offset = np.random.randint(2,4)
|
||||||
vicinity = np.random.randint(2,4)
|
vicinity = np.random.randint(2,4)
|
||||||
|
@ -346,6 +351,10 @@ class TestGrid:
|
||||||
assert random.vicinity_offset(selection=selection,invert_selection=invert) == \
|
assert random.vicinity_offset(selection=selection,invert_selection=invert) == \
|
||||||
random.vicinity_offset(selection=selection_inverse,invert_selection=not invert)
|
random.vicinity_offset(selection=selection_inverse,invert_selection=not invert)
|
||||||
|
|
||||||
|
def test_vicinity_offset_selection_empty(self,random):
|
||||||
|
assert random.vicinity_offset(selection=[],invert_selection=False) == random and \
|
||||||
|
random.vicinity_offset(selection=[],invert_selection=True) == random.vicinity_offset()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('periodic',[True,False])
|
@pytest.mark.parametrize('periodic',[True,False])
|
||||||
def test_vicinity_offset_invariant(self,default,periodic):
|
def test_vicinity_offset_invariant(self,default,periodic):
|
||||||
|
|
Loading…
Reference in New Issue