anemoi-datasets 0.5.27__py3-none-any.whl → 0.5.29__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.
Files changed (72) hide show
  1. anemoi/datasets/_version.py +2 -2
  2. anemoi/datasets/commands/recipe/__init__.py +93 -0
  3. anemoi/datasets/commands/recipe/format.py +55 -0
  4. anemoi/datasets/commands/recipe/migrate.py +555 -0
  5. anemoi/datasets/create/__init__.py +46 -13
  6. anemoi/datasets/create/config.py +52 -53
  7. anemoi/datasets/create/input/__init__.py +43 -63
  8. anemoi/datasets/create/input/action.py +296 -236
  9. anemoi/datasets/create/input/context/__init__.py +71 -0
  10. anemoi/datasets/create/input/context/field.py +54 -0
  11. anemoi/datasets/create/input/data_sources.py +2 -1
  12. anemoi/datasets/create/input/misc.py +0 -71
  13. anemoi/datasets/create/input/repeated_dates.py +0 -114
  14. anemoi/datasets/create/input/result/__init__.py +17 -0
  15. anemoi/datasets/create/input/{result.py → result/field.py} +10 -92
  16. anemoi/datasets/create/sources/accumulate.py +517 -0
  17. anemoi/datasets/create/sources/accumulate_utils/__init__.py +8 -0
  18. anemoi/datasets/create/sources/accumulate_utils/covering_intervals.py +221 -0
  19. anemoi/datasets/create/sources/accumulate_utils/field_to_interval.py +149 -0
  20. anemoi/datasets/create/sources/accumulate_utils/interval_generators.py +321 -0
  21. anemoi/datasets/create/sources/anemoi_dataset.py +46 -42
  22. anemoi/datasets/create/sources/constants.py +39 -38
  23. anemoi/datasets/create/sources/empty.py +26 -22
  24. anemoi/datasets/create/sources/forcings.py +29 -28
  25. anemoi/datasets/create/sources/grib.py +92 -72
  26. anemoi/datasets/create/sources/grib_index.py +102 -54
  27. anemoi/datasets/create/sources/hindcasts.py +56 -55
  28. anemoi/datasets/create/sources/legacy.py +10 -62
  29. anemoi/datasets/create/sources/mars.py +159 -154
  30. anemoi/datasets/create/sources/netcdf.py +28 -24
  31. anemoi/datasets/create/sources/opendap.py +28 -24
  32. anemoi/datasets/create/sources/recentre.py +42 -41
  33. anemoi/datasets/create/sources/repeated_dates.py +44 -0
  34. anemoi/datasets/create/sources/source.py +26 -48
  35. anemoi/datasets/create/sources/xarray_support/__init__.py +30 -24
  36. anemoi/datasets/create/sources/xarray_support/coordinates.py +1 -4
  37. anemoi/datasets/create/sources/xarray_support/field.py +4 -4
  38. anemoi/datasets/create/sources/xarray_support/flavour.py +2 -2
  39. anemoi/datasets/create/sources/xarray_support/patch.py +178 -5
  40. anemoi/datasets/create/sources/xarray_zarr.py +28 -24
  41. anemoi/datasets/create/sources/zenodo.py +43 -39
  42. anemoi/datasets/create/utils.py +0 -42
  43. anemoi/datasets/data/complement.py +26 -17
  44. anemoi/datasets/data/dataset.py +12 -0
  45. anemoi/datasets/data/grids.py +0 -152
  46. anemoi/datasets/data/masked.py +74 -13
  47. anemoi/datasets/data/missing.py +5 -0
  48. anemoi/datasets/data/rolling_average.py +141 -0
  49. anemoi/datasets/data/stores.py +7 -9
  50. anemoi/datasets/dates/__init__.py +2 -0
  51. anemoi/datasets/dumper.py +76 -0
  52. anemoi/datasets/grids.py +1 -178
  53. anemoi/datasets/schemas/recipe.json +131 -0
  54. {anemoi_datasets-0.5.27.dist-info → anemoi_datasets-0.5.29.dist-info}/METADATA +9 -6
  55. {anemoi_datasets-0.5.27.dist-info → anemoi_datasets-0.5.29.dist-info}/RECORD +59 -57
  56. {anemoi_datasets-0.5.27.dist-info → anemoi_datasets-0.5.29.dist-info}/WHEEL +1 -1
  57. anemoi/datasets/create/filter.py +0 -47
  58. anemoi/datasets/create/input/concat.py +0 -161
  59. anemoi/datasets/create/input/context.py +0 -86
  60. anemoi/datasets/create/input/empty.py +0 -53
  61. anemoi/datasets/create/input/filter.py +0 -117
  62. anemoi/datasets/create/input/function.py +0 -232
  63. anemoi/datasets/create/input/join.py +0 -129
  64. anemoi/datasets/create/input/pipe.py +0 -66
  65. anemoi/datasets/create/input/step.py +0 -173
  66. anemoi/datasets/create/input/template.py +0 -161
  67. anemoi/datasets/create/sources/accumulations.py +0 -1062
  68. anemoi/datasets/create/sources/accumulations2.py +0 -647
  69. anemoi/datasets/create/sources/tendencies.py +0 -198
  70. {anemoi_datasets-0.5.27.dist-info → anemoi_datasets-0.5.29.dist-info}/entry_points.txt +0 -0
  71. {anemoi_datasets-0.5.27.dist-info → anemoi_datasets-0.5.29.dist-info}/licenses/LICENSE +0 -0
  72. {anemoi_datasets-0.5.27.dist-info → anemoi_datasets-0.5.29.dist-info}/top_level.txt +0 -0
anemoi/datasets/grids.py CHANGED
@@ -8,11 +8,11 @@
8
8
  # nor does it submit to any jurisdiction.
9
9
 
10
10
 
11
- import base64
12
11
  import logging
13
12
  from typing import Any
14
13
 
15
14
  import numpy as np
15
+ from anemoi.utils.grids import latlon_to_xyz
16
16
  from numpy.typing import NDArray
17
17
 
18
18
  LOG = logging.getLogger(__name__)
