Skip to main content

CFT Zarr Custom Codecs

Custom codecs for Zarr v3 optimized for CFT (Cryo-Fluorescence Tomography) data storage.

Codecs

This package provides custom Zarr v3 codecs:

  • cft_zarr.jpeg_compressor: JPEG compressor for RGB images (BytesBytesCodec - supports incremental updates)
  • cft_zarr.shift12jls_compressor: JPEG-LS compressor for 12-bit fluorescent data (BytesBytesCodec - supports incremental updates)
  • cft_zarr.jpeg: JPEG codec for RGB images (ArrayBytesCodec)
  • cft_zarr.shift12jls: JPEG-LS codec for 12-bit fluorescent data (ArrayBytesCodec)
  • cft_zarr.jls16: JPEG-LS codec for uint16 data without shifting; can also store scaled uint32 stack sums
  • cft_zarr.jpegxl: JPEG XL codec (ArrayBytesCodec)

Installation

pip install cft-zarr

Usage

Reading Zarr Files

Important: You must import cft_zarr before opening Zarr files that use these codecs. This registers the codecs with Zarr.

import cft_zarr  # This registers the codecs
import zarr

# Now you can open Zarr files that use custom codecs
arr = zarr.open('rgb.zarr', mode='r')

Using with napari

When opening Zarr files in napari, cft_zarr can be auto-registered via the napari plugin system (installed in the same environment as napari). If you still have trouble, import cft_zarr first:

import cft_zarr  # Register codecs before opening files
import napari

# Now napari can read Zarr files with custom codecs
viewer = napari.Viewer()
viewer.open('path/to/file.zarr')  # Will work with custom codecs

Or in a Python script before launching napari:

import cft_zarr  # Must import before opening Zarr files
import napari

viewer = napari.Viewer()
viewer.open('rgb.zarr')
napari.run()

Creating Zarr Arrays with Custom Codecs

import cft_zarr
from cft_zarr import JPEGCompressor, JLS16Codec, Shift12JLSCompressor
import zarr

# Create RGB array with JPEG compression
rgb_array = zarr.create(
    shape=(100, 512, 512, 3),
    chunks=(4, 512, 512, 3),
    dtype='uint8',
    compressors=[JPEGCompressor(level=85)]
)

# Create fluorescent array with Shift12JLS compression
fl_array = zarr.create(
    shape=(100, 512, 512),
    chunks=(4, 512, 512),
    dtype='uint16',
    compressors=[Shift12JLSCompressor()]
)

# Create a uint16 fluorescent array with direct JPEG-LS compression
jls16_array = zarr.create(
    shape=(100, 512, 512),
    chunks=(4, 512, 512),
    dtype='uint16',
    serializer=JLS16Codec(),
    compressors=[]
)

# Store 32x 12-bit stack sums as uint32 with scale=2.
# The encoded stream stores round(value / 2) as uint16 JPEG-LS and decodes
# back to value * 2, giving at most +/-1 count error from the scaling step.
stack32_array = zarr.create(
    shape=(100, 512, 512),
    chunks=(4, 512, 512),
    dtype='uint32',
    serializer=JLS16Codec(scale=2),
    compressors=[]
)

Decode concurrency

The cft_zarr.jpeg and cft_zarr.shift12jls array codecs decode chunks on a shared worker pool instead of blocking Zarr's IO event loop. The pool starts threads on demand, with one worker per available logical CPU, shared across RGB and fluorescence arrays. Python 3.13+ uses the process-aware CPU count; Python 3.11–3.12 uses the system CPU count. If the count is unavailable, the pool uses one worker. No extra dependency or configuration is required. Codec metadata, pixel values and encoding are unchanged.

Each worker still decodes a complete physical chunk. Decoded-chunk caching in the viewer remains important for adjacent slices. Cancelling a read can cancel queued work; a native decode already running finishes before its worker is reused. Active native calls cannot be interrupted. The concurrency cap bounds simultaneous decodes, not total dataset or viewer cache memory.

Metadata

Release files for cft-zarr 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cft-zarr 0.1.2
File Size Uploaded Provenance Actions
cft_zarr-0.1.2.tar.gz 34.4 kB Without provenance Details for cft_zarr-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cft-zarr 0.1.2
File Interpreter ABI Platform Actions
cft_zarr-0.1.2-py3-none-any.whl Python 3 none any Details for cft_zarr-0.1.2-py3-none-any.whl

Total release size: 78.0 kB

Release files / cft_zarr-0.1.2.tar.gz

Download URL cft_zarr-0.1.2.tar.gz
Size 34.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3e366781222ce060f21d2a907c2b872f9b662d11448712407d0469619924d3e2
BLAKE2b-256 checksum
How to use checksums
5b58cda18ec8b36a9889ea3c5fea8edb6e965f06f3437b2532b5c63185ea0ce6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.14.3 Darwin/27.0.0

Release files / cft_zarr-0.1.2-py3-none-any.whl

Download URL cft_zarr-0.1.2-py3-none-any.whl
Size 43.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87d762342a4b85f7b04102f5b01059c53237b2fab7b37ee3b7cc27107f8cdfe2
BLAKE2b-256 checksum
How to use checksums
5a7fc944a21140194eb42d0b945cee9f92179bbb84bb6221aafd2a2b6e8ed6af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.14.3 Darwin/27.0.0

Security for cft-zarr 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page