anemoi-datasets 0.4.3__py3-none-any.whl → 0.4.5__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 (52) hide show
  1. anemoi/datasets/_version.py +2 -2
  2. anemoi/datasets/commands/cleanup.py +44 -0
  3. anemoi/datasets/commands/create.py +50 -20
  4. anemoi/datasets/commands/finalise-additions.py +45 -0
  5. anemoi/datasets/commands/finalise.py +39 -0
  6. anemoi/datasets/commands/init-additions.py +45 -0
  7. anemoi/datasets/commands/init.py +67 -0
  8. anemoi/datasets/commands/inspect.py +1 -1
  9. anemoi/datasets/commands/load-additions.py +47 -0
  10. anemoi/datasets/commands/load.py +47 -0
  11. anemoi/datasets/commands/patch.py +39 -0
  12. anemoi/datasets/compute/recentre.py +1 -1
  13. anemoi/datasets/create/__init__.py +961 -146
  14. anemoi/datasets/create/check.py +5 -3
  15. anemoi/datasets/create/config.py +53 -2
  16. anemoi/datasets/create/functions/sources/accumulations.py +6 -22
  17. anemoi/datasets/create/functions/sources/hindcasts.py +27 -12
  18. anemoi/datasets/create/functions/sources/tendencies.py +1 -1
  19. anemoi/datasets/create/functions/sources/xarray/__init__.py +12 -2
  20. anemoi/datasets/create/functions/sources/xarray/coordinates.py +7 -0
  21. anemoi/datasets/create/functions/sources/xarray/field.py +1 -1
  22. anemoi/datasets/create/functions/sources/xarray/fieldlist.py +0 -2
  23. anemoi/datasets/create/functions/sources/xarray/flavour.py +21 -1
  24. anemoi/datasets/create/functions/sources/xarray/metadata.py +27 -29
  25. anemoi/datasets/create/functions/sources/xarray/time.py +63 -30
  26. anemoi/datasets/create/functions/sources/xarray/variable.py +15 -38
  27. anemoi/datasets/create/input.py +62 -25
  28. anemoi/datasets/create/statistics/__init__.py +39 -23
  29. anemoi/datasets/create/utils.py +3 -2
  30. anemoi/datasets/data/__init__.py +1 -0
  31. anemoi/datasets/data/concat.py +46 -2
  32. anemoi/datasets/data/dataset.py +109 -34
  33. anemoi/datasets/data/forwards.py +17 -8
  34. anemoi/datasets/data/grids.py +17 -3
  35. anemoi/datasets/data/interpolate.py +133 -0
  36. anemoi/datasets/data/misc.py +56 -66
  37. anemoi/datasets/data/missing.py +240 -0
  38. anemoi/datasets/data/select.py +7 -1
  39. anemoi/datasets/data/stores.py +3 -3
  40. anemoi/datasets/data/subset.py +47 -5
  41. anemoi/datasets/data/unchecked.py +20 -22
  42. anemoi/datasets/data/xy.py +125 -0
  43. anemoi/datasets/dates/__init__.py +33 -20
  44. anemoi/datasets/dates/groups.py +2 -2
  45. anemoi/datasets/grids.py +66 -48
  46. {anemoi_datasets-0.4.3.dist-info → anemoi_datasets-0.4.5.dist-info}/METADATA +5 -5
  47. {anemoi_datasets-0.4.3.dist-info → anemoi_datasets-0.4.5.dist-info}/RECORD +51 -41
  48. {anemoi_datasets-0.4.3.dist-info → anemoi_datasets-0.4.5.dist-info}/WHEEL +1 -1
  49. anemoi/datasets/create/loaders.py +0 -924
  50. {anemoi_datasets-0.4.3.dist-info → anemoi_datasets-0.4.5.dist-info}/LICENSE +0 -0
  51. {anemoi_datasets-0.4.3.dist-info → anemoi_datasets-0.4.5.dist-info}/entry_points.txt +0 -0
  52. {anemoi_datasets-0.4.3.dist-info → anemoi_datasets-0.4.5.dist-info}/top_level.txt +0 -0
anemoi/datasets/grids.py CHANGED
@@ -7,41 +7,65 @@
7
7
  # nor does it submit to any jurisdiction.
8
8
  #
9
9
 
10
+ import logging
11
+
10
12
  import numpy as np
11
13
 
14
+ LOG = logging.getLogger(__name__)
15
+
12
16
 
13
17
  def plot_mask(path, mask, lats, lons, global_lats, global_lons):
14
18
  import matplotlib.pyplot as plt
15
19
 
16
- middle = (np.amin(lons) + np.amax(lons)) / 2
17
- print("middle", middle)
18
20
  s = 1
19
21
 
