large-image 1.27.5.dev71__tar.gz → 1.30.7.dev10__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 (65) hide show
  1. large_image-1.30.7.dev10/PKG-INFO +312 -0
  2. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/README.rst +20 -40
  3. large-image-1.27.5.dev71/docs/index.rst → large_image-1.30.7.dev10/docs/api_index.rst +4 -29
  4. large_image-1.30.7.dev10/docs/caching.rst +21 -0
  5. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/conf.py +4 -4
  6. large_image-1.30.7.dev10/docs/config_options.rst +192 -0
  7. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/development.rst +32 -4
  8. large_image-1.30.7.dev10/docs/dicomweb_assetstore.rst +1 -0
  9. large_image-1.30.7.dev10/docs/format_examples_datastore.py +247 -0
  10. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/formats.rst +4 -12
  11. large_image-1.30.7.dev10/docs/generate_format_table.py +211 -0
  12. large-image-1.27.5.dev71/docs/example_usage.rst → large_image-1.30.7.dev10/docs/getting_started.rst +167 -9
  13. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/girder_annotation_config_options.rst +8 -3
  14. large-image-1.27.5.dev71/docs/caching.rst → large_image-1.30.7.dev10/docs/girder_caching.rst +2 -24
  15. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/girder_config_options.rst +89 -6
  16. large_image-1.30.7.dev10/docs/girder_index.rst +24 -0
  17. large_image-1.30.7.dev10/docs/image_conversion.rst +15 -0
  18. large_image-1.30.7.dev10/docs/index.rst +31 -0
  19. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/make_docs.sh +3 -2
  20. large_image-1.30.7.dev10/docs/notebooks/zarr_sink_example.ipynb +594 -0
  21. large_image-1.30.7.dev10/docs/notebooks.rst +27 -0
  22. large_image-1.30.7.dev10/docs/plottable.rst +1 -0
  23. large_image-1.30.7.dev10/docs/static/K.png +0 -0
  24. large_image-1.30.7.dev10/docs/static/custom.css +44 -0
  25. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/tilesource_options.rst +43 -9
  26. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/cache_util/__init__.py +6 -1
  27. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/cache_util/base.py +1 -1
  28. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/cache_util/cache.py +3 -3
  29. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/cache_util/cachefactory.py +10 -15
  30. large_image-1.30.7.dev10/large_image/cache_util/rediscache.py +176 -0
  31. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/config.py +65 -2
  32. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/exceptions.py +4 -0
  33. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/__init__.py +23 -11
  34. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/base.py +163 -48
  35. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/geo.py +16 -18
  36. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/jupyter.py +35 -4
  37. large_image-1.30.7.dev10/large_image/tilesource/resample.py +125 -0
  38. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/tiledict.py +46 -14
  39. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/tileiterator.py +17 -11
  40. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/utilities.py +89 -40
  41. large_image-1.30.7.dev10/large_image.egg-info/PKG-INFO +312 -0
  42. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image.egg-info/SOURCES.txt +13 -2
  43. large_image-1.30.7.dev10/large_image.egg-info/requires.txt +151 -0
  44. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/setup.py +9 -5
  45. large-image-1.27.5.dev71/PKG-INFO +0 -236
  46. large-image-1.27.5.dev71/docs/config_options.rst +0 -97
  47. large-image-1.27.5.dev71/docs/image_conversion.rst +0 -9
  48. large-image-1.27.5.dev71/docs/notebooks.rst +0 -10
  49. large-image-1.27.5.dev71/docs/static/custom.css +0 -15
  50. large-image-1.27.5.dev71/large_image.egg-info/PKG-INFO +0 -236
  51. large-image-1.27.5.dev71/large_image.egg-info/requires.txt +0 -145
  52. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/LICENSE +0 -0
  53. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/NOTICE +0 -0
  54. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/annotations.rst +0 -0
  55. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/multi_source_specification.rst +0 -0
  56. {large-image-1.27.5.dev71/docs → large_image-1.30.7.dev10/docs/notebooks}/large_image_examples.ipynb +0 -0
  57. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/docs/upgrade.rst +0 -0
  58. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/__init__.py +0 -0
  59. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/cache_util/memcache.py +0 -0
  60. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/constants.py +0 -0
  61. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image/tilesource/stylefuncs.py +0 -0
  62. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image.egg-info/dependency_links.txt +0 -0
  63. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image.egg-info/not-zip-safe +0 -0
  64. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/large_image.egg-info/top_level.txt +0 -0
  65. {large-image-1.27.5.dev71 → large_image-1.30.7.dev10}/setup.cfg +0 -0
