Skip to content
Snippets Groups Projects

Migrate to Zarr 3

Merged Siddhant Tibrewal requested to merge 6-zarr3-migration into main
All threads resolved!
Files
3
@@ -15,7 +15,8 @@ def add_time(dataset, startdate, enddate, dt, name="time"):
time_data = (np.arange(startdate + dt, enddate + dt, dt) - startdate) // np.timedelta64(1, "s")
for g in _collect_groups(dataset):
time = g.create_dataset(name, data=time_data, fill_value=None, shape=time_data.shape)
time = dataset.create_array(name="time", fill_value=None, shape=time_data.shape, dtype=np.longlong)
time.append(data=time_data)
time.attrs["_ARRAY_DIMENSIONS"] = (name,)
time.attrs["axis"] = "T"
time.attrs["calendar"] = "proleptic_gregorian"
@@ -31,7 +32,8 @@ def _collect_groups(dataset):
def add_height(dataset, name, n):
for g in _collect_groups(dataset):
height = g.create_dataset(name, data=np.arange(n))
height = g.create_array(name, fill_value=None, dtype=np.int32, shape=np.arange(n).shape)
height.append(data=np.arange(n))
height.attrs["_ARRAY_DIMENSIONS"] = [name]
height.attrs["axis"] = "Z"
height.attrs["long_name"] = "generalized_height"
@@ -56,13 +58,13 @@ def add_variable(
for g in _collect_groups(dataset):
taxis_tuple = tuple() if taxis is None else (taxis,)
ntime = tuple() if taxis is None else (g[taxis].shape[0],)
grid_mapping_name = g.crs.attrs["grid_mapping_name"]
grid_mapping_name = g['crs'].attrs["grid_mapping_name"]
spatial_attr = "point" if (grid_mapping_name == "point_cloud") else "cell"
crs_len = 0
if grid_mapping_name == "healpix":
crs_len = healpy.nside2npix(g.crs.attrs["healpix_nside"])
crs_len = healpy.nside2npix(g['crs'].attrs["healpix_nside"])
elif grid_mapping_name == "point_cloud":
lon_coord, lat_coord = g.crs.attrs["coordinates"].split(" ")
lon_coord, lat_coord = g['crs'].attrs["coordinates"].split(" ")
assert lon_coord in g and lat_coord in g
assert g[lon_coord].shape[0] == g[lat_coord].shape[0]
crs_len = g[lat_coord].shape[0]
@@ -80,7 +82,8 @@ def add_variable(
_chunk_shape = np.minimum(chunk_shape, shape) if chunk_shape is not None else None
_attributes["_ARRAY_DIMENSIONS"] = (*taxis_tuple, zaxis, spatial_attr)
_attributes["grid_mapping"] = "crs"
v = g.create_dataset(
v = g.create_array(
name, shape=shape, dtype=np.float32, fill_value=np.nan, chunks=_chunk_shape, **kwargs
)
Loading