large-image 1.31.2.dev50__tar.gz → 1.31.2.dev64__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.
- {large_image-1.31.2.dev50/large_image.egg-info → large_image-1.31.2.dev64}/PKG-INFO +78 -78
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/CompositeLayers.vue +8 -4
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/FrameSelector.vue +2 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/HistogramEditor.vue +114 -42
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64/large_image.egg-info}/PKG-INFO +78 -78
- large_image-1.31.2.dev64/large_image.egg-info/requires.txt +159 -0
- large_image-1.31.2.dev50/large_image.egg-info/requires.txt +0 -159
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/LICENSE +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/NOTICE +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/README.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/annotations.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/api_index.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/caching.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/conf.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/config_options.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/development.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/dicomweb_assetstore.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/format_examples_datastore.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/formats.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/generate_format_table.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/getting_started.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_annotation_config_options.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_caching.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_config_options.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/girder_index.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/image_conversion.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/index.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/make_docs.sh +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/multi_source_specification.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/notebooks/large_image_examples.ipynb +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/notebooks/zarr_sink_example.ipynb +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/notebooks.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/plottable.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/static/K.png +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/static/custom.css +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/tilesource_options.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/docs/upgrade.rst +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/__init__.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/__init__.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/base.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/cache.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/cachefactory.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/memcache.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/cache_util/rediscache.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/config.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/constants.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/exceptions.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/__init__.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/base.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/geo.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/jupyter.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/resample.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/stylefuncs.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/tiledict.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/tileiterator.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/tilesource/utilities.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/DualInput.vue +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/colors.json +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/components.py +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/SOURCES.txt +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/dependency_links.txt +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/not-zip-safe +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image.egg-info/top_level.txt +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/setup.cfg +0 -0
- {large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: large-image
|
|
3
|
-
Version: 1.31.2.
|
|
3
|
+
Version: 1.31.2.dev64
|
|
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.
|
|
@@ -30,7 +30,7 @@ Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "memcac
|
|
|
30
30
|
Provides-Extra: redis
|
|
31
31
|
Requires-Dist: redis>=4.5.5; extra == "redis"
|
|
32
32
|
Provides-Extra: converter
|
|
33
|
-
Requires-Dist: large-image-converter>=1.31.2.
|
|
33
|
+
Requires-Dist: large-image-converter>=1.31.2.dev64; extra == "converter"
|
|
34
34
|
Provides-Extra: colormaps
|
|
35
35
|
Requires-Dist: matplotlib; extra == "colormaps"
|
|
36
36
|
Requires-Dist: tol_colors; extra == "colormaps"
|
|
@@ -44,109 +44,109 @@ Provides-Extra: performance
|
|
|
44
44
|
Requires-Dist: psutil>=4.2.0; extra == "performance"
|
|
45
45
|
Requires-Dist: simplejpeg; extra == "performance"
|
|
46
46
|
Provides-Extra: bioformats
|
|
47
|
-
Requires-Dist: large-image-source-bioformats>=1.31.2.
|
|
47
|
+
Requires-Dist: large-image-source-bioformats>=1.31.2.dev64; extra == "bioformats"
|
|
48
48
|
Provides-Extra: deepzoom
|
|
49
|
-
Requires-Dist: large-image-source-deepzoom>=1.31.2.
|
|
49
|
+
Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "deepzoom"
|
|
50
50
|
Provides-Extra: dicom
|
|
51
|
-
Requires-Dist: large-image-source-dicom>=1.31.2.
|
|
51
|
+
Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "dicom"
|
|
52
52
|
Provides-Extra: dummy
|
|
53
|
-
Requires-Dist: large-image-source-dummy>=1.31.2.
|
|
53
|
+
Requires-Dist: large-image-source-dummy>=1.31.2.dev64; extra == "dummy"
|
|
54
54
|
Provides-Extra: gdal
|
|
55
|
-
Requires-Dist: large-image-source-gdal>=1.31.2.
|
|
55
|
+
Requires-Dist: large-image-source-gdal>=1.31.2.dev64; extra == "gdal"
|
|
56
56
|
Provides-Extra: mapnik
|
|
57
|
-
Requires-Dist: large-image-source-mapnik>=1.31.2.
|
|
57
|
+
Requires-Dist: large-image-source-mapnik>=1.31.2.dev64; extra == "mapnik"
|
|
58
58
|
Provides-Extra: multi
|
|
59
|
-
Requires-Dist: large-image-source-multi>=1.31.2.
|
|
59
|
+
Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "multi"
|
|
60
60
|
Provides-Extra: nd2
|
|
61
|
-
Requires-Dist: large-image-source-nd2>=1.31.2.
|
|
61
|
+
Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "nd2"
|
|
62
62
|
Provides-Extra: ometiff
|
|
63
|
-
Requires-Dist: large-image-source-ometiff>=1.31.2.
|
|
63
|
+
Requires-Dist: large-image-source-ometiff>=1.31.2.dev64; extra == "ometiff"
|
|
64
64
|
Provides-Extra: openjpeg
|
|
65
|
-
Requires-Dist: large-image-source-openjpeg>=1.31.2.
|
|
65
|
+
Requires-Dist: large-image-source-openjpeg>=1.31.2.dev64; extra == "openjpeg"
|
|
66
66
|
Provides-Extra: openslide
|
|
67
|
-
Requires-Dist: large-image-source-openslide>=1.31.2.
|
|
67
|
+
Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "openslide"
|
|
68
68
|
Provides-Extra: pil
|
|
69
|
-
Requires-Dist: large-image-source-pil>=1.31.2.
|
|
69
|
+
Requires-Dist: large-image-source-pil>=1.31.2.dev64; extra == "pil"
|
|
70
70
|
Provides-Extra: rasterio
|
|
71
|
-
Requires-Dist: large-image-source-rasterio>=1.31.2.
|
|
71
|
+
Requires-Dist: large-image-source-rasterio>=1.31.2.dev64; extra == "rasterio"
|
|
72
72
|
Provides-Extra: test
|
|
73
|
-
Requires-Dist: large-image-source-test>=1.31.2.
|
|
73
|
+
Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "test"
|
|
74
74
|
Provides-Extra: tiff
|
|
75
|
-
Requires-Dist: large-image-source-tiff>=1.31.2.
|
|
75
|
+
Requires-Dist: large-image-source-tiff>=1.31.2.dev64; extra == "tiff"
|
|
76
76
|
Provides-Extra: tifffile
|
|
77
|
-
Requires-Dist: large-image-source-tifffile>=1.31.2.
|
|
77
|
+
Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "tifffile"
|
|
78
78
|
Provides-Extra: vips
|
|
79
|
-
Requires-Dist: large-image-source-vips>=1.31.2.
|
|
79
|
+
Requires-Dist: large-image-source-vips>=1.31.2.dev64; extra == "vips"
|
|
80
80
|
Provides-Extra: zarr
|
|
81
|
-
Requires-Dist: large-image-source-zarr>=1.31.2.
|
|
81
|
+
Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "zarr"
|
|
82
82
|
Provides-Extra: sources
|
|
83
|
-
Requires-Dist: large-image-source-
|
|
84
|
-
Requires-Dist: large-image-source-
|
|
85
|
-
Requires-Dist: large-image-source-
|
|
86
|
-
Requires-Dist: large-image-source-
|
|
87
|
-
Requires-Dist: large-image-source-
|
|
88
|
-
Requires-Dist: large-image-source-vips>=1.31.2.
|
|
89
|
-
Requires-Dist: large-image-source-
|
|
90
|
-
Requires-Dist: large-image-source-gdal>=1.31.2.
|
|
91
|
-
Requires-Dist: large-image-source-
|
|
92
|
-
Requires-Dist: large-image-source-
|
|
93
|
-
Requires-Dist: large-image-source-
|
|
94
|
-
Requires-Dist: large-image-source-
|
|
95
|
-
Requires-Dist: large-image-source-
|
|
96
|
-
Requires-Dist: large-image-source-
|
|
97
|
-
Requires-Dist: large-image-source-
|
|
98
|
-
Requires-Dist: large-image-source-
|
|
99
|
-
Requires-Dist: large-image-source-
|
|
100
|
-
Requires-Dist: large-image-source-
|
|
83
|
+
Requires-Dist: large-image-source-ometiff>=1.31.2.dev64; extra == "sources"
|
|
84
|
+
Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "sources"
|
|
85
|
+
Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "sources"
|
|
86
|
+
Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "sources"
|
|
87
|
+
Requires-Dist: large-image-source-openjpeg>=1.31.2.dev64; extra == "sources"
|
|
88
|
+
Requires-Dist: large-image-source-vips>=1.31.2.dev64; extra == "sources"
|
|
89
|
+
Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "sources"
|
|
90
|
+
Requires-Dist: large-image-source-gdal>=1.31.2.dev64; extra == "sources"
|
|
91
|
+
Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "sources"
|
|
92
|
+
Requires-Dist: large-image-source-tiff>=1.31.2.dev64; extra == "sources"
|
|
93
|
+
Requires-Dist: large-image-source-pil>=1.31.2.dev64; extra == "sources"
|
|
94
|
+
Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "sources"
|
|
95
|
+
Requires-Dist: large-image-source-dummy>=1.31.2.dev64; extra == "sources"
|
|
96
|
+
Requires-Dist: large-image-source-rasterio>=1.31.2.dev64; extra == "sources"
|
|
97
|
+
Requires-Dist: large-image-source-bioformats>=1.31.2.dev64; extra == "sources"
|
|
98
|
+
Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "sources"
|
|
99
|
+
Requires-Dist: large-image-source-mapnik>=1.31.2.dev64; extra == "sources"
|
|
100
|
+
Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "sources"
|
|
101
101
|
Provides-Extra: all
|
|
102
|
-
Requires-Dist: simplejpeg; extra == "all"
|
|
103
|
-
Requires-Dist: large-image-source-bioformats>=1.31.2.dev50; extra == "all"
|
|
104
|
-
Requires-Dist: large-image-source-deepzoom>=1.31.2.dev50; extra == "all"
|
|
105
|
-
Requires-Dist: large-image-source-zarr>=1.31.2.dev50; extra == "all"
|
|
106
|
-
Requires-Dist: large-image-source-openslide>=1.31.2.dev50; extra == "all"
|
|
107
|
-
Requires-Dist: large-image-source-vips>=1.31.2.dev50; extra == "all"
|
|
108
|
-
Requires-Dist: large-image-converter>=1.31.2.dev50; extra == "all"
|
|
109
|
-
Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev50; extra == "all"
|
|
110
|
-
Requires-Dist: large-image-source-dummy>=1.31.2.dev50; extra == "all"
|
|
111
|
-
Requires-Dist: large-image-source-nd2>=1.31.2.dev50; extra == "all"
|
|
112
|
-
Requires-Dist: large-image-source-dicom>=1.31.2.dev50; extra == "all"
|
|
113
|
-
Requires-Dist: large-image-source-multi>=1.31.2.dev50; extra == "all"
|
|
114
102
|
Requires-Dist: ipyleaflet; extra == "all"
|
|
115
|
-
Requires-Dist: large-image-source-
|
|
116
|
-
Requires-Dist:
|
|
117
|
-
Requires-Dist: large-image-source-mapnik>=1.31.2.dev50; extra == "all"
|
|
118
|
-
Requires-Dist: tol_colors; extra == "all"
|
|
119
|
-
Requires-Dist: large-image-source-rasterio>=1.31.2.dev50; extra == "all"
|
|
120
|
-
Requires-Dist: large-image-source-test>=1.31.2.dev50; extra == "all"
|
|
121
|
-
Requires-Dist: redis>=4.5.5; extra == "all"
|
|
103
|
+
Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "all"
|
|
104
|
+
Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "all"
|
|
122
105
|
Requires-Dist: ipyvue; extra == "all"
|
|
123
|
-
Requires-Dist: large-image-source-gdal>=1.31.2.dev50; extra == "all"
|
|
124
|
-
Requires-Dist: large-image-source-ometiff>=1.31.2.dev50; extra == "all"
|
|
125
|
-
Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "all"
|
|
126
106
|
Requires-Dist: aiohttp; extra == "all"
|
|
127
|
-
Requires-Dist: large-image-source-
|
|
128
|
-
Requires-Dist: large-image-source-tifffile>=1.31.2.dev50; extra == "all"
|
|
129
|
-
Requires-Dist: large-image-source-tiff[all]>=1.31.2.dev50; extra == "all"
|
|
130
|
-
Requires-Dist: matplotlib; extra == "all"
|
|
131
|
-
Requires-Dist: large-image-source-pil[all]>=1.31.2.dev50; extra == "all"
|
|
132
|
-
Requires-Dist: large-image-source-multi[all]>=1.31.2.dev50; extra == "all"
|
|
133
|
-
Requires-Dist: large-image-source-pil>=1.31.2.dev50; extra == "all"
|
|
107
|
+
Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "all"
|
|
134
108
|
Requires-Dist: psutil>=4.2.0; extra == "all"
|
|
109
|
+
Requires-Dist: large-image-source-tiff>=1.31.2.dev64; extra == "all"
|
|
110
|
+
Requires-Dist: large-image-source-pil[all]>=1.31.2.dev64; extra == "all"
|
|
111
|
+
Requires-Dist: large-image-source-multi[all]>=1.31.2.dev64; extra == "all"
|
|
112
|
+
Requires-Dist: large-image-source-bioformats>=1.31.2.dev64; extra == "all"
|
|
113
|
+
Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "all"
|
|
114
|
+
Requires-Dist: large-image-source-mapnik>=1.31.2.dev64; extra == "all"
|
|
115
|
+
Requires-Dist: large-image-source-tiff[all]>=1.31.2.dev64; extra == "all"
|
|
116
|
+
Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "all"
|
|
117
|
+
Requires-Dist: large-image-converter>=1.31.2.dev64; extra == "all"
|
|
118
|
+
Requires-Dist: simplejpeg; extra == "all"
|
|
119
|
+
Requires-Dist: large-image-source-openjpeg>=1.31.2.dev64; extra == "all"
|
|
120
|
+
Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev64; extra == "all"
|
|
121
|
+
Requires-Dist: large-image-source-vips>=1.31.2.dev64; extra == "all"
|
|
122
|
+
Requires-Dist: matplotlib; extra == "all"
|
|
123
|
+
Requires-Dist: redis>=4.5.5; extra == "all"
|
|
124
|
+
Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "all"
|
|
125
|
+
Requires-Dist: large-image-source-gdal>=1.31.2.dev64; extra == "all"
|
|
126
|
+
Requires-Dist: pyvips; extra == "all"
|
|
127
|
+
Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "all"
|
|
128
|
+
Requires-Dist: large-image-source-pil>=1.31.2.dev64; extra == "all"
|
|
129
|
+
Requires-Dist: tol_colors; extra == "all"
|
|
130
|
+
Requires-Dist: large-image-source-dummy>=1.31.2.dev64; extra == "all"
|
|
131
|
+
Requires-Dist: large-image-source-rasterio>=1.31.2.dev64; extra == "all"
|
|
132
|
+
Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "all"
|
|
133
|
+
Requires-Dist: large-image-source-ometiff>=1.31.2.dev64; extra == "all"
|
|
134
|
+
Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "all"
|
|
135
135
|
Provides-Extra: common
|
|
136
|
+
Requires-Dist: large-image-source-zarr>=1.31.2.dev64; extra == "common"
|
|
137
|
+
Requires-Dist: large-image-source-tifffile>=1.31.2.dev64; extra == "common"
|
|
136
138
|
Requires-Dist: simplejpeg; extra == "common"
|
|
137
|
-
Requires-Dist: large-image-source-
|
|
138
|
-
Requires-Dist: large-image-source-
|
|
139
|
-
Requires-Dist: large-image-source-deepzoom>=1.31.2.dev50; extra == "common"
|
|
140
|
-
Requires-Dist: large-image-source-openslide>=1.31.2.dev50; extra == "common"
|
|
141
|
-
Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev50; extra == "common"
|
|
142
|
-
Requires-Dist: large-image-source-tifffile>=1.31.2.dev50; extra == "common"
|
|
143
|
-
Requires-Dist: psutil>=4.2.0; extra == "common"
|
|
144
|
-
Requires-Dist: large-image-source-nd2>=1.31.2.dev50; extra == "common"
|
|
145
|
-
Requires-Dist: large-image-source-dicom>=1.31.2.dev50; extra == "common"
|
|
139
|
+
Requires-Dist: large-image-source-multi>=1.31.2.dev64; extra == "common"
|
|
140
|
+
Requires-Dist: large-image-source-rasterio[all]>=1.31.2.dev64; extra == "common"
|
|
146
141
|
Requires-Dist: matplotlib; extra == "common"
|
|
147
|
-
Requires-Dist: large-image-source-
|
|
148
|
-
Requires-Dist: large-image-source-
|
|
142
|
+
Requires-Dist: large-image-source-nd2>=1.31.2.dev64; extra == "common"
|
|
143
|
+
Requires-Dist: large-image-source-test>=1.31.2.dev64; extra == "common"
|
|
149
144
|
Requires-Dist: tol_colors; extra == "common"
|
|
145
|
+
Requires-Dist: large-image-source-pil[all]>=1.31.2.dev64; extra == "common"
|
|
146
|
+
Requires-Dist: psutil>=4.2.0; extra == "common"
|
|
147
|
+
Requires-Dist: large-image-source-openslide>=1.31.2.dev64; extra == "common"
|
|
148
|
+
Requires-Dist: large-image-source-dicom>=1.31.2.dev64; extra == "common"
|
|
149
|
+
Requires-Dist: large-image-source-deepzoom>=1.31.2.dev64; extra == "common"
|
|
150
150
|
|
|
151
151
|
Large Image
|
|
152
152
|
===========
|
{large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/CompositeLayers.vue
RENAMED
|
@@ -8,6 +8,7 @@ module.exports = {
|
|
|
8
8
|
'histogramParamStyle',
|
|
9
9
|
'frameHistograms',
|
|
10
10
|
'getFrameHistogram',
|
|
11
|
+
'dtype',
|
|
11
12
|
'layers',
|
|
12
13
|
'layerMap',
|
|
13
14
|
'active',
|
|
@@ -241,16 +242,18 @@ module.exports = {
|
|
|
241
242
|
this.updateStyle();
|
|
242
243
|
},
|
|
243
244
|
updateLayerMin(layer, newVal) {
|
|
244
|
-
const
|
|
245
|
+
const valid = Number.isFinite(newVal);
|
|
246
|
+
const newMinVal = valid ? parseFloat(newVal) : newVal;
|
|
245
247
|
this.compositeLayerInfo[layer].min = newMinVal;
|
|
246
248
|
this.compositeLayerInfo = Object.assign({}, this.compositeLayerInfo); // for reactivity
|
|
247
|
-
this.updateStyle();
|
|
249
|
+
if (valid) this.updateStyle();
|
|
248
250
|
},
|
|
249
251
|
updateLayerMax(layer, newVal) {
|
|
250
|
-
const
|
|
252
|
+
const valid = Number.isFinite(newVal);
|
|
253
|
+
const newMaxVal = valid ? parseFloat(newVal) : newVal;
|
|
251
254
|
this.compositeLayerInfo[layer].max = newMaxVal;
|
|
252
255
|
this.compositeLayerInfo = Object.assign({}, this.compositeLayerInfo); // for reactivity
|
|
253
|
-
this.updateStyle();
|
|
256
|
+
if (valid) this.updateStyle();
|
|
254
257
|
},
|
|
255
258
|
updateActiveLayers() {
|
|
256
259
|
this.layers.forEach((layer) => {
|
|
@@ -449,6 +452,7 @@ module.exports = {
|
|
|
449
452
|
:auto-range="autoRange"
|
|
450
453
|
:current-min="min"
|
|
451
454
|
:current-max="max"
|
|
455
|
+
:dtype="dtype"
|
|
452
456
|
:active="active"
|
|
453
457
|
:update-min="(v, d) => updateLayerMin(layerName, v, d)"
|
|
454
458
|
:update-max="(v, d) => updateLayerMax(layerName, v, d)"
|
|
@@ -389,6 +389,7 @@ module.exports = {
|
|
|
389
389
|
:histogram-param-style="histogramParamStyles[2]"
|
|
390
390
|
:frame-histograms="frameHistograms"
|
|
391
391
|
:get-frame-histogram="getFrameHistogram"
|
|
392
|
+
:dtype="metadata.dtype"
|
|
392
393
|
:layers="metadata.channels"
|
|
393
394
|
:layer-map="metadata.channelmap"
|
|
394
395
|
:active="currentModeId === 2"
|
|
@@ -405,6 +406,7 @@ module.exports = {
|
|
|
405
406
|
:histogram-param-style="histogramParamStyles[3]"
|
|
406
407
|
:frame-histograms="frameHistograms"
|
|
407
408
|
:get-frame-histogram="getFrameHistogram"
|
|
409
|
+
:dtype="metadata.dtype"
|
|
408
410
|
:layers="metadata.bands"
|
|
409
411
|
:layer-map="undefined"
|
|
410
412
|
:active="currentModeId === 3"
|
{large_image-1.31.2.dev50 → large_image-1.31.2.dev64}/large_image/widgets/HistogramEditor.vue
RENAMED
|
@@ -1,4 +1,34 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
const dtypeAliases = {
|
|
3
|
+
i1: 'int8',
|
|
4
|
+
u1: 'uint8',
|
|
5
|
+
i2: 'int16',
|
|
6
|
+
u2: 'uint16',
|
|
7
|
+
i4: 'int32',
|
|
8
|
+
u4: 'uint32',
|
|
9
|
+
i8: 'int64',
|
|
10
|
+
u8: 'uint64',
|
|
11
|
+
f2: 'float16',
|
|
12
|
+
f4: 'float32',
|
|
13
|
+
f: 'float32',
|
|
14
|
+
f8: 'float64',
|
|
15
|
+
d: 'float64'
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const dtypeRanges = {
|
|
19
|
+
int8: [-128, 127],
|
|
20
|
+
uint8: [0, 255],
|
|
21
|
+
int16: [-32768, 32767],
|
|
22
|
+
uint16: [0, 65535],
|
|
23
|
+
int32: [-2147483648, 2147483647],
|
|
24
|
+
uint32: [0, 4294967295],
|
|
25
|
+
int64: [-9.22e18, 9.22e18],
|
|
26
|
+
uint64: [0, 1.84e19],
|
|
27
|
+
float16: [-65500, 65500],
|
|
28
|
+
float32: [-3.4e38, 3.4e38],
|
|
29
|
+
float64: [-1.7e308, 1.7e308]
|
|
30
|
+
};
|
|
31
|
+
|
|
2
32
|
function clamp(num, min, max) {
|
|
3
33
|
return Math.min(Math.max(num, min), max);
|
|
4
34
|
}
|
|
@@ -23,14 +53,19 @@ function makeDraggableSVG(svg, validateDrag, callback, xRange) {
|
|
|
23
53
|
|
|
24
54
|
function startDrag(evt) {
|
|
25
55
|
const target = evt.target;
|
|
56
|
+
Array.from(document.body.getElementsByClassName('range-editor')).forEach(
|
|
57
|
+
(el) => {
|
|
58
|
+
el.style.userSelect = 'none';
|
|
59
|
+
}
|
|
60
|
+
);
|
|
26
61
|
if (target && target.classList.contains('draggable')) {
|
|
27
62
|
selectedShape = target;
|
|
28
63
|
posOffset = getMousePosition(evt);
|
|
29
64
|
posOffset.x -= parseFloat(
|
|
30
|
-
selectedShape.
|
|
65
|
+
selectedShape.getAttribute('x1') || '0'
|
|
31
66
|
);
|
|
32
67
|
posOffset.y -= parseFloat(
|
|
33
|
-
selectedShape.
|
|
68
|
+
selectedShape.getAttribute('y1') || '0'
|
|
34
69
|
);
|
|
35
70
|
}
|
|
36
71
|
}
|
|
@@ -46,20 +81,25 @@ function makeDraggableSVG(svg, validateDrag, callback, xRange) {
|
|
|
46
81
|
coord.x = clamp(coord.x, xRange[0], xRange[1]);
|
|
47
82
|
const [moveX, moveY] = validateDrag(selectedShape, coord);
|
|
48
83
|
if (!moveX) {
|
|
49
|
-
coord.x = parseFloat(selectedShape.
|
|
84
|
+
coord.x = parseFloat(selectedShape.getAttribute('x1') || '0');
|
|
50
85
|
}
|
|
51
86
|
if (!moveY) {
|
|
52
|
-
coord.y = parseFloat(selectedShape.
|
|
87
|
+
coord.y = parseFloat(selectedShape.getAttribute('y1') || '0');
|
|
53
88
|
}
|
|
54
89
|
|
|
55
|
-
selectedShape.
|
|
56
|
-
selectedShape.
|
|
57
|
-
selectedShape.
|
|
90
|
+
selectedShape.setAttribute('x1', `${coord.x}`);
|
|
91
|
+
selectedShape.setAttribute('x2', `${coord.x}`);
|
|
92
|
+
selectedShape.setAttribute('y1', `${coord.y}`);
|
|
58
93
|
callback(selectedShape, coord);
|
|
59
94
|
}
|
|
60
95
|
}
|
|
61
96
|
|
|
62
97
|
function endDrag() {
|
|
98
|
+
Array.from(document.body.getElementsByClassName('range-editor')).forEach(
|
|
99
|
+
(el) => {
|
|
100
|
+
el.style.userSelect = 'auto';
|
|
101
|
+
}
|
|
102
|
+
);
|
|
63
103
|
selectedShape = undefined;
|
|
64
104
|
}
|
|
65
105
|
}
|
|
@@ -75,6 +115,7 @@ module.exports = {
|
|
|
75
115
|
'framedelta',
|
|
76
116
|
'currentMin',
|
|
77
117
|
'currentMax',
|
|
118
|
+
'dtype',
|
|
78
119
|
'autoRange',
|
|
79
120
|
'active',
|
|
80
121
|
'updateMin',
|
|
@@ -101,7 +142,7 @@ module.exports = {
|
|
|
101
142
|
}
|
|
102
143
|
},
|
|
103
144
|
histogram() {
|
|
104
|
-
this.xRange = [5, this.$refs.svg.clientWidth
|
|
145
|
+
this.xRange = [5, this.$refs.svg.clientWidth];
|
|
105
146
|
this.vRange = [this.histogram.min, this.histogram.max];
|
|
106
147
|
this.drawHistogram(
|
|
107
148
|
this.simplifyHistogram(this.histogram.hist)
|
|
@@ -122,18 +163,42 @@ module.exports = {
|
|
|
122
163
|
},
|
|
123
164
|
autoRange() {
|
|
124
165
|
this.initializePositions();
|
|
166
|
+
},
|
|
167
|
+
invert() {
|
|
168
|
+
this.drawHistogram(this.simplifyHistogram(this.histogram.hist));
|
|
169
|
+
if (this.invert) {
|
|
170
|
+
this.$refs.maxExclusionBox.setAttribute('visibility', 'hidden');
|
|
171
|
+
} else {
|
|
172
|
+
this.$refs.maxExclusionBox.setAttribute('visibility', 'visible');
|
|
173
|
+
}
|
|
125
174
|
}
|
|
126
175
|
},
|
|
127
176
|
computed: {
|
|
128
177
|
minVal() {
|
|
129
178
|
if (!this.histogram) return 0;
|
|
130
179
|
if (this.autoRange !== undefined) return Math.round(this.fromDistributionPercentage(this.autoRange / 100));
|
|
131
|
-
|
|
180
|
+
if (this.currentMin === undefined) return parseFloat(this.histogram.min.toFixed(2));
|
|
181
|
+
return this.currentMin;
|
|
132
182
|
},
|
|
133
183
|
maxVal() {
|
|
134
184
|
if (!this.histogram) return 1;
|
|
135
185
|
if (this.autoRange !== undefined) return Math.round(this.fromDistributionPercentage((100 - this.autoRange) / 100));
|
|
136
|
-
|
|
186
|
+
if (this.currentMax === undefined) return parseFloat(this.histogram.max.toFixed(2));
|
|
187
|
+
return this.currentMax;
|
|
188
|
+
},
|
|
189
|
+
invert() {
|
|
190
|
+
return this.currentMin > this.currentMax;
|
|
191
|
+
},
|
|
192
|
+
dtypeRange() {
|
|
193
|
+
// remove byte-order characters
|
|
194
|
+
let dtype = this.dtype.replace('>', '').replace('<', '').replace('=', '').replace('|', '');
|
|
195
|
+
if (dtypeAliases[dtype]) dtype = dtypeAliases[dtype];
|
|
196
|
+
const range = dtypeRanges[dtype];
|
|
197
|
+
if (range && range.length === 2) {
|
|
198
|
+
return range;
|
|
199
|
+
} else {
|
|
200
|
+
return [this.histogram.min, this.histogram.max];
|
|
201
|
+
}
|
|
137
202
|
}
|
|
138
203
|
},
|
|
139
204
|
mounted() {
|
|
@@ -200,9 +265,13 @@ module.exports = {
|
|
|
200
265
|
}
|
|
201
266
|
const y1 = height;
|
|
202
267
|
|
|
203
|
-
|
|
268
|
+
if (this.invert) {
|
|
269
|
+
ctx.rect(x0, 0, (x1 - x0), (y0)); // inverted colors
|
|
270
|
+
} else {
|
|
271
|
+
ctx.rect(x0, y0, (x1 - x0), (y1 - y0));
|
|
272
|
+
}
|
|
204
273
|
}
|
|
205
|
-
ctx.fillStyle = '#
|
|
274
|
+
ctx.fillStyle = '#aaa';
|
|
206
275
|
ctx.fill();
|
|
207
276
|
},
|
|
208
277
|
xPositionToValue(xPosition) {
|
|
@@ -258,7 +327,7 @@ module.exports = {
|
|
|
258
327
|
if (newMaxPosition !== currentMaxPosition) {
|
|
259
328
|
this.setHandlePosition(
|
|
260
329
|
this.$refs.maxHandle,
|
|
261
|
-
newMaxPosition,
|
|
330
|
+
newMaxPosition - 5,
|
|
262
331
|
this.$refs.maxExclusionBox,
|
|
263
332
|
newMaxPosition,
|
|
264
333
|
this.xRange[1] - newMaxPosition
|
|
@@ -271,9 +340,7 @@ module.exports = {
|
|
|
271
340
|
const handleName = selected.getAttribute('name');
|
|
272
341
|
const newValue = this.xPositionToValue(newLocation.x);
|
|
273
342
|
if (handleName === 'min') {
|
|
274
|
-
if (this.autoRange
|
|
275
|
-
moveX = false;
|
|
276
|
-
} else if (this.autoRange !== undefined) {
|
|
343
|
+
if (this.autoRange !== undefined) {
|
|
277
344
|
const percentage = this.toDistributionPercentage(newValue);
|
|
278
345
|
if (
|
|
279
346
|
percentage >= 50 ||
|
|
@@ -283,9 +350,7 @@ module.exports = {
|
|
|
283
350
|
}
|
|
284
351
|
}
|
|
285
352
|
} else if (handleName === 'max') {
|
|
286
|
-
if (this.autoRange
|
|
287
|
-
moveX = false;
|
|
288
|
-
} else if (this.autoRange !== undefined) {
|
|
353
|
+
if (this.autoRange !== undefined) {
|
|
289
354
|
const percentage = this.toDistributionPercentage(newValue);
|
|
290
355
|
if (
|
|
291
356
|
percentage <= 50 ||
|
|
@@ -309,22 +374,29 @@ module.exports = {
|
|
|
309
374
|
newValue = parseFloat(parseFloat(newValue).toFixed(2));
|
|
310
375
|
this.updateAutoRange(newValue);
|
|
311
376
|
} else {
|
|
312
|
-
if (name === 'min')
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
377
|
+
if (name === 'min') this.updateMin(newValue);
|
|
378
|
+
if (name === 'max') this.updateMax(newValue);
|
|
379
|
+
|
|
380
|
+
// resize gray boxes
|
|
381
|
+
const minX = this.$refs.minHandle.getAttribute('x1');
|
|
382
|
+
const maxX = this.$refs.maxHandle.getAttribute('x1');
|
|
383
|
+
if (this.invert && minX - maxX > 0) {
|
|
384
|
+
this.$refs.minExclusionBox.setAttribute('x', `${maxX}`);
|
|
385
|
+
this.$refs.minExclusionBox.setAttribute('width', `${minX - maxX}`);
|
|
386
|
+
} else {
|
|
387
|
+
this.$refs.minExclusionBox.setAttribute('x', '0');
|
|
388
|
+
this.$refs.minExclusionBox.setAttribute('width', `${minX}`);
|
|
389
|
+
this.$refs.maxExclusionBox.setAttribute('x', `${maxX}`);
|
|
390
|
+
this.$refs.maxExclusionBox.setAttribute('width', `${this.xRange[1] - maxX}`);
|
|
319
391
|
}
|
|
320
392
|
}
|
|
321
393
|
},
|
|
322
394
|
setHandlePosition(handle, position, exclusionBox, exclusionBoxPosition, exclusionBoxWidth) {
|
|
323
|
-
handle.
|
|
324
|
-
handle.
|
|
325
|
-
exclusionBox.
|
|
395
|
+
handle.setAttribute('x1', `${position}`);
|
|
396
|
+
handle.setAttribute('x2', `${position}`);
|
|
397
|
+
exclusionBox.setAttribute('x', `${exclusionBoxPosition}`);
|
|
326
398
|
if (exclusionBoxWidth >= 0) {
|
|
327
|
-
exclusionBox.
|
|
399
|
+
exclusionBox.setAttribute('width', `${exclusionBoxWidth}`);
|
|
328
400
|
}
|
|
329
401
|
},
|
|
330
402
|
fromDistributionPercentage(percentage) {
|
|
@@ -367,8 +439,8 @@ module.exports = {
|
|
|
367
439
|
type="number"
|
|
368
440
|
class="input-80 min-input"
|
|
369
441
|
:disabled="autoRange !== undefined"
|
|
370
|
-
:min="
|
|
371
|
-
:max="
|
|
442
|
+
:min="dtypeRange[0]"
|
|
443
|
+
:max="dtypeRange[1]"
|
|
372
444
|
:value="minVal"
|
|
373
445
|
@input="(e) => updateFromInput('min', e.target.value)"
|
|
374
446
|
>
|
|
@@ -396,6 +468,14 @@ module.exports = {
|
|
|
396
468
|
height="30"
|
|
397
469
|
opacity="0.2"
|
|
398
470
|
/>
|
|
471
|
+
<rect
|
|
472
|
+
ref="maxExclusionBox"
|
|
473
|
+
x="5"
|
|
474
|
+
y="0"
|
|
475
|
+
width="0"
|
|
476
|
+
height="30"
|
|
477
|
+
opacity="0.2"
|
|
478
|
+
/>
|
|
399
479
|
<line
|
|
400
480
|
ref="minHandle"
|
|
401
481
|
class="draggable"
|
|
@@ -417,14 +497,6 @@ module.exports = {
|
|
|
417
497
|
>
|
|
418
498
|
{{ +vRange[1].toFixed(2) || 1 }}
|
|
419
499
|
</text>
|
|
420
|
-
<rect
|
|
421
|
-
ref="maxExclusionBox"
|
|
422
|
-
x="5"
|
|
423
|
-
y="0"
|
|
424
|
-
width="0"
|
|
425
|
-
height="30"
|
|
426
|
-
opacity="0.2"
|
|
427
|
-
/>
|
|
428
500
|
<line
|
|
429
501
|
ref="maxHandle"
|
|
430
502
|
class="draggable"
|
|
@@ -444,8 +516,8 @@ module.exports = {
|
|
|
444
516
|
type="number"
|
|
445
517
|
class="input-80 max-input"
|
|
446
518
|
:disabled="autoRange !== undefined"
|
|
447
|
-
:
|
|
448
|
-
:
|
|
519
|
+
:min="dtypeRange[0]"
|
|
520
|
+
:max="dtypeRange[1]"
|
|
449
521
|
:value="maxVal"
|
|
450
522
|
@input="(e) => updateFromInput('max', e.target.value)"
|
|
451
523
|
>
|