@@ -0,0 +1,312 @@
1
+ Metadata-Version: 2.1
2
+ Name: large-image
3
+ Version: 1.30.7.dev10
4
+ Summary: Python modules to work with large, multiresolution images.
5
+ Home-page: https://github.com/girder/large_image
6
+ Author: Kitware, Inc.
7
+ Author-email: kitware@kitware.com
8
+ License: Apache Software License 2.0
9
+ Keywords: large_image
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.8
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Requires-Python: >=3.8
20
+ Description-Content-Type: text/x-rst
21
+ License-File: LICENSE
22
+ License-File: NOTICE
23
+ Requires-Dist: cachetools
24
+ Requires-Dist: palettable
25
+ Requires-Dist: Pillow
26
+ Requires-Dist: numpy
27
+ Requires-Dist: typing-extensions
28
+ Provides-Extra: memcached
29
+ Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "memcached"
30
+ Provides-Extra: redis
31
+ Requires-Dist: redis>=4.5.5; extra == "redis"
32
+ Provides-Extra: converter
33
+ Requires-Dist: large-image-converter>=1.30.7.dev10; extra == "converter"
34
+ Provides-Extra: colormaps
35
+ Requires-Dist: matplotlib; extra == "colormaps"
36
+ Requires-Dist: tol_colors; extra == "colormaps"
37
+ Provides-Extra: tiledoutput
38
+ Requires-Dist: pyvips; extra == "tiledoutput"
39
+ Provides-Extra: performance
40
+ Requires-Dist: psutil>=4.2.0; extra == "performance"
41
+ Requires-Dist: simplejpeg; extra == "performance"
42
+ Provides-Extra: bioformats
43
+ Requires-Dist: large-image-source-bioformats>=1.30.7.dev10; extra == "bioformats"
44
+ Provides-Extra: deepzoom
45
+ Requires-Dist: large-image-source-deepzoom>=1.30.7.dev10; extra == "deepzoom"
46
+ Provides-Extra: dicom
47
+ Requires-Dist: large-image-source-dicom>=1.30.7.dev10; extra == "dicom"
48
+ Provides-Extra: dummy
49
+ Requires-Dist: large-image-source-dummy>=1.30.7.dev10; extra == "dummy"
50
+ Provides-Extra: gdal
51
+ Requires-Dist: large-image-source-gdal>=1.30.7.dev10; extra == "gdal"
52
+ Provides-Extra: mapnik
53
+ Requires-Dist: large-image-source-mapnik>=1.30.7.dev10; extra == "mapnik"
54
+ Provides-Extra: multi
55
+ Requires-Dist: large-image-source-multi>=1.30.7.dev10; extra == "multi"
56
+ Provides-Extra: nd2
57
+ Requires-Dist: large-image-source-nd2>=1.30.7.dev10; extra == "nd2"
58
+ Provides-Extra: ometiff
59
+ Requires-Dist: large-image-source-ometiff>=1.30.7.dev10; extra == "ometiff"
60
+ Provides-Extra: openjpeg
61
+ Requires-Dist: large-image-source-openjpeg>=1.30.7.dev10; extra == "openjpeg"
62
+ Provides-Extra: openslide
63
+ Requires-Dist: large-image-source-openslide>=1.30.7.dev10; extra == "openslide"
64
+ Provides-Extra: pil
65
+ Requires-Dist: large-image-source-pil>=1.30.7.dev10; extra == "pil"
66
+ Provides-Extra: rasterio
67
+ Requires-Dist: large-image-source-rasterio>=1.30.7.dev10; extra == "rasterio"
68
+ Provides-Extra: test
69
+ Requires-Dist: large-image-source-test>=1.30.7.dev10; extra == "test"
70
+ Provides-Extra: tiff
71
+ Requires-Dist: large-image-source-tiff>=1.30.7.dev10; extra == "tiff"
72
+ Provides-Extra: tifffile
73
+ Requires-Dist: large-image-source-tifffile>=1.30.7.dev10; extra == "tifffile"
74
+ Provides-Extra: vips
75
+ Requires-Dist: large-image-source-vips>=1.30.7.dev10; extra == "vips"
76
+ Provides-Extra: zarr
77
+ Requires-Dist: large-image-source-zarr>=1.30.7.dev10; extra == "zarr"
78
+ Provides-Extra: sources
79
+ Requires-Dist: large-image-source-mapnik>=1.30.7.dev10; extra == "sources"
80
+ Requires-Dist: large-image-source-vips>=1.30.7.dev10; extra == "sources"
81
+ Requires-Dist: large-image-source-test>=1.30.7.dev10; extra == "sources"
82
+ Requires-Dist: large-image-source-tifffile>=1.30.7.dev10; extra == "sources"
83
+ Requires-Dist: large-image-source-bioformats>=1.30.7.dev10; extra == "sources"
84
+ Requires-Dist: large-image-source-ometiff>=1.30.7.dev10; extra == "sources"
85
+ Requires-Dist: large-image-source-dummy>=1.30.7.dev10; extra == "sources"
86
+ Requires-Dist: large-image-source-gdal>=1.30.7.dev10; extra == "sources"
87
+ Requires-Dist: large-image-source-deepzoom>=1.30.7.dev10; extra == "sources"
88
+ Requires-Dist: large-image-source-openslide>=1.30.7.dev10; extra == "sources"
89
+ Requires-Dist: large-image-source-tiff>=1.30.7.dev10; extra == "sources"
90
+ Requires-Dist: large-image-source-zarr>=1.30.7.dev10; extra == "sources"
91
+ Requires-Dist: large-image-source-nd2>=1.30.7.dev10; extra == "sources"
92
+ Requires-Dist: large-image-source-rasterio>=1.30.7.dev10; extra == "sources"
93
+ Requires-Dist: large-image-source-openjpeg>=1.30.7.dev10; extra == "sources"
94
+ Requires-Dist: large-image-source-multi>=1.30.7.dev10; extra == "sources"
95
+ Requires-Dist: large-image-source-dicom>=1.30.7.dev10; extra == "sources"
96
+ Requires-Dist: large-image-source-pil>=1.30.7.dev10; extra == "sources"
97
+ Provides-Extra: all
98
+ Requires-Dist: pyvips; extra == "all"
99
+ Requires-Dist: large-image-source-mapnik>=1.30.7.dev10; extra == "all"
100
+ Requires-Dist: large-image-source-tifffile>=1.30.7.dev10; extra == "all"
101
+ Requires-Dist: large-image-source-test>=1.30.7.dev10; extra == "all"
102
+ Requires-Dist: large-image-source-bioformats>=1.30.7.dev10; extra == "all"
103
+ Requires-Dist: matplotlib; extra == "all"
104
+ Requires-Dist: large-image-source-gdal>=1.30.7.dev10; extra == "all"
105
+ Requires-Dist: large-image-source-tiff>=1.30.7.dev10; extra == "all"
106
+ Requires-Dist: large-image-source-deepzoom>=1.30.7.dev10; extra == "all"
107
+ Requires-Dist: large-image-source-openslide>=1.30.7.dev10; extra == "all"
108
+ Requires-Dist: large-image-source-tiff[all]>=1.30.7.dev10; extra == "all"
109
+ Requires-Dist: large-image-source-multi[all]>=1.30.7.dev10; extra == "all"
110
+ Requires-Dist: tol_colors; extra == "all"
111
+ Requires-Dist: large-image-source-multi>=1.30.7.dev10; extra == "all"
112
+ Requires-Dist: large-image-source-pil>=1.30.7.dev10; extra == "all"
113
+ Requires-Dist: pylibmc>=1.5.1; platform_system != "Windows" and extra == "all"
114
+ Requires-Dist: large-image-source-vips>=1.30.7.dev10; extra == "all"
115
+ Requires-Dist: large-image-source-rasterio[all]>=1.30.7.dev10; extra == "all"
116
+ Requires-Dist: large-image-source-pil[all]>=1.30.7.dev10; extra == "all"
117
+ Requires-Dist: large-image-source-ometiff>=1.30.7.dev10; extra == "all"
118
+ Requires-Dist: large-image-source-dummy>=1.30.7.dev10; extra == "all"
119
+ Requires-Dist: redis>=4.5.5; extra == "all"
120
+ Requires-Dist: psutil>=4.2.0; extra == "all"
121
+ Requires-Dist: simplejpeg; extra == "all"
122
+ Requires-Dist: large-image-converter>=1.30.7.dev10; extra == "all"
123
+ Requires-Dist: large-image-source-zarr>=1.30.7.dev10; extra == "all"
124
+ Requires-Dist: large-image-source-nd2>=1.30.7.dev10; extra == "all"
125
+ Requires-Dist: large-image-source-rasterio>=1.30.7.dev10; extra == "all"
126
+ Requires-Dist: large-image-source-openjpeg>=1.30.7.dev10; extra == "all"
127
+ Requires-Dist: large-image-source-dicom>=1.30.7.dev10; extra == "all"
128
+ Provides-Extra: common
129
+ Requires-Dist: large-image-source-rasterio[all]>=1.30.7.dev10; extra == "common"
130
+ Requires-Dist: large-image-source-tifffile>=1.30.7.dev10; extra == "common"
131
+ Requires-Dist: large-image-source-test>=1.30.7.dev10; extra == "common"
132
+ Requires-Dist: large-image-source-pil[all]>=1.30.7.dev10; extra == "common"
133
+ Requires-Dist: matplotlib; extra == "common"
134
+ Requires-Dist: psutil>=4.2.0; extra == "common"
135
+ Requires-Dist: large-image-source-deepzoom>=1.30.7.dev10; extra == "common"
136
+ Requires-Dist: large-image-source-openslide>=1.30.7.dev10; extra == "common"
137
+ Requires-Dist: large-image-source-zarr>=1.30.7.dev10; extra == "common"
138
+ Requires-Dist: simplejpeg; extra == "common"
139
+ Requires-Dist: tol_colors; extra == "common"
140
+ Requires-Dist: large-image-source-nd2>=1.30.7.dev10; extra == "common"
141
+ Requires-Dist: large-image-source-multi>=1.30.7.dev10; extra == "common"
142
+ Requires-Dist: large-image-source-dicom>=1.30.7.dev10; extra == "common"
143
+
144
+ Large Image
145
+ ===========
146
+
147
+ |build-status| |codecov-io| |license-badge| |doi-badge| |pypi-badge|
148
+
149
+ .. |build-status| image:: https://img.shields.io/circleci/build/github/girder/large_image.svg
150
+ :target: https://circleci.com/gh/girder/large_image
151
+ :alt: Build Status
152
+
153
+ .. |license-badge| image:: https://img.shields.io/badge/license-Apache%202-blue.svg
154
+ :target: https://raw.githubusercontent.com/girder/large_image/master/LICENSE
155
+ :alt: License
156
+
157
+ .. |codecov-io| image:: https://img.shields.io/codecov/c/github/girder/large_image.svg
158
+ :target: https://codecov.io/github/girder/large_image?branch=master
159
+ :alt: codecov.io
160
+
161
+ .. |doi-badge| image:: https://img.shields.io/badge/DOI-10.5281%2Fzenodo.4723355-blue.svg
162
+ :target: https://zenodo.org/badge/latestdoi/45569214
163
+
164
+ .. |pypi-badge| image:: https://img.shields.io/pypi/v/large-image.svg?logo=python&logoColor=white
165
+ :target: https://pypi.org/project/large-image/
166
+
167
+ *Python modules to work with large, multiresolution images.*
168
+
169
+ Large Image is developed and maintained by the Data & Analytics group at `Kitware, Inc. <https://kitware.com>`_ for processing large geospatial and medical images. This provides the backbone for several of our image analysis platforms including `Resonant GeoData <https://github.com/ResonantGeoData/ResonantGeoData>`_, `HistomicsUI <https://github.com/DigitalSlideArchive/HistomicsUI>`_, and `the Digital Slide Archive <https://digitalslidearchive.github.io/digital_slide_archive/>`_.
170
+
171
+
172
+ Highlights
173
+ ----------
174
+
175
+ - Tile serving made easy
176
+ - Supports a wide variety of geospatial and medical image formats
177
+ - Convert to tiled Cloud Optimized (Geo)Tiffs (also known as pyramidal tiffs)
178
+ - Python methods for retiling or accessing regions of images efficiently
179
+ - Options for restyling tiles, such as dynamically applying color and band transform
180
+
181
+
182
+ Installation
183
+ ------------
184
+
185
+ In addition to installing the base ``large-image`` package, you'll need at least one tile source which corresponds to your target file format(s) (a ``large-image-source-xxx`` package). You can install everything from the main project with one of these commands:
186
+
187
+ Pip
188
+ ~~~
189
+
190
+ Install common tile sources on linux, OSX, or Windows::
191
+
192
+ pip install large-image[common]
193
+
194
+ Install all tile sources on linux::
195
+
196
+ pip install large-image[all] --find-links https://girder.github.io/large_image_wheels
197
+
198
+ When using large-image with an instance of `Girder`_, install all tile sources and all Girder plugins on linux::
199
+
200
+ pip install large-image[all] girder-large-image-annotation[tasks] --find-links https://girder.github.io/large_image_wheels
201
+
202
+
203
+ Conda
204
+ ~~~~~
205
+
206
+ Conda makes dependency management a bit easier if not on Linux. The base module, converter module, and two of the source modules are available on conda-forge. You can install the following::
207
+
208
+ conda install -c conda-forge large-image
209
+ conda install -c conda-forge large-image-source-gdal
210
+ conda install -c conda-forge large-image-source-tiff
211
+ conda install -c conda-forge large-image-converter
212
+
213
+
214
+ Docker Image
215
+ ~~~~~~~~~~~~
216
+
217
+ Included in this repository’s packages is a pre-built Docker image that has all
218
+ of the dependencies to read any supported image format.
219
+
220
+ This is particularly useful if you do not want to install some of the heavier
221
+ dependencies like GDAL on your system or want a dedicated and isolated
222
+ environment for working with large images.
223
+
224
+ To use, pull the image and run it by mounting a local volume where the
225
+ imagery is stored::
226
+
227
+ docker pull ghcr.io/girder/large_image:latest
228
+ docker run -v /path/to/images:/opt/images ghcr.io/girder/large_image:latest
229
+
230
+
231
+ Modules
232
+ -------
233
+
234
+ Large Image consists of several Python modules designed to work together. These include:
235
+
236
+ - ``large-image``: The core module.
237
+
238
+ You can specify extras_require of the name of any tile source included with this repository. For instance, you can do ``pip install large-image[tiff]``. There are additional extras_require options:
239
+
240
+ - ``sources``: all of the tile sources in the repository, a specific source name (e.g., ``tiff``)
241
+
242
+ - ``memcached``: use memcached for tile caching
243
+
244
+ - ``converter``: include the converter module
245
+
246
+ - ``colormaps``: use matplotlib for named color palettes used in styles
247
+
248
+ - ``tiledoutput``: support for emitting large regions as tiled tiffs
249
+
250
+ - ``performance``: include optional modules that can improve performance
251
+
252
+ - ``common``: all of the tile sources and above packages that will install directly from pypi without other external libraries on linux, OSX, and Windows.
253
+
254
+ - ``all``: for all of the above
255
+
256
+ - ``large-image-converter``: A utility for using pyvips and other libraries to convert images into pyramidal tiff files that can be read efficiently by large_image.
257
+ You can specify extras_require of ``jp2k`` to include modules to allow output to JPEG2000 compression, ``sources`` to include all sources, ``stats`` to include modules to allow computing compression noise statistics, ``geospatial`` to include support for converting geospatial sources, or ``all`` for all of the optional extras_require.
258
+
259
+ - Tile sources:
260
+
261
+ - ``large-image-source-bioformats``: A tile source for reading any file handled by the Java Bioformats library.
262
+
263
+ - ``large-image-source-deepzoom``: A tile source for reading Deepzoom tiles.
264
+
265
+ - ``large-image-source-dicom``: A tile source for reading DICOM Whole Slide Images (WSI).
266
+
267
+ - ``large-image-source-gdal``: A tile source for reading geotiff files via GDAL. This handles source data with more complex transforms than the mapnik tile source.
268
+
269
+ - ``large-image-source-mapnik``: A tile source for reading geotiff and netcdf files via Mapnik and GDAL. This handles more vector issues than the gdal tile source.
270
+
271
+ - ``large-image-source-multi``: A tile source for compositing other tile sources into a single multi-frame source.
272
+
273
+ - ``large-image-source-nd2``: A tile source for reading nd2 (NIS Element) images.
274
+
275
+ - ``large-image-source-ometiff``: A tile source using the tiff library that can handle most multi-frame OMETiff files that are compliant with the specification.
276
+
277
+ - ``large-image-source-openjpeg``: A tile source using the Glymur library to read jp2 (JPEG 2000) files.
278
+
279
+ - ``large-image-source-openslide``: A tile source using the OpenSlide library. This works with svs, ndpi, Mirax, tiff, vms, and other file formats.
280
+
281
+ - ``large-image-source-pil``: A tile source for small images via the Python Imaging Library (Pillow). By default, the maximum size is 4096, but the maximum size can be configured.
282
+
283
+ - ``large-image-source-tiff``: A tile source for reading pyramidal tiff files in common compression formats.
284
+
285
+ - ``large-image-source-tifffile``: A tile source using the tifffile library that can handle a wide variety of tiff-like files.
286
+
287
+ - ``large-image-source-vips``: A tile source for reading any files handled by libvips. This also can be used for writing tiled images from numpy arrays (up to 4 dimensions).
288
+
289
+ - ``large-image-source-zarr``: A tile source using the zarr library that can handle OME-Zarr (OME-NGFF) files as well as some other zarr files. This can also be used for writing N-dimensional tiled images from numpy arrays. Written images can be saved as any supported format.
290
+
291
+ - ``large-image-source-test``: A tile source that generates test tiles, including a simple fractal pattern. Useful for testing extreme zoom levels.
292
+
293
+ - ``large-image-source-dummy``: A tile source that does nothing. This is an absolutely minimal implementation of a tile source used for testing. If you want to create a custom tile source, start with this implementation.
294
+
295
+
296
+ As a `Girder`_ plugin, ``large-image`` adds end points to access all of the image formats it can read both to get metadata and to act as a tile server.
297
+ In the Girder UI, ``large-image`` shows images on item pages, and can show thumbnails in item lists when browsing folders.
298
+ There is also cache management to balance memory use and speed of response in Girder when ``large-image`` is used as a tile server.
299
+
300
+ Most tile sources can be used with Girder Large Image. You can specify an extras_require of ``girder`` to install the following packages:
301
+
302
+ - ``girder-large-image``: Large Image as a Girder 3.x plugin.
303
+ You can install ``large-image[tasks]`` to install a Girder Worker task that can convert otherwise unreadable images to pyramidal tiff files.
304
+
305
+ - ``girder-large-image-annotation``: Adds models to the Girder database for supporting annotating large images. These annotations can be rendered on images. Annotations can include polygons, points, image overlays, and other types. Each annotation can have a label and metadata.
306
+
307
+ - ``large-image-tasks``: A utility for running the converter via Girder Worker.
308
+ You can specify an extras_require of ``girder`` to include modules needed to work with the Girder remote worker or ``worker`` to include modules needed on the remote side of the Girder remote worker. If neither is specified, some conversion tasks can be run using Girder local jobs.
309
+
310
+
311
+
312
+ .. _Girder: https://girder.readthedocs.io/en/latest/
@@ -15,7 +15,7 @@ Large Image
15
15
  :target: https://codecov.io/github/girder/large_image?branch=master
