large-image-source-multi 1.27.2.dev6__tar.gz → 1.27.2.dev10__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 (16) hide show
  1. {large-image-source-multi-1.27.2.dev6/large_image_source_multi.egg-info → large-image-source-multi-1.27.2.dev10}/PKG-INFO +1 -1
  2. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/large_image_source_multi/__init__.py +13 -5
  3. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10/large_image_source_multi.egg-info}/PKG-INFO +1 -1
  4. large-image-source-multi-1.27.2.dev10/large_image_source_multi.egg-info/requires.txt +9 -0
  5. large-image-source-multi-1.27.2.dev6/large_image_source_multi.egg-info/requires.txt +0 -9
  6. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/LICENSE +0 -0
  7. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/README.rst +0 -0
  8. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/docs/specification.rst +0 -0
  9. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/large_image_source_multi/girder_source.py +0 -0
  10. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/large_image_source_multi.egg-info/SOURCES.txt +0 -0
  11. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/large_image_source_multi.egg-info/dependency_links.txt +0 -0
  12. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/large_image_source_multi.egg-info/entry_points.txt +0 -0
  13. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/large_image_source_multi.egg-info/top_level.txt +0 -0
  14. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/pyproject.toml +0 -0
  15. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/setup.cfg +0 -0
  16. {large-image-source-multi-1.27.2.dev6 → large-image-source-multi-1.27.2.dev10}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-multi
3
- Version: 1.27.2.dev6
3
+ Version: 1.27.2.dev10
4
4
  Summary: A tilesource for large_image to composite other tile sources
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -743,6 +743,7 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
743
743
  # construct a frame list. Each frame is a list of sources that affect
744
744
  # it along with the frame number from that source.
745
745
  lastSource = None
746
+ bandCount = 0
746
747
  for sourceIdx, source in enumerate(sources):
747
748
  path = source['path']
748
749
  if os.path.abspath(path) == absLargeImagePath:
@@ -766,11 +767,14 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
766
767
  self._nativeMagnification[key] or tsMag.get(key))
767
768
  numChecked += 1
768
769
  tsMeta = ts.getMetadata()
770
+ bandCount = max(bandCount, ts.bandCount or 0)
769
771
  if 'bands' in tsMeta and self._info.get('singleBand') is not True:
770
772
  if not hasattr(self, '_bands'):
771
773
  self._bands = {}
772
774
  self._bands.update(tsMeta['bands'])
773
775
  lastSource = source
776
+ self._bandcount = 1 if self._info.get('singleBand') else (
777
+ len(self._bands) if hasattr(self, '_bands') else (bandCount or None))
774
778
  bbox = self._sourceBoundingBox(source, tsMeta['sizeX'], tsMeta['sizeY'])
775
779
  computedWidth = max(computedWidth, int(math.ceil(bbox['right'])))
776
780
  computedHeight = max(computedHeight, int(math.ceil(bbox['bottom'])))
@@ -934,19 +938,19 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
934
938
  vfill = np.zeros(
935
939
  (tile.shape[0] + y - base.shape[0], base.shape[1], base.shape[2]),
936
940
  dtype=base.dtype)
937
- if base.shape[2] == 2 or base.shape[2] == 4:
941
+ if base.shape[2] in {2, 4}:
938
942
  vfill[:, :, -1] = fullAlphaValue(base)
939
943
  base = np.vstack((base, vfill))
940
944
  if base.shape[1] < tile.shape[1] + x:
941
945
  hfill = np.zeros(
942
946
  (base.shape[0], tile.shape[1] + x - base.shape[1], base.shape[2]),
943
947
  dtype=base.dtype)
944
- if base.shape[2] == 2 or base.shape[2] == 4:
948
+ if base.shape[2] in {2, 4}:
945
949
  hfill[:, :, -1] = fullAlphaValue(base)
946
950
  base = np.hstack((base, hfill))
947
951
  if base.flags.writeable is False:
948
952
  base = base.copy()
949
- if base.shape[2] == 2 or base.shape[2] == 4:
953
+ if base.shape[2] in {2, 4}:
950
954
  baseA = base[y:y + tile.shape[0], x:x + tile.shape[1], -1].astype(
951
955
  float) / fullAlphaValue(base)
952
956
  tileA = tile[:, :, -1].astype(float) / fullAlphaValue(tile)
@@ -1112,8 +1116,8 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1112
1116
  transform[0][0] > 0 and transform[0][1] == 0 and
1113
1117
  transform[1][0] == 0 and transform[1][1] > 0 and
1114
1118
  transform[0][2] % scaleX == 0 and transform[1][2] % scaleY == 0)) and
1115
- ((scaleX % scale) == 0 or math.log(scaleX, 2).is_integer) and
1116
- ((scaleY % scale) == 0 or math.log(scaleY, 2).is_integer)) and False:
1119
+ ((scaleX % scale) == 0 or math.log(scaleX, 2).is_integer()) and
1120
+ ((scaleY % scale) == 0 or math.log(scaleY, 2).is_integer())):
1117
1121
  srccorners = (
1118
1122
  list(np.dot(bbox['inverse'], np.array(corners).T).T)
1119
1123
  if transform is not None else corners)
@@ -1208,6 +1212,10 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1208
1212
  dtype=getattr(self, '_firstdtype', np.uint8))
1209
1213
  if self._info.get('singleBand'):
1210
1214
  tile = tile[:, :, 0]
1215
+ elif tile.shape[2] in {2, 4} and (self._bandCount or tile.shape[2]) < tile.shape[2]:
1216
+ # remove a needless alpha channel
1217
+ if np.all(tile[:, :, -1] == fullAlphaValue(tile)):
1218
+ tile = tile[:, :, :-1]
1211
1219
  # We should always have a tile
1212
1220
  return self._outputTile(tile, TILE_FORMAT_NUMPY, x, y, z,
1213
1221
  pilImageAllowed, numpyAllowed, **kwargs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-multi
3
- Version: 1.27.2.dev6
3
+ Version: 1.27.2.dev10
4
4
  Summary: A tilesource for large_image to composite other tile sources
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -0,0 +1,9 @@
1
+ jsonschema
2
+ large-image>=1.27.2.dev10
3
+ pyyaml
4
+
5
+ [all]
6
+ scikit-image
7
+
8
+ [girder]
9
+ girder-large-image>=1.27.2.dev10
@@ -1,9 +0,0 @@
1
- jsonschema
2
- large-image>=1.27.2.dev6
3
- pyyaml
4
-
5
- [all]
6
- scikit-image
7
-
8
- [girder]
9
- girder-large-image>=1.27.2.dev6