def test_any_with_dim(): var = sc.Variable(['x', 'y'], values=np.array([True, True, False, False]).reshape(2, 2)) assert sc.is_equal(sc.any(var, 'x'), sc.Variable(dims=['y'], values=[True, True])) assert sc.is_equal(sc.any(var, 'y'), sc.Variable(dims=['x'], values=[True, False]))
def mask_from_adj_pixels(mask): """ Checks if the adjacent pixels (in 8 directions) are masked to remove any noisy pixels which are erroneously masked or unmasked compared to it's neighbours If all adj. pixels are then the pixel considered is set to True If no adj. pixels are then the pixel considered is set to False If surrounding pixels have a mix of True/False the val is left as-is This function handles border pixels as if they aren't there. So that the following happens: ------------------------ |F|T| -> |T|T| |T|T| |T|T| ----------------------- Parameters ---------- mask: Existing mask with some positions masked Returns ------- mask: Mask copy after completing the op. described above """ mask = mask.copy() def make_flip(fill): flip = sc.empty(dims=['neighbor', 'y', 'x'], shape=[ 8, ] + mask.shape, dtype=bool) flip['neighbor', 0] = _shift(mask, "x", True, fill) flip['neighbor', 1] = _shift(mask, "x", False, fill) flip['neighbor', 2] = _shift(mask, "y", True, fill) flip['neighbor', 3] = _shift(mask, "y", False, fill) flip['neighbor', 4:6] = _shift(flip['neighbor', 0:2], "y", True, fill) flip['neighbor', 6:8] = _shift(flip['neighbor', 0:2], "y", False, fill) return flip # mask if all neighbors masked mask = mask | sc.all(make_flip(True), 'neighbor') # unmask if no neighbor masked mask = mask & sc.any(make_flip(False), 'neighbor') return mask
def convert_Workspace2D_to_data_array(ws, load_run_logs=True, advanced_geometry=False, **ignored): dim, unit = validate_and_get_unit(ws.getAxis(0).getUnit()) spec_dim, spec_coord = init_spec_axis(ws) coords_labs_data = _convert_MatrixWorkspace_info( ws, advanced_geometry=advanced_geometry, load_run_logs=load_run_logs) _, data_unit = validate_and_get_unit(ws.YUnit(), allow_empty=True) if ws.id() == 'MaskWorkspace': coords_labs_data["data"] = sc.Variable(dims=[spec_dim], unit=data_unit, values=ws.extractY().flatten(), dtype=sc.DType.bool) else: stddev2 = ws.extractE() np.multiply(stddev2, stddev2, out=stddev2) # much faster than np.power coords_labs_data["data"] = sc.Variable(dims=[spec_dim, dim], unit=data_unit, values=ws.extractY(), variances=stddev2) array = sc.DataArray(**coords_labs_data) if ws.hasAnyMaskedBins(): bin_mask = sc.zeros(dims=array.dims, shape=array.shape, dtype=sc.DType.bool) for i in range(ws.getNumberHistograms()): # maskedBinsIndices throws instead of returning empty list if ws.hasMaskedBins(i): set_bin_masks(bin_mask, dim, i, ws.maskedBinsIndices(i)) common_mask = sc.all(bin_mask, spec_dim) if sc.identical(common_mask, sc.any(bin_mask, spec_dim)): array.masks["bin"] = common_mask else: array.masks["bin"] = bin_mask # Avoid creating dimensions that are not required since this mostly an # artifact of inflexible data structures and gets in the way when working # with scipp. if len(spec_coord.values) == 1: if 'position' in array.coords: array.coords['position'] = array.coords['position'][spec_dim, 0] array = array[spec_dim, 0].copy() return array
def test_any(): var = sc.Variable(['x'], values=[True, False, True]) assert sc.any(var, 'x') == sc.Variable(value=True)
def test_any(): var = sc.Variable(['x', 'y'], values=np.array([True, True, True, False]).reshape(2, 2)) assert sc.is_equal(sc.any(var), sc.Variable(value=True))
def test_any(): var = sc.Variable([Dim.X], values=[True, False, True]) assert sc.any(var, Dim.X) == sc.Variable(value=True)