Skip to content
Snippets Groups Projects
Commit a62b8a39 authored by Siddhant Tibrewal's avatar Siddhant Tibrewal Committed by Siddhant Tibrewal
Browse files

updated the way to create array in groups as per zarr 3

parent 24469dce
No related branches found
No related tags found
1 merge request!52Migrate to Zarr 3
Pipeline #102054 waiting for manual action
......@@ -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
)
......
......@@ -24,9 +24,8 @@ def add_coordinates(dataset, coordinates, coord_names=("lon", "lat")):
lat.attrs["units"] = "degree"
lat.attrs["standard_name"] = "grid_latitude"
def add_healpix_grid(dataset, order):
crs = dataset.create_dataset("crs", data=np.array([np.nan], dtype=np.float32), shape=(1,))
crs = dataset.create_array(name="crs", dtype=np.float32, shape=(1,))
crs.attrs["_ARRAY_DIMENSIONS"] = ("crs",)
crs.attrs["grid_mapping_name"] = "healpix"
crs.attrs["healpix_nside"] = 2**order
......@@ -39,3 +38,4 @@ def add_healpix_hierarchy(dataset, order, prefix="healpix_"):
add_healpix_grid(zg, o)
if o < order:
zg.attrs["hiopy::parent"] = f"{prefix}{o+1}"
......@@ -3,5 +3,5 @@ wheel
ruff
pre-commit
healpy
zarr<3.0
zarr>=2,<3
aiohttp
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment