Skip to content

docs(example-images): optional channel_combos panel metadata#67

Open
VBaratham wants to merge 6 commits into
mainfrom
vyassa/example-images-channel-combos
Open

docs(example-images): optional channel_combos panel metadata#67
VBaratham wants to merge 6 commits into
mainfrom
vyassa/example-images-channel-combos

Conversation

@VBaratham

@VBaratham VBaratham commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

What

Adds an OPTIONAL channel_combos array to the examples.zarr root group's zarr.json (attributes.channel_combos). Per channel combination it declares:

  • name — the {channel_combo} subdirectory
  • primary_channel — the representative channel label for that panel
  • priority (optional) — display order

This lets viewers render one representative channel per panel (e.g. the multi-panel OPS image grid, one column per combination) and order panels — without opening a leaf to guess.

If channel_combos is omitted, the default is today's behavior of showing all channels.

Why

The CxS frontend currently hardcodes the combo→primary-channel choice in a baked, dataset-specific JSON (altairComboChannelMap.json) generated from an off-repo Bruno YAML. This moves that knowledge into the data itself, schema-validated, so it flows schema → ingest → DB → API → FE with no baked files.

Key design point — primary_channel must be common to the panel

A single combination can aggregate crops from multiple source screens with differing channel sets (verified against the public altair examples.zarr: e.g. the Phase2D combo spans 8+ screens, each with a different fluorescence channel, but all share Phase2D_labelfree). So primary_channel MUST be a label present in every leaf of its combination — otherwise a consumer filtering crops by that label silently drops crops from screens that lack it. The validator (separate PR) will enforce this.

Scope

  • Docs only (spec + changelog), based on main. Relies on main's existing framing of examples.zarr as a Zarr group with the "validators MUST NOT apply OME-NGFF HCS checks" carve-out.
  • Pydantic model + validator land in a separate PR on top of rlim/port-dca-zarr-validator-2.
  • Related: Change examples to directory; .zarr suffix on leaves #20 keeps examples.zarr as the (Zarr-group) container name — its examples.zarr → examples/ reframing was reverted so this metadata has a home.

🤖 Generated with Claude Code

Define an OPTIONAL `channel_combos` array on the examples.zarr root
group `zarr.json`: per channel combination, the representative
`primary_channel` and a display `priority`. Lets viewers render one
channel per panel and order panels without opening a leaf.

`primary_channel` MUST be a label present in every leaf of its
combination, since a combination may aggregate crops from multiple
source screens with differing channel sets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@VBaratham VBaratham force-pushed the vyassa/example-images-channel-combos branch from d6e2605 to a28d718 Compare June 17, 2026 20:29
@VBaratham VBaratham changed the base branch from vyassa/examples-dir-leaf-zarr-suffix to main June 17, 2026 20:29
VBaratham and others added 5 commits June 17, 2026 18:16
…ry_channel)

Generalize per-combo display metadata from a single primary_channel to an
ordered display_channels list; omit ⇒ all channels (default). Each listed
label must be present in every leaf of the combo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@VBaratham VBaratham requested a review from kyleawayan July 1, 2026 21:57
@VBaratham VBaratham marked this pull request as ready for review July 2, 2026 00:55
@VBaratham VBaratham requested a review from cathystoli July 2, 2026 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants