The aicspylibczi
roadmap captures current development priorities within the project
and should serve as a guide for core developers, to encourage contribution for new
contributors, to provide insight to external developers who are interested in using
aicspylibczi
in their work, and to provide deeper insights to developers using
aicsimageio
which uses this library to read ZEISSRAW format CZI files.
The mission of aicspylibczi
is to provide a robust method of access to Zeiss's
CZI microscopy files. Our approach is to use Zeiss's libCZI and leverage that to
create a C++ tool that extracts the desired image data and metadata in a structure
that performs well with respect to speed and memory usage and enables mapping into
a python numpy.ndarray. The bindings to create a python module are done using
pybind11 and are then wrapped in python class providing a more pythonic interface
into the module that the direct bindings.
Our goal with the 3.* API changes is:
- Unify the function/property naming conventions
- Modify the library to support sAmples, the A dimension for RGB/BGR images
- Enable reading of attachment data
- Provide sufficient information to enable
aicspylibczi
to load a mosaic image as a dask.ndarray - Enable automated benchmark scripts
Before 3.* it was pointed out the interface was a bit inconsistent. We attempt to address that here by using only bounding boxes and providing matched methods specific for non-mosaic images and mosaic images.
For RGB (BGR) images the 3.* creates a new return dimension A
which has size 3.
This was changed from expanding them out as additional channels because that was
fraught with complications. It should be noted that in aicsimageio
4.* S
stands
for Samples
but because in aicspylibczi
S
is used for Scene
so A
is used
to represent sAmples
.
Attachments can be embedded in subblocks along with the image. This data can take numerous forms, a small jpeg, datetime values, etc. Retrieval of this information will be implemented after the initial release.
aicsimageio
leverages dask to enable working with very large images.
Mosaic files are often problematic in this regard. Though aicspylibczi
can reconstruct mosaics but because they are so large there are cases
where something better is required. The tile information and individual
tile reading will be using in aicsimageio
to create an dask.ndarray
which can be operated on like other dask objects enabling handling of
truely huge mosaic images with aicsimageio
Scripts exist to perform benchmarking but they do not currently utilize
quilt for large files and can thus only be run locally. We would like to
change this to be more like aicsimageio
so that benchmarking can be added
as a GitHub Action. This will not be in the initial 3.0 release but will
come later.
This document is meant to be a snapshot or high-level objectives and reasoning for the library during our 3.* series of releases.
For more low-level implementation details, features, bugs, documentation requests, etc, please see our issue tracker.