large-image-source-multi 1.29.7.dev16__tar.gz → 1.29.7.dev18__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.29.7.dev16/large_image_source_multi.egg-info → large-image-source-multi-1.29.7.dev18}/PKG-INFO +3 -3
  2. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/large_image_source_multi/__init__.py +26 -19
  3. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18/large_image_source_multi.egg-info}/PKG-INFO +3 -3
  4. large-image-source-multi-1.29.7.dev18/large_image_source_multi.egg-info/requires.txt +9 -0
  5. large-image-source-multi-1.29.7.dev16/large_image_source_multi.egg-info/requires.txt +0 -9
  6. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/LICENSE +0 -0
  7. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/README.rst +0 -0
  8. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/docs/specification.rst +0 -0
  9. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/large_image_source_multi/girder_source.py +0 -0
  10. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/large_image_source_multi.egg-info/SOURCES.txt +0 -0
  11. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/large_image_source_multi.egg-info/dependency_links.txt +0 -0
  12. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/large_image_source_multi.egg-info/entry_points.txt +0 -0
  13. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/large_image_source_multi.egg-info/top_level.txt +0 -0
  14. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/pyproject.toml +0 -0
  15. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/setup.cfg +0 -0
  16. {large-image-source-multi-1.29.7.dev16 → large-image-source-multi-1.29.7.dev18}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-multi
3
- Version: 1.29.7.dev16
3
+ Version: 1.29.7.dev18
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.
@@ -19,12 +19,12 @@ Requires-Python: >=3.6
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  Requires-Dist: jsonschema
22
- Requires-Dist: large-image>=1.29.7.dev16
22
+ Requires-Dist: large-image>=1.29.7.dev18
23
23
  Requires-Dist: pyyaml
24
24
  Provides-Extra: all
25
25
  Requires-Dist: scikit-image; extra == "all"
26
26
  Provides-Extra: girder
27
- Requires-Dist: girder-large-image>=1.29.7.dev16; extra == "girder"
27
+ Requires-Dist: girder-large-image>=1.29.7.dev18; extra == "girder"
28
28
 
29
29
  A tilesource for large_image to composite other tile sources
30
30
 
@@ -1028,8 +1028,8 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1028
1028
  """
1029
1029
  Determine where the target tile's corners are located on the source.
1030
1030
  Fetch that so that we have at least sqrt(2) more resolution, then use
1031
- scikit-image warp to transform it. scikit-image does a better job than
1032
- scipy.ndimage.affine_transform.
1031
+ scikit-image warp to transform it. scikit-image does a better and
1032
+ faster job than scipy.ndimage.affine_transform.
1033
1033
 
1034
1034
  :param ts: the source of the image to transform.
1035
1035
  :param transform: a 3x3 affine 2d matrix for transforming the source
@@ -1118,28 +1118,35 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
1118
1118
  x, y = int(math.floor(x)), int(math.floor(y))
1119
1119
  # Recompute where the source corners will land
1120
1120
  destcorners = (np.dot(transform, regioncorners.T).T).tolist()
1121
- destsize = (max(math.ceil(c[0]) for c in destcorners),
1122
- max(math.ceil(c[1]) for c in destcorners))
1121
+ destShape = [
1122
+ max(max(math.ceil(c[1]) for c in destcorners), srcImage.shape[0]),
1123
+ max(max(math.ceil(c[0]) for c in destcorners), srcImage.shape[1]),
1124
+ ]
1125
+ if max(0, -x) or max(0, -y):
1126
+ transform[0][2] -= max(0, -x)
1127
+ transform[1][2] -= max(0, -y)
1128
+ destShape[0] -= max(0, -y)
1129
+ destShape[1] -= max(0, -x)
1130
+ x += max(0, -x)
1131
+ y += max(0, -y)
1132
+ destShape = [min(destShape[0], outh - y), min(destShape[1], outw - x)]
1133
+ if destShape[0] <= 0 or destShape[1] <= 0:
1134
+ return None, None, None
1123
1135
  # Add an alpha band if needed
1124
1136
  if srcImage.shape[2] in {1, 3}:
1125
1137
  _, srcImage = _makeSameChannelDepth(np.zeros((1, 1, srcImage.shape[2] + 1)), srcImage)
1126
- # Add enough space to warp the source image in place
1127
- srcImage = np.pad(srcImage, (
1128
- (0, max(0, destsize[1] - srcImage.shape[0])),
1129
- (0, max(0, destsize[0] - srcImage.shape[1])),
1130
- (0, 0)), mode='constant')
1138
+ # skimage.transform.warp is faster and has less artifacts than
1139
+ # scipy.ndimage.affine_transform. It is faster than using cupy's
1140
+ # version of scipy's affine_transform when the source and destination
1141
+ # images are converted from numpy to cupy and back in this method.
1131
1142
  destImage = skimage.transform.warp(
1143
+ # Although using np.float32 could reduce memory use, it doesn't
1144
+ # provide any speed improvement
1132
1145
  srcImage.astype(float),
1133
- skimage.transform.AffineTransform(np.linalg.inv(
1134
- transform))).astype(srcImage.dtype)
1135
- # Trim to target size and location
1136
- destImage = destImage[max(0, -y):, max(0, -x):, :]
1137
- x += max(0, -x)
1138
- y += max(0, -y)
1139
- if x >= outw or y >= outh:
1140
- return None, None, None
1141
- destImage = destImage[:min(destImage.shape[0], outh - y),
1142
- :min(destImage.shape[1], outw - x), :]
1146
+ skimage.transform.AffineTransform(np.linalg.inv(transform)),
1147
+ order=3,
1148
+ output_shape=(destShape[0], destShape[1], srcImage.shape[2]),
1149
+ ).astype(srcImage.dtype)
1143
1150
  return destImage, x, y
1144
1151
 
1145
1152
  def _addSourceToTile(self, tile, sourceEntry, corners, scale):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-multi
3
- Version: 1.29.7.dev16
3
+ Version: 1.29.7.dev18
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.
@@ -19,12 +19,12 @@ Requires-Python: >=3.6
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  Requires-Dist: jsonschema
22
- Requires-Dist: large-image>=1.29.7.dev16
22
+ Requires-Dist: large-image>=1.29.7.dev18
23
23
  Requires-Dist: pyyaml
24
24
  Provides-Extra: all
25
25
  Requires-Dist: scikit-image; extra == "all"
26
26
  Provides-Extra: girder
27
- Requires-Dist: girder-large-image>=1.29.7.dev16; extra == "girder"
27
+ Requires-Dist: girder-large-image>=1.29.7.dev18; extra == "girder"
28
28
 
29
29
  A tilesource for large_image to composite other tile sources
30
30
 
@@ -0,0 +1,9 @@
1
+ jsonschema
2
+ large-image>=1.29.7.dev18
3
+ pyyaml
4
+
5
+ [all]
6
+ scikit-image
7
+
8
+ [girder]
9
+ girder-large-image>=1.29.7.dev18
@@ -1,9 +0,0 @@
1
- jsonschema
2
- large-image>=1.29.7.dev16
3
- pyyaml
4
-
5
- [all]
6
- scikit-image
7
-
8
- [girder]
9
- girder-large-image>=1.29.7.dev16