16
16
  :alt: codecov.io
17
17
 
18
- .. |doi-badge| image:: https://img.shields.io/badge/DOI-10.5281%2Fzenodo.4723355-blue
18
+ .. |doi-badge| image:: https://img.shields.io/badge/DOI-10.5281%2Fzenodo.4723355-blue.svg
19
19
  :target: https://zenodo.org/badge/latestdoi/45569214
20
20
 
21
21
  .. |pypi-badge| image:: https://img.shields.io/pypi/v/large-image.svg?logo=python&logoColor=white
@@ -39,7 +39,7 @@ Highlights
39
39
  Installation
40
40
  ------------
41
41
 
42
- In addition to installing the ``large-image`` package, you'll need at least one tile source (a ``large-image-source-xxx`` package). You can install everything from the main project with one of these commands:
42
+ In addition to installing the base ``large-image`` package, you'll need at least one tile source which corresponds to your target file format(s) (a ``large-image-source-xxx`` package). You can install everything from the main project with one of these commands:
43
43
 
44
44
  Pip
45
45
  ~~~
@@ -52,7 +52,7 @@ Install all tile sources on linux::
52
52
 
53
53
  pip install large-image[all] --find-links https://girder.github.io/large_image_wheels
54
54
 
55
- Install all tile sources and all Girder plugins on linux::
55
+ When using large-image with an instance of `Girder`_, install all tile sources and all Girder plugins on linux::
56
56
 