@@ -88,71 +88,6 @@ def plot_mask(
88
88
  plt.savefig(path + "-global-zoomed.png")
89
89
 
90
90
 
91
- # TODO: Use the one from anemoi.utils.grids instead
92
- # from anemoi.utils.grids import ...
93
- def xyz_to_latlon(x: NDArray[Any], y: NDArray[Any], z: NDArray[Any]) -> tuple[NDArray[Any], NDArray[Any]]:
94
- """Convert Cartesian coordinates to latitude and longitude.
95
-
96
- Parameters
97
- ----------
98
- x : NDArray[Any]
99
- X coordinates.
100
- y : NDArray[Any]
101
- Y coordinates.
102
- z : NDArray[Any]
103
- Z coordinates.
104
-
105
- Returns
106
- -------
107
- Tuple[NDArray[Any], NDArray[Any]]
108
- Latitude and longitude coordinates.
109
- """
110
- return (
111
- np.rad2deg(np.arcsin(np.minimum(1.0, np.maximum(-1.0, z)))),
112
- np.rad2deg(np.arctan2(y, x)),
113
- )
114
-
115
-
116
- # TODO: Use the one from anemoi.utils.grids instead
117
- # from anemoi.utils.grids import ...
118
- def latlon_to_xyz(
119
- lat: NDArray[Any], lon: NDArray[Any], radius: float = 1.0
120
- ) -> tuple[NDArray[Any], NDArray[Any], NDArray[Any]]:
121
- """Convert latitude and longitude to Cartesian coordinates.
122
-
123
- Parameters
124
- ----------
125
- lat : NDArray[Any]
126
- Latitude coordinates.
127
- lon : NDArray[Any]
128
- Longitude coordinates.
129
- radius : float, optional
130
- Radius of the sphere. Defaults to 1.0.
131
-
132
- Returns
133
- -------
134
- Tuple[NDArray[Any], NDArray[Any], NDArray[Any]]
135
- X, Y, and Z coordinates.
136
- """
137
- # https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates
138
- # We assume that the Earth is a sphere of radius 1 so N(phi) = 1
139
- # We assume h = 0
140
- #
141
- phi = np.deg2rad(lat)
142
- lda = np.deg2rad(lon)
143
-
144
- cos_phi = np.cos(phi)
145
- cos_lda = np.cos(lda)
146
- sin_phi = np.sin(phi)
147
- sin_lda = np.sin(lda)
148
-
149
- x = cos_phi * cos_lda * radius
150
- y = cos_phi * sin_lda * radius
151
- z = sin_phi * radius
152
-
153
- return x, y, z
154
-
155
-
156
91
  class Triangle3D:
157
92
  """A class to represent a 3D triangle and perform intersection tests with rays."""
158
93
 
@@ -509,92 +444,6 @@ def outline(lats: NDArray[Any], lons: NDArray[Any], neighbours: int = 5) -> list
509
444
  return outside
510
445
 
511
446
 
512
- def deserialise_mask(encoded: str) -> NDArray[Any]:
513
- """Deserialise a mask from a base64 encoded string.
514
-
515
- Parameters
516
- ----------
517
- encoded : str
518
- Base64 encoded string.
519
-
520
- Returns
521
- -------
522
- NDArray[Any]
523
- Deserialised mask array.
524
- """
525
- import pickle
526
- import zlib
527
-
528
- packed = pickle.loads(zlib.decompress(base64.b64decode(encoded)))
529
-
530
- mask = []
531
- value = False
532
- for count in packed:
533
- mask.extend([value] * count)
534
- value = not value
535
- return np.array(mask, dtype=bool)
536
-
537
-
538
- def _serialise_mask(mask: NDArray[Any]) -> str:
539
- """Serialise a mask to a base64 encoded string.
540
-
541
- Parameters
542
- ----------
543
- mask : NDArray[Any]
544
- Mask array.
545
-
546
- Returns
547
- -------
548
- str
549
- Base64 encoded string.
550
- """
551
- import pickle
552
- import zlib
553
-
554
- assert len(mask.shape) == 1
555
- assert len(mask)
556
-
557
- packed = []
558
- last = mask[0]
559
- count = 1
560
-
561
- for value in mask[1:]:
562
- if value == last:
563
- count += 1
564
- else:
565
- packed.append(count)
566
- last = value
567
- count = 1
568
-
569
- packed.append(count)
570
-
571
- # We always start with an 'off' value
572
- # So if the first value is 'on', we need to add a zero
573
- if mask[0]:
574
- packed.insert(0, 0)
575
-
576
- return base64.b64encode(zlib.compress(pickle.dumps(packed))).decode("utf-8")
577
-
578
-
579
- def serialise_mask(mask: NDArray[Any]) -> str:
580
- """Serialise a mask and ensure it can be deserialised.
581
-
582
- Parameters
583
- ----------
584
- mask : NDArray[Any]
585
- Mask array.
586
-
587
- Returns
588
- -------
589
- str
590
- Base64 encoded string.
591
- """
592
- result = _serialise_mask(mask)
593
- # Make sure we can deserialise it
594
- assert np.all(mask == deserialise_mask(result))
595
- return result
596
-
597
-
598
447
  def nearest_grid_points(
599
448
  source_latitudes: NDArray[Any],
600
449
  source_longitudes: NDArray[Any],
@@ -640,29 +489,3 @@ def nearest_grid_points(
640
489
  else:
641
490
  distances, indices = cKDTree(source_points).query(target_points, k=k, distance_upper_bound=max_distance)
642
491
  return distances, indices
643
-
644
-
645
- if __name__ == "__main__":
646
- global_lats, global_lons = np.meshgrid(
647
- np.linspace(90, -90, 90),
648
- np.linspace(-180, 180, 180),
649
- )
650
- global_lats = global_lats.flatten()
651
- global_lons = global_lons.flatten()
652
-
653
- lats, lons = np.meshgrid(
654
- np.linspace(50, 40, 100),
655
- np.linspace(-10, 15, 100),
656
- )
657
- lats = lats.flatten()
658
- lons = lons.flatten()
659
-
660
- mask = cutout_mask(lats, lons, global_lats, global_lons, cropping_distance=5.0)
661
-
662
- import matplotlib.pyplot as plt
663
-
664
- fig = plt.figure(figsize=(10, 5))
665
- plt.scatter(global_lons, global_lats, s=0.01, marker="o", c="r")
666
- plt.scatter(global_lons[mask], global_lats[mask], s=0.1, c="k")
667
- # plt.scatter(lons, lats, s=0.01)
668
- plt.savefig("cutout.png")
@@ -0,0 +1,131 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "$id": "https://ecmwf.int/anemoi-datasets-recipe.schema.json",
5
+ "title": "Product",
6
+ "description": "Anemoi datasets recipe configuration",
7
+ "additionalProperties": false,
8
+ "$defs": {
9
+ "source-or-filter": {
10
+ "type": "object",
11
+ "minProperties": 1,
12
+ "maxProperties": 1
13
+ },
14
+ "pipe": {
15
+ "type": "array",
16
+ "items": {
17
+ "$ref": "#/$defs/input-object"
18
+ }
19
+ },
20
+ "join": {
21
+ "type": "array",
22
+ "items": {
23
+ "$ref": "#/$defs/input-object"
24
+ }
25
+ },
26
+ "concat": {
27
+ "type": "array",
28
+ "items": {
29
+ "type": "object",
30
+ "minProperties": 2,
31
+ "maxProperties": 2,
32
+ "required": [
33
+ "dates"
34
+ ]
35
+ }
36
+ },
37
+ "input-object": {
38
+ "oneOf": [
39
+ {
40
+ "$ref": "#/$defs/pipe"
41
+ },
42
+ {
43
+ "$ref": "#/$defs/join"
44
+ },
45
+ {
46
+ "$ref": "#/$defs/concat"
47
+ },
48
+ {
49
+ "$ref": "#/$defs/source-or-filter"
50
+ }
51
+ ]
52
+ }
53
+ },
54
+ "properties": {
55
+ "env": {
56
+ "type": "object"
57
+ },
58
+ "description": {
59
+ "type": "string"
60
+ },
61
+ "name": {
62
+ "type": "string"
63
+ },
64
+ "licence": {
65
+ "type": "string"
66
+ },
67
+ "attribution": {
68
+ "type": "string"
69
+ },
70
+ "dates": {
71
+ "type": "object",
72
+ "required": [
73
+ "start",
74
+ "end"
75
+ ],
76
+ "properties": {
77
+ "start": {
78
+ "type": "string",
79
+ "format": "date"
80
+ },
81
+ "end": {
82
+ "type": "string",
83
+ "format": "date"
84
+ },
85
+ "frequency": {
86
+ "type": [
87
+ "integer",
88
+ "string"
89
+ ]
90
+ },
91
+ "group_by": {
92
+ "type": [
93
+ "integer",
94
+ "string"
95
+ ]
96
+ }
97
+ }
98
+ },
99
+ "input": {
100
+ "$ref": "#/$defs/input-object"
101
+ },
102
+ "data_sources": {
103
+ "type": "object",
104
+ "patternProperties": {
105
+ "^[a-zA-Z_][a-zA-Z0-9_]*$": {
106
+ "$ref": "#/$defs/input-object"
107
+ }
108
+ },
109
+ "additionalProperties": false
110
+ },
111
+ "output": {
112
+ "type": "object"
113
+ },
114
+ "statistics": {
115
+ "type": "object"
116
+ },
117
+ "build": {
118
+ "type": "object"
119
+ },
120
+ "common": {
121
+ "type": "object"
122
+ },
123
+ "platform": {
124
+ "type": "object"
125
+ }
126
+ },
127
+ "required": [
128
+ "dates",
129
+ "input"
130
+ ]
131
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anemoi-datasets
3
- Version: 0.5.27
3
+ Version: 0.5.29
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
@@ -216,20 +216,23 @@ Classifier: Intended Audience :: Developers
216
216
  Classifier: License :: OSI Approved :: Apache Software License
217
217
  Classifier: Operating System :: OS Independent
218
218
  Classifier: Programming Language :: Python :: 3 :: Only
219
- Classifier: Programming Language :: Python :: 3.10
220
219
  Classifier: Programming Language :: Python :: 3.11
221
220
  Classifier: Programming Language :: Python :: 3.12
222
- Classifier: Programming Language :: Python :: 3.13
223
221
  Classifier: Programming Language :: Python :: Implementation :: CPython
224
222
  Classifier: Programming Language :: Python :: Implementation :: PyPy
225
- Requires-Python: >=3.10
223
+ Requires-Python: >=3.11
226
224
  License-File: LICENSE
227
- Requires-Dist: anemoi-transform>=0.1.10
228
- Requires-Dist: anemoi-utils[provenance]>=0.4.32
225
+ Requires-Dist: anemoi-transform>=0.1.12
226
+ Requires-Dist: anemoi-utils>=0.4.26
229
227
  Requires-Dist: cfunits
228
+ Requires-Dist: glom
229
+ Requires-Dist: jsonschema
230
230
  Requires-Dist: numcodecs<0.16
231
231
  Requires-Dist: numpy
232
+ Requires-Dist: pytest>=8.4.1
233
+ Requires-Dist: pytest-xdist>=3.7
232
234
  Requires-Dist: pyyaml
235
+ Requires-Dist: ruamel-yaml>=0.16
233
236
  Requires-Dist: semantic-version
234
237
  Requires-Dist: tqdm
235
238
  Requires-Dist: zarr<=2.18.4
@@ -1,8 +1,9 @@
1
1
  anemoi/datasets/__init__.py,sha256=SPozLbLUFiQ9rtFVRlgeOobFUiFzj-jGo85Tt4YMJp4,1041
2
2
  anemoi/datasets/__main__.py,sha256=ErwAqE3rBc7OaNO2JRsEOhWpB8ldjAt7BFSuRhbnlqQ,936
3
- anemoi/datasets/_version.py,sha256=NpQwstz_sufQbfjY26eRaeRp1kf0fn1y-L32HfoDMIY,706
3
+ anemoi/datasets/_version.py,sha256=xSW5Ca_VuAUJfDmwl-rcc_fibXugpSpq_USIiH1ouFM,706
4
4
  anemoi/datasets/check.py,sha256=hbEMUurl2IjZbp56dBgOfAEsAmmgymgRM5ySaMJSTdk,2755
5
- anemoi/datasets/grids.py,sha256=04NFEcBz71n7caiimUjHhyh-1IHYoj5D-edZFHHI8dA,18157
5
+ anemoi/datasets/dumper.py,sha256=Jud4qGooSQjJcPHsJrrYiJ909nM-hvJGXEDK4kfZ0k4,2505
6
+ anemoi/datasets/grids.py,sha256=ugJZznQ4frWH2qlYzV5ds4QLbzsGHwI_q5erVxocFxE,13926
6
7
  anemoi/datasets/testing.py,sha256=_vUNMjuWjAm5a7qqtEASHWi-OzpIa52_lHDbqvxnhMQ,4462
7
8
  anemoi/datasets/validate.py,sha256=Fnshpn27YwaXoSdj8-fviAtxuvUc0maGSna8U5Z08bA,18300
8
9
  anemoi/datasets/commands/__init__.py,sha256=O5W3yHZywRoAqmRUioAr3zMCh0hGVV18wZYGvc00ioM,698
@@ -24,98 +25,98 @@ anemoi/datasets/commands/patch.py,sha256=Q9FDabWxlvK1QaeH4D9zhNpoSGB4h7EliWgcV76
24
25
  anemoi/datasets/commands/publish.py,sha256=7YusLCWYdVLuexZzvyh8ztYoBOBzVmve3uJs-XKeMAE,1469
25
26
  anemoi/datasets/commands/scan.py,sha256=6Uoyd7WkM4ypoqmZargXIG50uRKzHE3AlvkAr7sCBy4,4262
26
27
  anemoi/datasets/commands/validate.py,sha256=mNs29zmPV4glaOC1uPHZsSsv_SWyg1JciR76fmE1xr0,1871
28
+ anemoi/datasets/commands/recipe/__init__.py,sha256=BfA8dKkTQexsPETfi7Wd_Ly0J34g43AL2gxKYHjbD1s,2904
29
+ anemoi/datasets/commands/recipe/format.py,sha256=roq7cXu-7ymjcxQ3IwLOV7beQkJzXvxLXyzquLYxYGU,1244
30
+ anemoi/datasets/commands/recipe/migrate.py,sha256=tBEj9E2nltxrFsvmWeiddg630_YIHTR2E4xToXDqx4M,15547
27
31
  anemoi/datasets/compute/__init__.py,sha256=hCW0QcLHJmE-C1r38P27_ZOvCLNewex5iQEtZqx2ckI,393
28
32
  anemoi/datasets/compute/recentre.py,sha256=XEyXZIIbSpmmSfuQWikLd562Ml48VdhWHAFK6xGtbeI,5835
29
- anemoi/datasets/create/__init__.py,sha256=j5WRUeQZd_3wK80WrnNiNdDGCzTvg33yMGW2FZD2xT0,50715
33
+ anemoi/datasets/create/__init__.py,sha256=ZX7OStgc0ioSVnxdqjZW2EQfnpbgs8Bti8q0y98S-Is,51399
30
34
  anemoi/datasets/create/check.py,sha256=w8_AhuWxqRjI1c0SdGgfFHcW5rYmBVQuyoS3ncsF9TI,10724
31
35
  anemoi/datasets/create/chunks.py,sha256=MBEXTClQyOuYtl96ho8IqQr75hpnWbKe5Li5l6nx_48,3994
32
- anemoi/datasets/create/config.py,sha256=PjdX-B6OMWrPgyrOAsv1N06PFzG0QaUXs48QJc62bJs,13312
33
- anemoi/datasets/create/filter.py,sha256=EaBp3AbGERY8aFs08fZ1eioAclkc0Gy2ucQawWTolBc,1356
36
+ anemoi/datasets/create/config.py,sha256=b2Efl7pNYXz3PyAWTSnGakeHTSbiA5BSDawQnpVU6sE,13276
34
37
  anemoi/datasets/create/patch.py,sha256=4852mUbEfM1GCUxIUq56gr6RI_lk8kuWCkG8N80OOqc,5367
35
38
  anemoi/datasets/create/persistent.py,sha256=L8Ttk8J4rMWRYgzkFGb5QN4h0tDSizYBXNflCWoEZow,7779
36
39
  anemoi/datasets/create/size.py,sha256=2AaD8toBkGO_l8m8UaYX5LSTS4UkU5ULdZAREXZ1JbE,1399
37
40
  anemoi/datasets/create/source.py,sha256=xoV8uH_y6aBSE4_PWuy5w7Q7cX-tGm8e-2xC9flSAT4,1336
38
41
  anemoi/datasets/create/testing.py,sha256=gANTsosxkUoA44azuXQ2I4lYNopDfFz_ja2oUGUzfNk,73
39
42
  anemoi/datasets/create/typing.py,sha256=sy10Tzq6F8zd9jBe4154X60VFAhuZEweOeSo3AgGuDw,460
40
- anemoi/datasets/create/utils.py,sha256=q3bjn1CTN5wytfXMkwKe1qdNpUvqzL7A7gBB22-pdtk,5543
43
+ anemoi/datasets/create/utils.py,sha256=FZthJUbAQBo-uizcZPgDnTTKdzchfU7JtRuZIxesqN8,4233
41
44
  anemoi/datasets/create/writer.py,sha256=nZBJvYZ63g_c9FfL65bAeG10Y6bX2R7CgtZvY0kW3fI,2203
42
45
  anemoi/datasets/create/zarr.py,sha256=a_hqvvdiDvl3poEEic-F1LlcwCeo7SvcLLS0sGkiats,9549
43
- anemoi/datasets/create/input/__init__.py,sha256=6j4kcbWNBol8Jh5o6jqtzCBxNnYFd_9eXr5-s8H8pN4,2855
44
- anemoi/datasets/create/input/action.py,sha256=66I-fw4-YQrubvmUNSw3cVzTyqdc0MjjhPyjpVdEUGM,7730
45
- anemoi/datasets/create/input/concat.py,sha256=n_5lyffbSa3KCnM_7YmDes88bP0ieBxfq4PjvcYfcX4,5276
46
- anemoi/datasets/create/input/context.py,sha256=oczpLx7YJ5J_gY-VwCZpSGR0CV0otYfuxomxwlduWFA,2622
47
- anemoi/datasets/create/input/data_sources.py,sha256=EpHnGDHj9AAicqm4VJsaULPSWzIP-hsB3KASJgvSPLY,4306
48
- anemoi/datasets/create/input/empty.py,sha256=E_ZbB1q_wVUY0yKPXEHUiVtL8U2cikqbaZgJv81pZnE,1510
49
- anemoi/datasets/create/input/filter.py,sha256=v_pS8-xmXz1B5O4NbdUmxfAQWNNmqtNETw-L_nVIweE,3289
50
- anemoi/datasets/create/input/function.py,sha256=T5r94FfE_JYxRExtDv1pkoWzuXqZIbKVzm2aIvqo45g,6892
51
- anemoi/datasets/create/input/join.py,sha256=EGLljUKtMs6cGt17ICv8s-esmt7vnZyvs-sATYA6acQ,3992
52
- anemoi/datasets/create/input/misc.py,sha256=_2Y2r3o0VgNSss01AsZUh-rfQCv1hCa1KDagC9gYHZI,3292
53
- anemoi/datasets/create/input/pipe.py,sha256=-tCz161IwXoI8pl1hilA9T_j5eHSr-sgbijFLp9HHNc,2083
54
- anemoi/datasets/create/input/repeated_dates.py,sha256=UZeRpI93tgJr13-I4BvhS2ECbkZSM0zic5s_MfYGACs,11885
55
- anemoi/datasets/create/input/result.py,sha256=0OMf9O9190JgZ3IBIpY1qbfH5Fhzzi4Uq5c0SUTG2SU,24187
56
- anemoi/datasets/create/input/step.py,sha256=ikfs4TQeuNV9qAotM85C57Lu6R1WVS4n40Lps3m9b_A,5273
57
- anemoi/datasets/create/input/template.py,sha256=O3IjT_GIdGaqjwG8_R35tMKZ9d4Tn6brPLH-t9MG-HU,4077
46
+ anemoi/datasets/create/input/__init__.py,sha256=VIfTYSxZ2fu43J5srOP3Y7UUdBvlEnOrxbwimjIoi1w,2524
47
+ anemoi/datasets/create/input/action.py,sha256=W5arVY9KhbWltnC_D2r14HBArBSdb8ElmPwnIi3iB40,9363
48
+ anemoi/datasets/create/input/data_sources.py,sha256=o3_LmnDnVIFuA_raSKlIBFeRM35tPN-v9jIVMVwL7WM,4372
49
+ anemoi/datasets/create/input/misc.py,sha256=PLJZl_C2bG3BD0ZFwBTV7Je051zExALpLtHRfKZlYWg,1630
50
+ anemoi/datasets/create/input/repeated_dates.py,sha256=gNgY4paQeuVQtjuyYQm5-ELfiO47VXlf5nCYxopXz8I,8255
58
51
  anemoi/datasets/create/input/trace.py,sha256=kVZI1eilg857sKRweGyyDZYb2IjT15a_KWpGCw-dtOU,3329
52
+ anemoi/datasets/create/input/context/__init__.py,sha256=WKdIJv6ywkw7EmSLMxD5k0R-7N9sYrAxL3MF6UieLps,2263
53
+ anemoi/datasets/create/input/context/field.py,sha256=0NWkDYqyDX90gVrBZwz7y2sbICxBp38OUmNdisMFg1U,1605
54
+ anemoi/datasets/create/input/result/__init__.py,sha256=rER6c5hoVxCwPgbrIef74h2DT-V2CqdetOzp5gGD7ww,494
55
+ anemoi/datasets/create/input/result/field.py,sha256=qcqqPEJBG7JmQFOHdFWM4RxGaEV75CWKVVols__T9zo,21607
59
56
  anemoi/datasets/create/sources/__init__.py,sha256=XNiiGaC6NbxnGfl6glPw-gTJASi3vsGKwVlfkMqYGk4,950
60
- anemoi/datasets/create/sources/accumulations.py,sha256=6qruHy66Z3xQxy86RV9V32mKsmEsT2IT2azECUTA0Ek,32360
61
- anemoi/datasets/create/sources/accumulations2.py,sha256=fOi0taVQdAvn5WFW-bNbRADhSOAfIHsPDM_cl-7n-wk,20558
62
- anemoi/datasets/create/sources/anemoi_dataset.py,sha256=2xJJTmKlv87F_2ECMKeehaeW7_oWLlDcLt8C_Prp1RI,2017
63
- anemoi/datasets/create/sources/constants.py,sha256=O2E1a5KKpH7ossA0B8B5mLyqeIrnEtzMuPf2yEJAP0Y,1480
57
+ anemoi/datasets/create/sources/accumulate.py,sha256=VKQRTFmNaaHhqQ2PwKNgZExdr8F7LHnZ2Tkfm6Ft1ZU,20183
58
+ anemoi/datasets/create/sources/anemoi_dataset.py,sha256=mu9URoxLj3zOX9FwSCvWTezQr_AgigJ2BMG5LKTy8Eg,2286
59
+ anemoi/datasets/create/sources/constants.py,sha256=rZ7pGal4ein6ta0CeyWUitgODo9Jhudx2OejPiiqiBQ,1665
64
60
  anemoi/datasets/create/sources/eccc_fstd.py,sha256=8HK38f444HcWMvBhooP0XqTfMXYoCbN_8G9RI_Ne5rc,659
65
- anemoi/datasets/create/sources/empty.py,sha256=80ld_gILTgDYAehv6yUxTYqzlWlRhCd_BJ4i3VJ7EMY,996
61
+ anemoi/datasets/create/sources/empty.py,sha256=QQzbI2NJ0Z4X9DvECKJkqDiCO_SfzpBUpfWHj-GoXOk,1152
66
62
  anemoi/datasets/create/sources/fdb.py,sha256=AkxvW7vZqJs2AbwYEzfkU5j3Udk4gTaGx2Pbwsa5qNk,4396
67
- anemoi/datasets/create/sources/forcings.py,sha256=Ff9Cowg-ofNqk2LLfVFoKTtfzvIPjIrIO5noIb-rHhQ,1198
68
- anemoi/datasets/create/sources/grib.py,sha256=-WH9_r0bKh2-ky3oXO-G0S8gkCZyGzfFNwikB4TlJZs,4151
69
- anemoi/datasets/create/sources/grib_index.py,sha256=1hrFaQzfhMv8e3nloBJKtArIBVX0g_uOh-3mgrQr9UI,18965
70
- anemoi/datasets/create/sources/hindcasts.py,sha256=Wp6urPyYSbq6U370kSSfOyzrTB-4cO8ZJzlRV9YBLWY,2533
71
- anemoi/datasets/create/sources/legacy.py,sha256=CpUoJNE3nEOinDEIK-xiE0xmJ8XE0v04H6CpkZoEDf0,2661
72
- anemoi/datasets/create/sources/mars.py,sha256=7m0gF0W3IvOx91IX6wUDTtlaCHGKySG09L7taSIFw4Q,13015
73
- anemoi/datasets/create/sources/netcdf.py,sha256=apPD3wWXdJW9HIQMdyKmb4UDzd6STq5ln65v0Z0dxT0,1198
74
- anemoi/datasets/create/sources/opendap.py,sha256=40uWROLwuDgb4omDpidEd8QDNMfCij3bHfjkIHu4PFo,1206
63
+ anemoi/datasets/create/sources/forcings.py,sha256=hy1oyC1Zjg1uzO2UWfNiTJXfQRaM_B8vs8X7GXXO4Nc,1356
64
+ anemoi/datasets/create/sources/grib.py,sha256=G1qLyZYZxUFr54IIrRQbeKTnpkZ5zjFH16_f-m6gurY,5060
65
+ anemoi/datasets/create/sources/grib_index.py,sha256=QFdWZa50BxrXY4HMS3h-4mTJt-EyI9KvYxaP_N4Ilg4,20917
66
+ anemoi/datasets/create/sources/hindcasts.py,sha256=4QuTSbaP5SfGFOdRSqm4jf__r7tMFx0lgPOlOVC6BEg,2773
67
+ anemoi/datasets/create/sources/legacy.py,sha256=Lv8MgFvdpP6ygu6_wGI47dpq7nuvuSbaHJAiUGqC4z8,1254
68
+ anemoi/datasets/create/sources/mars.py,sha256=OQVgdikBP__CYEPc82ClKgm-dxC9Pqsd44w55Vz1VJo,14625
69
+ anemoi/datasets/create/sources/netcdf.py,sha256=6PlDpskth2xn_ad7rCzhH5GOqwps6bCRq7zFdkoGJsQ,1372
70
+ anemoi/datasets/create/sources/opendap.py,sha256=ZvMqTgcDl8k_CY8CLzxaW79cBxvVOo0e9Jd1bhLGBoA,1382
75
71
  anemoi/datasets/create/sources/patterns.py,sha256=dLCWz7nJtqMI4v9Qytiun-iUs4Lkv-4i7pbA19hoQe8,2243
76
72
  anemoi/datasets/create/sources/planetary_computer.py,sha256=Erk6fKJt63gj_pgbklBWhAKjzjtAfq_DRizMfWdqPPU,1578
77
- anemoi/datasets/create/sources/recentre.py,sha256=shmwBbDju5oYl_eiYD2QfuVkizKcfIIimDfoUfVo8Dw,3943
78
- anemoi/datasets/create/sources/source.py,sha256=i0ruqZl6F3apAdC2N2xNHj3ScGPeQLZABqtkDfIU0n8,2038
79
- anemoi/datasets/create/sources/tendencies.py,sha256=ui1NCuiN4TIoMPKSCoDe07orTvqO0iGVv34KelOJIc0,5517
73
+ anemoi/datasets/create/sources/recentre.py,sha256=hgBQFbgDXvr0DfFejdnLYkU7Hqs9634F7Sg3VMxIPk0,4155
74
+ anemoi/datasets/create/sources/repeated_dates.py,sha256=IM3YFep2ClC8eTJk7GGkIpyUO_gM3UqwPO87oJTXhg4,1730
75
+ anemoi/datasets/create/sources/source.py,sha256=Srf_68kXrkk5N8lnWmrazcsKVUw5PAhv5Ry-5-OAxRM,1643
80
76
  anemoi/datasets/create/sources/xarray.py,sha256=6c2Ss2I795Y3Xj9Qbr4Voiwcq7SaZFLaq1G_5lh_kAs,2491
81
77
  anemoi/datasets/create/sources/xarray_kerchunk.py,sha256=vdFaFzze8VLjYUgIX8Lc39ELvwmgfT3ioyxBHAt4nrs,1136
82
- anemoi/datasets/create/sources/xarray_zarr.py,sha256=s4XzrY0RJyHg_Ej2PR7SB-77OiD7Px15fHsffdDmJqs,1177
83
- anemoi/datasets/create/sources/zenodo.py,sha256=zD7P3p_sHmXKbvBBjRqk6yoG68TDolePmS_66UIL1EQ,2017
78
+ anemoi/datasets/create/sources/xarray_zarr.py,sha256=tOcA1rUam0rwAYSIXe2QB9cSNW--NCLlGK_Ou78FIec,1360
79
+ anemoi/datasets/create/sources/zenodo.py,sha256=6NvK5KLMtb39a-YBs44sgPyc2k9NZU6oeYNbU8Lh98g,2259
80
+ anemoi/datasets/create/sources/accumulate_utils/__init__.py,sha256=iLLlOculEHrloIO13MSrYGEMNBZ1vVwK9x9rxKXLK-M,393
81
+ anemoi/datasets/create/sources/accumulate_utils/covering_intervals.py,sha256=Hm0pIATDl9zK_tAjDkhxlRa9yUUbaHKpHH_0igSv3Tk,7642
82
+ anemoi/datasets/create/sources/accumulate_utils/field_to_interval.py,sha256=z-p2oDGJ0VPU5AXjgloLsL1ho5l_dmITCN7AVx9iGTU,5760
83
+ anemoi/datasets/create/sources/accumulate_utils/interval_generators.py,sha256=vqtHiKFUavnK26uUYdOOsPbUcyzgUnwxhQ_cydooNyU,13092
84
84
  anemoi/datasets/create/sources/xarray_support/README.md,sha256=56olM9Jh0vI0_bU9GI-IqbBcz4DZXWONqvdzN_VeAFE,78
85
- anemoi/datasets/create/sources/xarray_support/__init__.py,sha256=o18nd8aVIwhRatYPnYNuBlLLpX6xYclbZZwD2B8sDYM,4675
86
- anemoi/datasets/create/sources/xarray_support/coordinates.py,sha256=bwjRl7yWT56YlR8thypIR85Ro8iSNMkRGLgjgmbJS6Q,11055
87
- anemoi/datasets/create/sources/xarray_support/field.py,sha256=EKN595kO8M6C09wMAo9QmM0-0LZ5y9NBB0bxxRirXh4,6567
85
+ anemoi/datasets/create/sources/xarray_support/__init__.py,sha256=nYmNSwOX1g8JEEsnV9jnlK1jRbUqdGnvoL-AuqHNx7E,4943
86
+ anemoi/datasets/create/sources/xarray_support/coordinates.py,sha256=hi8sqmeRnCX2g_e_EcXQ55DjN-MkpdFjcWkOl-oGD4g,11042
87
+ anemoi/datasets/create/sources/xarray_support/field.py,sha256=lo5V7pMcVt3j_nbntt7mweGCXkUGNANq35stW69zrCo,6550
88
88
  anemoi/datasets/create/sources/xarray_support/fieldlist.py,sha256=BqLeP8ObTd3Ze7O6jsFJqX9aXD7E352vIT8ZtySv9_0,8158
89
- anemoi/datasets/create/sources/xarray_support/flavour.py,sha256=5ZGnzErbfuUogcnLBfUrNcg_JCMb6vbwLnwlzaWiaV0,33302
89
+ anemoi/datasets/create/sources/xarray_support/flavour.py,sha256=ckYmUaenRLOb_e6EZFHw2bKQ3sMMW5g6BdHlzSWP858,33338
90
90
  anemoi/datasets/create/sources/xarray_support/grid.py,sha256=4VLpWBCkFaRErFsjW8AzY4L-xeSoMYoQhxRor3hQqs8,6496
91
91
  anemoi/datasets/create/sources/xarray_support/metadata.py,sha256=CR9MYneZH49kJw-G1Ie2Vhevs-fliPUzKohiMfO-sWs,7838
92
- anemoi/datasets/create/sources/xarray_support/patch.py,sha256=vAImOFec9_ryOX_ZGIYzeb7fSlaso1cU0hlnqipbAW4,2979
92
+ anemoi/datasets/create/sources/xarray_support/patch.py,sha256=M7YJQSzMc2KeBWYytGrcbVPDSSHLWGfydgfROwYPidI,8634
93
93
  anemoi/datasets/create/sources/xarray_support/time.py,sha256=S-tvA5QZIMh0wQnQa51FotK9oxE8JTpUqfSYimF_Hwo,12401
94
94
  anemoi/datasets/create/sources/xarray_support/variable.py,sha256=8Cekc5YOpZx_MNFEHMM2cE91ydjY-YBUhB7wX17wkVs,9288
95
95
  anemoi/datasets/create/statistics/__init__.py,sha256=xe8WE7xezM6EDhRywOGRmK1c8mim1k6FhXnEw8yHnBQ,18199
96
96
  anemoi/datasets/create/statistics/summary.py,sha256=JdtChTmsr1Y958_nka36HltTbeZkawuGbprbfZD7Ux8,4790
97
97
  anemoi/datasets/data/__init__.py,sha256=WKWn_k4bKRUbzRO-5Mp89gV6DeuBuMb00WisD_M-ypI,3200
98
- anemoi/datasets/data/complement.py,sha256=WgdKNEBp_jsOFPTAYqSudmbk2QItbKO4GWuUT-chJuU,11864
98
+ anemoi/datasets/data/complement.py,sha256=Cx-mFoRPgNTEagrvawj7FcnNPM_VxKHkT8InCPZJoCQ,12533
99
99
  anemoi/datasets/data/concat.py,sha256=ArOLD7mrZUw6yzaObSzNWlMKZWH74gaYBx0AvjSCFps,8921
100
- anemoi/datasets/data/dataset.py,sha256=iM4bkDZb91hqy2frJU15IfIHWvFKPerEJULAI4-mrA4,32151
100
+ anemoi/datasets/data/dataset.py,sha256=yeYckknSYYD6uz407Qe8OIPGv6CNqpw0Ea7qni6acmY,32578
101
101
  anemoi/datasets/data/debug.css,sha256=z2X_ZDSnZ9C3pyZPWnQiEyAxuMxUaxJxET4oaCImTAQ,211
102
102
  anemoi/datasets/data/debug.py,sha256=DUG_Rr5sYbXENSFMbtDZuG4IEwvDF-EoqF45z16tHso,10747
103
103
  anemoi/datasets/data/ensemble.py,sha256=N_43HcgcvFmYnU3afyobjx9nZIGtb5WDTVSDXFQPwWE,5303
104
104
  anemoi/datasets/data/fill_missing.py,sha256=Ic2icBvVnj34DpRperiyd8U_VjeI9ygIJdFzdmttK_I,8710
105
105
  anemoi/datasets/data/forwards.py,sha256=dixet1sv_E5yUL6To2M-Z0BpzpF4-TwEw8acnb9XO4Y,20012
106
- anemoi/datasets/data/grids.py,sha256=rQO17HxATY2SCUPA0NqFXdYxUcEwpJxgtBwKicn1TKo,21949
106
+ anemoi/datasets/data/grids.py,sha256=HbahQBCS1MIH-lj2PEwtZlROAhWHMaxsUT9hGC4bvPE,17380
107
107
  anemoi/datasets/data/indexing.py,sha256=5JhiRTBUrj2tOmhSmrFyugw_kOOIKOdtZnoq2Cfgj_k,7444
108
108
  anemoi/datasets/data/interpolate.py,sha256=n1klwVIwIyBSnMtjOqPh09MkhVqO5CTCH6xYkaLVhlM,9099
109
109
  anemoi/datasets/data/join.py,sha256=EjgnjXKNbEUVaQEMzoJ7sv63vApwhDtkcJutxhZ1H5g,9110
110
- anemoi/datasets/data/masked.py,sha256=6D6ygKNddp3xc-vjxNFuT-Pfh4jwfYnCds96Y0dCTH0,10078
110
+ anemoi/datasets/data/masked.py,sha256=epmbI-fgp3hMPSkCvfd4pKxLxoKY8yDlVQvCanWLwF4,11894
111
111
  anemoi/datasets/data/merge.py,sha256=zdF7-OKouN-iE3-Km-g5MZfyARg85IepQWQrSeUsG7w,8637
112
112
  anemoi/datasets/data/misc.py,sha256=iGbZg6EEheJlIH-AECTLnf-30lXaQXG-ngfbwFIt5CM,22862
113
- anemoi/datasets/data/missing.py,sha256=TUZCr5Vtx23_0R9fl0RZF9fgKnJq2d_wuVMmrMm8L9w,12457
113
+ anemoi/datasets/data/missing.py,sha256=MGRhxw7XtB6o9a5-BJhno9sSDVGFz6pNPNBdzcXGpNA,12612
114
114
  anemoi/datasets/data/padded.py,sha256=sunn3QRThlfUHJOGE04s008F-v7kT7gY_i2E6wulCdk,7834
115
115
  anemoi/datasets/data/rescale.py,sha256=xTj2Vn8YuyB1KWW5y37B2HHilTVdCcuNCnYHoiQFRBg,6859
116
+ anemoi/datasets/data/rolling_average.py,sha256=Ng7Te_8bHp7wOH_ARnvqtLI0Weze-uXLO3FP60gaJlU,5107
116
117
  anemoi/datasets/data/select.py,sha256=hScUbJya1Nsew4PCmwYdTix2CtngDXTNezH_cHUdaJs,8198
117
118
  anemoi/datasets/data/statistics.py,sha256=Z4Kffb1uIDwueWHD8XpbiV5la_XXRCAHCHFI4HfHyZI,3095
118
- anemoi/datasets/data/stores.py,sha256=ip1T8LF4MpqYYT2QUs5mWEuygjbLL5o7mjUOqnTS-zY,18128
119
+ anemoi/datasets/data/stores.py,sha256=rifv6bJYGbAttNn6dqpR5ajyaVBlLLzj50B4zRwcRkE,17914
119
120
  anemoi/datasets/data/subset.py,sha256=XTOf4xzbRLanefaewvSZH3okStsThusFsiyyQo0CMpc,8888
120
121
  anemoi/datasets/data/unchecked.py,sha256=KxUrd_yilo4aZk99ALJSrmICEUbXhJP3iOhfac11Fb4,7218
121
122
  anemoi/datasets/data/xy.py,sha256=raecf5OrsgUDE30rri80r7yIYkvhHd15Hb9vo_7bzCw,7675
@@ -124,11 +125,12 @@ anemoi/datasets/data/observations/legacy_obs_dataset.py,sha256=6Aj32XWmNmCsd0azh
124
125
  anemoi/datasets/data/observations/multi.py,sha256=nDeN99LRNVyjUCNTFCL3R7iAQNsf1tSen-fSw9-VsiY,2184
125
126
  anemoi/datasets/data/records/__init__.py,sha256=lWJBukNArbBBdcfG8bh5MzJoSOjk5Fi8zcwHWo5a0I8,12405
126
127
  anemoi/datasets/data/records/backends/__init__.py,sha256=u894d7duXMiGTOQh5WfuxTsA4Fgj0KraBu2QqWRV3xA,5237
127
- anemoi/datasets/dates/__init__.py,sha256=CZX0oJEEpKr3IjnN5LNWAuXi7PzuurY3dUs01t8OvMk,13450
128
+ anemoi/datasets/dates/__init__.py,sha256=4WFEG8tujrXOT6nbpy6BufBqcqGfECnvG42rmxgLh9w,13476
128
129
  anemoi/datasets/dates/groups.py,sha256=bdA6YjFtNlgFAXiov5-zFHZ3C_QtUrdQiSFgb2zWxVM,10034
129
- anemoi_datasets-0.5.27.dist-info/licenses/LICENSE,sha256=8HznKF1Vi2IvfLsKNE5A2iVyiri3pRjRPvPC9kxs6qk,11354
130
- anemoi_datasets-0.5.27.dist-info/METADATA,sha256=H_piQI0ivIT9oK8TrVEcSdH_Eg85TLbp6zhT-J65D90,16154
131
- anemoi_datasets-0.5.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
132
- anemoi_datasets-0.5.27.dist-info/entry_points.txt,sha256=yR-o-4uiPEA_GLBL81SkMYnUoxq3CAV3hHulQiRtGG0,66
133
- anemoi_datasets-0.5.27.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
134
- anemoi_datasets-0.5.27.dist-info/RECORD,,
130
+ anemoi/datasets/schemas/recipe.json,sha256=UvfOQYKcTz-OrJv4is-qe-rhUNBrrmpcpXF32jB0Oz4,3208
131
+ anemoi_datasets-0.5.29.dist-info/licenses/LICENSE,sha256=8HznKF1Vi2IvfLsKNE5A2iVyiri3pRjRPvPC9kxs6qk,11354
132
+ anemoi_datasets-0.5.29.dist-info/METADATA,sha256=k0V8RvM-V88rDBfd_Ew0e-NW9b5BzCIlgeIfLjvlxFY,16181
133
+ anemoi_datasets-0.5.29.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
134
+ anemoi_datasets-0.5.29.dist-info/entry_points.txt,sha256=yR-o-4uiPEA_GLBL81SkMYnUoxq3CAV3hHulQiRtGG0,66
135
+ anemoi_datasets-0.5.29.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
136
+ anemoi_datasets-0.5.29.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,47 +0,0 @@
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
- from typing import Any
11
-
12
- import earthkit.data as ekd
13
-
14
-
15
- class TransformFilter:
16
- """Calls filters from anemoi.transform.filters
17
-
18
- Parameters
19
- ----------
20
- context : Any
21
- The context in which the filter is created.
22
- name : str
23
- The name of the filter.
24
- config : Dict[str, Any]
25
- The configuration for the filter.
26
- """
27
-
28
- def __init__(self, context: Any, name: str, config: dict[str, Any]) -> None:
29
- from anemoi.transform.filters import create_filter
30
-
31
- self.name = name
32
- self.transform_filter = create_filter(context, config)
33
-
34
- def execute(self, input: ekd.FieldList) -> ekd.FieldList:
35
- """Execute the transformation filter.
36
-
37
- Parameters
38
- ----------
39
- input : ekd.FieldList
40
- The input data to be transformed.
41
-
42
- Returns
43
- -------
44
- ekd.FieldList
45
- The transformed data.
46
- """
47
- return self.transform_filter.forward(input)