anemoi-datasets 0.5.24__py3-none-any.whl → 0.5.26__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- anemoi/datasets/_version.py +2 -2
- anemoi/datasets/commands/finalise-additions.py +2 -1
- anemoi/datasets/commands/finalise.py +2 -1
- anemoi/datasets/commands/grib-index.py +1 -1
- anemoi/datasets/commands/init-additions.py +2 -1
- anemoi/datasets/commands/load-additions.py +2 -1
- anemoi/datasets/commands/load.py +2 -1
- anemoi/datasets/create/__init__.py +24 -33
- anemoi/datasets/create/filter.py +22 -24
- anemoi/datasets/create/input/__init__.py +0 -20
- anemoi/datasets/create/input/step.py +2 -16
- anemoi/datasets/create/sources/accumulations.py +7 -6
- anemoi/datasets/create/sources/planetary_computer.py +44 -0
- anemoi/datasets/create/sources/xarray_support/__init__.py +6 -22
- anemoi/datasets/create/sources/xarray_support/coordinates.py +8 -0
- anemoi/datasets/create/sources/xarray_support/field.py +1 -4
- anemoi/datasets/create/sources/xarray_support/flavour.py +44 -6
- anemoi/datasets/create/sources/xarray_support/patch.py +44 -1
- anemoi/datasets/create/sources/xarray_support/variable.py +6 -2
- anemoi/datasets/data/complement.py +44 -10
- anemoi/datasets/data/dataset.py +29 -0
- anemoi/datasets/data/forwards.py +8 -2
- anemoi/datasets/data/misc.py +74 -16
- anemoi/datasets/data/observations/__init__.py +316 -0
- anemoi/datasets/data/observations/legacy_obs_dataset.py +200 -0
- anemoi/datasets/data/observations/multi.py +64 -0
- anemoi/datasets/data/padded.py +227 -0
- anemoi/datasets/data/records/__init__.py +442 -0
- anemoi/datasets/data/records/backends/__init__.py +157 -0
- anemoi/datasets/data/stores.py +7 -56
- anemoi/datasets/data/subset.py +5 -0
- anemoi/datasets/grids.py +6 -3
- {anemoi_datasets-0.5.24.dist-info → anemoi_datasets-0.5.26.dist-info}/METADATA +3 -2
- {anemoi_datasets-0.5.24.dist-info → anemoi_datasets-0.5.26.dist-info}/RECORD +38 -51
- {anemoi_datasets-0.5.24.dist-info → anemoi_datasets-0.5.26.dist-info}/WHEEL +1 -1
- anemoi/datasets/create/filters/__init__.py +0 -33
- anemoi/datasets/create/filters/empty.py +0 -37
- anemoi/datasets/create/filters/legacy.py +0 -93
- anemoi/datasets/create/filters/noop.py +0 -37
- anemoi/datasets/create/filters/orog_to_z.py +0 -58
- anemoi/datasets/create/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -83
- anemoi/datasets/create/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -84
- anemoi/datasets/create/filters/rename.py +0 -205
- anemoi/datasets/create/filters/rotate_winds.py +0 -105
- anemoi/datasets/create/filters/single_level_dewpoint_to_relative_humidity.py +0 -78
- anemoi/datasets/create/filters/single_level_relative_humidity_to_dewpoint.py +0 -84
- anemoi/datasets/create/filters/single_level_relative_humidity_to_specific_humidity.py +0 -163
- anemoi/datasets/create/filters/single_level_specific_humidity_to_relative_humidity.py +0 -451
- anemoi/datasets/create/filters/speeddir_to_uv.py +0 -95
- anemoi/datasets/create/filters/sum.py +0 -68
- anemoi/datasets/create/filters/transform.py +0 -51
- anemoi/datasets/create/filters/unrotate_winds.py +0 -105
- anemoi/datasets/create/filters/uv_to_speeddir.py +0 -94
- anemoi/datasets/create/filters/wz_to_w.py +0 -98
- anemoi/datasets/create/testing.py +0 -76
- {anemoi_datasets-0.5.24.dist-info → anemoi_datasets-0.5.26.dist-info}/entry_points.txt +0 -0
- {anemoi_datasets-0.5.24.dist-info → anemoi_datasets-0.5.26.dist-info}/licenses/LICENSE +0 -0
- {anemoi_datasets-0.5.24.dist-info → anemoi_datasets-0.5.26.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# (C) Copyright 2025 Anemoi contributors.
|
|
2
|
+
#
|
|
3
|
+
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
4
|
+
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
5
|
+
#
|
|
6
|
+
# In applying this licence, ECMWF does not waive the privileges and immunities
|
|
7
|
+
# granted to it by virtue of its status as an intergovernmental organisation
|
|
8
|
+
# nor does it submit to any jurisdiction.
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
import os
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Backend:
|
|
17
|
+
def __init__(self, path, **kwargs):
|
|
18
|
+
self.path = path
|
|
19
|
+
self.kwargs = kwargs
|
|
20
|
+
|
|
21
|
+
def read(self, i, **kwargs):
|
|
22
|
+
raise NotImplementedError("Must be implemented in subclass")
|
|
23
|
+
|
|
24
|
+
def read_metadata(self):
|
|
25
|
+
raise NotImplementedError("Must be implemented in subclass")
|
|
26
|
+
|
|
27
|
+
def read_statistics(self):
|
|
28
|
+
raise NotImplementedError("Must be implemented in subclass")
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class Npz1Backend(Backend):
|
|
32
|
+
def read(self, i, **kwargs):
|
|
33
|
+
path = os.path.join(self.path, "data", str(int(i / 10)), f"{i}.npz")
|
|
34
|
+
with open(path, "rb") as f:
|
|
35
|
+
return dict(np.load(f))
|
|
36
|
+
|
|
37
|
+
def read_metadata(self):
|
|
38
|
+
with open(os.path.join(self.path, "metadata.json"), "r") as f:
|
|
39
|
+
return json.load(f)
|
|
40
|
+
|
|
41
|
+
def read_statistics(self):
|
|
42
|
+
path = os.path.join(self.path, "statistics.npz")
|
|
43
|
+
dic = {}
|
|
44
|
+
for k, v in dict(np.load(path)).items():
|
|
45
|
+
key, group = k.split(":")
|
|
46
|
+
if group not in dic:
|
|
47
|
+
dic[group] = {}
|
|
48
|
+
dic[group][key] = v
|
|
49
|
+
return dic
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class Npz2Backend(Backend):
|
|
53
|
+
def read(self, i, **kwargs):
|
|
54
|
+
path = os.path.join(self.path, "data_", str(int(i / 10)), f"{i}_.npz")
|
|
55
|
+
with open(path, "rb") as f:
|
|
56
|
+
return dict(np.load(f))
|
|
57
|
+
|
|
58
|
+
def read_metadata(self):
|
|
59
|
+
with open(os.path.join(self.path, "metadata.json"), "r") as f:
|
|
60
|
+
return json.load(f)
|
|
61
|
+
|
|
62
|
+
def read_statistics(self):
|
|
63
|
+
path = os.path.join(self.path, "statistics_.npz")
|
|
64
|
+
dic = {}
|
|
65
|
+
for k, v in dict(np.load(path)).items():
|
|
66
|
+
key, group = k.split(":")
|
|
67
|
+
if group not in dic:
|
|
68
|
+
dic[group] = {}
|
|
69
|
+
dic[group][key] = v
|
|
70
|
+
return dic
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def backend_factory(backend, *args, **kwargs):
|
|
74
|
+
BACKENDS = dict(
|
|
75
|
+
npz1=Npz1Backend,
|
|
76
|
+
npz2=Npz2Backend,
|
|
77
|
+
)
|
|
78
|
+
return BACKENDS[backend](*args, **kwargs)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class WriteBackend(Backend):
|
|
82
|
+
def __init__(self, path, **kwargs):
|
|
83
|
+
super().__init__(path, **kwargs)
|
|
84
|
+
|
|
85
|
+
def write(self, i, data, **kwargs):
|
|
86
|
+
raise NotImplementedError("Must be implemented in subclass")
|
|
87
|
+
|
|
88
|
+
def write_metadata(self, metadata):
|
|
89
|
+
raise NotImplementedError("Must be implemented in subclass")
|
|
90
|
+
|
|
91
|
+
def write_statistics(self, statistics):
|
|
92
|
+
raise NotImplementedError("Must be implemented in subclass")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class Npz1WriteBackend(WriteBackend):
|
|
96
|
+
def write(self, i, data, **kwargs):
|
|
97
|
+
path = os.path.join(self.path, "data", str(int(i / 10)))
|
|
98
|
+
os.makedirs(path, exist_ok=True)
|
|
99
|
+
out_path = os.path.join(path, f"{i}.npz")
|
|
100
|
+
np.savez(out_path, **data)
|
|
101
|
+
|
|
102
|
+
def write_metadata(self, metadata):
|
|
103
|
+
from anemoi.datasets.create import json_tidy
|
|
104
|
+
|
|
105
|
+
os.makedirs(self.path, exist_ok=True)
|
|
106
|
+
with open(os.path.join(self.path, "metadata.json"), "w") as f:
|
|
107
|
+
json.dump(metadata, f, indent=2, default=json_tidy)
|
|
108
|
+
|
|
109
|
+
def write_statistics(self, statistics):
|
|
110
|
+
flatten = {}
|
|
111
|
+
for name, d in statistics.items():
|
|
112
|
+
assert isinstance(d, dict), f"Statistics for {name} must be a dict, got {type(d)}"
|
|
113
|
+
for k, v in d.items():
|
|
114
|
+
assert isinstance(
|
|
115
|
+
v, (int, float, np.ndarray)
|
|
116
|
+
), f"Statistics value for {k} in {name} must be int, float or ndarray, got {type(v)}"
|
|
117
|
+
flatten[k + ":" + name] = v
|
|
118
|
+
|
|
119
|
+
path = os.path.join(self.path, "statistics.npz")
|
|
120
|
+
np.savez(path, **flatten)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class Npz2WriteBackend(WriteBackend):
|
|
124
|
+
def write(self, i, data, **kwargs):
|
|
125
|
+
path = os.path.join(self.path, "data_", str(int(i / 10)))
|
|
126
|
+
os.makedirs(path, exist_ok=True)
|
|
127
|
+
out_path = os.path.join(path, f"{i}_.npz")
|
|
128
|
+
np.savez(out_path, **data)
|
|
129
|
+
|
|
130
|
+
def write_metadata(self, metadata):
|
|
131
|
+
from anemoi.datasets.create import json_tidy
|
|
132
|
+
|
|
133
|
+
os.makedirs(self.path, exist_ok=True)
|
|
134
|
+
with open(os.path.join(self.path, "metadata.json"), "w") as f:
|
|
135
|
+
json.dump(metadata, f, indent=2, default=json_tidy)
|
|
136
|
+
|
|
137
|
+
def write_statistics(self, statistics):
|
|
138
|
+
flatten = {}
|
|
139
|
+
for name, d in statistics.items():
|
|
140
|
+
assert isinstance(d, dict), f"Statistics for {name} must be a dict, got {type(d)}"
|
|
141
|
+
for k, v in d.items():
|
|
142
|
+
assert isinstance(
|
|
143
|
+
v, (int, float, np.ndarray)
|
|
144
|
+
), f"Statistics value for {k} in {name} must be int, float or ndarray, got {type(v)}"
|
|
145
|
+
flatten[k + ":" + name] = v
|
|
146
|
+
|
|
147
|
+
os.makedirs(self.path, exist_ok=True)
|
|
148
|
+
path = os.path.join(self.path, "statistics_.npz")
|
|
149
|
+
np.savez(path, **flatten)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def writer_backend_factory(backend, *args, **kwargs):
|
|
153
|
+
WRITE_BACKENDS = dict(
|
|
154
|
+
npz1=Npz1WriteBackend,
|
|
155
|
+
npz2=Npz2WriteBackend,
|
|
156
|
+
)
|
|
157
|
+
return WRITE_BACKENDS[backend](*args, **kwargs)
|
anemoi/datasets/data/stores.py
CHANGED
|
@@ -107,51 +107,6 @@ class S3Store(ReadOnlyStore):
|
|
|
107
107
|
return response["Body"].read()
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
class PlanetaryComputerStore(ReadOnlyStore):
|
|
111
|
-
"""We write our own Store to access catalogs on Planetary Computer,
|
|
112
|
-
as it requires some extra arguments to use xr.open_zarr.
|
|
113
|
-
"""
|
|
114
|
-
|
|
115
|
-
def __init__(self, data_catalog_id: str) -> None:
|
|
116
|
-
"""Initialize the PlanetaryComputerStore with a data catalog ID.
|
|
117
|
-
|
|
118
|
-
Parameters
|
|
119
|
-
----------
|
|
120
|
-
data_catalog_id : str
|
|
121
|
-
The data catalog ID.
|
|
122
|
-
"""
|
|
123
|
-
self.data_catalog_id = data_catalog_id
|
|
124
|
-
|
|
125
|
-
import planetary_computer
|
|
126
|
-
import pystac_client
|
|
127
|
-
|
|
128
|
-
catalog = pystac_client.Client.open(
|
|
129
|
-
"https://planetarycomputer.microsoft.com/api/stac/v1/",
|
|
130
|
-
modifier=planetary_computer.sign_inplace,
|
|
131
|
-
)
|
|
132
|
-
collection = catalog.get_collection(self.data_catalog_id)
|
|
133
|
-
|
|
134
|
-
asset = collection.assets["zarr-abfs"]
|
|
135
|
-
|
|
136
|
-
if "xarray:storage_options" in asset.extra_fields:
|
|
137
|
-
store = {
|
|
138
|
-
"store": asset.href,
|
|
139
|
-
"storage_options": asset.extra_fields["xarray:storage_options"],
|
|
140
|
-
**asset.extra_fields["xarray:open_kwargs"],
|
|
141
|
-
}
|
|
142
|
-
else:
|
|
143
|
-
store = {
|
|
144
|
-
"filename_or_obj": asset.href,
|
|
145
|
-
**asset.extra_fields["xarray:open_kwargs"],
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
self.store = store
|
|
149
|
-
|
|
150
|
-
def __getitem__(self, key: str) -> bytes:
|
|
151
|
-
"""Retrieve an item from the store."""
|
|
152
|
-
raise NotImplementedError()
|
|
153
|
-
|
|
154
|
-
|
|
155
110
|
class DebugStore(ReadOnlyStore):
|
|
156
111
|
"""A store to debug the zarr loading."""
|
|
157
112
|
|
|
@@ -190,11 +145,11 @@ def name_to_zarr_store(path_or_url: str) -> ReadOnlyStore:
|
|
|
190
145
|
|
|
191
146
|
if store.startswith("http://") or store.startswith("https://"):
|
|
192
147
|
|
|
193
|
-
parsed = urlparse(store)
|
|
194
|
-
|
|
195
148
|
if store.endswith(".zip"):
|
|
196
149
|
import multiurl
|
|
197
150
|
|
|
151
|
+
parsed = urlparse(store)
|
|
152
|
+
|
|
198
153
|
# Zarr cannot handle zip files over HTTP
|
|
199
154
|
tmpdir = tempfile.gettempdir()
|
|
200
155
|
name = os.path.basename(parsed.path)
|
|
@@ -210,15 +165,7 @@ def name_to_zarr_store(path_or_url: str) -> ReadOnlyStore:
|
|
|
210
165
|
os.rename(path + ".tmp", path)
|
|
211
166
|
return name_to_zarr_store(path)
|
|
212
167
|
|
|
213
|
-
|
|
214
|
-
if len(bits) == 5 and (bits[1], bits[3], bits[4]) == ("s3", "amazonaws", "com"):
|
|
215
|
-
s3_url = f"s3://{bits[0]}{parsed.path}"
|
|
216
|
-
store = S3Store(s3_url, region=bits[2])
|
|
217
|
-
elif store.startswith("https://planetarycomputer.microsoft.com/"):
|
|
218
|
-
data_catalog_id = store.rsplit("/", 1)[-1]
|
|
219
|
-
store = PlanetaryComputerStore(data_catalog_id).store
|
|
220
|
-
else:
|
|
221
|
-
store = HTTPStore(store)
|
|
168
|
+
return HTTPStore(store)
|
|
222
169
|
|
|
223
170
|
return store
|
|
224
171
|
|
|
@@ -565,6 +512,10 @@ def zarr_lookup(name: str, fail: bool = True) -> Optional[str]:
|
|
|
565
512
|
config = load_config()["datasets"]
|
|
566
513
|
use_search_path_not_found = config.get("use_search_path_not_found", False)
|
|
567
514
|
|
|
515
|
+
if name.endswith(".zarr/"):
|
|
516
|
+
LOG.warning("Removing trailing slash from path: %s", name)
|
|
517
|
+
name = name[:-1]
|
|
518
|
+
|
|
568
519
|
if name.endswith(".zarr") or name.endswith(".zip"):
|
|
569
520
|
|
|
570
521
|
if os.path.exists(name):
|
anemoi/datasets/data/subset.py
CHANGED
|
@@ -185,6 +185,11 @@ class Subset(Forwards):
|
|
|
185
185
|
n = self.indices[n]
|
|
186
186
|
return self.dataset[n]
|
|
187
187
|
|
|
188
|
+
def get_aux(self, n: FullIndex) -> NDArray[Any]:
|
|
189
|
+
assert n >= 0, n
|
|
190
|
+
n = self.indices[n]
|
|
191
|
+
return self.dataset.get_aux(n)
|
|
192
|
+
|
|
188
193
|
@debug_indexing
|
|
189
194
|
def _get_slice(self, s: slice) -> NDArray[Any]:
|
|
190
195
|
"""Get slice of data.
|
anemoi/datasets/grids.py
CHANGED
|
@@ -605,6 +605,7 @@ def nearest_grid_points(
|
|
|
605
605
|
target_latitudes: NDArray[Any],
|
|
606
606
|
target_longitudes: NDArray[Any],
|
|
607
607
|
max_distance: float = None,
|
|
608
|
+
k: int = 1,
|
|
608
609
|
) -> NDArray[Any]:
|
|
609
610
|
"""Find the nearest grid points from source to target coordinates.
|
|
610
611
|
|
|
@@ -621,6 +622,8 @@ def nearest_grid_points(
|
|
|
621
622
|
max_distance: float, optional
|
|
622
623
|
Maximum distance between nearest point and point to interpolate. Defaults to None.
|
|
623
624
|
For example, 1e-3 is 1 km.
|
|
625
|
+
k : int, optional
|
|
626
|
+
The number of k closest neighbors to consider for interpolation
|
|
624
627
|
|
|
625
628
|
Returns
|
|
626
629
|
-------
|
|
@@ -637,10 +640,10 @@ def nearest_grid_points(
|
|
|
637
640
|
target_xyz = latlon_to_xyz(target_latitudes, target_longitudes)
|
|
638
641
|
target_points = np.array(target_xyz).transpose()
|
|
639
642
|
if max_distance is None:
|
|
640
|
-
|
|
643
|
+
distances, indices = cKDTree(source_points).query(target_points, k=k)
|
|
641
644
|
else:
|
|
642
|
-
|
|
643
|
-
return indices
|
|
645
|
+
distances, indices = cKDTree(source_points).query(target_points, k=k, distance_upper_bound=max_distance)
|
|
646
|
+
return distances, indices
|
|
644
647
|
|
|
645
648
|
|
|
646
649
|
if __name__ == "__main__":
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.26
|
|
4
4
|
Summary: A package to hold various functions to support training of ML models on ECMWF data.
|
|
5
5
|
Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
|
|
6
6
|
License: Apache License
|
|
@@ -226,7 +226,7 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
226
226
|
Requires-Python: >=3.9
|
|
227
227
|
License-File: LICENSE
|
|
228
228
|
Requires-Dist: anemoi-transform>=0.1.10
|
|
229
|
-
Requires-Dist: anemoi-utils[provenance]>=0.4.
|
|
229
|
+
Requires-Dist: anemoi-utils[provenance]>=0.4.26
|
|
230
230
|
Requires-Dist: cfunits
|
|
231
231
|
Requires-Dist: numcodecs<0.16
|
|
232
232
|
Requires-Dist: numpy
|
|
@@ -262,6 +262,7 @@ Requires-Dist: requests; extra == "remote"
|
|
|
262
262
|
Provides-Extra: tests
|
|
263
263
|
Requires-Dist: anemoi-datasets[xarray]; extra == "tests"
|
|
264
264
|
Requires-Dist: pytest; extra == "tests"
|
|
265
|
+
Requires-Dist: pytest-xdist; extra == "tests"
|
|
265
266
|
Provides-Extra: xarray
|
|
266
267
|
Requires-Dist: adlfs; extra == "xarray"
|
|
267
268
|
Requires-Dist: gcsfs; extra == "xarray"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
anemoi/datasets/__init__.py,sha256=i_wsAT3ezEYF7o5dpqGrpoG4wmLS-QIBug18uJbSYMs,1065
|
|
2
2
|
anemoi/datasets/__main__.py,sha256=ErwAqE3rBc7OaNO2JRsEOhWpB8ldjAt7BFSuRhbnlqQ,936
|
|
3
|
-
anemoi/datasets/_version.py,sha256=
|
|
3
|
+
anemoi/datasets/_version.py,sha256=Yk8LV8Lu80AtsqyYb-tECJmugSSgoanvPUOHGqIfkwA,513
|
|
4
4
|
anemoi/datasets/check.py,sha256=hbEMUurl2IjZbp56dBgOfAEsAmmgymgRM5ySaMJSTdk,2755
|
|
5
|
-
anemoi/datasets/grids.py,sha256=
|
|
5
|
+
anemoi/datasets/grids.py,sha256=_i5hgtFvT8Un7etkSTPYnrudLf2otz5iNqSRSl3_oDI,18271
|
|
6
6
|
anemoi/datasets/testing.py,sha256=fy_JzavUwLlK_2rtXAT-UGUyo5gjyQW2y826zf334Wg,2645
|
|
7
7
|
anemoi/datasets/commands/__init__.py,sha256=O5W3yHZywRoAqmRUioAr3zMCh0hGVV18wZYGvc00ioM,698
|
|
8
8
|
anemoi/datasets/commands/check.py,sha256=zEJqE5XkNLsebemg5XIvvZTv2bA6R49zVaka9HRySKU,2655
|
|
@@ -11,53 +11,33 @@ anemoi/datasets/commands/compare-lam.py,sha256=F5GYRsKOtdhDePhifgf1TCj5L2T8EVIA2
|
|
|
11
11
|
anemoi/datasets/commands/compare.py,sha256=jzhjbbt1U-YANTVRBhrwSh2CcYgk4qX2IiTMJtcn82s,3678
|
|
12
12
|
anemoi/datasets/commands/copy.py,sha256=hP7BSqkGzK8-n3BA2vlpFcbO3INHmShPZ75Aw_K_g4Y,17302
|
|
13
13
|
anemoi/datasets/commands/create.py,sha256=3myohTCLsM6oUuZHIfLaTlDaq-DOcJZRM4Vks007fZg,6543
|
|
14
|
-
anemoi/datasets/commands/finalise-additions.py,sha256=
|
|
15
|
-
anemoi/datasets/commands/finalise.py,sha256
|
|
16
|
-
anemoi/datasets/commands/grib-index.py,sha256=
|
|
17
|
-
anemoi/datasets/commands/init-additions.py,sha256=
|
|
14
|
+
anemoi/datasets/commands/finalise-additions.py,sha256=GXjGAJILFORXXkE_wfgnk5w4jYug18Q2TpwVah5Ctto,1982
|
|
15
|
+
anemoi/datasets/commands/finalise.py,sha256=cZIiqpJsaN1rqBKOStOA6pJh5n1tisrMFcGGT2UGpKY,1706
|
|
16
|
+
anemoi/datasets/commands/grib-index.py,sha256=0_cISIRw0Iwf6NX5VasxlGbPWX1p7xDMciLglS9G1Yg,3075
|
|
17
|
+
anemoi/datasets/commands/init-additions.py,sha256=wIsintXpf3aG2VhuBJJYI8ZZGXLrum7sM05IX8ImRXk,1928
|
|
18
18
|
anemoi/datasets/commands/init.py,sha256=5IKyJ_hJA4lLIbpT88XtcGzXccHLSGwSoqVSvVJGxPg,2852
|
|
19
19
|
anemoi/datasets/commands/inspect.py,sha256=kaDHXP8Cv8PsGqEXUF5Yruf5OQHwOIkjCS0SNxMs6eg,26578
|
|
20
|
-
anemoi/datasets/commands/load-additions.py,sha256=
|
|
21
|
-
anemoi/datasets/commands/load.py,sha256=
|
|
20
|
+
anemoi/datasets/commands/load-additions.py,sha256=bg0JYaPPXhGXKL-p0nngAeI2rPhSTFpZ7bY04mKuSKk,2001
|
|
21
|
+
anemoi/datasets/commands/load.py,sha256=FuKdRYuNlnv_p5ScwPKCiVDEVc9cA1Khvbd-T7N4SvU,2031
|
|
22
22
|
anemoi/datasets/commands/patch.py,sha256=Q9FDabWxlvK1QaeH4D9zhNpoSGB4h7EliWgcV76iFBs,1599
|
|
23
23
|
anemoi/datasets/commands/publish.py,sha256=7YusLCWYdVLuexZzvyh8ztYoBOBzVmve3uJs-XKeMAE,1469
|
|
24
24
|
anemoi/datasets/commands/scan.py,sha256=6Uoyd7WkM4ypoqmZargXIG50uRKzHE3AlvkAr7sCBy4,4262
|
|
25
25
|
anemoi/datasets/compute/__init__.py,sha256=hCW0QcLHJmE-C1r38P27_ZOvCLNewex5iQEtZqx2ckI,393
|
|
26
26
|
anemoi/datasets/compute/recentre.py,sha256=kwxDB8qpgOCFZSQJvjAmVcpH5zWsfk5FSoIureqNHd4,5915
|
|
27
|
-
anemoi/datasets/create/__init__.py,sha256=
|
|
27
|
+
anemoi/datasets/create/__init__.py,sha256=LAa-e6TnH5eHmHEpkMk9_a24wlpTFEKWllPgSl-mcW8,50855
|
|
28
28
|
anemoi/datasets/create/check.py,sha256=xqobSfh3655ZoKs-CjHWBiEpIfrHU_vkqwiIsAOrqvs,10795
|
|
29
29
|
anemoi/datasets/create/chunks.py,sha256=kZV3dWoCuv3Bttc0wysJB7OPbXsD99exKyrrj4HGFwQ,4025
|
|
30
30
|
anemoi/datasets/create/config.py,sha256=xrSlaY2p5zssfLIt8A1CP9WwJReSXVWBMQM7bT1aFbU,13448
|
|
31
|
-
anemoi/datasets/create/filter.py,sha256=
|
|
31
|
+
anemoi/datasets/create/filter.py,sha256=LadfjHmDUc01eadLKAX8aeFXXZVfZ7BCHbxhRzEsYn4,1380
|
|
32
32
|
anemoi/datasets/create/patch.py,sha256=u4CeIuo3Ncrbhu9CTyaUbcmaJfBfMrrFVpgEikM9pE4,5398
|
|
33
33
|
anemoi/datasets/create/persistent.py,sha256=XkEBjymXrR-y9KPVLtz9xdd0IB14wSEhcANUhUUzGVw,7832
|
|
34
34
|
anemoi/datasets/create/size.py,sha256=nHjX1manYhQIrcQWDCgBBBiAVDbfoMAG6ybVjytSaKI,1454
|
|
35
35
|
anemoi/datasets/create/source.py,sha256=xoV8uH_y6aBSE4_PWuy5w7Q7cX-tGm8e-2xC9flSAT4,1336
|
|
36
|
-
anemoi/datasets/create/testing.py,sha256=FzTSsbv_JBGViGrD1jT6z_T2yaA0KCrbJ3SCgp-rFPQ,2406
|
|
37
36
|
anemoi/datasets/create/typing.py,sha256=Hs2uDG8ZVtQ-Q-5I9-W0Pik2p1hZH5-JPVjpJXRXP7M,484
|
|
38
37
|
anemoi/datasets/create/utils.py,sha256=94JKPYcNSurA62yFAytW5dUFVz-r-fdwiPOkmu121pM,5572
|
|
39
38
|
anemoi/datasets/create/writer.py,sha256=nZBJvYZ63g_c9FfL65bAeG10Y6bX2R7CgtZvY0kW3fI,2203
|
|
40
39
|
anemoi/datasets/create/zarr.py,sha256=N9PGGD-dYvcc97BZjLVWm5XQeYTiK9gwvhtreRiQzBI,9437
|
|
41
|
-
anemoi/datasets/create/
|
|
42
|
-
anemoi/datasets/create/filters/empty.py,sha256=Dw1kUnAlFt6b5ds0kmrw9Gak09XjSqF8m1_MpHZNV9I,1013
|
|
43
|
-
anemoi/datasets/create/filters/legacy.py,sha256=6JY6uX7m-8NZjoZ1sqs0EAqT-uorvnZ-eFOwMU3LmRU,2536
|
|
44
|
-
anemoi/datasets/create/filters/noop.py,sha256=WHl-k3NojGJMX4iNYxQ6Ln21pM8ERP4z8pQ5zLRDvXs,1019
|
|
45
|
-
anemoi/datasets/create/filters/orog_to_z.py,sha256=vnZ1hD9LXoOfHCIbzkurMuBl_NSfXSiiHS2yZt8ndeQ,1784
|
|
46
|
-
anemoi/datasets/create/filters/pressure_level_relative_humidity_to_specific_humidity.py,sha256=dBAQFNAc3GEZ_HwyDrcctFaKZQYddh2ldnDA2XSfSRg,2646
|
|
47
|
-
anemoi/datasets/create/filters/pressure_level_specific_humidity_to_relative_humidity.py,sha256=51t6kbNZsXK87H0HVR9j0a54siokID47ve9r1a8rOLE,2663
|
|
48
|
-
anemoi/datasets/create/filters/rename.py,sha256=pKi3CU6fvox2sPH7szXdA79NjdIcSz59IB7HsiS_9Co,5779
|
|
49
|
-
anemoi/datasets/create/filters/rotate_winds.py,sha256=fVyAbypO_EsENHjQCujbEXp2gUEb97sMoG0s4YiPXfc,3102
|
|
50
|
-
anemoi/datasets/create/filters/single_level_dewpoint_to_relative_humidity.py,sha256=hCS3yiN9nZf-P6shQmBm5Or9rMOwU1fTwHw_qFIjT9s,2378
|
|
51
|
-
anemoi/datasets/create/filters/single_level_relative_humidity_to_dewpoint.py,sha256=pGwu6YprJ6PwJ8ZRD5k4Mz_wqSXz52jvXP13WDIGOTw,2642
|
|
52
|
-
anemoi/datasets/create/filters/single_level_relative_humidity_to_specific_humidity.py,sha256=a9QVOG8hTVqkDtX4MJ5NB0y-huOKsOm_K4ujakQ36fg,5160
|
|
53
|
-
anemoi/datasets/create/filters/single_level_specific_humidity_to_relative_humidity.py,sha256=bXgm5nKgBZaP1E4tcjSLqJsEl6BlJaNLr3MsR8V9sJ4,14682
|
|
54
|
-
anemoi/datasets/create/filters/speeddir_to_uv.py,sha256=8NXsus1LaYOzAAr7XCHKCh8HAz8BI0A1ZZz_RNDB0-w,2762
|
|
55
|
-
anemoi/datasets/create/filters/sum.py,sha256=aGT6JkdHJ3i2SKzklqiyJ4ZFV3bVMYhHOSoxkdYuzp8,2151
|
|
56
|
-
anemoi/datasets/create/filters/transform.py,sha256=gIDLvaJlnn3Nc6P29aPOvNYM6yBWcIGrR2e_1bM6_Nw,1418
|
|
57
|
-
anemoi/datasets/create/filters/unrotate_winds.py,sha256=3AJf0crnVVySLlXLIdfEUxRRlQeKgheUuD-UCrSrgo8,2798
|
|
58
|
-
anemoi/datasets/create/filters/uv_to_speeddir.py,sha256=Zdc34AG5Bsz-Z7JGuznyRJr6F-BnWKXPiI3mjmOpbek,2883
|
|
59
|
-
anemoi/datasets/create/filters/wz_to_w.py,sha256=slOiX5RibG48Zrkss8Qjpb-8ZTnvSvmKlk1Hy45_wzU,2812
|
|
60
|
-
anemoi/datasets/create/input/__init__.py,sha256=XeURpmbReQvpELltGFKzg3oZFXWRdUxW9SK3K662SBQ,3364
|
|
40
|
+
anemoi/datasets/create/input/__init__.py,sha256=vsB_whJG87IWnjaGgIMCCg8v9pfuC_vQk8BB3u5j33o,2886
|
|
61
41
|
anemoi/datasets/create/input/action.py,sha256=pc_2RPbs3laF8vBhNkbFdib40kTcF5QW6QL0p8VLNzA,7778
|
|
62
42
|
anemoi/datasets/create/input/concat.py,sha256=bU8SWfBVfK8bRAmmN4UO9zpIGxwQvRUk9_vwrKPOTE4,5355
|
|
63
43
|
anemoi/datasets/create/input/context.py,sha256=qrLccxMe9UkyQxsNuR6JSK7oLzZq21dt38AxZ9kYzsY,2714
|
|
@@ -70,11 +50,11 @@ anemoi/datasets/create/input/misc.py,sha256=FVaH_ym52RZI_fnLSMM_dKTQmWTrInucP780
|
|
|
70
50
|
anemoi/datasets/create/input/pipe.py,sha256=-tCz161IwXoI8pl1hilA9T_j5eHSr-sgbijFLp9HHNc,2083
|
|
71
51
|
anemoi/datasets/create/input/repeated_dates.py,sha256=HaPzDCNHQBY1VVp6gvd3drwjWjYpSBh-GLgHqBRJTz0,12012
|
|
72
52
|
anemoi/datasets/create/input/result.py,sha256=BmeZVN63ZnUkiOwT0mkE4DdB06OmVwdRZkiV4ACPNrI,24309
|
|
73
|
-
anemoi/datasets/create/input/step.py,sha256=
|
|
53
|
+
anemoi/datasets/create/input/step.py,sha256=NkmJ4cD9sURy_hwaeQN8kkdOfVtIW6xcxIClEWWdSvY,5376
|
|
74
54
|
anemoi/datasets/create/input/template.py,sha256=Iycw9VmfA0WEIDP_Of8bp-8HsV0EUfwbnm0WjxiO4GA,4092
|
|
75
55
|
anemoi/datasets/create/input/trace.py,sha256=dakPYMmwKq6s17Scww1CN-xYBD3btJTGeDknOhAcnEM,3320
|
|
76
56
|
anemoi/datasets/create/sources/__init__.py,sha256=XNiiGaC6NbxnGfl6glPw-gTJASi3vsGKwVlfkMqYGk4,950
|
|
77
|
-
anemoi/datasets/create/sources/accumulations.py,sha256=
|
|
57
|
+
anemoi/datasets/create/sources/accumulations.py,sha256=vo2f7cejjkKneZ-9UVRJ_jwNiJJ1XNabxP57UHJZAZs,32572
|
|
78
58
|
anemoi/datasets/create/sources/accumulations2.py,sha256=UwKJOtfbJGNTceVpLtHC8dJhROJbxzjF3V_HR7wTwrk,20661
|
|
79
59
|
anemoi/datasets/create/sources/anemoi_dataset.py,sha256=2xJJTmKlv87F_2ECMKeehaeW7_oWLlDcLt8C_Prp1RI,2017
|
|
80
60
|
anemoi/datasets/create/sources/constants.py,sha256=5O6d9tEuAmVjl5vNkNfmkaAjKXFlw1UjeueTsF1GZCI,1528
|
|
@@ -89,6 +69,7 @@ anemoi/datasets/create/sources/mars.py,sha256=tesQz7Ne6SLBChE_cNJU6Sxr6e0LXFlUKQ
|
|
|
89
69
|
anemoi/datasets/create/sources/netcdf.py,sha256=UnehMwEMJquqaOeU33zNyFUYfzqQx4Rg-GRmUcgMcbE,1222
|
|
90
70
|
anemoi/datasets/create/sources/opendap.py,sha256=sTm0wXE_BHk9q8vaNNE_Y6BhTOmhxPweS8RTjP4HYjU,1254
|
|
91
71
|
anemoi/datasets/create/sources/patterns.py,sha256=siTExxLY5HWdIgOsufyQuG7Qvkt38oElZOFwz9h0JFg,2283
|
|
72
|
+
anemoi/datasets/create/sources/planetary_computer.py,sha256=Erk6fKJt63gj_pgbklBWhAKjzjtAfq_DRizMfWdqPPU,1578
|
|
92
73
|
anemoi/datasets/create/sources/recentre.py,sha256=OtobkmaWzGD3UacjXfK_Oerjf7EnQi85LIs9xBYJK7A,4044
|
|
93
74
|
anemoi/datasets/create/sources/source.py,sha256=x8k---A2_3AglYqNsXLlv1ti4f9n_gVKmmqtyQGLPTs,2117
|
|
94
75
|
anemoi/datasets/create/sources/tendencies.py,sha256=saHGYl-MnvBEeZX-n1zgT8lehA7LC2G5dMNnxklI9-U,5590
|
|
@@ -97,48 +78,54 @@ anemoi/datasets/create/sources/xarray_kerchunk.py,sha256=vdFaFzze8VLjYUgIX8Lc39E
|
|
|
97
78
|
anemoi/datasets/create/sources/xarray_zarr.py,sha256=5eQOpB3sBD49RarTME81s0ynIVkha2pP0ymA4TNnLYY,1201
|
|
98
79
|
anemoi/datasets/create/sources/zenodo.py,sha256=KEetFEk5GzGFpoos8rbBQBTa2XElWG7oTYjfZXgbu0Q,2065
|
|
99
80
|
anemoi/datasets/create/sources/xarray_support/README.md,sha256=56olM9Jh0vI0_bU9GI-IqbBcz4DZXWONqvdzN_VeAFE,78
|
|
100
|
-
anemoi/datasets/create/sources/xarray_support/__init__.py,sha256=
|
|
101
|
-
anemoi/datasets/create/sources/xarray_support/coordinates.py,sha256=
|
|
102
|
-
anemoi/datasets/create/sources/xarray_support/field.py,sha256=
|
|
81
|
+
anemoi/datasets/create/sources/xarray_support/__init__.py,sha256=X-Th4__2fVciyLqCUQU2mwYt4dph3l1_VH837iDeuqI,4714
|
|
82
|
+
anemoi/datasets/create/sources/xarray_support/coordinates.py,sha256=dAwkIChEwhy7XY64BsXeRQOpcShQRufhsJROoUk68gY,11179
|
|
83
|
+
anemoi/datasets/create/sources/xarray_support/field.py,sha256=1iLAMPpsYxzGuB4pqXA0TwEJQCCZDPFiiojfzFjnkzU,6280
|
|
103
84
|
anemoi/datasets/create/sources/xarray_support/fieldlist.py,sha256=UyUljq2Ax-PpQ-bvG4Dsi_lkZucuPgCy120EadDeUMU,8271
|
|
104
|
-
anemoi/datasets/create/sources/xarray_support/flavour.py,sha256=
|
|
85
|
+
anemoi/datasets/create/sources/xarray_support/flavour.py,sha256=oA5pYwe9HUHwgH09PgTYhJFSMmsOfRVsIEQvlVfCfM4,33366
|
|
105
86
|
anemoi/datasets/create/sources/xarray_support/grid.py,sha256=lsE8bQwBH9pflzvsJ89Z6ExYPdHJd54xorMNzL2gTd0,6181
|
|
106
87
|
anemoi/datasets/create/sources/xarray_support/metadata.py,sha256=OJ35Y4m9BpPmnrabD9qiuHUEfejc6YfTIWPm8prHokk,10876
|
|
107
|
-
anemoi/datasets/create/sources/xarray_support/patch.py,sha256=
|
|
88
|
+
anemoi/datasets/create/sources/xarray_support/patch.py,sha256=8NHSDO2lLcRPBvmuPyQ5foAkYHFVFNWJhMVeXNs6x7o,3027
|
|
108
89
|
anemoi/datasets/create/sources/xarray_support/time.py,sha256=Y_lZTUOXWJH4jcSgyL4WTDwrtPXi7MUiumaXfRoqqAY,12486
|
|
109
|
-
anemoi/datasets/create/sources/xarray_support/variable.py,sha256=
|
|
90
|
+
anemoi/datasets/create/sources/xarray_support/variable.py,sha256=zNXTNh58BLg9atnZJauto9z0e_gNRjreo4eUntqlJP8,9245
|
|
110
91
|
anemoi/datasets/create/statistics/__init__.py,sha256=_BuPcuUrwQAEcMQVds93EV9M5ys2ao8jCWKV4OVoSSA,18291
|
|
111
92
|
anemoi/datasets/create/statistics/summary.py,sha256=JdtChTmsr1Y958_nka36HltTbeZkawuGbprbfZD7Ux8,4790
|
|
112
93
|
anemoi/datasets/data/__init__.py,sha256=wzhk_7VQImge12Xkg99xuiFOC7DAjBW1mu446y0Iq60,3057
|
|
113
|
-
anemoi/datasets/data/complement.py,sha256=
|
|
94
|
+
anemoi/datasets/data/complement.py,sha256=Sbn6ajVLcLOW_1xqPNCCteV7Et_1p2CLSZkQFT_oyYI,11991
|
|
114
95
|
anemoi/datasets/data/concat.py,sha256=eY5rujcdal00BJCv00mKSlxp0FKVvPQd7uqrBnL9fj4,8996
|
|
115
|
-
anemoi/datasets/data/dataset.py,sha256=
|
|
96
|
+
anemoi/datasets/data/dataset.py,sha256=it02CVYdzU9QXSkU9jVR9BTWv-JDMlnH0ujyIgf40pM,32326
|
|
116
97
|
anemoi/datasets/data/debug.css,sha256=z2X_ZDSnZ9C3pyZPWnQiEyAxuMxUaxJxET4oaCImTAQ,211
|
|
117
98
|
anemoi/datasets/data/debug.py,sha256=hVa1jAQ-TK7CoKJNyyUC0eZPobFG-FpkVXEaO_3B-MA,10796
|
|
118
99
|
anemoi/datasets/data/ensemble.py,sha256=-36kMjuT2y5jUeSnjCRTCyE4um6DLAADBVSKSTkHZZg,5352
|
|
119
100
|
anemoi/datasets/data/fill_missing.py,sha256=ceONpzD-PWLMTtG4WOw6USw-Cd1O55VYzfpAiEsROK8,8797
|
|
120
|
-
anemoi/datasets/data/forwards.py,sha256=
|
|
101
|
+
anemoi/datasets/data/forwards.py,sha256=pFGTBgUfaUvOtcBQVweDVNpmONYc-apk-Rq9U2lpVvc,20117
|
|
121
102
|
anemoi/datasets/data/grids.py,sha256=8fZSitKTStBT-fsQWwTXiTgyrmYjh_jQ5dJi1U3lRz0,22056
|
|
122
103
|
anemoi/datasets/data/indexing.py,sha256=DasVd1j0FB0iTw6eqvhiLka4ztf2zJcI5NgWxmtxzCw,7526
|
|
123
104
|
anemoi/datasets/data/interpolate.py,sha256=-kSYwdjKH7zJtfITdbqdH6KyOFGVZDyHg4TaFk9shEI,9279
|
|
124
105
|
anemoi/datasets/data/join.py,sha256=ZEHOsCecKBkKKH-vki404Sm7r7cV368ECO7PXPpay3s,9212
|
|
125
106
|
anemoi/datasets/data/masked.py,sha256=giOvHLcGbLf6mZPqZjAxQd1kvydmkepDFh2EqchXLTQ,10213
|
|
126
107
|
anemoi/datasets/data/merge.py,sha256=SvQhJHf-C-Kn7hEjFqomienk-epPPjMtoccRNCJpMtw,8733
|
|
127
|
-
anemoi/datasets/data/misc.py,sha256=
|
|
108
|
+
anemoi/datasets/data/misc.py,sha256=x9E8qDqd7Z7blkva6Giu7RtzF0PtKeL8YSzpxvhPw1k,22899
|
|
128
109
|
anemoi/datasets/data/missing.py,sha256=ogfVDponbs0bGHMxps32Fj_fq4gT26R70yEMco5gdK8,12593
|
|
110
|
+
anemoi/datasets/data/padded.py,sha256=BYTLDNRatjEB2lri9IlLcMsFgxnQT2F5rZ0XxExjE7c,7881
|
|
129
111
|
anemoi/datasets/data/rescale.py,sha256=nGfJ5tWCncMJ7NMXkLbmt6z0ELrD6FxpbjJreQ3W91g,7004
|
|
130
112
|
anemoi/datasets/data/select.py,sha256=Xs6uOzJL0CoOGeWA_E5_ukr8Jav2kXbZ41vhk7Vr8PE,8277
|
|
131
113
|
anemoi/datasets/data/statistics.py,sha256=Hi9tPtNPBFaD0jcBa5vxoZp1radEMS-1RXwA3RbWrK8,3173
|
|
132
|
-
anemoi/datasets/data/stores.py,sha256=
|
|
133
|
-
anemoi/datasets/data/subset.py,sha256=
|
|
114
|
+
anemoi/datasets/data/stores.py,sha256=gQicl-VcvmxgWf8qtSpnCSwvatF8xv1lV_WFQRMpPWc,18282
|
|
115
|
+
anemoi/datasets/data/subset.py,sha256=hEYRSc1QOdtJJpIWy85ZuZ9a6UNk-Eo9vAYsgRg2UPs,8950
|
|
134
116
|
anemoi/datasets/data/unchecked.py,sha256=c7YIa9gFxOOjqyyOqrhGaFWQ1pN7_0W1Q8ABUTkI8e8,7311
|
|
135
117
|
anemoi/datasets/data/xy.py,sha256=-jWzYismrK3eI3YCKIBpU1BCmraRncmVn0_2IUY--lk,7579
|
|
118
|
+
anemoi/datasets/data/observations/__init__.py,sha256=zpYL-WEws9FZ6QwAfj8kcZXL0d7uZuSrMTxZ6wY3npg,11260
|
|
119
|
+
anemoi/datasets/data/observations/legacy_obs_dataset.py,sha256=6Aj32XWmNmCsd0azhuB6aDcpDaJ7lRdgJ9KWlU9fXxs,7342
|
|
120
|
+
anemoi/datasets/data/observations/multi.py,sha256=nDeN99LRNVyjUCNTFCL3R7iAQNsf1tSen-fSw9-VsiY,2184
|
|
121
|
+
anemoi/datasets/data/records/__init__.py,sha256=lWJBukNArbBBdcfG8bh5MzJoSOjk5Fi8zcwHWo5a0I8,12405
|
|
122
|
+
anemoi/datasets/data/records/backends/__init__.py,sha256=KAbzMflpo9ZFAComabAdYTNgbtr1mrrSFBQaUlQoLfs,5247
|
|
136
123
|
anemoi/datasets/dates/__init__.py,sha256=pEArHDQ7w5E0WC8Vvf9ypyKSdm6gnhoN9TmooITB7C4,13617
|
|
137
124
|
anemoi/datasets/dates/groups.py,sha256=IOveL6IyTXZwEdXZEnRAnpu9pINY95VN7LzcpLfJ09E,10105
|
|
138
125
|
anemoi/datasets/utils/__init__.py,sha256=hCW0QcLHJmE-C1r38P27_ZOvCLNewex5iQEtZqx2ckI,393
|
|
139
|
-
anemoi_datasets-0.5.
|
|
140
|
-
anemoi_datasets-0.5.
|
|
141
|
-
anemoi_datasets-0.5.
|
|
142
|
-
anemoi_datasets-0.5.
|
|
143
|
-
anemoi_datasets-0.5.
|
|
144
|
-
anemoi_datasets-0.5.
|
|
126
|
+
anemoi_datasets-0.5.26.dist-info/licenses/LICENSE,sha256=8HznKF1Vi2IvfLsKNE5A2iVyiri3pRjRPvPC9kxs6qk,11354
|
|
127
|
+
anemoi_datasets-0.5.26.dist-info/METADATA,sha256=o_5TIgYbXJxVZraRVkbPKqF6hRsI2Kkgmb4yL8I9lsk,16153
|
|
128
|
+
anemoi_datasets-0.5.26.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
129
|
+
anemoi_datasets-0.5.26.dist-info/entry_points.txt,sha256=yR-o-4uiPEA_GLBL81SkMYnUoxq3CAV3hHulQiRtGG0,66
|
|
130
|
+
anemoi_datasets-0.5.26.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
|
|
131
|
+
anemoi_datasets-0.5.26.dist-info/RECORD,,
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# (C) Copyright 2024 Anemoi contributors.
|
|
2
|
-
#
|
|
3
|
-
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
4
|
-
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
5
|
-
#
|
|
6
|
-
# In applying this licence, ECMWF does not waive the privileges and immunities
|
|
7
|
-
# granted to it by virtue of its status as an intergovernmental organisation
|
|
8
|
-
# nor does it submit to any jurisdiction.
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
from typing import Any
|
|
12
|
-
|
|
13
|
-
from anemoi.utils.registry import Registry
|
|
14
|
-
|
|
15
|
-
filter_registry = Registry(__name__)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def create_filter(context: Any, config: Any) -> Any:
|
|
19
|
-
"""Create a filter based on the provided configuration.
|
|
20
|
-
|
|
21
|
-
Parameters
|
|
22
|
-
----------
|
|
23
|
-
context : Any
|
|
24
|
-
The context in which the filter is created.
|
|
25
|
-
config : Any
|
|
26
|
-
The configuration for the filter.
|
|
27
|
-
|
|
28
|
-
Returns
|
|
29
|
-
-------
|
|
30
|
-
Any
|
|
31
|
-
The created filter.
|
|
32
|
-
"""
|
|
33
|
-
return filter_registry.from_config(config, context)
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# (C) Copyright 2024 Anemoi contributors.
|
|
2
|
-
#
|
|
3
|
-
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
4
|
-
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
5
|
-
#
|
|
6
|
-
# In applying this licence, ECMWF does not waive the privileges and immunities
|
|
7
|
-
# granted to it by virtue of its status as an intergovernmental organisation
|
|
8
|
-
# nor does it submit to any jurisdiction.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
from typing import Any
|
|
12
|
-
|
|
13
|
-
import earthkit.data as ekd
|
|
14
|
-
from anemoi.transform.fields import new_empty_fieldlist
|
|
15
|
-
|
|
16
|
-
from .legacy import legacy_filter
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@legacy_filter(__file__)
|
|
20
|
-
def execute(context: Any, input: ekd.FieldList, **kwargs: Any) -> ekd.FieldList:
|
|
21
|
-
"""Create a pipeline that returns an empty result.
|
|
22
|
-
|
|
23
|
-
Parameters
|
|
24
|
-
----------
|
|
25
|
-
context : Any
|
|
26
|
-
The context in which the function is executed.
|
|
27
|
-
input : List[Any]
|
|
28
|
-
List of input fields.
|
|
29
|
-
**kwargs : Any
|
|
30
|
-
Additional keyword arguments.
|
|
31
|
-
|
|
32
|
-
Returns
|
|
33
|
-
-------
|
|
34
|
-
Any
|
|
35
|
-
An empty result.
|
|
36
|
-
"""
|
|
37
|
-
return new_empty_fieldlist()
|