You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Broader-scope replacement for #54. Populate the full instrument-metadata surface on the CZI reader path so CZI conversions carry the same audit / OME-XML richness as LIF does after #52 + #62.
Scope
Extract all of the following per scene (or per file where the ADR places them) from a CZI file — src/zarrmony/readers/czi.py and the bioio-czi surface it wraps:
Objective (originally feat(czi): extract objective lens metadata into audit + OME-XML #54): nominal_magnification, numerical_aperture, immersion, model, working_distance_um. Source: ImageDocument/Metadata/Information/Instrument/Objectives. Populate per_scene[i].objective and the OME-XML <Instrument>/<Objective> + per-image <ObjectiveSettings>.
Prefer bioio-czi's already-parsed OME metadata where it exposes the field — falls out of ome_types for free (channels, objectives, dates when the reader normalises them).
When bioio-czi surfaces raw CZI XML but not parsed content, walk the CZI-specific XML directly and normalise field names + immersion enum + imaging-method token to OME conventions.
Inspect() output includes the same blocks per scene.
Acceptance criteria
per_scene[i].objective, per_scene[i].acquisition, and per_scene[i].channels populated on a representative CZI file (bring your own; note file used in PR description).
OME-XML sibling contains <Instrument><Objective .../></Instrument> and <ObjectiveSettings ID=.../>.
Same blocks visible in inspect().scenes[i].
Missing fields → key omitted; missing block entirely → key absent from scene entry. No dummy values.
Test with a CZI fixture (add a small one, or vendor from bioio-czi's test data if licensing allows).
What to build
Broader-scope replacement for #54. Populate the full instrument-metadata surface on the CZI reader path so CZI conversions carry the same audit / OME-XML richness as LIF does after #52 + #62.
Scope
Extract all of the following per scene (or per file where the ADR places them) from a CZI file —
src/zarrmony/readers/czi.pyand the bioio-czi surface it wraps:nominal_magnification,numerical_aperture,immersion,model,working_distance_um. Source:ImageDocument/Metadata/Information/Instrument/Objectives. Populateper_scene[i].objectiveand the OME-XML<Instrument>/<Objective>+ per-image<ObjectiveSettings>.acquisition_date,microscope_model,microscope_serial,imaging_method. Source:ImageDocument/Metadata/Information/Image/AcquisitionDateAndTimeand.../Instrument/Microscopes. Populateper_scene[i].acquisition(or the ADR-chosen block name).reader.ome_metadata.images[0].pixels.channelsintoper_scene[i].channelswith the ADR-locked shape.Implementation notes
ome_typesfor free (channels, objectives, dates when the reader normalises them).Acceptance criteria
per_scene[i].objective,per_scene[i].acquisition, andper_scene[i].channelspopulated on a representative CZI file (bring your own; note file used in PR description).<Instrument><Objective .../></Instrument>and<ObjectiveSettings ID=.../>.inspect().scenes[i].Blocked by
Replaces