Napari plugin for loading Bitplane Imaris files .ims

Overview

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.
  • 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.

Owner
Alan Watson
Alan Watson
๐Ÿฐ ConnectMP - An easy and efficient way to share data between Processes in Python.

ConnectMP - Taking Multi-Process Data Sharing to the moon ๐Ÿš€ Contribute ยท Community ยท Documentation ๐ŸŽซ Introduction : ๐Ÿค ConnectMP is the easiest and

Aiden Ellis 1 Dec 24, 2021
Package that allows for validate and sanitize of string values.

py.validator A library of string validators and sanitizers Insipired by validator.js Strings only This library validates and sanitizes strings only. P

Sanel Hadzini 22 Nov 08, 2022
Simple profile athena generator for Fortnite Private Servers.

Profile-Athena-Generator A simple profile athena generator for Fortnite Private Servers. This profile athena generrator features: Item variants Get al

Fevers 10 Aug 27, 2022
Keval allows you to call arbitrary Windows kernel-mode functions from user mode, even (and primarily) on another machine.

Keval Keval allows you to call arbitrary Windows kernel-mode functions from user mode, even (and primarily) on another machine. The user mode portion

42 Dec 17, 2022
Go through a random file in your favourite open source projects!

Random Source Codes Never be bored again! Staring at your screen and just scrolling the great world wide web? Would you rather read through some code

Mridul Seth 1 Nov 03, 2022
A repository containing several general purpose Python scripts to automate daily and common tasks.

General Purpose Scripts Introduction This repository holds a curated list of Python scripts which aim to help us automate daily and common tasks. You

GDSC RCCIIT 46 Dec 25, 2022
A simple toolchain for moving Remarkable highlights to Readwise

A simple toolchain for moving Remarkable highlights to Readwise

zach wick 20 Dec 20, 2022
Course-parsing - Parsing Course Info for NIT Kurukshetra

Parsing Course Info for NIT Kurukshetra Overview This repository houses code for

Saksham Mittal 3 Feb 03, 2022
This utility synchronises spelling dictionaries from various tools with each other.

This utility synchronises spelling dictionaries from various tools with each other. This way the words that have been trained on MS Office are also correctly checked in vim or Firefox. And vice versa

Patrice Neff 2 Feb 11, 2022
Bounding Boxes Python Utils

Bounding Boxes Python Utils

Vadim 4 May 01, 2022
A Container for the Dependency Injection in Python.

Python Dependency Injection library aiodi is a Container for the Dependency Injection in Python. Installation Use the package manager pip to install a

Denis NA 3 Nov 25, 2022
Easy compression and extraction for any compression or archival format.

Tzar: Tar, Zip, Anything Really Easy compression and extraction for any compression or archival format. Usage/Examples tzar compress large-dir compres

DanielVZ 37 Nov 02, 2022
Utility to play with ADCS, allows to request tickets and collect information about related objects.

certi Utility to play with ADCS, allows to request tickets and collect information about related objects. Basically, it's the impacket copy of Certify

Eloy 185 Dec 29, 2022
A simple example for calling C++ functions in Python by `ctypes`.

ctypes-example A simple example for calling C++ functions in Python by ctypes. Features call C++ function int bar(int* value, char* msg) with argumene

Yusu Pan 3 Nov 23, 2022
Automatically Generate Rulesets for IIS for Intelligent HTTP/S C2 Redirection

Automatically Generate Rulesets for IIS for Intelligent HTTP/S C2 Redirection This project converts a Cobalt Strike profile to a functional web.config

Jesse 99 Dec 13, 2022
VerSign: Easy Signature Verification in Python

VerSign: Easy Signature Verification in Python versign is a small Python package which can be used to perform verification of offline signatures. It a

Muhammad Saif Ullah Khan 3 Dec 01, 2022
Build capture utility for Linux

CX-BUILD Compilation Database alternative Build Prerequisite the CXBUILD uses linux system call trace utility called strace which was customized. So I

GLaDOS (G? L? Automatic Debug Operation System) 3 Nov 03, 2022
Python Yeelight YLKG07YL/YLKG08YL dimmer handler

With this class you can receive, decrypt and handle Yeelight YLKG07YL/YLKG08YL dimmer bluetooth notifications in your python code.

12 Dec 26, 2022
A simple tool to extract python code from a Jupyter notebook, and then run pylint on it for static analysis.

Jupyter Pylinter A simple tool to extract python code from a Jupyter notebook, and then run pylint on it for static analysis. If you find this tool us

Edmund Goodman 10 Oct 13, 2022
Multipurpose Growtopia Server tools, can be used for newbie to learn things.

Information Multipurpose Growtopia Server tools, can be used for newbie to learn things. Requirements - Python 3.x - Operating System (Recommended : W

Morphias 2 Oct 29, 2021