57
57
  pip install large-image[all] girder-large-image-annotation[tasks] --find-links https://girder.github.io/large_image_wheels
58
58
 
@@ -60,8 +60,9 @@ Install all tile sources and all Girder plugins on linux::
60
60
  Conda
61
61
  ~~~~~
62
62
 
63
- Conda makes dependency management a bit easier if not on Linux. Some of the source modules are available on conda-forge. You can install the following::
63
+ Conda makes dependency management a bit easier if not on Linux. The base module, converter module, and two of the source modules are available on conda-forge. You can install the following::
64
64
 
65
+ conda install -c conda-forge large-image
65
66
  conda install -c conda-forge large-image-source-gdal
66
67
  conda install -c conda-forge large-image-source-tiff
67
68
  conda install -c conda-forge large-image-converter
@@ -118,7 +119,7 @@ Large Image consists of several Python modules designed to work together. These
118
119
 
119
120
  - ``large-image-source-deepzoom``: A tile source for reading Deepzoom tiles.
120
121
 
121
- - ``large-image-source-dicom``: A tile source for reading DICOM WSI images.
122
+ - ``large-image-source-dicom``: A tile source for reading DICOM Whole Slide Images (WSI).
122
123
 
123
124
  - ``large-image-source-gdal``: A tile source for reading geotiff files via GDAL. This handles source data with more complex transforms than the mapnik tile source.
