Source code for ewoksfluo.tests.test_regrid

import numpy
import pytest

from ..math.regular_grid import ScatterDataInterpolator


[docs] @pytest.mark.parametrize("ndatadim", [0, 1, 2]) def test_regular_regridding(ndatadim): data_shape = tuple(range(10, 10 + ndatadim)) # Plane: z = ax + by + c a, b, c = 3, 2, 1 state = numpy.random.RandomState(42) N_points = 100 x = state.uniform(-10, 10, N_points) y = state.uniform(-10, 10, N_points) z = a * x + b * y + c z = _add_data_dimensions(z, data_shape) interpolator = ScatterDataInterpolator( [x, y], ["x", "y"], ["um", "um"], method="linear" ) interpolated_z = interpolator.regrid(z) expected_z = ( a * interpolator.expanded_grid_coordinates[:, 0] + b * interpolator.expanded_grid_coordinates[:, 1] + c ) expected_z = _add_data_dimensions(expected_z, data_shape) expected_z = expected_z.reshape(interpolated_z.shape) assert numpy.nanmax(numpy.abs(interpolated_z - expected_z)) < 1e-9
def _add_data_dimensions(array: numpy.ndarray, data_shape: tuple) -> numpy.ndarray: reshaped_array = array[(...,) + (numpy.newaxis,) * len(data_shape)] return numpy.tile(reshaped_array, data_shape)