Skip to content

Commit dd021b0

Browse files
committed
add test
1 parent a79e002 commit dd021b0

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

src/anemoi/datasets/data/forwards.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from functools import cached_property
1010

1111
import numpy as np
12-
from anemoi.utils.dates import frequency_to_timedelta
1312

1413
from .dataset import Dataset
1514
from .debug import debug_indexing
@@ -124,10 +123,8 @@ def check_same_resolution(self, d1, d2):
124123
raise ValueError(f"Incompatible resolutions: {d1.resolution} and {d2.resolution} ({d1} {d2})")
125124

126125
def check_same_frequency(self, d1, d2):
127-
f1 = frequency_to_timedelta(d1.frequency)
128-
f2 = frequency_to_timedelta(d2.frequency)
129-
if f1 != f2:
130-
raise ValueError(f"Incompatible frequencies: {d1.frequency} ({f1}) and {d2.frequency} ({f2}) ({d1} {d2})")
126+
if d1.frequency != d2.frequency:
127+
raise ValueError(f"Incompatible frequencies: {d1.frequency} and {d2.frequency} ({d1} {d2})")
131128

132129
def check_same_grid(self, d1, d2):
133130
if (d1.latitudes != d2.latitudes).any() or (d1.longitudes != d2.longitudes).any():

src/anemoi/datasets/data/stores.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import numpy as np
1515
import zarr
16+
from anemoi.utils.dates import frequency_to_timedelta
1617

1718
from . import MissingDateError
1819
from .dataset import Dataset
@@ -268,12 +269,11 @@ def field_shape(self):
268269
@property
269270
def frequency(self):
270271
try:
271-
return self.z.attrs["frequency"]
272+
return frequency_to_timedelta(self.z.attrs["frequency"])
272273
except KeyError:
273274
LOG.warning("No 'frequency' in %r, computing from 'dates'", self)
274275
dates = self.dates
275-
delta = dates[1].astype(object) - dates[0].astype(object)
276-
return int(delta.total_seconds() / 3600)
276+
return dates[1].astype(object) - dates[0].astype(object)
277277

278278
@property
279279
def name_to_index(self):

src/anemoi/datasets/data/subset.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from functools import cached_property
1010

1111
import numpy as np
12+
from anemoi.utils.dates import frequency_to_timedelta
1213

1314
from .debug import Node
1415
from .debug import Source
@@ -89,8 +90,7 @@ def dates(self):
8990
@cached_property
9091
def frequency(self):
9192
dates = self.dates
92-
delta = dates[1].astype(object) - dates[0].astype(object)
93-
return int(delta.total_seconds() / 3600)
93+
return frequency_to_timedelta(dates[1].astype(object) - dates[0].astype(object))
9494

9595
def source(self, index):
9696
return Source(self, index, self.forward.source(index))

tests/xarray/test_zarr.py

+15
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,21 @@ def test_weatherbench():
5151
assert fs[-1].metadata("valid_datetime") == "2021-01-10T12:00:00", fs[-1].metadata("valid_datetime")
5252

5353

54+
def test_inca_one_date():
55+
url = "https://object-store.os-api.cci1.ecmwf.int/ml-tests/test-data/example-inca-one-date.zarr"
56+
57+
ds = xr.open_zarr(url)
58+
fs = XarrayFieldList.from_xarray(ds)
59+
vars = ["DD_10M", "SP_10M", "TD_2M", "TOT_PREC", "T_2M"]
60+
61+
for i, f in enumerate(fs):
62+
print(f)
63+
assert f.metadata("valid_datetime") == "2023-01-01T00:00:00"
64+
assert f.metadata("step") == 0
65+
assert f.metadata("number") == 0
66+
assert f.metadata("variable") == vars[i]
67+
68+
5469
if __name__ == "__main__":
5570
for name, obj in list(globals().items()):
5671
if name.startswith("test_") and callable(obj):

0 commit comments

Comments
 (0)