124
125
 
@@ -128,62 +129,41 @@ Large Image consists of several Python modules designed to work together. These
128
129
 
129
130
  - ``large-image-source-nd2``: A tile source for reading nd2 (NIS Element) images.
130
131
 
131
- - ``large-image-source-ometiff``: A tile source using the tiff library that can handle some multi-frame OMETiff files.
132
+ - ``large-image-source-ometiff``: A tile source using the tiff library that can handle most multi-frame OMETiff files that are compliant with the specification.
132
133
 
133
134
  - ``large-image-source-openjpeg``: A tile source using the Glymur library to read jp2 (JPEG 2000) files.
134
135
 
135
136
  - ``large-image-source-openslide``: A tile source using the OpenSlide library. This works with svs, ndpi, Mirax, tiff, vms, and other file formats.
136
137
 
137
- - ``large-image-source-pil``: A tile source for small images via the Python Imaging Library (Pillow).
138
+ - ``large-image-source-pil``: A tile source for small images via the Python Imaging Library (Pillow). By default, the maximum size is 4096, but the maximum size can be configured.
138
139
 
139
140
  - ``large-image-source-tiff``: A tile source for reading pyramidal tiff files in common compression formats.
140
141
 
141
142
  - ``large-image-source-tifffile``: A tile source using the tifffile library that can handle a wide variety of tiff-like files.
