From 5c0fcb0b3f460bb11be6a7117427a8d74b67005b Mon Sep 17 00:00:00 2001 From: wachsylon Date: Fri, 24 May 2024 10:55:16 +0200 Subject: [PATCH 1/5] Update zarr.py --- xpublish/utils/zarr.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xpublish/utils/zarr.py b/xpublish/utils/zarr.py index 7b56c9d..3a4661c 100644 --- a/xpublish/utils/zarr.py +++ b/xpublish/utils/zarr.py @@ -184,6 +184,11 @@ def create_zmetadata(dataset: xr.Dataset) -> dict: encoding, encoded_da.dtype, ) + compressor=zmeta['metadata'][f'{key}/{array_meta_key}'].get('compressor') + if compressor and type(compressor)==numcodecs.blosc.Blosc: + correct_comprdict=compressor.get_config() + del zmeta['metadata'][f'{key}/{array_meta_key}']['compressor'] + zmeta['metadata'][f'{key}/{array_meta_key}']['compressor']=correct_comprdict return zmeta From 487ad860e0c1dc67c012ef3e696a5807e6217cf6 Mon Sep 17 00:00:00 2001 From: wachsylon Date: Fri, 24 May 2024 12:00:07 +0200 Subject: [PATCH 2/5] Update zarr.py --- xpublish/utils/zarr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xpublish/utils/zarr.py b/xpublish/utils/zarr.py index 3a4661c..1fec9ff 100644 --- a/xpublish/utils/zarr.py +++ b/xpublish/utils/zarr.py @@ -185,7 +185,7 @@ def create_zmetadata(dataset: xr.Dataset) -> dict: encoded_da.dtype, ) compressor=zmeta['metadata'][f'{key}/{array_meta_key}'].get('compressor') - if compressor and type(compressor)==numcodecs.blosc.Blosc: + if compressor and isinstance(compressor,Codec): correct_comprdict=compressor.get_config() del zmeta['metadata'][f'{key}/{array_meta_key}']['compressor'] zmeta['metadata'][f'{key}/{array_meta_key}']['compressor']=correct_comprdict From 2eae23ec5f0c79a80c22d8a15ec86ce81adffa85 Mon Sep 17 00:00:00 2001 From: wachsylon Date: Fri, 24 May 2024 12:08:24 +0200 Subject: [PATCH 3/5] Update zarr.py --- xpublish/plugins/included/zarr.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xpublish/plugins/included/zarr.py b/xpublish/plugins/included/zarr.py index 15f40e5..c9d5c02 100644 --- a/xpublish/plugins/included/zarr.py +++ b/xpublish/plugins/included/zarr.py @@ -1,5 +1,7 @@ import logging from typing import Sequence +import copy +from numcodecs.abc import Codec import cachey # type: ignore import xarray as xr @@ -91,6 +93,13 @@ def get_variable_chunk( # First check that this request wasn't for variable metadata if array_meta_key in chunk: + compressor=zmetadata['metadata'][f'{key}/{array_meta_key}'].get("compressor") + if compressor and isinstance(compressor,Codec): + correct_comprdict=compressor.get_config() + newzmeta=copy.deepcopy(zmetadata['metadata'][f'{key}/{array_meta_key}']) + del newzmeta['compressor'] + newzmeta['compressor']=correct_comprdict + return newzmeta return zmetadata['metadata'][f'{var}/{array_meta_key}'] elif attrs_key in chunk: return JSONResponse(zmetadata['metadata'][f'{var}/{attrs_key}']) From aff9fc020837831c9c131aa428a9233ad42b3abc Mon Sep 17 00:00:00 2001 From: wachsylon Date: Fri, 24 May 2024 12:09:40 +0200 Subject: [PATCH 4/5] Update zarr.py --- xpublish/utils/zarr.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/xpublish/utils/zarr.py b/xpublish/utils/zarr.py index 1fec9ff..7b56c9d 100644 --- a/xpublish/utils/zarr.py +++ b/xpublish/utils/zarr.py @@ -184,11 +184,6 @@ def create_zmetadata(dataset: xr.Dataset) -> dict: encoding, encoded_da.dtype, ) - compressor=zmeta['metadata'][f'{key}/{array_meta_key}'].get('compressor') - if compressor and isinstance(compressor,Codec): - correct_comprdict=compressor.get_config() - del zmeta['metadata'][f'{key}/{array_meta_key}']['compressor'] - zmeta['metadata'][f'{key}/{array_meta_key}']['compressor']=correct_comprdict return zmeta From 510bb4029f638b9898728d3ec93f663d53d360e5 Mon Sep 17 00:00:00 2001 From: wachsylon Date: Fri, 24 May 2024 12:16:45 +0200 Subject: [PATCH 5/5] Update zarr.py --- xpublish/plugins/included/zarr.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xpublish/plugins/included/zarr.py b/xpublish/plugins/included/zarr.py index c9d5c02..d344a67 100644 --- a/xpublish/plugins/included/zarr.py +++ b/xpublish/plugins/included/zarr.py @@ -93,10 +93,10 @@ def get_variable_chunk( # First check that this request wasn't for variable metadata if array_meta_key in chunk: - compressor=zmetadata['metadata'][f'{key}/{array_meta_key}'].get("compressor") + compressor=zmetadata['metadata'][f'{var}/{array_meta_key}'].get("compressor") if compressor and isinstance(compressor,Codec): correct_comprdict=compressor.get_config() - newzmeta=copy.deepcopy(zmetadata['metadata'][f'{key}/{array_meta_key}']) + newzmeta=copy.deepcopy(zmetadata['metadata'][f'{var}/{array_meta_key}']) del newzmeta['compressor'] newzmeta['compressor']=correct_comprdict return newzmeta