large-image-source-zarr 1.29.3.dev24__tar.gz → 1.29.3.dev34__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.
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/PKG-INFO +3 -3
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr/__init__.py +20 -16
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr.egg-info/PKG-INFO +3 -3
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr.egg-info/requires.txt +2 -2
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/LICENSE +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/README.rst +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr/girder_source.py +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr.egg-info/SOURCES.txt +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr.egg-info/dependency_links.txt +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr.egg-info/entry_points.txt +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/large_image_source_zarr.egg-info/top_level.txt +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/pyproject.toml +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/setup.cfg +0 -0
- {large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: large-image-source-zarr
|
|
3
|
-
Version: 1.29.3.
|
|
3
|
+
Version: 1.29.3.dev34
|
|
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.
|
|
@@ -17,11 +17,11 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Requires-Python: >=3.6
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: large-image>=1.29.3.
|
|
20
|
+
Requires-Dist: large-image>=1.29.3.dev34
|
|
21
21
|
Requires-Dist: zarr
|
|
22
22
|
Requires-Dist: imagecodecs-numcodecs
|
|
23
23
|
Provides-Extra: girder
|
|
24
|
-
Requires-Dist: girder-large-image>=1.29.3.
|
|
24
|
+
Requires-Dist: girder-large-image>=1.29.3.dev34; extra == "girder"
|
|
25
25
|
Provides-Extra: all
|
|
26
26
|
Requires-Dist: large-image-converter; extra == "all"
|
|
27
27
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import math
|
|
2
|
+
import multiprocessing
|
|
2
3
|
import os
|
|
3
4
|
import shutil
|
|
4
5
|
import tempfile
|
|
@@ -127,11 +128,12 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
127
128
|
"""
|
|
128
129
|
Initialize the tile class for creating a new image.
|
|
129
130
|
"""
|
|
130
|
-
self._tempdir = tempfile.
|
|
131
|
-
self.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
self.
|
|
131
|
+
self._tempdir = Path(tempfile.gettempdir(), path)
|
|
132
|
+
self._created = False
|
|
133
|
+
if not self._tempdir.exists():
|
|
134
|
+
self._created = True
|
|
135
|
+
self._zarr_store = zarr.DirectoryStore(str(self._tempdir))
|
|
136
|
+
self._zarr = zarr.open(self._zarr_store, mode='a')
|
|
135
137
|
self._largeImagePath = None
|
|
136
138
|
self._dims = {}
|
|
137
139
|
self.sizeX = self.sizeY = self.levels = 0
|
|
@@ -140,7 +142,8 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
140
142
|
self._output = None
|
|
141
143
|
self._editable = True
|
|
142
144
|
self._bandRanges = None
|
|
143
|
-
self.
|
|
145
|
+
self._threadLock = threading.RLock()
|
|
146
|
+
self._processLock = multiprocessing.Lock()
|
|
144
147
|
self._framecount = 0
|
|
145
148
|
self._mm_x = 0
|
|
146
149
|
self._mm_y = 0
|
|
@@ -157,7 +160,8 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
157
160
|
except Exception:
|
|
158
161
|
pass
|
|
159
162
|
try:
|
|
160
|
-
self.
|
|
163
|
+
if self._created:
|
|
164
|
+
shutil.rmtree(self._tempdir)
|
|
161
165
|
except Exception:
|
|
162
166
|
pass
|
|
163
167
|
|
|
@@ -334,7 +338,7 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
334
338
|
Validate that we can read tiles from the zarr parent group in
|
|
335
339
|
self._zarr. Set up the appropriate class variables.
|
|
336
340
|
"""
|
|
337
|
-
if self._editable:
|
|
341
|
+
if self._editable and hasattr(self, '_axes'):
|
|
338
342
|
self._writeInternalMetadata()
|
|
339
343
|
found = self._scanZarrGroup(self._zarr)
|
|
340
344
|
if found['best'] is None:
|
|
@@ -596,7 +600,7 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
596
600
|
}
|
|
597
601
|
tile, mask, placement, axes = self._validateNewTile(tile, mask, placement, axes)
|
|
598
602
|
|
|
599
|
-
with self.
|
|
603
|
+
with self._threadLock and self._processLock:
|
|
600
604
|
self._axes = {k: i for i, k in enumerate(axes)}
|
|
601
605
|
new_dims = {
|
|
602
606
|
a: max(
|
|
@@ -673,7 +677,7 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
673
677
|
with an image. The numpy array can have 2 or 3 dimensions.
|
|
674
678
|
"""
|
|
675
679
|
data, _ = _imageToNumpy(image)
|
|
676
|
-
with self.
|
|
680
|
+
with self._threadLock and self._processLock:
|
|
677
681
|
if imageKey is None:
|
|
678
682
|
# Each associated image should be in its own group
|
|
679
683
|
num_existing = len(self.getAssociatedImagesList())
|
|
@@ -688,7 +692,7 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
688
692
|
|
|
689
693
|
def _writeInternalMetadata(self):
|
|
690
694
|
self._checkEditable()
|
|
691
|
-
with self.
|
|
695
|
+
with self._threadLock and self._processLock:
|
|
692
696
|
name = str(self._tempdir.name).split('/')[-1]
|
|
693
697
|
arrays = dict(self._zarr.arrays())
|
|
694
698
|
channel_axis = self._axes.get('c', self._axes.get('s'))
|
|
@@ -700,8 +704,8 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
700
704
|
for arr_name in arrays:
|
|
701
705
|
level = int(arr_name)
|
|
702
706
|
scale = [1.0 for a in sorted_axes]
|
|
703
|
-
scale[self._axes.get('x')] = self._mm_x * (2 ** level)
|
|
704
|
-
scale[self._axes.get('y')] = self._mm_y * (2 ** level)
|
|
707
|
+
scale[self._axes.get('x')] = (self._mm_x or 0) * (2 ** level)
|
|
708
|
+
scale[self._axes.get('y')] = (self._mm_y or 0) * (2 ** level)
|
|
705
709
|
dataset_metadata = {
|
|
706
710
|
'path': arr_name,
|
|
707
711
|
'coordinateTransformations': [{
|
|
@@ -974,7 +978,7 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
974
978
|
**frame_position,
|
|
975
979
|
)
|
|
976
980
|
|
|
977
|
-
source.
|
|
981
|
+
source._validateZarr()
|
|
978
982
|
|
|
979
983
|
if suffix in ['.zarr', '.db', '.sqlite', '.zip']:
|
|
980
984
|
if resample is None:
|
|
@@ -987,7 +991,7 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
987
991
|
source._writeInternalMetadata() # rewrite with new level datasets
|
|
988
992
|
|
|
989
993
|
if suffix == '.zarr':
|
|
990
|
-
shutil.copytree(source._tempdir
|
|
994
|
+
shutil.copytree(str(source._tempdir), path)
|
|
991
995
|
elif suffix in ['.db', '.sqlite']:
|
|
992
996
|
sqlite_store = zarr.SQLiteStore(path)
|
|
993
997
|
zarr.copy_store(source._zarr_store, sqlite_store, if_exists='replace')
|
|
@@ -1000,7 +1004,7 @@ class ZarrFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
|
1000
1004
|
else:
|
|
1001
1005
|
from large_image_converter import convert
|
|
1002
1006
|
|
|
1003
|
-
attrs_path =
|
|
1007
|
+
attrs_path = source._tempdir / '.zattrs'
|
|
1004
1008
|
params = {}
|
|
1005
1009
|
if lossy and self.dtype == np.uint8:
|
|
1006
1010
|
params['compression'] = 'jpeg'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: large-image-source-zarr
|
|
3
|
-
Version: 1.29.3.
|
|
3
|
+
Version: 1.29.3.dev34
|
|
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.
|
|
@@ -17,11 +17,11 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Requires-Python: >=3.6
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: large-image>=1.29.3.
|
|
20
|
+
Requires-Dist: large-image>=1.29.3.dev34
|
|
21
21
|
Requires-Dist: zarr
|
|
22
22
|
Requires-Dist: imagecodecs-numcodecs
|
|
23
23
|
Provides-Extra: girder
|
|
24
|
-
Requires-Dist: girder-large-image>=1.29.3.
|
|
24
|
+
Requires-Dist: girder-large-image>=1.29.3.dev34; extra == "girder"
|
|
25
25
|
Provides-Extra: all
|
|
26
26
|
Requires-Dist: large-image-converter; extra == "all"
|
|
27
27
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{large-image-source-zarr-1.29.3.dev24 → large-image-source-zarr-1.29.3.dev34}/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|