large-image-source-tifffile 1.27.5.dev6__py3-none-any.whl → 1.28.3.dev2__py3-none-any.whl
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_tifffile/__init__.py +27 -17
- {large_image_source_tifffile-1.27.5.dev6.dist-info → large_image_source_tifffile-1.28.3.dev2.dist-info}/METADATA +3 -3
- large_image_source_tifffile-1.28.3.dev2.dist-info/RECORD +8 -0
- large_image_source_tifffile-1.27.5.dev6.dist-info/RECORD +0 -8
- {large_image_source_tifffile-1.27.5.dev6.dist-info → large_image_source_tifffile-1.28.3.dev2.dist-info}/LICENSE +0 -0
- {large_image_source_tifffile-1.27.5.dev6.dist-info → large_image_source_tifffile-1.28.3.dev2.dist-info}/WHEEL +0 -0
- {large_image_source_tifffile-1.27.5.dev6.dist-info → large_image_source_tifffile-1.28.3.dev2.dist-info}/entry_points.txt +0 -0
- {large_image_source_tifffile-1.27.5.dev6.dist-info → large_image_source_tifffile-1.28.3.dev2.dist-info}/top_level.txt +0 -0
@@ -109,6 +109,7 @@ class TifffileFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
109
109
|
self._largeImagePath = str(self._getLargeImagePath())
|
110
110
|
|
111
111
|
_lazyImport()
|
112
|
+
self.addKnownExtensions()
|
112
113
|
try:
|
113
114
|
self._tf = tifffile.TiffFile(self._largeImagePath)
|
114
115
|
except Exception:
|
@@ -473,19 +474,12 @@ class TifffileFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
473
474
|
sidx = frame // self._basis['P'][0]
|
474
475
|
else:
|
475
476
|
sidx = 0
|
476
|
-
series = self._tf.series[self._series[sidx]]
|
477
477
|
nonempty = [None] * self.levels
|
478
478
|
nonempty[self.levels - 1] = True
|
479
|
+
series = self._tf.series[self._series[sidx]]
|
480
|
+
za, hasgbs = self._getZarrArray(series, sidx)
|
479
481
|
xidx = series.axes.index('X')
|
480
482
|
yidx = series.axes.index('Y')
|
481
|
-
with self._zarrlock:
|
482
|
-
if sidx not in self._zarrcache:
|
483
|
-
if len(self._zarrcache) > 10:
|
484
|
-
self._zarrcache = {}
|
485
|
-
za = zarr.open(series.aszarr(), mode='r')
|
486
|
-
hasgbs = hasattr(za[0], 'get_basic_selection')
|
487
|
-
self._zarrcache[sidx] = (za, hasgbs)
|
488
|
-
za, hasgbs = self._zarrcache[sidx]
|
489
483
|
for ll in range(1, len(series.levels)):
|
490
484
|
scale = round(math.log(max(za[0].shape[xidx] / za[ll].shape[xidx],
|
491
485
|
za[0].shape[yidx] / za[ll].shape[yidx])) / math.log(2))
|
@@ -496,6 +490,19 @@ class TifffileFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
496
490
|
self._nonempty_levels_list[frame] = nonempty
|
497
491
|
return nonempty
|
498
492
|
|
493
|
+
def _getZarrArray(self, series, sidx):
|
494
|
+
with self._zarrlock:
|
495
|
+
if sidx not in self._zarrcache:
|
496
|
+
if len(self._zarrcache) > 10:
|
497
|
+
self._zarrcache = {}
|
498
|
+
za = zarr.open(series.aszarr(), mode='r')
|
499
|
+
hasgbs = hasattr(za[0], 'get_basic_selection')
|
500
|
+
if not hasgbs and math.prod(series.shape) < 256 * 1024 ** 2:
|
501
|
+
za = series.asarray()
|
502
|
+
self._zarrcache[sidx] = (za, hasgbs)
|
503
|
+
za, hasgbs = self._zarrcache[sidx]
|
504
|
+
return za, hasgbs
|
505
|
+
|
499
506
|
@methodcache()
|
500
507
|
def getTile(self, x, y, z, pilImageAllowed=False, numpyAllowed=False, **kwargs):
|
501
508
|
frame = self._getFrame(**kwargs)
|
@@ -506,14 +513,7 @@ class TifffileFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
506
513
|
else:
|
507
514
|
sidx = 0
|
508
515
|
series = self._tf.series[self._series[sidx]]
|
509
|
-
|
510
|
-
if sidx not in self._zarrcache:
|
511
|
-
if len(self._zarrcache) > 10:
|
512
|
-
self._zarrcache = {}
|
513
|
-
za = zarr.open(series.aszarr(), mode='r')
|
514
|
-
hasgbs = hasattr(za[0], 'get_basic_selection')
|
515
|
-
self._zarrcache[sidx] = (za, hasgbs)
|
516
|
-
za, hasgbs = self._zarrcache[sidx]
|
516
|
+
za, hasgbs = self._getZarrArray(series, sidx)
|
517
517
|
xidx = series.axes.index('X')
|
518
518
|
yidx = series.axes.index('Y')
|
519
519
|
if hasgbs:
|
@@ -558,6 +558,16 @@ class TifffileFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
558
558
|
return self._outputTile(tile, TILE_FORMAT_NUMPY, x, y, z,
|
559
559
|
pilImageAllowed, numpyAllowed, **kwargs)
|
560
560
|
|
561
|
+
@classmethod
|
562
|
+
def addKnownExtensions(cls):
|
563
|
+
if not hasattr(cls, '_addedExtensions'):
|
564
|
+
_lazyImport()
|
565
|
+
cls._addedExtensions = True
|
566
|
+
cls.extensions = cls.extensions.copy()
|
567
|
+
for ext in tifffile.TIFF.FILE_EXTENSIONS:
|
568
|
+
if ext not in cls.extensions:
|
569
|
+
cls.extensions[ext] = SourcePriority.IMPLICIT
|
570
|
+
|
561
571
|
|
562
572
|
def open(*args, **kwargs):
|
563
573
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: large-image-source-tifffile
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.28.3.dev2
|
4
4
|
Summary: A tifffile tilesource for large_image.
|
5
5
|
Home-page: https://github.com/girder/large_image
|
6
6
|
Author: Kitware, Inc.
|
@@ -17,12 +17,12 @@ Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
18
18
|
Requires-Python: >=3.8
|
19
19
|
License-File: LICENSE
|
20
|
-
Requires-Dist: large-image >=1.
|
20
|
+
Requires-Dist: large-image >=1.28.3.dev2
|
21
21
|
Requires-Dist: dask[array]
|
22
22
|
Requires-Dist: tifffile[all]
|
23
23
|
Requires-Dist: zarr
|
24
24
|
Provides-Extra: girder
|
25
|
-
Requires-Dist: girder-large-image >=1.
|
25
|
+
Requires-Dist: girder-large-image >=1.28.3.dev2 ; extra == 'girder'
|
26
26
|
|
27
27
|
A tifffile tilesource for large_image.
|
28
28
|
|
@@ -0,0 +1,8 @@
|
|
1
|
+
large_image_source_tifffile/__init__.py,sha256=7hREWGbhyYOcz94l_vxMAOTUSJKtJY37TEIZdkvamNw,25001
|
2
|
+
large_image_source_tifffile/girder_source.py,sha256=8YsxpSK_UzbAcpjn6fIMlgKye2FchkB8_HTSQV0FpRA,1064
|
3
|
+
large_image_source_tifffile-1.28.3.dev2.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
4
|
+
large_image_source_tifffile-1.28.3.dev2.dist-info/METADATA,sha256=2XRfComEY1H1fO7m6luWIfzukgRCnPmPJw6RVkiDpZw,1061
|
5
|
+
large_image_source_tifffile-1.28.3.dev2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
6
|
+
large_image_source_tifffile-1.28.3.dev2.dist-info/entry_points.txt,sha256=aILCN5f7-Zj8-WRXcABxCQvqJv9VLTvqRhZ_7HEyokc,190
|
7
|
+
large_image_source_tifffile-1.28.3.dev2.dist-info/top_level.txt,sha256=feOAsix2Rzy6mjy2Ua-N0-L6tlKsgvLdRhO6Hd8_ZFs,28
|
8
|
+
large_image_source_tifffile-1.28.3.dev2.dist-info/RECORD,,
|
@@ -1,8 +0,0 @@
|
|
1
|
-
large_image_source_tifffile/__init__.py,sha256=7jHLRfFXszTDfTcD6aRylJthE03lK5FCHh4rKkHtHEw,24668
|
2
|
-
large_image_source_tifffile/girder_source.py,sha256=8YsxpSK_UzbAcpjn6fIMlgKye2FchkB8_HTSQV0FpRA,1064
|
3
|
-
large_image_source_tifffile-1.27.5.dev6.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
4
|
-
large_image_source_tifffile-1.27.5.dev6.dist-info/METADATA,sha256=8nBvBa8UIknq6Y8vtuL_hKFRzWg9ne44VyqOsfA9M2U,1061
|
5
|
-
large_image_source_tifffile-1.27.5.dev6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
6
|
-
large_image_source_tifffile-1.27.5.dev6.dist-info/entry_points.txt,sha256=aILCN5f7-Zj8-WRXcABxCQvqJv9VLTvqRhZ_7HEyokc,190
|
7
|
-
large_image_source_tifffile-1.27.5.dev6.dist-info/top_level.txt,sha256=feOAsix2Rzy6mjy2Ua-N0-L6tlKsgvLdRhO6Hd8_ZFs,28
|
8
|
-
large_image_source_tifffile-1.27.5.dev6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|