Skip to main content

Miltenyi UltraMicroscope Blaze (MACS iQ-processed) reader plugin for zarrmony.

Project description

zarrmony-blaze

Miltenyi UltraMicroscope Blaze (MACS iQ-processed) reader plugin for zarrmony. Detects a processed Blaze export directory and converts it to OME-NGFF 0.5 in one shot:

zarrmony convert /path/to/<blaze-experiment-dir> ./out

Install

pip install zarrmony-blaze

This pulls zarrmony from PyPI as a transitive dependency. Not yet on PyPI as of this writing — install from source until v0.1.0 is published:

pip install git+https://github.com/ferrinm/zarrmony-blaze

Verify the plugin registered

from zarrmony.readers.plugin import list_plugins
print([p.name for p in list_plugins()])
# -> [..., 'zarrmony-blaze']

For a clean-venv install smoke test (the same shape CI runs):

uv venv .venv-smoke
source .venv-smoke/bin/activate
uv pip install .
python -c "from zarrmony.readers.plugin import list_plugins; \
           assert 'zarrmony-blaze' in {p.name for p in list_plugins()}"

The same assertion runs in CI as tests/test_install_smoke.py.

Use

zarrmony inspect /path/to/BlazeExperiment    # dims, channels, pixel sizes
zarrmony convert /path/to/BlazeExperiment ./out

Output is a single <dir-basename>.ome.zarr store with dims (T, C, Z, Y, X), one chunk per (t, c, z) plane, channel names taken from the vendor's <Channel Name="..."> (falling back to FluorID if Name is missing), and physical pixel sizes copied verbatim from <Pixels PhysicalSizeX/Y/Z>.

The full master OME-XML is preserved in the audit at <store>/OME/source/raw.ome.xml.

Supported Blaze exports

  • MACS iQ-processed directories. The vendor-stitched output written as one OME-TIFF per (channel, Z-plane), named <prefix>_Blaze_C<NN>_Z<NNNN>.ome.tif. The plugin reads the C0 master (_C00_Z0000.ome.tif) for OME-XML and assembles the rest from <TiffData> UUID references.

Detection requires both the _Blaze_ vendor token in the filename and at least one _Z0000.ome.tif master in the directory.

Raw (unstitched) ImSpector output is not handled in v0.1; see Limitations.

Limitations

  • Multiposition exports are not supported. A master with more than one <Image> element raises BlazeMultipositionUnsupportedError (a NotImplementedError). Workaround: convert one position at a time; full multiposition support is tracked for v0.2 alongside raw-mode.
  • No raw-tile support. Raw, unstitched ImSpector output (measurementInfo.txt + tiles.txt, one TIFF per (tile, channel)) is out of scope for v0.1. v0.2 will add a separate matcher that emits one scene per tile with stage XY on attrs.zarrmony.tile.*; stitching is delegated to BigStitcher / ASHLAR / m2stitch / TeraStitcher.
  • No stitching. The plugin assembles already-stitched per-plane files into one TCZYX volume; it does not stitch tiles.
  • <AnnotationRef> parsing not implemented. Only the fields needed for conversion (channels, pixel sizes, file map) are extracted from the XML. The full XML is preserved verbatim in the audit.

Why a separate package?

Vanilla zarrmony routes .ome.tif to bioio-ome-tiff, which fails on real MACS iQ exports because ome-types strictly rejects the old OME schema after a 2008→2016 upgrade. This plugin reads the OME-XML with stdlib xml.etree and builds the dask graph from <TiffData> references directly, sidestepping both that and the eager-stat-all-companions behaviour of tifffile.TiffFile.series. See ADR-0001 for the full rationale and the reader-plugin authoring guide for how to build your own plugin.

Domain context

See CONTEXT.md for the glossary (Blaze experiment, raw vs processed export, multi-file OME master file) and docs/v0.1-design.md for the v0.1 implementation plan.

License

Apache-2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zarrmony_blaze-0.1.0.tar.gz (868.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zarrmony_blaze-0.1.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file zarrmony_blaze-0.1.0.tar.gz.

File metadata

  • Download URL: zarrmony_blaze-0.1.0.tar.gz
  • Upload date:
  • Size: 868.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for zarrmony_blaze-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a1f1abe05e2ec173c03e774b50ba00cab90d0596f5263ca511939302e25aa783
MD5 531bd095dea9c806d25936bb735655bf
BLAKE2b-256 b0eb9a17569267a7e9cb63781f7ba94348948d51444747144b145c52f15d522c

See more details on using hashes here.

File details

Details for the file zarrmony_blaze-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for zarrmony_blaze-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5cd7623cfab02857a2c63052e0ff496ea1b53c5fa012193a61a9002a5a4b991f
MD5 d0ccabf52d149d29d8ef946d6096dbeb
BLAKE2b-256 78841b9a5d73277b62a72a9ce11996ca24e6574ae3a9063fa95c84733dcd2152

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page