napari-imaris-loader
Napari plugin for loading Bitplane Imaris files '.ims'.
Notes:
For this plugin to work "File/Preferences/Experimental/Render Images Asynchronously" must be selected.
Features
- Multiscale Rendering
- Image pyramids which are present in the native IMS format are automatically added to napari during file loading.
- Chunks are implemented by dask and matched to the chunk sizes stored in each dataset. (Napari appears to only ask for 2D chunks - unclear how helpful this feature is currently)
- Successfully handles multi-terabyte multi-channel datasets (see unknowns).
Known Issues / limitations
- Currently, this is only an image loader, and there are no features for loading or viewing objects
- Napari sometimes throws errors indicating that it expected a 3D or 5D array but receives the other.
- This sometimes but relatively rarely causes napari to crash
- The IMS class used in the reader represents all arrays to napari as a 5D dask.array (tczyx). This is necessary because IMS only stores data as 3D arrays separated by time and color. For example a 1 Timepoint / 1 Color, 3D 100x1024x1024px volume would have dimensions (1,1,100,1024,1024) and would be handed to napari as a 5D array rather than 3D. Working on a fix for this.
- Would like to enable Asynchronous Tiling of Images, but this results in more instability and causes crashes.
- The lowest resolution level in the IMS file is often too small for detailed 3D renderings.
- Currently this is limited by the lowest resolution level being used by napari for 3D.
- Contrast_Limits are currently determined by dtype and not the actual data.
- float: [0,1], uint8: [0,254], uint16: [0,65534]
- Future implementations may use the HistogramMax parameter to determine this.
- 3D rendering works, but it is suggested to turn on 1 channel at a time starting from the highest channel to avoid some OpenGL errors and misalignment errors.
- For example: Turn on only Channel 1, activate 3D rendering, then turn on Channel 0.
Unknowns
- Time series data has not been tested, but it has been designed to work.
This napari plugin was generated with Cookiecutter using with @napari's cookiecutter-napari-plugin template.
Installation
You can install napari-imaris-loader
via pip:
pip install napari-imaris-loader
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the BSD-3 license, "napari-imaris-loader" is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.