142
143
 
143
- - ``large-image-source-vips``: A tile source for reading any files handled by libvips. This also can be used for writing tiled images from numpy arrays.
144
+ - ``large-image-source-vips``: A tile source for reading any files handled by libvips. This also can be used for writing tiled images from numpy arrays (up to 4 dimensions).
144
145
 
145
- - ``large-image-source-zarr``: A tile source using the zarr library that can handle OME-Zarr (OME-NGFF) files as well as some other zarr files.
146
+ - ``large-image-source-zarr``: A tile source using the zarr library that can handle OME-Zarr (OME-NGFF) files as well as some other zarr files. This can also be used for writing N-dimensional tiled images from numpy arrays. Written images can be saved as any supported format.
146
147
 
147
148
  - ``large-image-source-test``: A tile source that generates test tiles, including a simple fractal pattern. Useful for testing extreme zoom levels.
148
149
 
149
- - ``large-image-source-dummy``: A tile source that does nothing.
150
+ - ``large-image-source-dummy``: A tile source that does nothing. This is an absolutely minimal implementation of a tile source used for testing. If you want to create a custom tile source, start with this implementation.
150
151
 
151
- Most tile sources can be used with girder-large-image. You can specific an extras_require of ``girder`` to include ``girder-large-image`` with the source.
152
152
 
