large-image-source-zarr 1.31.2.dev113__tar.gz → 1.31.2.dev115__tar.gz

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 (14) hide show
  1. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/PKG-INFO +3 -3
  2. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr/__init__.py +52 -2
  3. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr.egg-info/PKG-INFO +3 -3
  4. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr.egg-info/requires.txt +2 -2
  5. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/LICENSE +0 -0
  6. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/README.rst +0 -0
  7. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr/girder_source.py +0 -0
  8. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr.egg-info/SOURCES.txt +0 -0
  9. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr.egg-info/dependency_links.txt +0 -0
  10. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr.egg-info/entry_points.txt +0 -0
  11. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/large_image_source_zarr.egg-info/top_level.txt +0 -0
  12. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/pyproject.toml +0 -0
  13. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/setup.cfg +0 -0
  14. {large_image_source_zarr-1.31.2.dev113 → large_image_source_zarr-1.31.2.dev115}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-zarr
3
- Version: 1.31.2.dev113
3
+ Version: 1.31.2.dev115
4
4
  Summary: A OME Zarr tilesource for large_image.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,12 +19,12 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Requires-Python: >=3.6
20
20
  Description-Content-Type: text/x-rst
21
21
  License-File: LICENSE
22
- Requires-Dist: large-image>=1.31.2.dev113
22
+ Requires-Dist: large-image>=1.31.2.dev115
23
23
  Requires-Dist: zarr<3
24
24
  Requires-Dist: numcodecs
25
25
  Requires-Dist: imagecodecs-numcodecs!=2024.9.22
26
26
  Provides-Extra: girder
27
- Requires-Dist: girder-large-image>=1.31.2.dev113; extra == "girder"
27
+ Requires-Dist: girder-large-image>=1.31.2.dev115; extra == "girder"
28
28
  Provides-Extra: all
29
29
  Requires-Dist: large-image-converter; extra == "all"
30
30
 
@@ -1,3 +1,4 @@
1
+ import json
1
2
  import math
2
3
  import multiprocessing
3
4
  import os
@@ -92,6 +93,10 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
92
93
  self._initNew(path, **kwargs)
93
94
  else:
94
95
  self._initOpen(**kwargs)
96
+ internal = self.getInternalMetadata().get('zarr', {}).get('base', {})
97
+ multiscale = internal.get('multiscales', [None])[0]
98
+ if multiscale is not None:
99
+ self._imageDescription = multiscale.get('metadata', {}).get('description')
95
100
  self._tileLock = threading.RLock()
96
101
 
97
102
  def _initOpen(self, **kwargs):
@@ -1066,12 +1071,54 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1066
1071
 
1067
1072
  @property
1068
1073
  def imageDescription(self):
1074
+ if not hasattr(self, '_imageDescription'):
1075
+ return None
1076
+ if isinstance(self._imageDescription, dict):
1077
+ return self._imageDescription.get('description')
1069
1078
  return self._imageDescription
1070
1079
 
1071
1080
  @imageDescription.setter
1072
1081
  def imageDescription(self, description):
1073
1082
  self._checkEditable()
1074
- self._imageDescription = description
1083
+ try:
1084
+ json.dumps(description)
1085
+ except TypeError:
1086
+ msg = 'Description must be JSON serializable'
1087
+ raise TileSourceError(msg)
1088
+ if (
1089
+ hasattr(self, '_imageDescription') and
1090
+ isinstance(self._imageDescription, dict)
1091
+ ):
1092
+ self._imageDescription['description'] = description
1093
+ else:
1094
+ self._imageDescription = description
1095
+
1096
+ @property
1097
+ def additionalMetadata(self):
1098
+ if not hasattr(self, '_imageDescription'):
1099
+ return None
1100
+ if isinstance(self._imageDescription, dict):
1101
+ return self._imageDescription.get('additionalMetadata')
1102
+ return None
1103
+
1104
+ @additionalMetadata.setter
1105
+ def additionalMetadata(self, data):
1106
+ self._checkEditable()
1107
+ try:
1108
+ json.dumps(data)
1109
+ except TypeError:
1110
+ msg = 'Metadata must be JSON serializable'
1111
+ raise TileSourceError(msg)
1112
+ if (
1113
+ hasattr(self, '_imageDescription') and
1114
+ isinstance(self._imageDescription, dict)
1115
+ ):
1116
+ self._imageDescription['additionalMetadata'] = data
1117
+ else:
1118
+ self.imageDescription = dict(
1119
+ description=self._imageDescription,
1120
+ additionalMetadata=data,
1121
+ )
1075
1122
 
1076
1123
  @property
1077
1124
  def channelNames(self):
@@ -1179,7 +1226,10 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1179
1226
  output=iterator_output,
1180
1227
  resample=False, # TODO: incorporate resampling in core
1181
1228
  ):
1182
- new_tile = downsampleTileHalfRes(tile['tile'], resample_method)
1229
+ tile_data = tile['tile']
1230
+ if tile_data.shape[-1] == 1:
1231
+ tile_data = np.squeeze(tile['tile'], axis=(-1,))
1232
+ new_tile = downsampleTileHalfRes(tile_data, resample_method)
1183
1233
  overlap = {k: int(v / 2) for k, v in tile['tile_overlap'].items()}
1184
1234
  new_tile = new_tile[
1185
1235
  slice(overlap['top'], new_tile.shape[0] - overlap['bottom']),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-zarr
3
- Version: 1.31.2.dev113
3
+ Version: 1.31.2.dev115
4
4
  Summary: A OME Zarr tilesource for large_image.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,12 +19,12 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Requires-Python: >=3.6
20
20
  Description-Content-Type: text/x-rst
21
21
  License-File: LICENSE
22
- Requires-Dist: large-image>=1.31.2.dev113
22
+ Requires-Dist: large-image>=1.31.2.dev115
23
23
  Requires-Dist: zarr<3
24
24
  Requires-Dist: numcodecs
25
25
  Requires-Dist: imagecodecs-numcodecs!=2024.9.22
26
26
  Provides-Extra: girder
27
- Requires-Dist: girder-large-image>=1.31.2.dev113; extra == "girder"
27
+ Requires-Dist: girder-large-image>=1.31.2.dev115; extra == "girder"
28
28
  Provides-Extra: all
29
29
  Requires-Dist: large-image-converter; extra == "all"
30
30
 
@@ -1,4 +1,4 @@
1
- large-image>=1.31.2.dev113
1
+ large-image>=1.31.2.dev115
2
2
  zarr<3
3
3
  numcodecs
4
4
  imagecodecs-numcodecs!=2024.9.22
@@ -7,4 +7,4 @@ imagecodecs-numcodecs!=2024.9.22
7
7
  large-image-converter
8
8
 
9
9
  [girder]
10
- girder-large-image>=1.31.2.dev113
10
+ girder-large-image>=1.31.2.dev115