hms-dbmi/zod-ome-ngff(opens in a new tab)
Language: TypeScript
zod schemas for ome-ngff
- stars
- 11
- watchers
- 1
- forks
- 2
- open issues
- 9
- Last updated
- 11/08/2025
Language: TypeScript
zod schemas for ome-ngff
zod schemas for ome-ngff. modules are generated from the NGFF JSON specification and manually refined, providing composable validators for working with NGFF metadata in JavaScript and TypeScript.
pnpm install zod zod-ome-ngff
import { z } from "zod"; import * as v04 from "zod-ome-ngff/v04"; let Attrs = z.union([ v04.StrictImageSchema, v04.StrictLabelSchema, v04.StrictPlateSchema, v04.StrictWellSchema, ]); let url = "https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.4/idr0048A/9846152.zarr/"; // The following throws a `z.ZodError` if the `.zattrs` // JSON does not conform to the union schema above. let attrs = Attrs.parse( await fetch(`${url}.zattrs`).then((res) => res.json()), ); // TypeScript now _knows_ the type of attrs attrs; //^? StrictImageSchema | StrictLabelSchema | StrictPlateSchema | StrictWellSchema if ("multiscales" in attrs) { console.log("Multiscales:", attrs.multiscales); } //^? StrictImageSchema if ("image-label" in attrs) { console.log("Label:", attrs["image-label"]); } //^? StrictLabelSchema if ("well" in attrs) { console.log("Well:", attrs.well); } //^? StrictWellSchema if ("plate" in attrs) { console.log("Plate:", attrs.plate); } //^? StrictPlateSchema
Validators are exported for v0.1, v0.2, v0.3, and v0.4 schemas.
import * as v01 from "zod-ome-ngff/0.1"; import * as v02 from "zod-ome-ngff/0.2"; import * as v03 from "zod-ome-ngff/0.3"; import * as v04 from "zod-ome-ngff/0.4"; import * as schemas from "zod-ome-ngff"; // latest
The contents of src/ are automatically generated from the
NGFF JSON specification via:
git module init git module update # or git submodule update --remote --merge # to update the submodule commit
node scripts/generate-schemas.mjs latest # or 0.1, 0.2, 0.3, 0.4, latestFor changes to be reflected in package changelogs, run pnpm changeset and
follow the prompts.
Note not every PR requires a changeset. Since changesets are focused on releases and changelogs, changes to the repository that don't effect these won't need a changeset (e.g., documentation, tests).
The Changesets GitHub action will create and update a PR that applies changesets and publishes new versions.
ome/ngff - offcial specification (JSON schemas)JaneliaSciComp/pydantic-ome-ngff - pydantic models for ngff (Python)