153
- - As a Girder plugin:
153
+ As a `Girder`_ plugin, ``large-image`` adds end points to access all of the image formats it can read both to get metadata and to act as a tile server.
154
+ In the Girder UI, ``large-image`` shows images on item pages, and can show thumbnails in item lists when browsing folders.
155
+ There is also cache management to balance memory use and speed of response in Girder when ``large-image`` is used as a tile server.
154
156
 
155
- - ``girder-large-image``: Large Image as a Girder_ 3.x plugin.
156
- You can specify extras_require of ``tasks`` to install a Girder Worker task that can convert otherwise unreadable images to pyramidal tiff files.
157
+ Most tile sources can be used with Girder Large Image. You can specify an extras_require of ``girder`` to install the following packages:
157
158
 
158
- - ``girder-large-image-annotation``: Annotations for large images as a Girder_ 3.x plugin.
159
+ - ``girder-large-image``: Large Image as a Girder 3.x plugin.
160
+ You can install ``large-image[tasks]`` to install a Girder Worker task that can convert otherwise unreadable images to pyramidal tiff files.
161
+
162
+ - ``girder-large-image-annotation``: Adds models to the Girder database for supporting annotating large images. These annotations can be rendered on images. Annotations can include polygons, points, image overlays, and other types. Each annotation can have a label and metadata.
159
163
 
160
164
  - ``large-image-tasks``: A utility for running the converter via Girder Worker.
161
165
  You can specify an extras_require of ``girder`` to include modules needed to work with the Girder remote worker or ``worker`` to include modules needed on the remote side of the Girder remote worker. If neither is specified, some conversion tasks can be run using Girder local jobs.
162
166
 
163
167
 
164
- Developer Installation
165
- ----------------------
166
-
167
- To install all packages from source, clone the repository::
168
-
169
- git clone https://github.com/girder/large_image.git
170
- cd large_image
171
-
172
- Install all packages and dependencies::
173
-
174
- pip install -e . -r requirements-dev.txt
175
-
176
- If you aren't developing with Girder 3, you can skip installing those components. Use ``requirements-dev-core.txt`` instead of ``requirements-dev.txt``::
177
-
178
- pip install -e . -r requirements-dev-core.txt
179
-
180
-
181
- Tile source prerequisites
182
- =========================
183
-
184
- Many tile sources have complex prerequisites. These can be installed directly using your system's package manager or from some prebuilt Python wheels for Linux. The prebuilt wheels are not official packages, but they can be used by instructing pip to use them by preference::
185
-
186
- pip install -e . -r requirements-dev.txt --find-links https://girder.github.io/large_image_wheels
187
-
188
168
 
189
- .. _Girder: https://github.com/girder/girder
169
+ .. _Girder: https://girder.readthedocs.io/en/latest/
@@ -1,21 +1,12 @@
1
- .. large_image documentation master file, created by
2
- sphinx-quickstart on Tue Dec 31 14:43:10 2019.
3
- You can adapt this file completely to your liking, but it should at least
4
- contain the root ``toctree`` directive.
5
-
6
- .. include:: ../README.rst
1
+ API Documentation
2
+ =======================
7
3
 
