|
4 | 4 | import sys |
5 | 5 | from datetime import timedelta |
6 | 6 |
|
7 | | -import cftime |
8 | 7 | import dask |
9 | 8 | import dask.array as da |
10 | 9 | import numpy as np |
|
29 | 28 | GeographicPolar, |
30 | 29 | TimeConverter, |
31 | 30 | UnitConverter, |
32 | | - _get_cftime_calendars, |
33 | | - _get_cftime_datetimes, |
34 | 31 | ) |
35 | 32 | from tests.common_kernels import DoNothing |
36 | 33 | from tests.utils import TEST_DATA |
@@ -61,6 +58,7 @@ def test_fieldset_from_data(xdim, ydim): |
61 | 58 | """Simple test for fieldset initialisation from data.""" |
62 | 59 | data, dimensions = generate_fieldset_data(xdim, ydim) |
63 | 60 | fieldset = FieldSet.from_data(data, dimensions) |
| 61 | + assert fieldset.U._creation_log == "from_data" |
64 | 62 | assert len(fieldset.U.data.shape) == 3 |
65 | 63 | assert len(fieldset.V.data.shape) == 3 |
66 | 64 | assert np.allclose(fieldset.U.data[0, :], data["U"], rtol=1e-12) |
@@ -139,65 +137,6 @@ def test_fieldset_from_parcels(xdim, ydim, tmpdir): |
139 | 137 | assert np.allclose(fieldset.V.data[0, :], data["V"], rtol=1e-12) |
140 | 138 |
|
141 | 139 |
|
142 | | -def test_field_from_netcdf_variables(): |
143 | | - filename = str(TEST_DATA / "perlinfieldsU.nc") |
144 | | - dims = {"lon": "x", "lat": "y"} |
145 | | - |
146 | | - variable = "vozocrtx" |
147 | | - f1 = Field.from_netcdf(filename, variable, dims) |
148 | | - variable = ("U", "vozocrtx") |
149 | | - f2 = Field.from_netcdf(filename, variable, dims) |
150 | | - variable = {"U": "vozocrtx"} |
151 | | - f3 = Field.from_netcdf(filename, variable, dims) |
152 | | - |
153 | | - assert np.allclose(f1.data, f2.data, atol=1e-12) |
154 | | - assert np.allclose(f1.data, f3.data, atol=1e-12) |
155 | | - |
156 | | - with pytest.raises(AssertionError): |
157 | | - variable = {"U": "vozocrtx", "nav_lat": "nav_lat"} # multiple variables will fail |
158 | | - f3 = Field.from_netcdf(filename, variable, dims) |
159 | | - |
160 | | - |
161 | | -@pytest.mark.parametrize( |
162 | | - "calendar, cftime_datetime", zip(_get_cftime_calendars(), _get_cftime_datetimes(), strict=True) |
163 | | -) |
164 | | -def test_fieldset_nonstandardtime( |
165 | | - calendar, cftime_datetime, tmpdir, filename="test_nonstandardtime.nc", xdim=4, ydim=6 |
166 | | -): |
167 | | - filepath = tmpdir.join(filename) |
168 | | - dates = [getattr(cftime, cftime_datetime)(1, m, 1) for m in range(1, 13)] |
169 | | - da = xr.DataArray( |
170 | | - np.random.rand(12, xdim, ydim), coords=[dates, range(xdim), range(ydim)], dims=["time", "lon", "lat"], name="U" |
171 | | - ) |
172 | | - da.to_netcdf(str(filepath)) |
173 | | - |
174 | | - dims = {"lon": "lon", "lat": "lat", "time": "time"} |
175 | | - try: |
176 | | - field = Field.from_netcdf(filepath, "U", dims) |
177 | | - except NotImplementedError: |
178 | | - field = None |
179 | | - |
180 | | - if field is not None: |
181 | | - assert field.grid.time_origin.calendar == calendar |
182 | | - |
183 | | - |
184 | | -@pytest.mark.parametrize("with_timestamps", [True, False]) |
185 | | -def test_field_from_netcdf(with_timestamps): |
186 | | - filenames = { |
187 | | - "lon": str(TEST_DATA / "mask_nemo_cross_180lon.nc"), |
188 | | - "lat": str(TEST_DATA / "mask_nemo_cross_180lon.nc"), |
189 | | - "data": str(TEST_DATA / "Uu_eastward_nemo_cross_180lon.nc"), |
190 | | - } |
191 | | - variable = "U" |
192 | | - dimensions = {"lon": "glamf", "lat": "gphif"} |
193 | | - if with_timestamps: |
194 | | - timestamp_types = [[[2]], [[np.datetime64("2000-01-01")]]] |
195 | | - for timestamps in timestamp_types: |
196 | | - Field.from_netcdf(filenames, variable, dimensions, interp_method="cgrid_velocity", timestamps=timestamps) |
197 | | - else: |
198 | | - Field.from_netcdf(filenames, variable, dimensions, interp_method="cgrid_velocity") |
199 | | - |
200 | | - |
201 | 140 | def test_fieldset_from_modulefile(): |
202 | 141 | nemo_fname = str(TEST_DATA / "fieldset_nemo.py") |
203 | 142 | nemo_error_fname = str(TEST_DATA / "fieldset_nemo_error.py") |
|
0 commit comments