large-image 1.23.4.dev16__tar.gz → 1.23.4.dev20__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 (44) hide show
  1. {large-image-1.23.4.dev16/large_image.egg-info → large-image-1.23.4.dev20}/PKG-INFO +1 -1
  2. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/tilesource/base.py +2 -0
  3. large-image-1.23.4.dev20/large_image/tilesource/stylefuncs.py +94 -0
  4. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20/large_image.egg-info}/PKG-INFO +1 -1
  5. large-image-1.23.4.dev20/large_image.egg-info/requires.txt +148 -0
  6. large-image-1.23.4.dev16/large_image/tilesource/stylefuncs.py +0 -39
  7. large-image-1.23.4.dev16/large_image.egg-info/requires.txt +0 -148
  8. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/LICENSE +0 -0
  9. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/NOTICE +0 -0
  10. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/README.rst +0 -0
  11. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/annotations.rst +0 -0
  12. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/conf.py +0 -0
  13. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/config_options.rst +0 -0
  14. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/development.rst +0 -0
  15. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/example_usage.rst +0 -0
  16. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/girder_annotation_config_options.rst +0 -0
  17. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/girder_config_options.rst +0 -0
  18. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/image_conversion.rst +0 -0
  19. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/index.rst +0 -0
  20. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/make_docs.sh +0 -0
  21. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/multi_source_specification.rst +0 -0
  22. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/static/custom.css +0 -0
  23. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/tilesource_options.rst +0 -0
  24. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/docs/upgrade.rst +0 -0
  25. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/__init__.py +0 -0
  26. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/cache_util/__init__.py +0 -0
  27. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/cache_util/base.py +0 -0
  28. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/cache_util/cache.py +0 -0
  29. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/cache_util/cachefactory.py +0 -0
  30. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/cache_util/memcache.py +0 -0
  31. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/config.py +0 -0
  32. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/constants.py +0 -0
  33. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/exceptions.py +0 -0
  34. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/tilesource/__init__.py +0 -0
  35. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/tilesource/geo.py +0 -0
  36. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/tilesource/jupyter.py +0 -0
  37. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/tilesource/tiledict.py +0 -0
  38. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image/tilesource/utilities.py +0 -0
  39. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image.egg-info/SOURCES.txt +0 -0
  40. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image.egg-info/dependency_links.txt +0 -0
  41. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image.egg-info/not-zip-safe +0 -0
  42. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/large_image.egg-info/top_level.txt +0 -0
  43. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/setup.cfg +0 -0
  44. {large-image-1.23.4.dev16 → large-image-1.23.4.dev20}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.23.4.dev16
3
+ Version: 1.23.4.dev20
4
4
  Summary: Python modules to work with large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -1531,6 +1531,8 @@ class TileSource(IPyLeafletMixin):
1531
1531
  sc.output[:sc.mask.shape[0], :sc.mask.shape[1], channel],
1532
1532
  np.where(sc.mask, clrs, 0))
1533
1533
  sc.output = self._applyStyleFunction(sc.output, sc, 'postband')
1534
+ if hasattr(sc, 'styleIndex'):
1535
+ del sc.styleIndex
1534
1536
  sc.output = self._applyStyleFunction(sc.output, sc, 'main')
1535
1537
  if sc.dtype == 'uint16':
1536
1538
  sc.output = (sc.output * 65535 / 255).astype(np.uint16)
