large-image-source-multi 1.30.5.dev2__tar.gz → 1.30.5.dev6__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.30.5.dev2/large_image_source_multi.egg-info → large_image_source_multi-1.30.5.dev6}/PKG-INFO +3 -3
  2. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/large_image_source_multi/__init__.py +12 -4
  3. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6/large_image_source_multi.egg-info}/PKG-INFO +3 -3
  4. large_image_source_multi-1.30.5.dev6/large_image_source_multi.egg-info/requires.txt +9 -0
  5. large_image_source_multi-1.30.5.dev2/large_image_source_multi.egg-info/requires.txt +0 -9
  6. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/LICENSE +0 -0
  7. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/README.rst +0 -0
  8. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/docs/specification.rst +0 -0
  9. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/large_image_source_multi/girder_source.py +0 -0
  10. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/large_image_source_multi.egg-info/SOURCES.txt +0 -0
  11. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/large_image_source_multi.egg-info/dependency_links.txt +0 -0
  12. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/large_image_source_multi.egg-info/entry_points.txt +0 -0
  13. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/large_image_source_multi.egg-info/top_level.txt +0 -0
  14. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/pyproject.toml +0 -0
  15. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/setup.cfg +0 -0
  16. {large_image_source_multi-1.30.5.dev2 → large_image_source_multi-1.30.5.dev6}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-multi
3
- Version: 1.30.5.dev2
3
+ Version: 1.30.5.dev6
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.
@@ -20,12 +20,12 @@ Requires-Python: >=3.6
20
20
  Description-Content-Type: text/x-rst
21
21
  License-File: LICENSE
22
22
  Requires-Dist: jsonschema
23
- Requires-Dist: large-image>=1.30.5.dev2
23
+ Requires-Dist: large-image>=1.30.5.dev6
24
24
  Requires-Dist: pyyaml
25
25
  Provides-Extra: all
26
26
  Requires-Dist: scikit-image; extra == "all"
27
27
  Provides-Extra: girder
28
- Requires-Dist: girder-large-image>=1.30.5.dev2; extra == "girder"
28
+ Requires-Dist: girder-large-image>=1.30.5.dev6; extra == "girder"
29
29
 
30
30
  A tilesource for large_image to composite other tile sources
31
31
 
@@ -1037,7 +1037,8 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1037
1037
  base[y:y + tile.shape[0], x:x + tile.shape[1], :] = tile
1038
1038
  return base
1039
1039
 
1040
- def _getTransformedTile(self, ts, transform, corners, scale, frame, crop=None):
1040
+ def _getTransformedTile(self, ts, transform, corners, scale, frame,
1041
+ crop=None, firstMerge=False):
1041
1042
  """
1042
1043
  Determine where the target tile's corners are located on the source.
1043
1044
  Fetch that so that we have at least sqrt(2) more resolution, then use
@@ -1054,6 +1055,9 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1054
1055
  :param crop: an optional dictionary to crop the source image in full
1055
1056
  resolution, untransformed coordinates. This may contain left, top,
1056
1057
  right, and bottom values in pixels.
1058
+ :param firstMerge: if False and using an alpha channel, transform
1059
+ with nearest neighbor rather than a higher order function to
1060
+ avoid transparency effects.
1057
1061
  :returns: a numpy array tile or None, x, y coordinates within the
1058
1062
  target tile for the placement of the numpy tile array.
1059
1063
  """
@@ -1145,9 +1149,12 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1145
1149
  destShape = [min(destShape[0], outh - y), min(destShape[1], outw - x)]
1146
1150
  if destShape[0] <= 0 or destShape[1] <= 0:
1147
1151
  return None, None, None
1148
- # Add an alpha band if needed
1152
+ # Add an alpha band if needed. This has to be done before the
1153
+ # transform if it isn't the first tile, since the unused transformed
1154
+ # areas need to have a zero alpha value
1149
1155
  if srcImage.shape[2] in {1, 3}:
1150
1156
  _, srcImage = _makeSameChannelDepth(np.zeros((1, 1, srcImage.shape[2] + 1)), srcImage)
1157
+ useNearest = srcImage.shape[2] in {2, 4} and not firstMerge
1151
1158
  # skimage.transform.warp is faster and has less artifacts than
1152
1159
  # scipy.ndimage.affine_transform. It is faster than using cupy's
1153
1160
  # version of scipy's affine_transform when the source and destination
@@ -1157,7 +1164,7 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1157
1164
  # provide any speed improvement
1158
1165
  srcImage.astype(float),
1159
1166
  skimage.transform.AffineTransform(np.linalg.inv(transform)),
1160
- order=3,
1167
+ order=0 if useNearest else 3,
1161
1168
  output_shape=(destShape[0], destShape[1], srcImage.shape[2]),
1162
1169
  ).astype(srcImage.dtype)
1163
1170
  return destImage, x, y
@@ -1234,7 +1241,8 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1234
1241
  else:
1235
1242
  sourceTile, x, y = self._getTransformedTile(
1236
1243
  ts, transform, corners, scale, sourceEntry.get('frame', 0),
1237
- source.get('position', {}).get('crop'))
1244
+ source.get('position', {}).get('crop'),
1245
+ firstMerge=tile is None)
1238
1246
  if sourceTile is not None and all(dim > 0 for dim in sourceTile.shape):
1239
1247
  targetDtype = np.dtype(self._info.get('dtype', ts.dtype))
1240
1248
  changeDtype = sourceTile.dtype != targetDtype
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-multi
3
- Version: 1.30.5.dev2
3
+ Version: 1.30.5.dev6
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.
@@ -20,12 +20,12 @@ Requires-Python: >=3.6
20
20
  Description-Content-Type: text/x-rst
21
21
  License-File: LICENSE
22
22
  Requires-Dist: jsonschema
23
- Requires-Dist: large-image>=1.30.5.dev2
23
+ Requires-Dist: large-image>=1.30.5.dev6
24
24
  Requires-Dist: pyyaml
25
25
  Provides-Extra: all
26
26
  Requires-Dist: scikit-image; extra == "all"
27
27
  Provides-Extra: girder
28
- Requires-Dist: girder-large-image>=1.30.5.dev2; extra == "girder"
28
+ Requires-Dist: girder-large-image>=1.30.5.dev6; extra == "girder"
29
29
 
30
30
  A tilesource for large_image to composite other tile sources
31
31
 
@@ -0,0 +1,9 @@
1
+ jsonschema
2
+ large-image>=1.30.5.dev6
3
+ pyyaml
4
+
5
+ [all]
6
+ scikit-image
7
+
8
+ [girder]
9
+ girder-large-image>=1.30.5.dev6
@@ -1,9 +0,0 @@
1
- jsonschema
2
- large-image>=1.30.5.dev2
3
- pyyaml
4
-
5
- [all]
6
- scikit-image
7
-
8
- [girder]
9
- girder-large-image>=1.30.5.dev2