20
- # gmiddle = (np.amin(global_lons)+ np.amax(global_lons))/2
21
-
22
- # print('gmiddle', gmiddle)
23
- # global_lons = global_lons-gmiddle+middle
24
22
  global_lons[global_lons >= 180] -= 360
25
23
 
26
24
  plt.figure(figsize=(10, 5))
27
25
  plt.scatter(global_lons, global_lats, s=s, marker="o", c="r")
28
- plt.savefig(path + "-global.png")
26
+ if isinstance(path, str):
27
+ plt.savefig(path + "-global.png")
29
28
 
30
29
  plt.figure(figsize=(10, 5))
31
30
  plt.scatter(global_lons[mask], global_lats[mask], s=s, c="k")
32
- plt.savefig(path + "-cutout.png")
31
+ if isinstance(path, str):
32
+ plt.savefig(path + "-cutout.png")
33
33
 
34
34
  plt.figure(figsize=(10, 5))
35
35
  plt.scatter(lons, lats, s=s)
36
- plt.savefig(path + "-lam.png")
36
+ if isinstance(path, str):
37
+ plt.savefig(path + "-lam.png")
37
38
  # plt.scatter(lons, lats, s=0.01)
38
39
 
39
40
  plt.figure(figsize=(10, 5))
40
41
  plt.scatter(global_lons[mask], global_lats[mask], s=s, c="r")
41
42
  plt.scatter(lons, lats, s=s)
42
- plt.savefig(path + "-both.png")
43
+ if isinstance(path, str):
44
+ plt.savefig(path + "-both.png")
43
45
  # plt.scatter(lons, lats, s=0.01)
44
46
 
47
+ plt.figure(figsize=(10, 5))
48
+ plt.scatter(global_lons[mask], global_lats[mask], s=s, c="r")
49
+ plt.scatter(lons, lats, s=s)
50
+ plt.xlim(np.amin(lons) - 1, np.amax(lons) + 1)
51
+ plt.ylim(np.amin(lats) - 1, np.amax(lats) + 1)
52
+ if isinstance(path, str):
53
+ plt.savefig(path + "-both-zoomed.png")
54
+
55
+ plt.figure(figsize=(10, 5))
56
+ plt.scatter(global_lons[mask], global_lats[mask], s=s, c="r")
57
+ plt.xlim(np.amin(lons) - 1, np.amax(lons) + 1)
58
+ plt.ylim(np.amin(lats) - 1, np.amax(lats) + 1)
59
+ if isinstance(path, str):
60
+ plt.savefig(path + "-global-zoomed.png")
61
+
62
+
63
+ def xyz_to_latlon(x, y, z):
64
+ return (
65
+ np.rad2deg(np.arcsin(np.minimum(1.0, np.maximum(-1.0, z)))),
66
+ np.rad2deg(np.arctan2(y, x)),
67
+ )
68
+
45
69
 
46
70
  def latlon_to_xyz(lat, lon, radius=1.0):
47
71
  # https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates
@@ -121,6 +145,7 @@ def cutout_mask(
121
145
  global_lats,
122
146
  global_lons,
123
147
  cropping_distance=2.0,
148
+ neighbours=5,
124
149
  min_distance_km=None,
125
150
  plot=None,
126
151
  ):
