def test_z_score_image(): b = map_to_binner(*generate_map_bin(geo, (2048, 2048))) img = np.ones((2048, 2048)) bad = np.unique(np.random.randint(0, 2048 * 2048, 1000)) urbad = np.unravel_index(bad, (2048, 2048)) img[urbad] = 10 z_score = z_score_image(img, b) assert all(z_score[urbad] > 2)
def test_binned_outlier(mask_method): b = map_to_binner(*generate_map_bin(geo, (2048, 2048))) img = np.ones((2048, 2048)) bad = np.unique(np.random.randint(0, 2048 * 2048, 1000)) urbad = np.unravel_index(bad, (2048, 2048)) img[urbad] = 100 mask = binned_outlier(img, b, mask_method=mask_method) assert_equal(np.where(mask.ravel() == 0)[0], bad)
def test_mask_img(mask_method): b = map_to_binner(*generate_map_bin(geo, (2048, 2048))) img = np.ones((2048, 2048)) r = np.random.RandomState(42) bad = np.unique(r.randint(0, 2048 * 2048, 1000)) urbad = np.unravel_index(bad, (2048, 2048)) img[urbad] = 10 mask = mask_img( img, b, auto_type=mask_method, edge=None, lower_thresh=None, upper_thresh=None, ) assert_equal(np.where(mask.ravel() == 0)[0], bad)
def test_generate_binner_mask(): b = map_to_binner( *generate_map_bin(geo, (2048, 2048)), np.random.randint(0, 2, 2048 * 2048, dtype=bool).reshape((2048, 2048)) ) assert b
def test_generate_binner(): a = generate_binner(geo, (2048, 2048)) b = map_to_binner(*generate_map_bin(geo, (2048, 2048))) assert a assert b assert_equal(a.flatcount, b.flatcount)
from tifffile import imread from xpdtools.tools import binned_outlier, map_to_binner, mask_img from profilehooks import profile import pyFAI geo = pyFAI.load("test.poni") img = imread("test.tiff") bo = profile(binned_outlier, skip=1) # bo = binned_outlier binner = map_to_binner(geo, img.shape) a = binner.argsort_index b = binner.flatcount for i in range(2): bo( img, binner, # bs_width=None, mask_method="mean", ) # Median # binned outlier # median by itself .714 # median multithread .494 # numba median .270 # multithread numba .178 # mask_img