diff --git a/datasets.yml b/datasets.yml index bc182b6..a3278e5 100644 --- a/datasets.yml +++ b/datasets.yml @@ -31,3 +31,5 @@ ignore: - CMIP6.CMIP.NCC.NorCPM1.historical.r1i1p1f1.Amon.ta.gn.v20190914 # Regridding -> ValueError: Cube 'air_temperature' must contain a single 1D y coordinate. - CMIP6.CMIP.FIO-QLNM.FIO-ESM-2-0.historical.r1i1p1f1.Amon.ta.gn.v20191204 + # Contains unmasked values up to 5.813931e+36 + - CMIP6.CMIP.E3SM-Project.E3SM-1-1.historical.r1i1p1f1.Amon.ta.gr.v20191211 diff --git a/esmvaltool_sample_data/__init__.py b/esmvaltool_sample_data/__init__.py index 0baf3f8..27f8c29 100644 --- a/esmvaltool_sample_data/__init__.py +++ b/esmvaltool_sample_data/__init__.py @@ -46,7 +46,8 @@ def load_cubes_from_input_dirs(input_dirs: list) -> 'iris.Cube': cube = cubes.concatenate_cube() if VERBOSE: - print(' ', cube.shape, cube.coord('time').units.calendar) + print(f' {cube.shape=} {cube.data.min()=} {cube.data.max()=}') + print(f' {cube.coord("time").units.calendar=}') yield cube @@ -119,7 +120,8 @@ def get_rootpaths() -> dict: first_cube = ts[0] for i, cube in enumerate(ts): - print(i) cube.regrid(grid=first_cube, scheme=iris.analysis.Linear()) - # breakpoint() + print(i, cube.data.min(), cube.data.max()) + + # breakpoint() diff --git a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_195001-195912.nc b/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_195001-195912.nc deleted file mode 100644 index 2541d4a..0000000 Binary files a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_195001-195912.nc and /dev/null differ diff --git a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_196001-196912.nc b/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_196001-196912.nc deleted file mode 100644 index 2d4ef73..0000000 Binary files a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_196001-196912.nc and /dev/null differ diff --git a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_197001-197912.nc b/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_197001-197912.nc deleted file mode 100644 index 68b8018..0000000 Binary files a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_197001-197912.nc and /dev/null differ diff --git a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_198001-198912.nc b/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_198001-198912.nc deleted file mode 100644 index 8f2a487..0000000 Binary files a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_198001-198912.nc and /dev/null differ diff --git a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_199001-199912.nc b/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_199001-199912.nc deleted file mode 100644 index 9bfbffd..0000000 Binary files a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_199001-199912.nc and /dev/null differ diff --git a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_200001-200912.nc b/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_200001-200912.nc deleted file mode 100644 index 11b2621..0000000 Binary files a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_200001-200912.nc and /dev/null differ diff --git a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_201001-201412.nc b/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_201001-201412.nc deleted file mode 100644 index 4d59753..0000000 Binary files a/esmvaltool_sample_data/data/timeseries/CMIP6/CMIP/E3SM-Project/E3SM-1-1/historical/r1i1p1f1/Amon/ta/gr/v20191211/ta_Amon_E3SM-1-1_historical_r1i1p1f1_gr_201001-201412.nc and /dev/null differ diff --git a/setup.py b/setup.py index 6dc65f8..99f1f80 100644 --- a/setup.py +++ b/setup.py @@ -50,6 +50,7 @@ 'myproxyclient', 'pre-commit', 'prospector[with_pyroma]!=1.1.6.3,!=1.1.6.4', + 'pytest', 'yamllint', 'yapf', ], diff --git a/tests/test_sample_data_loader.py b/tests/test_sample_data_loader.py new file mode 100644 index 0000000..9cd08d7 --- /dev/null +++ b/tests/test_sample_data_loader.py @@ -0,0 +1,19 @@ +import iris +import pytest + +from esmvaltool_sample_data import load_timeseries_cubes + + +@pytest.mark.parametrize("mip_table", [ + 'amon', + 'day', +]) +def test_load_timeseries_cubes(mip_table): + """Load data and check if the types are OK.""" + cubes = load_timeseries_cubes(mip_table) + assert isinstance(cubes, list) + assert all(isinstance(cube, iris.cube.Cube) for cube in cubes) + + for cube in cubes: + assert cube.data.min() > -2e16 + assert cube.data.max() < 2e16