@@ -164,58 +189,52 @@ def cutout_mask(
164
189
  xyx = latlon_to_xyz(lats, lons)
165
190
  lam_points = np.array(xyx).transpose()
166
191
 
167
- # Use a KDTree to find the nearest points
168
- kdtree = KDTree(lam_points)
169
- distances, indices = kdtree.query(global_points, k=3)
170
-
171
- if min_distance_km is not None:
192
+ if isinstance(min_distance_km, (int, float)):
172
193
  min_distance = min_distance_km / 6371.0
173
194
  else:
174
- # Estimnation of the minimum distance between two grib points
175
-
176
- glats = sorted(set(global_lats_masked))
177
- glons = sorted(set(global_lons_masked))
178
- min_dlats = np.min(np.diff(glats))
179
- min_dlons = np.min(np.diff(glons))
180
-
181
- # Use the centre of the LAM grid as the reference point
182
- centre = np.mean(lats), np.mean(lons)
183
- centre_xyz = np.array(latlon_to_xyz(*centre))
184
-
185
- pt1 = np.array(latlon_to_xyz(centre[0] + min_dlats, centre[1]))
186
- pt2 = np.array(latlon_to_xyz(centre[0], centre[1] + min_dlons))
187
- min_distance = (
188
- min(
189
- np.linalg.norm(pt1 - centre_xyz),
190
- np.linalg.norm(pt2 - centre_xyz),
191
- )
192
- / 2.0
193
- )
195
+ points = {"lam": lam_points, "global": global_points, None: global_points}[min_distance_km]
196
+ distances, _ = KDTree(points).query(points, k=2)
197
+ min_distance = np.min(distances[:, 1])
198
+
199
+ LOG.info(f"cutout_mask using min_distance = {min_distance * 6371.0} km")
200
+
201
+ # Use a KDTree to find the nearest points
202
+ distances, indices = KDTree(lam_points).query(global_points, k=neighbours)
194
203
 
204
+ # Centre of the Earth
195
205
  zero = np.array([0.0, 0.0, 0.0])
196
- ok = []
206
+
207
+ # After the loop, 'inside_lam' will contain a list point to EXCLUDE
208
+ inside_lam = []
209
+
197
210
  for i, (global_point, distance, index) in enumerate(zip(global_points, distances, indices)):
198
- t = Triangle3D(lam_points[index[0]], lam_points[index[1]], lam_points[index[2]])
199
- # distance = np.min(distance)
200
- # The point is inside the triangle if the intersection with the ray
201
- # from the point to the centre of the Earth is not None
202
- # (the direction of the ray is not important)
203
211
 
204
- intersect = t.intersect(zero, global_point)
212
+ # We check more than one triangle in case te global point
213
+ # is near the edge of triangle, (the lam point and global points are colinear)
214
+
215
+ inside = False
216
+ for j in range(neighbours):
217
+ t = Triangle3D(
218
+ lam_points[index[j]], lam_points[index[(j + 1) % neighbours]], lam_points[index[(j + 2) % neighbours]]
219
+ )
220
+ inside = t.intersect(zero, global_point)
221
+ if inside:
222
+ break
223
+
205
224
  close = np.min(distance) <= min_distance
206
225
 
207
- ok.append(intersect or close)
226
+ inside_lam.append(inside or close)
208
227
 
209
228
  j = 0
210
- ok = np.array(ok)
229
+ inside_lam = np.array(inside_lam)
211
230
  for i, m in enumerate(mask):
212
231
  if not m:
213
232
  continue
214
233
 
215
- mask[i] = ok[j]
234
+ mask[i] = inside_lam[j]
216
235
  j += 1
217
236
 
218
- assert j == len(ok)
237
+ assert j == len(inside_lam)
219
238
 
220
239
  # Invert the mask, so we have only the points outside the cutout
221
240
  mask = ~mask
@@ -271,8 +290,7 @@ def thinning_mask(
271
290
  points = np.array(xyx).transpose()
272
291
 
273
292
  # Use a KDTree to find the nearest points
274
- kdtree = KDTree(points)
275
- _, indices = kdtree.query(global_points, k=1)
293
+ _, indices = KDTree(points).query(global_points, k=1)
276
294
 
277
295
  return np.array([i for i in indices])
278
296
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anemoi-datasets
3
- Version: 0.4.3
3
+ Version: 0.4.5
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
@@ -223,7 +223,7 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
223
223
  Classifier: Programming Language :: Python :: Implementation :: PyPy
224
224
  Requires-Python: >=3.9
225
225
  License-File: LICENSE
226
- Requires-Dist: anemoi-utils[provenance] >=0.3.13
226
+ Requires-Dist: anemoi-utils[provenance] >=0.3.15
227
227
  Requires-Dist: numpy
228
228
  Requires-Dist: pyyaml
229
229
  Requires-Dist: semantic-version
@@ -235,7 +235,7 @@ Requires-Dist: boto3 ; extra == 'all'
235
235
  Requires-Dist: earthkit-data[mars] >=0.9 ; extra == 'all'
236
236
  Requires-Dist: earthkit-geo >=0.2 ; extra == 'all'
237
237
  Requires-Dist: earthkit-meteo ; extra == 'all'
238
- Requires-Dist: ecmwflibs >=0.6.3 ; extra == 'all'
238
+ Requires-Dist: eccodes >=2.37 ; extra == 'all'
239
239
  Requires-Dist: entrypoints ; extra == 'all'
240
240
  Requires-Dist: gcsfs ; extra == 'all'
241
241
  Requires-Dist: kerchunk ; extra == 'all'
@@ -246,7 +246,7 @@ Provides-Extra: create
246
246
  Requires-Dist: earthkit-data[mars] >=0.9 ; extra == 'create'
247
247
  Requires-Dist: earthkit-geo >=0.2 ; extra == 'create'
248
248
  Requires-Dist: earthkit-meteo ; extra == 'create'
249
- Requires-Dist: ecmwflibs >=0.6.3 ; extra == 'create'
249
+ Requires-Dist: eccodes >=2.37 ; extra == 'create'
250
250
  Requires-Dist: entrypoints ; extra == 'create'
251
251
  Requires-Dist: pyproj ; extra == 'create'
252
252
  Provides-Extra: dev
@@ -255,7 +255,7 @@ Requires-Dist: boto3 ; extra == 'dev'
255
255
  Requires-Dist: earthkit-data[mars] >=0.9 ; extra == 'dev'
256
256
  Requires-Dist: earthkit-geo >=0.2 ; extra == 'dev'
257
257
  Requires-Dist: earthkit-meteo ; extra == 'dev'
258
- Requires-Dist: ecmwflibs >=0.6.3 ; extra == 'dev'
258
+ Requires-Dist: eccodes >=2.37 ; extra == 'dev'
259
259
  Requires-Dist: entrypoints ; extra == 'dev'
260
260
  Requires-Dist: gcsfs ; extra == 'dev'
261
261
  Requires-Dist: kerchunk ; extra == 'dev'
@@ -1,27 +1,34 @@
1
1
  anemoi/datasets/__init__.py,sha256=Z1gqZWhecLcT0RZQqYBLlz01MUlUZd0kWEj_RavbITM,782
2
2
  anemoi/datasets/__main__.py,sha256=cLA2PidDTOUHaDGzd0_E5iioKYNe-PSTv567Y2fuwQk,723
3
- anemoi/datasets/_version.py,sha256=mDTy6z4iq5XKGigbX2Q9ub9_BzxGHksMlMjpkDAl_hE,411
4
- anemoi/datasets/grids.py,sha256=3YBMMJodgYhavarXPAlMZHaMtDT9v2IbTmAXZTqf8Qo,8481
3
+ anemoi/datasets/_version.py,sha256=XyejXnBNtqNdR37CiSnJ022K8vUHKAlzN9lbcpmmftA,411
4
+ anemoi/datasets/grids.py,sha256=xgvIbpMGuN2GKi2wIBhOLEMzj940nY9PH-toD0rCmPo,8980
5
5
  anemoi/datasets/commands/__init__.py,sha256=qAybFZPBBQs0dyx7dZ3X5JsLpE90pwrqt1vSV7cqEIw,706
6
+ anemoi/datasets/commands/cleanup.py,sha256=_BkzGPUgvSqnuleymBfBx-sIyIM55hjK61m-v7yK0T8,1062
6
7
  anemoi/datasets/commands/compare.py,sha256=svEhyR7pOS1847_RJr1I6vF7ZDPB9AVlcrhy_gxQVms,3263
7
8
  anemoi/datasets/commands/copy.py,sha256=SxAeN51owyN5gwtwpt30xhJSIJRlJb9YOUt_4K4m-D8,11780
8
- anemoi/datasets/commands/create.py,sha256=iAXm7b1zeFEbVyTSqgSdCXwYtgIi8XUN96muv-btC0w,3868
9
- anemoi/datasets/commands/inspect.py,sha256=rEBzR5LmrPzkNrlGS471Q7Ma9O8Djiml2mxAlxvSl0U,18676
9
+ anemoi/datasets/commands/create.py,sha256=jdwgzUvZBkXROkJ-LSbi28mVWnnZ5F1xr0IOciktfrU,5012
10
+ anemoi/datasets/commands/finalise-additions.py,sha256=876K37hVjslHJiu9VXZfre4YJhS2_t9rLhmNWqlKGGk,1158
11
+ anemoi/datasets/commands/finalise.py,sha256=oPul5za7E__eJqkf5fRwvdL_0n2nG5Xk3JraRZQe64k,913
12
+ anemoi/datasets/commands/init-additions.py,sha256=K3eKH5V_6ERiBKKyqIUuI1cfvAsjWV9ZAFzbtjIDyjs,1146
13
+ anemoi/datasets/commands/init.py,sha256=7BpWaZ4gzMMiRqD9djHRciQNa0W2R4cOzoy5R-UJ0ck,2033
14
+ anemoi/datasets/commands/inspect.py,sha256=g2H_Ey47szeRp6sfaXkbAuk2JWW-LL4GXpssJIsWKVo,18675
15
+ anemoi/datasets/commands/load-additions.py,sha256=Tg4FX0xealmwyB--zv03ZBrqTAGddkT0rKrHlcu4VW0,1234
16
+ anemoi/datasets/commands/load.py,sha256=3jhL3DKUg07C8D6L8RsRWciq8korYsJ40_9atp-p68U,1304
17
+ anemoi/datasets/commands/patch.py,sha256=gHY16r46GHxARItaAUHVjKSOm0Q7ZyZvSZmXqg1Wnig,841
10
18
  anemoi/datasets/commands/scan.py,sha256=MaTdne4JrtlqO3LhOUr43DZhZ6O-RZwC7uQ7C6PG7Os,2910
11
19
  anemoi/datasets/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- anemoi/datasets/compute/recentre.py,sha256=oIqhENljB9ad-wnMJCJ3P0Xf1v76zQjqYCu1TuySgSI,4919
13
- anemoi/datasets/create/__init__.py,sha256=_XMODLz0xpVf06Tu7x2c1HhFcuBYJ0xeux6dn9dgTXg,6830
14
- anemoi/datasets/create/check.py,sha256=TAZOrq8QbS9F5kuR779FAuZPJXA7MXsS_DU1kVotq5Q,5838
20
+ anemoi/datasets/compute/recentre.py,sha256=CMvRxTMv2H1hF1KqaZHT3Maa9P01GtsgAxr1YHbvH_o,4939
21
+ anemoi/datasets/create/__init__.py,sha256=8eYVI0QAkdAIdxVDrqQAY34yDlLAAsr92DL-e_nhHCM,35163
22
+ anemoi/datasets/create/check.py,sha256=9If6iAXILExjzX1YAWCDekV821BquHdjDaUSb_S_gp0,6008
15
23
  anemoi/datasets/create/chunks.py,sha256=1Inh3sIBn-2sNguErb-BsLns6W_HtDiOJAjIb29lp-U,2442
16
- anemoi/datasets/create/config.py,sha256=vZ-t50mHgrEnxJoaooWrZKzVGeEQrg__rCOrhi5Q4nU,7122
17
- anemoi/datasets/create/input.py,sha256=BJiGFR-imZcChdij3fodyz8XSHMUs-__ZfoCeMHuhUo,32472
18
- anemoi/datasets/create/loaders.py,sha256=tosx8Zms7OAEScw9JxHw6BLq6xZSDCNPYKeqFWP5O3Y,32504
24
+ anemoi/datasets/create/config.py,sha256=ojynLQTX7BmJRZ18rhjUTmuMOh0rYAx9M5d6gY8wRH0,8872
25
+ anemoi/datasets/create/input.py,sha256=LArEOIxa6Y42rneF0VUva25zOvks_BwVDfBNOSERpYA,33924
19
26
  anemoi/datasets/create/patch.py,sha256=c8cWoqxFzcY9mKREosLjuQCUeJMJL6sbNNkoVvhCZDA,3800
20
27
  anemoi/datasets/create/persistent.py,sha256=wfNnNSY8VLO2EyEOQL9umI3sbQqETjJP7bPCiVF6Cko,4291
21
28
  anemoi/datasets/create/size.py,sha256=k4COEjs3wud0oKHH5P3n8Fap35xddXs002ucPjpBC88,1040
22
29
  anemoi/datasets/create/template.py,sha256=1t8EKGQcZGFUpgQw9a9oEy6ZWlfnow5e0vs1SOelUNc,3148
23
30
  anemoi/datasets/create/trace.py,sha256=J-8jDy28wNZa4aSV1KIQMwc1KolcoH3R2xjLl-_eLzM,2183
24
- anemoi/datasets/create/utils.py,sha256=WRuUbEaP4FRSKzkQpuRaisML84uQAEDqvvACd3pnMVs,2613
31
+ anemoi/datasets/create/utils.py,sha256=mgin7LF-JkfXMr22IIIEQjfUHFkwPwMJHca4Fek3F6Q,2639
25
32
  anemoi/datasets/create/writer.py,sha256=G1qAPvdn8anGnpWYhvSSP4u3Km_tHKPdMXm0G4skKSk,1379
26
33
  anemoi/datasets/create/zarr.py,sha256=Pb57mZn5s4JTA1o6_satrvG7C8XQhgPFhpTGvlaC_kg,5340
27
34
  anemoi/datasets/create/functions/__init__.py,sha256=5HmelLkXDjFOhNhX0Z78aV3ZlW2txiJliJwT4jfLEN4,945
@@ -32,55 +39,58 @@ anemoi/datasets/create/functions/filters/rename.py,sha256=02p6zj2g0Qp866RrXeZG9D
32
39
  anemoi/datasets/create/functions/filters/rotate_winds.py,sha256=E0P5scdX0lwTMdcFDYfBzQ_X_4A6EvnrtFvF55-56Hk,2414
33
40
  anemoi/datasets/create/functions/filters/unrotate_winds.py,sha256=hiIwgWi_2lk_ntxsPFMyZ6Ku8_5p91ht36VN_2kHYDA,2414
34
41
  anemoi/datasets/create/functions/sources/__init__.py,sha256=83G1-DD2IV4VJP3MVN9512_CN4D3IVDZHUKa2ghVgKo,1246
35
- anemoi/datasets/create/functions/sources/accumulations.py,sha256=Rzn9ocBR4CHdws4s6GuKiV4IqVQo0rCQLyPQNBsTGXY,12493
42
+ anemoi/datasets/create/functions/sources/accumulations.py,sha256=nz09rezfNvXdTBtSQAKnsOeoiWwB8v1ecAayrJZq9rE,11947
36
43
  anemoi/datasets/create/functions/sources/constants.py,sha256=9MNxjkXAjtIq7X-T7GgKGVzH-V-FBcTxj0gLLJYoXTI,903
37
44
  anemoi/datasets/create/functions/sources/empty.py,sha256=ZrXGs8Y3VrLSV8C8YlJTJcHV7Bmi7xPiUlrq8R0JZQY,485
38
45
  anemoi/datasets/create/functions/sources/forcings.py,sha256=tF3EyIs5AGF1Ppvp6dIExONM-kGF-wcnMO1sZc_wDuo,646
39
46
  anemoi/datasets/create/functions/sources/grib.py,sha256=MbHSAJAkvUsQT5uo_-mEqzN-0-aOygMwFIds42kXcqg,1750
40
- anemoi/datasets/create/functions/sources/hindcasts.py,sha256=TRe25E6Xb_fBUsyOnzB_Bm1cTZ4H99viplf1ccWzZv8,3154
47
+ anemoi/datasets/create/functions/sources/hindcasts.py,sha256=xgE4a-diiy8rP8cmgAT12cBsQZiGk0cRzUswtZM7i_0,3607
41
48
  anemoi/datasets/create/functions/sources/mars.py,sha256=Wrxm15-7QUQ_xCe7eqmxHLLkYo5RDM0GKUoeEP8BZS4,6603
42
49
  anemoi/datasets/create/functions/sources/netcdf.py,sha256=8uug0oAdGBJIKKws-EflA4ZgjQye_sWCBymUVv1TEW4,532
43
50
  anemoi/datasets/create/functions/sources/opendap.py,sha256=0Bs0PytUvI1WZGn2OdmnJuFDGAQypxN8v44nl106QjY,531
44
51
  anemoi/datasets/create/functions/sources/recentre.py,sha256=t07LIXG3Hp9gmPkPriILVt86TxubsHyS1EL1lzwgtXY,1810
45
52
  anemoi/datasets/create/functions/sources/source.py,sha256=J3O4M0nB1a-67IJuY_aWqDDqyNGXB_uzxVbicFldO4U,1422
46
- anemoi/datasets/create/functions/sources/tendencies.py,sha256=OIYKdRTabDvxnBXCcffWWBcorVlhZVNj3VkcVuQjIYA,4088
53
+ anemoi/datasets/create/functions/sources/tendencies.py,sha256=4hFPGU51KnxXp-KteSp5WLb8v586sDq2ePPd8CfUFjA,4108
47
54
  anemoi/datasets/create/functions/sources/xarray_kerchunk.py,sha256=JsuGjTs5BQdJIPRI8TuUNde680UQkT4GbUhOt6wYy38,1432
48
55
  anemoi/datasets/create/functions/sources/xarray_zarr.py,sha256=qI_fEKo28hu_B_qMPx67gigysw8qw5ePMU9P0wbDcIc,531
49
56
  anemoi/datasets/create/functions/sources/zenodo.py,sha256=n7_sfZHJVDjVnSwc07muO9kS7TwOM4S8DIlJf5pnDiU,1237
50
- anemoi/datasets/create/functions/sources/xarray/__init__.py,sha256=cOhyFoD_1e_asJXcYJFy13SIbndWvzXZJnUj39FF5xc,2494
51
- anemoi/datasets/create/functions/sources/xarray/coordinates.py,sha256=pW3DoFYL55fapNE2KmRYSGid3Y_KstkqsRXrqVCrsc0,5734
52
- anemoi/datasets/create/functions/sources/xarray/field.py,sha256=JYtwQMB_QzML2x68wZDGOckjy0MbRR7jMgkHLY6hYco,3206
53
- anemoi/datasets/create/functions/sources/xarray/fieldlist.py,sha256=RfFQZ6FexgeZ3dAKtRojzEJROkJFztMaxOWkNXrX39w,5604
54
- anemoi/datasets/create/functions/sources/xarray/flavour.py,sha256=7gdnJlMtQ2AtAP7mPGg1O0DBr7IKI73DKwn2_Bg3I1g,9901
57
+ anemoi/datasets/create/functions/sources/xarray/__init__.py,sha256=XcP072AgDX_aiK3t_rWM-C3MnAuX-mhYO5-wSLyaxPo,2805
58
+ anemoi/datasets/create/functions/sources/xarray/coordinates.py,sha256=iwnGIinuLoP0jk2s4ro9_ihJ6CoJcZ9HaRGyWh2gm8M,5893
59
+ anemoi/datasets/create/functions/sources/xarray/field.py,sha256=bUTgod2XuV3OGDaK7kcGiUqC5oQ6tuCWbHb67fo9lsY,3186
60
+ anemoi/datasets/create/functions/sources/xarray/fieldlist.py,sha256=B0toXCiYFBFF0fvxpy5bxnan2dfptWMl51_JO8TrH3A,5557
61
+ anemoi/datasets/create/functions/sources/xarray/flavour.py,sha256=_tVSrvDPJ5pXAJhmha3UA1a0Gr2FrPhcjRFoAMtX-EU,10538
55
62
  anemoi/datasets/create/functions/sources/xarray/grid.py,sha256=KSlhXj5dHeRQVeZd26CChMyC1iqYsH5XqxPC2VA_YJc,1169
56
- anemoi/datasets/create/functions/sources/xarray/metadata.py,sha256=tKMY7dYd8e6SGZM8wXH2OovfqSViePrnMVKrezD00cI,4757
57
- anemoi/datasets/create/functions/sources/xarray/time.py,sha256=w3mQ34KEJIXwp35_eF7I8RN5lDKP4Mp1ujfavSdaTBE,3487
58
- anemoi/datasets/create/functions/sources/xarray/variable.py,sha256=pb-xPaRFwqV6p6YuGQM8TB2rNgcwJ7x1yDYclyB32ZI,5331
59
- anemoi/datasets/create/statistics/__init__.py,sha256=U5aoqAgy0MzY_DSIU1Mz2kwBSw_mPRGh8xtA9DI3YA8,12672
63
+ anemoi/datasets/create/functions/sources/xarray/metadata.py,sha256=_HQgAY5qI39M-5JhEx2q3APgqqmXE0Ed3GqoUvttNuE,4721
64
+ anemoi/datasets/create/functions/sources/xarray/time.py,sha256=WGO8m9J7fF-GjgBEJ0Dmqp-M2-vMsrkH-aSG0QBOVYU,4726
65
+ anemoi/datasets/create/functions/sources/xarray/variable.py,sha256=THd7uterDPJlpypRCCgTwKaaGjkV74s6WmuveH6qyBE,4474
66
+ anemoi/datasets/create/statistics/__init__.py,sha256=wMCncdfpLXxfDA9-RMtI2raVGP6dGqXfSolCXEzzITE,12704
60
67
  anemoi/datasets/create/statistics/summary.py,sha256=sgmhA24y3VRyjmDUgTnPIqcHSlWBbFA0qynx6gJ9Xw8,3370
61
- anemoi/datasets/data/__init__.py,sha256=to9L_RZVQ4OgyHUpX6lcvt4GqJdZjBa5HCTaWx1aGKo,1046
62
- anemoi/datasets/data/concat.py,sha256=AkpyOs16OjW7X0cdyYFQfWSCV6dteXBp-x9WlokO-DI,3550
63
- anemoi/datasets/data/dataset.py,sha256=hcspK-Fjp-rYdOYZo4qlnL_GUeGpXk4NDINWjEpeSNc,7671
68
+ anemoi/datasets/data/__init__.py,sha256=usTH1SLkeveBbYkbBTc7rP4G3mCGNa8A74vPjXjlOSw,1067
69
+ anemoi/datasets/data/concat.py,sha256=SYASNNngnAyz3rC4ENzrGAu91rnhd6uwP0kGX9aMZAQ,5269
70
+ anemoi/datasets/data/dataset.py,sha256=u1RKLEJer6gY6n4odBHKK4CEozWCUQjFJMFqCCF_FPo,10044
64
71
  anemoi/datasets/data/debug.css,sha256=z2X_ZDSnZ9C3pyZPWnQiEyAxuMxUaxJxET4oaCImTAQ,211
65
72
  anemoi/datasets/data/debug.py,sha256=PcyrjgxaLzeb_vf12pvUtPPVvBRHNm1SimythZvqsP4,6303
66
73
  anemoi/datasets/data/ensemble.py,sha256=AsP7Xx0ZHLoZs6a4EC0jtyGYIcOvZvvKXhgNsIvqIN8,1137
67
- anemoi/datasets/data/forwards.py,sha256=UZOOMUblGS21aaPoFfQa0ONSUaxkqlZQF3KGRhlCr9I,7899
68
- anemoi/datasets/data/grids.py,sha256=rooOeR6rvjl4U8B4LO3N23fcgxvGE7ZUmhVryk1QS4M,7493
74
+ anemoi/datasets/data/forwards.py,sha256=SfB3o8Y-nQEOkS5gI_6wtipvzB5peF_YkwW9cOMhLMg,8167
75
+ anemoi/datasets/data/grids.py,sha256=KiHpN1Ne0DnQM42buBy0sIAZHNaC2kuEFwkk6ohIooU,8046
69
76
  anemoi/datasets/data/indexing.py,sha256=625m__JG5m_tDMrkz1hB6Vydenwt0oHuyAlc-o3Zwos,4799
77
+ anemoi/datasets/data/interpolate.py,sha256=usnYgjoDPfnUNg_lZl3KsFTsJ7kOsf7YaHwarsBU7Ag,4163
70
78
  anemoi/datasets/data/join.py,sha256=dtCBbMTicqrRPxfBULi3RwEcQBLhQpIcvCjdN5A3XUU,4892
71
79
  anemoi/datasets/data/masked.py,sha256=czAv1ZfZ9q6Wr4RqI2Xj8SEm7yoCgJrwMl-CPDs_wSI,3857
72
- anemoi/datasets/data/misc.py,sha256=VgmsXgG-cjv1QQ0jclA8gJOiBqmR4QHbGrLhec73Y14,9995
73
- anemoi/datasets/data/select.py,sha256=Oje3KG1shRawjuBy2-GM8s_Nk_68l-uujvx5SGW0tUM,3781
80
+ anemoi/datasets/data/misc.py,sha256=8ZaLhgHmUmP77X0_6scp36BJJzz544nHVQRAamW6x-Y,9821
81
+ anemoi/datasets/data/missing.py,sha256=OyW8cRow1v641Vgv-IY5BnUxH2Ob5P2QjgrVR1Szjl0,7157
82
+ anemoi/datasets/data/select.py,sha256=tProUPIiRwSe_H9cwwn_4iMX1uZEIQ7q5KsegBgSmdc,3971
74
83
  anemoi/datasets/data/statistics.py,sha256=lZCcKw9s7ttMBEp6ANyxtbXoZZvchhE7SClq-D4AUR8,1645
75
- anemoi/datasets/data/stores.py,sha256=LNCJBBQ--3ng4LGvdZ24ZXyOz7i15MvhtArt3_CxM_Q,11934
76
- anemoi/datasets/data/subset.py,sha256=9urVTXdnwCgqn0_BRYquMi8oiXn4ubAf0n4586hWfKw,3814
77
- anemoi/datasets/data/unchecked.py,sha256=xhdMg-ToI1UfBWHNsWyn1y2meZWngZtHx-33L0KqKp8,4037
78
- anemoi/datasets/dates/__init__.py,sha256=BRrwOapeP20tu7hN0m8hG04INp94tigwEfMClLl0ww4,4635
79
- anemoi/datasets/dates/groups.py,sha256=bYgw02eCLkjkZjJdyLpcFVMqtH8XO22cBdHOfG7tCBc,3471
84
+ anemoi/datasets/data/stores.py,sha256=4F2tCsG3p_ZI0Ut2FdtfPCGClP8U9U6V_12l8-aIGbg,11962
85
+ anemoi/datasets/data/subset.py,sha256=peyHlIvno0uUzqW0HS9zjqThmyXn6rpvVWh-925XHnE,4692
86
+ anemoi/datasets/data/unchecked.py,sha256=xLOCU-O3OpfAi3bd-XZEpfDTnZfFGqdhh55d8D_u3wQ,4184
87
+ anemoi/datasets/data/xy.py,sha256=_k1z_2INvA0v7zsm5lxfVvf7ymBFu6Tr9PxvtdB9kFg,3002
88
+ anemoi/datasets/dates/__init__.py,sha256=odF5RnQtTRozEys4_17bR20jWzUGspFCDM0i7UC6uVs,5087
89
+ anemoi/datasets/dates/groups.py,sha256=lBnrutmQ7WNv-Asyl7eI95Uhi0zfT_3Kb0R_Xm1UNnM,3469
80
90
  anemoi/datasets/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- anemoi_datasets-0.4.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
82
- anemoi_datasets-0.4.3.dist-info/METADATA,sha256=2tNctMmd44eD_Lc7EDuP-ZWP6XJueMQ76MT53wQ8sbc,16716
83
- anemoi_datasets-0.4.3.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
84
- anemoi_datasets-0.4.3.dist-info/entry_points.txt,sha256=yR-o-4uiPEA_GLBL81SkMYnUoxq3CAV3hHulQiRtGG0,66
85
- anemoi_datasets-0.4.3.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
86
- anemoi_datasets-0.4.3.dist-info/RECORD,,
91
+ anemoi_datasets-0.4.5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
92
+ anemoi_datasets-0.4.5.dist-info/METADATA,sha256=4jEPNynR2lfXdnhXNlzCBb8jtEgSQ69n8WSTtaxrm9Q,16707
93
+ anemoi_datasets-0.4.5.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
94
+ anemoi_datasets-0.4.5.dist-info/entry_points.txt,sha256=yR-o-4uiPEA_GLBL81SkMYnUoxq3CAV3hHulQiRtGG0,66
95
+ anemoi_datasets-0.4.5.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
96
+ anemoi_datasets-0.4.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (71.1.0)
2
+ Generator: setuptools (74.1.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5