large-image-source-multi 1.30.4.dev2__tar.gz → 1.30.5__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.4.dev2/large_image_source_multi.egg-info → large_image_source_multi-1.30.5}/PKG-INFO +3 -3
  2. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/large_image_source_multi/__init__.py +17 -7
  3. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5/large_image_source_multi.egg-info}/PKG-INFO +3 -3
  4. large_image_source_multi-1.30.5/large_image_source_multi.egg-info/requires.txt +9 -0
  5. large_image_source_multi-1.30.4.dev2/large_image_source_multi.egg-info/requires.txt +0 -9
  6. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/LICENSE +0 -0
  7. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/README.rst +0 -0
  8. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/docs/specification.rst +0 -0
  9. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/large_image_source_multi/girder_source.py +0 -0
  10. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/large_image_source_multi.egg-info/SOURCES.txt +0 -0
  11. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/large_image_source_multi.egg-info/dependency_links.txt +0 -0
  12. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/large_image_source_multi.egg-info/entry_points.txt +0 -0
  13. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/large_image_source_multi.egg-info/top_level.txt +0 -0
  14. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/pyproject.toml +0 -0
  15. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/setup.cfg +0 -0
  16. {large_image_source_multi-1.30.4.dev2 → large_image_source_multi-1.30.5}/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.4.dev2
3
+ Version: 1.30.5
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.4.dev2
23
+ Requires-Dist: large-image>=1.30.5
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.4.dev2; extra == "girder"
28
+ Requires-Dist: girder-large-image>=1.30.5; extra == "girder"
29
29
 
30
30
  A tilesource for large_image to composite other tile sources
31
31
 
@@ -300,10 +300,12 @@ SourceEntrySchema = {
300
300
  'sampleScale is applied',
301
301
  'type': 'number',
302
302
  },
303
- 'style': {'type': 'object'},
303
+ 'style': {
304
+ 'description': 'A style specification to pass to the base tile source',
305
+ 'type': 'object',
306
+ },
304
307
  'params': {
305
- 'description':
306
- 'Additional parameters to pass to the base tile source',
308
+ 'description': 'Additional parameters to pass to the base tile source',
307
309
  'type': 'object',
308
310
  },
309
311
  },
@@ -1035,7 +1037,8 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1035
1037
  base[y:y + tile.shape[0], x:x + tile.shape[1], :] = tile
1036
1038
  return base
1037
1039
 
1038
- def _getTransformedTile(self, ts, transform, corners, scale, frame, crop=None):
1040
+ def _getTransformedTile(self, ts, transform, corners, scale, frame,
1041
+ crop=None, firstMerge=False):
1039
1042
  """
1040
1043
  Determine where the target tile's corners are located on the source.
1041
1044
  Fetch that so that we have at least sqrt(2) more resolution, then use
@@ -1052,6 +1055,9 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1052
1055
  :param crop: an optional dictionary to crop the source image in full
1053
1056
  resolution, untransformed coordinates. This may contain left, top,
1054
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.
1055
1061
  :returns: a numpy array tile or None, x, y coordinates within the
1056
1062
  target tile for the placement of the numpy tile array.
1057
1063
  """
@@ -1143,9 +1149,12 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1143
1149
  destShape = [min(destShape[0], outh - y), min(destShape[1], outw - x)]
1144
1150
  if destShape[0] <= 0 or destShape[1] <= 0:
1145
1151
  return None, None, None
1146
- # 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
1147
1155
  if srcImage.shape[2] in {1, 3}:
1148
1156
  _, srcImage = _makeSameChannelDepth(np.zeros((1, 1, srcImage.shape[2] + 1)), srcImage)
1157
+ useNearest = srcImage.shape[2] in {2, 4} and not firstMerge
1149
1158
  # skimage.transform.warp is faster and has less artifacts than
1150
1159
  # scipy.ndimage.affine_transform. It is faster than using cupy's
1151
1160
  # version of scipy's affine_transform when the source and destination
@@ -1155,7 +1164,7 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1155
1164
  # provide any speed improvement
1156
1165
  srcImage.astype(float),
1157
1166
  skimage.transform.AffineTransform(np.linalg.inv(transform)),
1158
- order=3,
1167
+ order=0 if useNearest else 3,
1159
1168
  output_shape=(destShape[0], destShape[1], srcImage.shape[2]),
1160
1169
  ).astype(srcImage.dtype)
1161
1170
  return destImage, x, y
@@ -1232,7 +1241,8 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1232
1241
  else:
1233
1242
  sourceTile, x, y = self._getTransformedTile(
1234
1243
  ts, transform, corners, scale, sourceEntry.get('frame', 0),
1235
- source.get('position', {}).get('crop'))
1244
+ source.get('position', {}).get('crop'),
1245
+ firstMerge=tile is None)
1236
1246
  if sourceTile is not None and all(dim > 0 for dim in sourceTile.shape):
1237
1247
  targetDtype = np.dtype(self._info.get('dtype', ts.dtype))
1238
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.4.dev2
3
+ Version: 1.30.5
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.4.dev2
23
+ Requires-Dist: large-image>=1.30.5
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.4.dev2; extra == "girder"
28
+ Requires-Dist: girder-large-image>=1.30.5; 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
3
+ pyyaml
4
+
5
+ [all]
6
+ scikit-image
7
+
8
+ [girder]
9
+ girder-large-image>=1.30.5
@@ -1,9 +0,0 @@
1
- jsonschema
2
- large-image>=1.30.4.dev2
3
- pyyaml
4
-
5
- [all]
6
- scikit-image
7
-
8
- [girder]
9
- girder-large-image>=1.30.4.dev2