From d9d515d1ac58ebe2b4e255c015ef0ce2d2369dd3 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Wed, 10 Feb 2021 22:09:20 -0500 Subject: [PATCH 1/3] compress_encode: Improve zchunkstore result handling --- server/scripts/compress_encode.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/server/scripts/compress_encode.py b/server/scripts/compress_encode.py index 08af01e..eb10d51 100644 --- a/server/scripts/compress_encode.py +++ b/server/scripts/compress_encode.py @@ -28,7 +28,7 @@ def zip_zchunkstore(zip_file, url=None): JSON-serializable reference description. """ - rfs = {} + zchunkstore = {} with zipfile.ZipFile(zip_file) as zf: if zf.compression != 0: raise RuntimeError("Compressed zip's are not supported.") @@ -39,7 +39,6 @@ def zip_zchunkstore(zip_file, url=None): if url is not None: data_url = url - zchunkstore = {} for info in zf.infolist(): name_bytes = len(info.filename.encode("utf-8")) offset = info.header_offset + 30 + name_bytes @@ -50,7 +49,7 @@ def zip_zchunkstore(zip_file, url=None): else: zchunkstore[info.filename] = [data_url, offset, size] - return zchunkstore + return zchunkstore def compress_encode(input_filepath, From 1550451f6297f0e1ca1360c94724967c3236320c Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Wed, 10 Feb 2021 22:18:15 -0500 Subject: [PATCH 2/3] compress_encode: 2D image support --- server/scripts/compress_encode.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/scripts/compress_encode.py b/server/scripts/compress_encode.py index eb10d51..49f1587 100644 --- a/server/scripts/compress_encode.py +++ b/server/scripts/compress_encode.py @@ -62,7 +62,7 @@ def compress_encode(input_filepath, zip_chunk_store=True): image = itk.imread(input_filepath) image_da = itk.xarray_from_image(image) - dataset_name = str(Path(input_filepath)) + dataset_name = Path(input_filepath).stem image_ds = image_da.to_dataset(name=dataset_name) store_name = output_directory @@ -87,7 +87,7 @@ def compress_encode(input_filepath, reduced = image while not np.all(np.array(itk.size(reduced)) < 64): scale = len(pyramid) - shrink_factors = [2]*3 + shrink_factors = [2]*image.GetImageDimension() for i, s in enumerate(itk.size(reduced)): if s < 4: shrink_factors[i] = 1 From 3c33020ed451f22eb6a9d4d5a8dea871a4e8d028 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Wed, 10 Feb 2021 22:33:49 -0500 Subject: [PATCH 3/3] compress_encode: Add option to specify zip store url --- server/scripts/compress_encode.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/server/scripts/compress_encode.py b/server/scripts/compress_encode.py index 49f1587..b3cd55a 100644 --- a/server/scripts/compress_encode.py +++ b/server/scripts/compress_encode.py @@ -59,7 +59,8 @@ def compress_encode(input_filepath, cname='zstd', clevel=5, shuffle=True, - zip_chunk_store=True): + zip_chunk_store=True, + zip_store_url=None): image = itk.imread(input_filepath) image_da = itk.xarray_from_image(image) dataset_name = Path(input_filepath).stem @@ -119,7 +120,10 @@ def compress_encode(input_filepath, zip_store_path = str(Path(output_directory)) + '.zip' with zarr.storage.ZipStore(zip_store_path, mode='w', compression=0) as zip_store: zarr.copy_store(store, zip_store) - zchunkstore = zip_zchunkstore(zip_store_path) + store_url = None + if zip_store_url: + store_url = zip_store_url + zchunkstore = zip_zchunkstore(zip_store_path, store_url) with open(zip_store_path + '.zchunkstore', 'w') as fp: json.dump(zchunkstore, fp) @@ -135,6 +139,7 @@ def compress_encode(input_filepath, parser.add_argument('--clevel', default=5, type=int, help='Compression level.') parser.add_argument('--no-multi-scale', action='store_true', help='Do not generate a multi-scale pyramid.') parser.add_argument('--no-zip-chunk-store', action='store_true', help='Do not generate a zip file and corresponding chunk store.') + parser.add_argument('--zip-store-url', help='URL where the generated zip file will be hosted.') args = parser.parse_args() @@ -145,4 +150,5 @@ def compress_encode(input_filepath, cname=args.cname, clevel=args.clevel, shuffle=not args.no_shuffle, - zip_chunk_store=not args.no_zip_chunk_store) + zip_chunk_store=not args.no_zip_chunk_store, + zip_store_url=args.zip_store_url)