napari-imaris-loader

License
PyPI
Python Version
tests
codecov

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.
  • Chunk loading from disk is implemented by dask and matched to the chunk sizes stored in each dataset.
  • 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 opposite.
    • This sometimes but relatively rarely causes napari to crash
    • The IMS class used in the reader represents all arrays as 5D arrays to dask.array / napari (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.
    • Would like to enable Asynchronous Tilimg of Images, but this results in more instability and causes crashes.
    • May need to rethink the way that IMS slicing is done or resulting numpy array is presented to napari
  • 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.

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. Test only verify that the loader is callable. Will implement testing over a real ‘.ims’ file in the future.

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.

GitHub

View Github