Repository navigation
Conversation
|
@sfc0324 is attempting to deploy a commit to the scroll Team on Vercel. A member of the Team first needs to authorize it. |
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.
What: a small module + CLI that checks every adjacent level pair of an OME-Zarr pyramid and reports coarse chunks that have no object although the next finer level has data under them. zarr returns
fill_valuefor those chunks, so viewers, loaders and annotators see blank papyrus while the data exists one level down.vesuvius/src/vesuvius/data/pyramid_occupancy.py:check_pyramid(store_url, anon=...)andexpected_coarse_occupancy(...). It reuseszarr_chunk_index.build_chunk_occupancy(withuse_cache=False) for the listing, so it adds no new dependencies and downloads no chunk data. It reads only.zattrs,.zarrayand object listings. Scale factors come from the multiscalesscaletransforms, or from the level shapes if those are missing. Different chunk sizes per level and partial edge chunks are handled.vesuvius/src/vesuvius/scripts/check_pyramid_occupancy.py:python -m vesuvius.scripts.check_pyramid_occupancy [--anon] [--json] STORE.... It exits with code 1 if any hole is found, so it can gate an upload or run in CI.vesuvius/tests/data/test_pyramid_occupancy.py: 7 tests on synthetic local v2 stores (consistent pyramid, single missing chunk,/separator, empty coarse level, edge clipping, CLI exit code).Why: this is the gap behind #1965 and #2092. Existing checks look at one level at a time, so they cannot see a coarse level that is internally fine but missing chunks over real data.
Evidence (run 2026-10-14, public bucket, ~8 s total for both stores):
These match #1965: level 1 has no objects over the oversized level-0 region. They also match #2092: level 5 chunk
2/0/0is missing.Scope / limits: zarr v2 only, the same limit as
zarr_chunk_index. A level that can't be indexed is reported asSKIPPEDand never counted as holes. A hole means "a chunk is expected and no object exists". It does not decode chunks to prove the finer data is non-fill. The full standalone audit (oversized chunks, v3/sharded stores, gap verification by decoding) is at https://github.com/sfc0324/zarrsweep (MIT).Tests:
pytest vesuvius/tests/data vesuvius/tests/utils→ 80 passed, 1 skipped. This includes thetest_no_silent_swallowingratchet. The new module adds no broadexcept, and a missing.zattrsis the only case that returnsNone.AI disclosure: prepared with an AI assistant. I ran and checked the code, tests and S3 output above.