Skip to content

v3.2.0 LIF Support and Reader Optimizations

Compare
Choose a tag to compare
@evamaxfield evamaxfield released this 13 May 17:57

AICSImageIO 3.2.0

We are happy to announce the release of AICSImageIO 3.2.0!

AICSImageIO is a library for delayed parallel image reading, metadata parsing, and image writing for microscopy formats in pure Python. It is built on top of Dask to allow for any size image to act as a normal array as well as allow for distributed reading in parallel on your local machine or an HPC cluster.

Highlights

LifReader

We now support reading 6D STCZYX Leica Image Files (LIF) and their metadata. Like all readers, this is implemented in a way that can be used to read and interact with any size file.

from aicsimageio import AICSImage, readers, imread
img = AICSImage("my_file.lif")
img = readers.LifReader("my_file.lif")
data = imread("my_file.lif")

Optimized Readers

After releasing v3.1.0, we noticed that our single threaded full image read performance wasn't as fast as the base file readers or similar microscopy file readers (czifile, tifffile, imageio, etc.) and set about resolving and optimizing our readers.

We are happy to report that in release v3.2.0 we now have comparable single threaded performance to similar libraries. And, like before, single threaded reading, regardless of library is beaten out when using a distributed cluster for parallel reading.

aicsimageio read time benchmarks

See our documentation on benchmarks for more information.

napari-aicsimageio

We were so excited for napari's 0.3.0 release that we may have made a plugin early. If you haven't seen it, napari-aicsimageio has also been released!

pip install napari-aicsimageio

By simply installing the plugin you get both a delayed and in-memory version of aicsimageio to use in napari so you get all the benefits of aicsimageio in the wonderful application that is napari.

Other Additions and Changes

  • Allow sequences and iterables to be passed to AICSImage.get_image_data and related functions
from aicsimageio import AICSImage

img = AICSImage("my_file.czi")
data = img.get_image_data("CZYX", S=0, T=0, Z=slice(0, -1, 5))  # get every fifth Z slice
data = img.get_image_data("CZYX", S=0, T=0, Z=[0, -1])  # get first and last Z slices
  • Fix written out OME metadata to support loading in ZEN
  • Various package maintenance tasks
    • Convert package to use Black formatting
    • Update PR template for easier introduction to contributing
    • Move test resources to S3

Contributors and Reviewers this Release (alphabetical)

Madison Bowden (@AetherUnbound)
Jackson Maxfield Brown (@JacksonMaxfield)
Jamie Sherman (@heeler)
Dan Toloudis (@toloudis)