4
+ The following pages are generated from module source code.
8
5
 
9
6
  .. toctree::
10
- :maxdepth: 2
7
+ :maxdepth: 1
11
8
  :caption: Contents:
12
9
 
13
- tilesource_options
14
- example_usage
15
- config_options
16
- image_conversion
17
- formats
18
- upgrade
19
10
  _build/large_image/modules
20
11
  _build/large_image_source_bioformats/modules
21
12
  _build/large_image_source_deepzoom/modules
@@ -24,7 +15,6 @@
24
15
  _build/large_image_source_gdal/modules
25
16
  _build/large_image_source_mapnik/modules
26
17
  _build/large_image_source_multi/modules
27
- multi_source_specification
28
18
  _build/large_image_source_nd2/modules
29
19
  _build/large_image_source_ometiff/modules
30
20
  _build/large_image_source_openjpeg/modules
@@ -38,18 +28,3 @@
38
28
  _build/large_image_source_zarr/modules
39
29
  _build/large_image_converter/modules
40
30
  _build/large_image_tasks/modules
41
- _build/girder_large_image/modules
42
- girder_config_options
43
- _build/girder_large_image_annotation/modules
44
- girder_annotation_config_options
45
- annotations
46
- caching
47
- notebooks
48
- development
49
-
50
-
51
- Indices and tables
52
- ==================
53
-
54
- * :ref:`genindex`
55
- * :ref:`modindex`
@@ -0,0 +1,21 @@
1
+ Caching in Large Image
2
+ ======================
3
+
4
+ There are two main caches in large_image in addition to caching done on the operating system level. These are:
5
+
6
+ - Tile Cache: The tile cache stores individual images and/or numpy arrays for each tile processed.
7
+
8
+ - May be stored in the python process memory or memcached. Other cache backends can also be added.
9
+ - The cache key is a hash that includes the tile source, tile location within the source, format and compression, and style.
10
+ - If memcached is used, cached tiles can be shared across multiple processes.
11
+ - Tiles are often bigger than what memcached was optimized for, so memcached needs to be set to allow larger values.
12
+ - Cached tiles can include original as-read data as well as styled or transformed data. Tiles can be synthesized for sources that are missing specific resolutions; these are also cached.
13
+ - If using memcached, memcached determines how much memory is used (and what machine it is stored on). If using the python process, memory is limited to a fraction of total memory as reported by psutils.
14
+
15
+ - Tile Source Cache: The source cache stores file handles, parsed metadata, and other values to optimize reading a specific large image.
16
+
17
+ - Always stored in the python process memory (not shared between processes).
18
+ - Memory use is wildly different depending on tile source; an estimate is based on sample files and then the maximum number of sources that should be tiled is based on a frame of total memory as reported by psutils and this estimate.
19
+ - The cache key includes the tile source, default tile format, and style.
20
+ - File handles and other metadata are shared if sources only differ in style (for example if ICC color correction is applied in one and not in another).
21
+ - Because file handles are shared across sources that only differ in style, if a source implements a custom ``__del__`` operator, it needs to check if it is the unstyled source.
@@ -13,8 +13,6 @@
13
13
  import os
14
14
  import sys
15
15
 
16
- import sphinx_rtd_theme
17
-
18
16
  docs_dir = os.path.dirname(__file__)
19
17
  sys.path.insert(0, os.path.abspath(os.path.join(docs_dir, '..', '..')))
20
18
 
@@ -53,7 +51,7 @@ templates_path = ['_templates']
53
51
  # List of patterns, relative to source directory, that match files and
54
52
  # directories to ignore when looking for source files.
55
53
  # This pattern also affects html_static_path and html_extra_path.
56
- exclude_patterns = ['_build/**.ipynb', '**.ipynb_checkpoints']
54
+ exclude_patterns = ['_build/**.ipynb', '**.ipynb_checkpoints', 'format_table.rst']
57
55
 
58
56
 
59
57
  # -- Options for HTML output -------------------------------------------------
@@ -62,7 +60,6 @@ exclude_patterns = ['_build/**.ipynb', '**.ipynb_checkpoints']
62
60
  # a list of builtin themes.
63
61
  #
64
62
  html_theme = 'sphinx_rtd_theme'
65
- html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
66
63
 
67
64
  pygments_style = 'sphinx'
68
65
 
@@ -72,6 +69,9 @@ pygments_style = 'sphinx'
72
69
  # so a file named "default.css" will overwrite the builtin "default.css".
73
70
  html_static_path = ['static']
74
71
  html_css_files = ['custom.css']
72
+ html_favicon = 'static/K.png'
73
+ html_permalinks = True
74
+ html_permalinks_icon = '&#128279'
75
75
 
76
76
  autoclass_content = 'both'
77
77