Skip to content

feat(default-reader): extract instrument-metadata block (objective + acquisition + channels) for OME-TIFF and other default-plugin formats — replaces #56 #65

Description

@ferrinm

What to build

Broader-scope replacement for #56. Populate the full instrument-metadata surface on the catch-all default reader plugin path (src/zarrmony/readers/default.py), covering OME-TIFF and any other formats routed through the default bioio plugin (bioio-ome-tiff, bioio-tifffile, bioio-imageio, etc.).

Scope

For OME-TIFF and any format that already carries OME metadata, everything arrives pre-parsed via ome_types — the <Instrument>/<Objective> element and channel identity are likely already populated on the reader's ome_metadata. Propagate to:

  1. Objective (originally feat(default-reader): extract objective lens metadata for OME-TIFF and other default-plugin formats #56): per_scene[i].objective — project from ome_metadata.instruments[0].objectives[...] when present, using the same field mapping as feat(lif): extract objective lens metadata (magnification, NA, immersion) into audit + OME-XML #52. Pass through OME-XML unchanged.
  2. Acquisition + instrument (new from feat(lif): extract per-scene acquisition/instrument block (date, microscope, imaging_method) into audit + inspect #62): per_scene[i].acquisition — project from ome_metadata.images[i].acquisition_date and ome_metadata.instruments[0].microscope. Normalise imaging_method to the same token set.
  3. Channels (from feat(audit): store per-scene channel identity (dye/fluor/excitation/emission) across all reader paths #61): project ome_metadata.images[0].pixels.channels into per_scene[i].channels with the ADR-locked shape.

For formats without native OME metadata (plain TIFF, PNG-like inputs), each block is simply omitted — no synthetic values, no warnings. Document in the PR description which of the default-plugin distributions expose which fields out of the box (extended from the #56 probe test).

Implementation notes

Acceptance criteria

Blocked by

Replaces

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestready-for-agentTriaged and ready for an agent to implement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions