Skip to content

Add 'From Zero to Zarr' beginner guide to the Zarr data model#4077

Draft
chuckwondo wants to merge 2 commits into
zarr-developers:mainfrom
chuckwondo:docs/from-zero-to-zarr
Draft

Add 'From Zero to Zarr' beginner guide to the Zarr data model#4077
chuckwondo wants to merge 2 commits into
zarr-developers:mainfrom
chuckwondo:docs/from-zero-to-zarr

Conversation

@chuckwondo

Copy link
Copy Markdown
Contributor

Adds a new user-guide page (docs/user-guide/data_model.md, nav label "Understanding Zarr") that explains the Zarr data model for newcomers: why Zarr exists (its parallel-computing origin in genomics), then arrays, chunking and the chunk grid, stores as key->bytes maps, metadata (zarr.json), the specification, codecs, sharding, groups, and N-D arrays, ending with a runnable round-trip example and a cross-language note. Prose

  • diagrams throughout, with executable, build-verified code in the final section, and every spec detail linked to its section of the Zarr v3 spec.

Enables Mermaid diagrams via a pymdownx.superfences custom fence, and adds the page to the User Guide nav.

Closes #4056

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/user-guide/*.md
  • Changes documented as a new file in changes/
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Adds a new user-guide page (docs/user-guide/data_model.md, nav label
"Understanding Zarr") that explains the Zarr data model for newcomers:
why Zarr exists (its parallel-computing origin in genomics), then arrays,
chunking and the chunk grid, stores as key->bytes maps, metadata
(zarr.json), the specification, codecs, sharding, groups, and N-D arrays,
ending with a runnable round-trip example and a cross-language note. Prose
+ diagrams throughout, with executable, build-verified code in the final
section, and every spec detail linked to its section of the Zarr v3 spec.

Enables Mermaid diagrams via a pymdownx.superfences custom fence, and adds
the page to the User Guide nav.

Closes zarr-developers#4056

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chuckwondo chuckwondo requested review from d-v-b and maxrjones June 17, 2026 23:14

Chunking is the key move. Each chunk can be stored, loaded, and compressed on its
own, so a program can read just the chunks it needs — that one corner your
colleague wanted — without touching the rest. (Starting with a chunk shape that

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we use an inline admonition for the partial-chunk callout? something like

Note

If each chunk has a fixed size, how can we use chunks to represent an array that isn't evenly divided by the chunk size? See #section for the answer to that question!

not sure if note is the right admonition here

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.

[docs] very basic zarr tutorial -- "zarr for absolute beginners"

2 participants