-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_interp_ndarray.py
82 lines (72 loc) · 1.75 KB
/
test_interp_ndarray.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import pytest
import numpy as np
import scipy.ndimage
import regridding
sz_t = 9
sz_x = 10
sz_y = 11
sz_z = 12
@pytest.mark.parametrize(
argnames="a",
argvalues=[
np.random.random(sz_x),
]
)
@pytest.mark.parametrize(
argnames="x",
argvalues=[
np.arange(sz_x),
np.linspace(0, sz_x - 1, num=21),
]
)
@pytest.mark.parametrize(
argnames="axis",
argvalues=[None, 0, -1]
)
def test_ndarray_linear_interpolation_1d(
a: np.ndarray,
x: np.ndarray,
axis: None | int | tuple[int]
):
result = regridding.ndarray_linear_interpolation(a=a, coordinates=(x,), axis=axis)
expected = scipy.ndimage.map_coordinates(input=a, coordinates=x[np.newaxis], mode="nearest", order=1)
assert np.allclose(result, expected)
@pytest.mark.parametrize(
argnames="a",
argvalues=[
np.random.random((sz_x, sz_y)),
]
)
@pytest.mark.parametrize(
argnames="x",
argvalues=[
np.arange(sz_x)[:, np.newaxis],
np.linspace(0, sz_x - 1, num=100)[:, np.newaxis],
]
)
@pytest.mark.parametrize(
argnames="y",
argvalues=[
np.arange(sz_y)[np.newaxis, :],
np.linspace(0, sz_y - 1, num=5)[np.newaxis, :],
]
)
@pytest.mark.parametrize(
argnames="axis",
argvalues=[
None,
(0, 1),
(0, ~0),
]
)
def test_ndarray_linear_interpolation_2d(
a: np.ndarray,
x: np.ndarray,
y: np.ndarray,
axis: None | tuple[int],
):
x, y = np.broadcast_arrays(x, y)
result = regridding.ndarray_linear_interpolation(a=a, coordinates=(x, y), axis=axis)
expected = scipy.ndimage.map_coordinates(input=a, coordinates=np.stack([x, y]), order=1)
print(result - expected)
assert np.allclose(result, expected)