@@ -0,0 +1,94 @@
1
+ # This module contains functions for use in styles
2
+
3
+ import numpy as np
4
+
5
+ from .utilities import _imageToNumpy, _imageToPIL
6
+
7
+
8
+ def maskPixelValues(image, context, values=None, negative=None, positive=None):
9
+ """
10
+ This is a style utility function that returns a black-and-white 8-bit image
11
+ where the image is white if the pixel of the source image is in a list of
12
+ values and black otherwise. The values is a list where each entry can
13
+ either be a tuple the same length as the band dimension of the output image
14
+ or a single value which is handled as 0xBBGGRR.
15
+
16
+ :param image: a numpy array of Y, X, Bands.
17
+ :param context: the style context. context.image is the source image
18
+ :param values: an array of values, each of which is either an array of the
19
+ same number of bands as the source image or a single value of the form
20
+ 0xBBGGRR assuming uint8 data.
21
+ :param negative: None to use [0, 0, 0, 255], or an RGBA uint8 value for
22
+ pixels not in the value list.
23
+ :param positive: None to use [255, 255, 255, 0], or an RGBA uint8 value for
24
+ pixels in the value list.
25
+ :returns: an RGBA numpy image which is exactly black or transparent white.
26
+ """
27
+ src = context.image
28
+ mask = np.full(src.shape[:2], False)
29
+ for val in values:
30
+ if not isinstance(val, (list, tuple)):
31
+ if src.shape[-1] == 1:
32
+ val = [val]
33
+ else:
34
+ val = [val % 256, val // 256 % 256, val // 65536 % 256]
35
+ val = (list(val) + [255] * src.shape[2])[:src.shape[2]]
36
+ match = np.array(val)
37
+ mask = mask | (src == match).all(axis=-1)
38
+ image[mask != True] = negative or [0, 0, 0, 255] # noqa E712
39
+ image[mask] = positive or [255, 255, 255, 0]
40
+ image = image.astype(np.uint8)
41
+ return image
42
+
43
+
44
+ def medianFilter(image, context=None, kernel=5, weight=1.0):
45
+ """
46
+ This is a style utility function that applies a median rank filter to the
47
+ image to sharpen it.
48
+
49
+ :param image: a numpy array of Y, X, Bands.
50
+ :param context: the style context. context.image is the source image
51
+ :param kernel: the filter kernel size.
52
+ :param weight: the weight of the difference between the image and the
53
+ filtered image that is used to add into the image. 0 is no effect/
54
+ :returns: an numpy image which is the filtered version of the source.
55
+ """
56
+ import PIL.ImageFilter
57
+
58
+ filt = PIL.ImageFilter.MedianFilter(kernel)
59
+ if len(image.shape) != 3:
60
+ pimg = _imageToPIL(image)
61
+ elif image.shape[2] >= 3:
62
+ pimg = _imageToPIL(image[:, :, :3])
63
+ else:
64
+ pimg = _imageToPIL(image[:, :, :1])
65
+ fimg = _imageToNumpy(pimg.filter(filt))[0]
66
+ mul = 0
67
+ clip = 0
68
+ if image.dtype == np.uint8 or (
69
+ image.dtype.kind == 'f' and 1 < np.max(image) < 256 and np.min(image) >= 0):
70
+ mul = 1
71
+ clip = 255
72
+ elif image.dtype == np.uint16 or (
73
+ image.dtype.kind == 'f' and 1 < np.max(image) < 65536 and np.min(image) >= 0):
74
+ mul = 257
75
+ clip = 65535
76
+ elif image.dtype == np.uint32:
77
+ mul = (2 ** 32 - 1) / 255
78
+ clip = 2 ** 32 - 1
79
+ elif image.dtype.kind == 'f':
80
+ mul = 1
81
+ if mul:
82
+ pimg = image.astype(float)
83
+ if len(pimg.shape) == 2:
84
+ pimg = np.resize(pimg, (pimg.shape[0], pimg.shape[1], 1))
85
+ pimg = pimg[:, :, :fimg.shape[2]]
86
+ dimg = (pimg - fimg.astype(float) * mul) * weight
87
+ pimg = pimg[:, :, :fimg.shape[2]] + dimg
88
+ if clip:
89
+ pimg = pimg.clip(0, clip)
90
+ if len(image.shape) != 3:
91
+ image[:, :] = np.resize(pimg.astype(image.dtype), (pimg.shape[0], pimg.shape[1]))
92
+ else:
93
+ image[:, :, :fimg.shape[2]] = pimg.astype(image.dtype)
94
+ return image
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.23.4.dev16
3
+ Version: 1.23.4.dev20
4
4
  Summary: Python modules to work with large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -0,0 +1,148 @@
1
+ cachetools
2
+ palettable
3
+ Pillow
4
+ numpy
5
+
6
+ [:python_version < "3.8"]
7
+ importlib-metadata<5
8
+
9
+ [all]
10
+ large-image-source-bioformats>=1.23.4.dev20
11
+ matplotlib
12
+ large-image-source-ometiff>=1.23.4.dev20
13
+ large-image-source-pil[all]>=1.23.4.dev20
14
+ large-image-source-openslide>=1.23.4.dev20
15
+ large-image-source-gdal>=1.23.4.dev20
16
+ large-image-source-test>=1.23.4.dev20
17
+ large-image-source-openjpeg>=1.23.4.dev20
18
+ large-image-source-tiff>=1.23.4.dev20
19
+ large-image-source-mapnik>=1.23.4.dev20
20
+ large-image-source-multi>=1.23.4.dev20
21
+ psutil>=4.2.0
22
+ large-image-source-pil>=1.23.4.dev20
23
+ large-image-converter>=1.23.4.dev20
24
+ pyvips
25
+ large-image-source-deepzoom>=1.23.4.dev20
26
+ large-image-source-dummy>=1.23.4.dev20
27
+ large-image-source-vips>=1.23.4.dev20
28
+
29
+ [all:platform_system != "Windows"]
30
+ pylibmc>=1.5.1
31
+
32
+ [all:python_version < "3.7"]
33
+ simplejpeg<1.6.6
34
+
35
+ [all:python_version >= "3.7"]
36
+ simplejpeg
37
+ large-image-source-nd2>=1.23.4.dev20
38
+ large-image-source-tifffile>=1.23.4.dev20
39
+
40
+ [all:python_version >= "3.8"]
41
+ large-image-source-rasterio>=1.23.4.dev20
42
+ large-image-source-rasterio[all]>=1.23.4.dev20
43
+ large-image-source-dicom>=1.23.4.dev20
44
+
45
+ [bioformats]
46
+ large-image-source-bioformats>=1.23.4.dev20
47
+
48
+ [colormaps]
49
+ matplotlib
50
+
51
+ [converter]
52
+ large-image-converter>=1.23.4.dev20
53
+
54
+ [deepzoom]
55
+ large-image-source-deepzoom>=1.23.4.dev20
56
+
57
+ [dicom]
58
+
59
+ [dicom:python_version >= "3.8"]
60
+ large-image-source-dicom>=1.23.4.dev20
61
+
62
+ [dummy]
63
+ large-image-source-dummy>=1.23.4.dev20
64
+
65
+ [gdal]
66
+ large-image-source-gdal>=1.23.4.dev20
67
+
68
+ [mapnik]
69
+ large-image-source-mapnik>=1.23.4.dev20
70
+
71
+ [memcached]
72
+
73
+ [memcached:platform_system != "Windows"]
74
+ pylibmc>=1.5.1
75
+
76
+ [multi]
77
+ large-image-source-multi>=1.23.4.dev20
78
+
79
+ [nd2]
80
+
81
+ [nd2:python_version >= "3.7"]
82
+ large-image-source-nd2>=1.23.4.dev20
83
+
84
+ [ometiff]
85
+ large-image-source-ometiff>=1.23.4.dev20
86
+
87
+ [openjpeg]
88
+ large-image-source-openjpeg>=1.23.4.dev20
89
+
90
+ [openslide]
91
+ large-image-source-openslide>=1.23.4.dev20
92
+
93
+ [performance]
94
+ psutil>=4.2.0
95
+
96
+ [performance:python_version < "3.7"]
97
+ simplejpeg<1.6.6
98
+
99
+ [performance:python_version >= "3.7"]
100
+ simplejpeg
101
+
102
+ [pil]
103
+ large-image-source-pil>=1.23.4.dev20
104
+
105
+ [rasterio]
106
+
107
+ [rasterio:python_version >= "3.8"]
108
+ large-image-source-rasterio>=1.23.4.dev20
109
+
110
+ [sources]
111
+ large-image-source-bioformats>=1.23.4.dev20
112
+ large-image-source-tiff>=1.23.4.dev20
113
+ large-image-source-mapnik>=1.23.4.dev20
114
+ large-image-source-multi>=1.23.4.dev20
115
+ large-image-source-ometiff>=1.23.4.dev20
116
+ large-image-source-pil>=1.23.4.dev20
117
+ large-image-source-openslide>=1.23.4.dev20
118
+ large-image-source-vips>=1.23.4.dev20
119
+ large-image-source-test>=1.23.4.dev20
120
+ large-image-source-gdal>=1.23.4.dev20
121
+ large-image-source-deepzoom>=1.23.4.dev20
122
+ large-image-source-dummy>=1.23.4.dev20
123
+ large-image-source-openjpeg>=1.23.4.dev20
124
+
125
+ [sources:python_version >= "3.7"]
126
+ large-image-source-tifffile>=1.23.4.dev20
127
+ large-image-source-nd2>=1.23.4.dev20
128
+
129
+ [sources:python_version >= "3.8"]
130
+ large-image-source-dicom>=1.23.4.dev20
131
+ large-image-source-rasterio>=1.23.4.dev20
132
+
133
+ [test]
134
+ large-image-source-test>=1.23.4.dev20
135
+
136
+ [tiff]
137
+ large-image-source-tiff>=1.23.4.dev20
138
+
139
+ [tifffile]
140
+
141
+ [tifffile:python_version >= "3.7"]
142
+ large-image-source-tifffile>=1.23.4.dev20
143
+
144
+ [tiledoutput]
145
+ pyvips
146
+
147
+ [vips]
148
+ large-image-source-vips>=1.23.4.dev20
@@ -1,39 +0,0 @@
1
- # This module contains functions for use in styles
2
-
3
- import numpy as np
4
-
5
-
6
- def maskPixelValues(image, context, values=None, negative=None, positive=None):
7
- """
8
- This is a style utility function that returns a black-and-white 8-bit image
9
- where the image is white if the pixel of the source image is in a list of
10
- values and black otherwise. The values is a list where each entry can
11
- either be a tuple the same length as the band dimension of the output image
12
- or a single value which is handled as 0xBBGGRR.
13
-
14
- :param image: a numpy array of Y, X, Bands.
15
- :param context: the style context. context.image is the source image
16
- :param values: an array of values, each of which is either an array of the
17
- same number of bands as the source image or a single value of the form
18
- 0xBBGGRR assuming uint8 data.
19
- :param negative: None to use [0, 0, 0, 255], or an RGBA uint8 value for
20
- pixels not in the value list.
21
- :param positive: None to use [255, 255, 255, 0], or an RGBA uint8 value for
22
- pixels in the value list.
23
- :returns: an RGBA numpy image which is exactly black or transparent white.
24
- """
25
- src = context.image
26
- mask = np.full(src.shape[:2], False)
27
- for val in values:
28
- if not isinstance(val, (list, tuple)):
29
- if src.shape[-1] == 1:
30
- val = [val]
31
- else:
32
- val = [val % 256, val // 256 % 256, val // 65536 % 256]
33
- val = (list(val) + [255] * src.shape[2])[:src.shape[2]]
34
- match = np.array(val)
35
- mask = mask | (src == match).all(axis=-1)
36
- image[mask != True] = negative or [0, 0, 0, 255] # noqa E712
37
- image[mask] = positive or [255, 255, 255, 0]
38
- image = image.astype(np.uint8)
39
- return image
@@ -1,148 +0,0 @@
1
- cachetools
2
- palettable
3
- Pillow
4
- numpy
5
-
6
- [:python_version < "3.8"]
7
- importlib-metadata<5
8
-
9
- [all]
10
- large-image-source-ometiff>=1.23.4.dev16
11
- large-image-source-gdal>=1.23.4.dev16
12
- large-image-source-deepzoom>=1.23.4.dev16
13
- large-image-source-pil>=1.23.4.dev16
14
- large-image-source-openslide>=1.23.4.dev16
15
- pyvips
16
- large-image-source-test>=1.23.4.dev16
17
- large-image-source-mapnik>=1.23.4.dev16
18
- large-image-source-tiff>=1.23.4.dev16
19
- psutil>=4.2.0
20
- large-image-source-dummy>=1.23.4.dev16
21
- large-image-source-bioformats>=1.23.4.dev16
22
- large-image-source-openjpeg>=1.23.4.dev16
23
- large-image-source-pil[all]>=1.23.4.dev16
24
- large-image-source-multi>=1.23.4.dev16
25
- large-image-converter>=1.23.4.dev16
26
- large-image-source-vips>=1.23.4.dev16
27
- matplotlib
28
-
29
- [all:platform_system != "Windows"]
30
- pylibmc>=1.5.1
31
-
32
- [all:python_version < "3.7"]
33
- simplejpeg<1.6.6
34
-
35
- [all:python_version >= "3.7"]
36
- large-image-source-nd2>=1.23.4.dev16
37
- large-image-source-tifffile>=1.23.4.dev16
38
- simplejpeg
39
-
40
- [all:python_version >= "3.8"]
41
- large-image-source-dicom>=1.23.4.dev16
42
- large-image-source-rasterio>=1.23.4.dev16
43
- large-image-source-rasterio[all]>=1.23.4.dev16
44
-
45
- [bioformats]
46
- large-image-source-bioformats>=1.23.4.dev16
47
-
48
- [colormaps]
49
- matplotlib
50
-
51
- [converter]
52
- large-image-converter>=1.23.4.dev16
53
-
54
- [deepzoom]
55
- large-image-source-deepzoom>=1.23.4.dev16
56
-
57
- [dicom]
58
-
59
- [dicom:python_version >= "3.8"]
60
- large-image-source-dicom>=1.23.4.dev16
61
-
62
- [dummy]
63
- large-image-source-dummy>=1.23.4.dev16
64
-
65
- [gdal]
66
- large-image-source-gdal>=1.23.4.dev16
67
-
68
- [mapnik]
69
- large-image-source-mapnik>=1.23.4.dev16
70
-
71
- [memcached]
72
-
73
- [memcached:platform_system != "Windows"]
74
- pylibmc>=1.5.1
75
-
76
- [multi]
77
- large-image-source-multi>=1.23.4.dev16
78
-
79
- [nd2]
80
-
81
- [nd2:python_version >= "3.7"]
82
- large-image-source-nd2>=1.23.4.dev16
83
-
84
- [ometiff]
85
- large-image-source-ometiff>=1.23.4.dev16
86
-
87
- [openjpeg]
88
- large-image-source-openjpeg>=1.23.4.dev16
89
-
90
- [openslide]
91
- large-image-source-openslide>=1.23.4.dev16
92
-
93
- [performance]
94
- psutil>=4.2.0
95
-
96
- [performance:python_version < "3.7"]
97
- simplejpeg<1.6.6
98
-
99
- [performance:python_version >= "3.7"]
100
- simplejpeg
101
-
102
- [pil]
103
- large-image-source-pil>=1.23.4.dev16
104
-
105
- [rasterio]
106
-
107
- [rasterio:python_version >= "3.8"]
108
- large-image-source-rasterio>=1.23.4.dev16
109
-
110
- [sources]
111
- large-image-source-ometiff>=1.23.4.dev16
112
- large-image-source-bioformats>=1.23.4.dev16
113
- large-image-source-deepzoom>=1.23.4.dev16
114
- large-image-source-gdal>=1.23.4.dev16
115
- large-image-source-pil>=1.23.4.dev16
116
- large-image-source-openslide>=1.23.4.dev16
117
- large-image-source-test>=1.23.4.dev16
118
- large-image-source-mapnik>=1.23.4.dev16
119
- large-image-source-multi>=1.23.4.dev16
120
- large-image-source-tiff>=1.23.4.dev16
121
- large-image-source-vips>=1.23.4.dev16
122
- large-image-source-dummy>=1.23.4.dev16
123
- large-image-source-openjpeg>=1.23.4.dev16
124
-
125
- [sources:python_version >= "3.7"]
126
- large-image-source-nd2>=1.23.4.dev16
127
- large-image-source-tifffile>=1.23.4.dev16
128
-
129
- [sources:python_version >= "3.8"]
130
- large-image-source-dicom>=1.23.4.dev16
131
- large-image-source-rasterio>=1.23.4.dev16
132
-
133
- [test]
134
- large-image-source-test>=1.23.4.dev16
135
-
136
- [tiff]
137
- large-image-source-tiff>=1.23.4.dev16
138
-
139
- [tifffile]
140
-
141
- [tifffile:python_version >= "3.7"]
142
- large-image-source-tifffile>=1.23.4.dev16
143
-
144
- [tiledoutput]
145
- pyvips
146
-
147
- [vips]
148
- large-image-source-vips>=1.23.4.dev16