Repository navigation
worldarray 0.3: served metadata, chunk keys and the browser reader - #51
Merged
Merged
Conversation
…are wa.ome_multiscales (a translation written even when 0, 0.5's version only beside multiscales, an axis neither spatial, channel nor time untyped, no type or description of chunkmirage's) and every format's chunk keys wa.chunk_key and wa.parse_chunk_key through one Frontend.chunk_request, which fixes a precomputed scale with a voxel_offset 404ing on every chunk (its keys are counted from the offset, as Neuroglancer and tensorstore ask for them); an N5 level with no offset has its corner at the origin at every level, worldarray's rule since 0.1.1, and its test follows; the browser engine places stored arrays by worldarray's rules in web/src/placement.ts (OME 0.4/0.5 with a multiscale's own transforms and 0.6's intrinsic system, funlib and COSEM attributes on an array or funlib's on its group, N5 by transform, multiscales, voxel_size, pixelResolution or resolution with downsamplingFactors and offset, precomputed), used by openImage, a zarr array outside an OME group (xarray's folded in) and N5 groups and single arrays, and its OME builder types axes as worldarray does (channel, time by name or unit, space when spatial); web/test/metadata.test.ts runs worldarray 0.3.0's two fixtures, 23 layouts read and 14 multiscales written; formats.md, design.md and the CHANGELOG say so
davidackerman
marked this pull request as ready for review
October 22, 2026 22:18
davidackerman
added a commit
that referenced
this pull request
Oct 22, 2026
Fix the registration demos after #51: axis types and arrays without attributes
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves chunkmirage to worldarray 0.3 and removes code worldarray now covers, on the server and in the browser engine.
Server
worldarray>=0.3,<1.uv.lockchanges only worldarray, from 0.1.0 to 0.3.0, with no new dependencies.voxel_offsetreturned 404 for every chunk. The server parsed chunk keys from 0, while Neuroglancer and tensorstore count them from the offset (3-19_2-18_1-9for offset [3, 2, 1]).test_precomputed_voxel_offset_becomes_translationnow checks both keys, and fails on main.wa.chunk_keyandwa.parse_chunk_key, called from oneFrontend.chunk_request. It replaces four regex parsers. zarr v2 still accepts either separator.frontends/_ome.pynow callswa.ome_multiscalesand drops its own unit and axis-type tables. What changes in the served metadata:versiononly besidemultiscales, no longer inside each multiscale too;c, nor time is left untyped;"type": "chunkmirage"or a description.infostay chunkmirage's own, since worldarray writes neither.Browser engine
web/src/placement.tsports worldarray's placement rules to TypeScript. It replaces the separate placement code inopenImage, the N5 reader, the xarray reader and the precomputed reader. Fixes that come with it:coordinateTransformationsare applied;offsetis applied, and an N5 level with no offset has its corner at the origin;voxel_sizeand a COSEMtransformon an array are read;pixelResolutionorresolutionon an N5 group is read;web/src/layout.tstypes axes as worldarray does. A channel axis was typed space, and so was ataxis without a time unit.web/test/metadata.test.tsruns worldarray 0.3.0's two fixtures, copied unchanged (I checked them against the PyPI sdist):typenor its metadata.Breaking either placement or typing on purpose makes the test fail.
Docs
formats.md: the placement table, the N5 rule, precomputed keys and the browser reader.design.md: the worldarray note.Not done
neuroglancer.py's unit tables stay, because worldarray's unit table has no kilometre, and a test covers km.ngff.pythat readscene://stay. They handle OME 0.6 drafts that worldarray doesn't.