-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathtest_reduce.py
75 lines (61 loc) · 2.12 KB
/
test_reduce.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
from functools import partial
import numpy as np
import pytest
import xarray as xr
from openeo_pg_parser_networkx.pg_schema import ParameterReference
from openeo_processes_dask.process_implementations.cubes.reduce import (
reduce_dimension,
reduce_spatial,
)
from tests.general_checks import general_output_checks
from tests.mockdata import create_fake_rastercube
@pytest.mark.parametrize("size", [(30, 30, 20, 4)])
@pytest.mark.parametrize("dtype", [np.float32])
def test_reduce_dimension(
temporal_interval, bounding_box, random_raster_data, process_registry
):
input_cube = create_fake_rastercube(
data=random_raster_data,
spatial_extent=bounding_box,
temporal_extent=temporal_interval,
bands=["B02", "B03", "B04", "B08"],
backend="dask",
)
_process = partial(
process_registry["mean"].implementation,
ignore_nodata=True,
data=ParameterReference(from_parameter="data"),
)
output_cube = reduce_dimension(data=input_cube, reducer=_process, dimension="t")
general_output_checks(
input_cube=input_cube,
output_cube=output_cube,
verify_attrs=False,
verify_crs=True,
)
xr.testing.assert_equal(output_cube, input_cube.mean(dim="t"))
@pytest.mark.parametrize("size", [(30, 30, 20, 4)])
@pytest.mark.parametrize("dtype", [np.float32])
def test_reduce_spatial(
temporal_interval, bounding_box, random_raster_data, process_registry
):
input_cube = create_fake_rastercube(
data=random_raster_data,
spatial_extent=bounding_box,
temporal_extent=temporal_interval,
bands=["B02", "B03", "B04", "B08"],
backend="dask",
)
_process = partial(
process_registry["sum"].implementation,
ignore_nodata=True,
data=ParameterReference(from_parameter="data"),
)
output_cube = reduce_spatial(data=input_cube, reducer=_process)
general_output_checks(
input_cube=input_cube,
output_cube=output_cube,
verify_attrs=False,
verify_crs=True,
)
xr.testing.assert_equal(output_cube, input_cube.sum(dim=["x", "y"]))