large-image 1.23.4.dev18__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.dev18/large_image.egg-info → large-image-1.23.4.dev20}/PKG-INFO +1 -1
  2. {large-image-1.23.4.dev18 → 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.dev18 → 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.dev18/large_image/tilesource/stylefuncs.py +0 -39
  7. large-image-1.23.4.dev18/large_image.egg-info/requires.txt +0 -148
  8. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/LICENSE +0 -0
  9. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/NOTICE +0 -0
  10. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/README.rst +0 -0
  11. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/annotations.rst +0 -0
  12. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/conf.py +0 -0
  13. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/config_options.rst +0 -0
  14. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/development.rst +0 -0
  15. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/example_usage.rst +0 -0
  16. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/girder_annotation_config_options.rst +0 -0
  17. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/girder_config_options.rst +0 -0
  18. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/image_conversion.rst +0 -0
  19. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/index.rst +0 -0
  20. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/make_docs.sh +0 -0
  21. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/multi_source_specification.rst +0 -0
  22. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/static/custom.css +0 -0
  23. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/tilesource_options.rst +0 -0
  24. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/docs/upgrade.rst +0 -0
  25. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/__init__.py +0 -0
  26. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/cache_util/__init__.py +0 -0
  27. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/cache_util/base.py +0 -0
  28. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/cache_util/cache.py +0 -0
  29. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/cache_util/cachefactory.py +0 -0
  30. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/cache_util/memcache.py +0 -0
  31. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/config.py +0 -0
  32. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/constants.py +0 -0
  33. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/exceptions.py +0 -0
  34. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/tilesource/__init__.py +0 -0
  35. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/tilesource/geo.py +0 -0
  36. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/tilesource/jupyter.py +0 -0
  37. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/tilesource/tiledict.py +0 -0
  38. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image/tilesource/utilities.py +0 -0
  39. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image.egg-info/SOURCES.txt +0 -0
  40. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image.egg-info/dependency_links.txt +0 -0
  41. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image.egg-info/not-zip-safe +0 -0
  42. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/large_image.egg-info/top_level.txt +0 -0
  43. {large-image-1.23.4.dev18 → large-image-1.23.4.dev20}/setup.cfg +0 -0
  44. {large-image-1.23.4.dev18 → 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.dev18
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.dev18
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-openjpeg>=1.23.4.dev18
11
- large-image-source-pil[all]>=1.23.4.dev18
12
- large-image-source-dummy>=1.23.4.dev18
13
- large-image-converter>=1.23.4.dev18
14
- large-image-source-test>=1.23.4.dev18
15
- large-image-source-bioformats>=1.23.4.dev18
16
- matplotlib
17
- psutil>=4.2.0
18
- large-image-source-vips>=1.23.4.dev18
19
- large-image-source-pil>=1.23.4.dev18
20
- large-image-source-openslide>=1.23.4.dev18
21
- large-image-source-gdal>=1.23.4.dev18
22
- large-image-source-ometiff>=1.23.4.dev18
23
- pyvips
24
- large-image-source-mapnik>=1.23.4.dev18
25
- large-image-source-tiff>=1.23.4.dev18
26
- large-image-source-deepzoom>=1.23.4.dev18
27
- large-image-source-multi>=1.23.4.dev18
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-tifffile>=1.23.4.dev18
37
- large-image-source-nd2>=1.23.4.dev18
38
- simplejpeg
39
-
40
- [all:python_version >= "3.8"]
41
- large-image-source-dicom>=1.23.4.dev18
42
- large-image-source-rasterio>=1.23.4.dev18
43
- large-image-source-rasterio[all]>=1.23.4.dev18
44
-
45
- [bioformats]
46
- large-image-source-bioformats>=1.23.4.dev18
47
-
48
- [colormaps]
49
- matplotlib
50
-
51
- [converter]
52
- large-image-converter>=1.23.4.dev18
53
-
54
- [deepzoom]
55
- large-image-source-deepzoom>=1.23.4.dev18
56
-
57
- [dicom]
58
-
59
- [dicom:python_version >= "3.8"]
60
- large-image-source-dicom>=1.23.4.dev18
61
-
62
- [dummy]
63
- large-image-source-dummy>=1.23.4.dev18
64
-
65
- [gdal]
66
- large-image-source-gdal>=1.23.4.dev18
67
-
68
- [mapnik]
69
- large-image-source-mapnik>=1.23.4.dev18
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.dev18
78
-
79
- [nd2]
80
-
81
- [nd2:python_version >= "3.7"]
82
- large-image-source-nd2>=1.23.4.dev18
83
-
84
- [ometiff]
85
- large-image-source-ometiff>=1.23.4.dev18
86
-
87
- [openjpeg]
88
- large-image-source-openjpeg>=1.23.4.dev18
89
-
90
- [openslide]
91
- large-image-source-openslide>=1.23.4.dev18
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.dev18
104
-
105
- [rasterio]
106
-
107
- [rasterio:python_version >= "3.8"]
108
- large-image-source-rasterio>=1.23.4.dev18
109
-
110
- [sources]
111
- large-image-source-openslide>=1.23.4.dev18
112
- large-image-source-gdal>=1.23.4.dev18
113
- large-image-source-ometiff>=1.23.4.dev18
114
- large-image-source-openjpeg>=1.23.4.dev18
115
- large-image-source-dummy>=1.23.4.dev18
116
- large-image-source-mapnik>=1.23.4.dev18
117
- large-image-source-pil>=1.23.4.dev18
118
- large-image-source-deepzoom>=1.23.4.dev18
119
- large-image-source-test>=1.23.4.dev18
120
- large-image-source-bioformats>=1.23.4.dev18
121
- large-image-source-tiff>=1.23.4.dev18
122
- large-image-source-vips>=1.23.4.dev18
123
- large-image-source-multi>=1.23.4.dev18
124
-
125
- [sources:python_version >= "3.7"]
126
- large-image-source-nd2>=1.23.4.dev18
127
- large-image-source-tifffile>=1.23.4.dev18
128
-
129
- [sources:python_version >= "3.8"]
130
- large-image-source-dicom>=1.23.4.dev18
131
- large-image-source-rasterio>=1.23.4.dev18
132
-
133
- [test]
134
- large-image-source-test>=1.23.4.dev18
135
-
136
- [tiff]
137
- large-image-source-tiff>=1.23.4.dev18
138
-
139
- [tifffile]
140
-
141
- [tifffile:python_version >= "3.7"]
142
- large-image-source-tifffile>=1.23.4.dev18
143
-
144
- [tiledoutput]
145
- pyvips
146
-
147
- [vips]
148
- large-image-source-vips>=1.23.4.dev18