import tempfile from itertools import product from pathlib import Path import numpy as np import pytest from tiffwrite import tiffwrite from ndbioimage import Imread @pytest.fixture def array(): return np.random.randint(0, 255, (64, 64, 2, 3, 4), 'uint16') @pytest.fixture() def image(array): with tempfile.TemporaryDirectory() as folder: file = Path(folder) / "test.tif" tiffwrite(file, array, 'yxczt') with Imread(file, axes='yxczt') as im: yield im @pytest.mark.parametrize('fun_and_axis', product( (np.sum, np.nansum, np.min, np.nanmin, np.max, np.nanmax, np.argmin, np.argmax, np.mean, np.nanmean, np.var, np.nanvar, np.std, np.nanstd), (None, 0, 1, 2, 3, 4))) def test_ufuncs(fun_and_axis, image, array): fun, axis = fun_and_axis assert np.all(np.isclose(fun(image, axis), fun(array, axis))), \ f'function {fun.__name__} over axis {axis} does not give the correct result'