Repository navigation
Notebook: folder pictures with a 1:1 crop, tag like the saved group, colour mask evidence (PR 17c) - #250
Merged
Conversation
…colour mask evidence (PR 17c) - Images found: a picture of each folder's first image from its header (Y and X named only, other axes max-projected and named, colour for RGB, capped reads, display only); the first 12 folders drawn by the check, the others on a click. - A shared thumbnail tile with a crop at native pixels where the thumbnail varies most (deterministic), and Enlarge; used on Images found, Replicates and Check and save. - Reopen: "Tag like the saved group" for new folders whose header is exactly a saved block's; the click writes the draft bytes of tagging by hand. - Masks: the evidence of an RGB folder is drawn in colour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
- The crop says why it is missing for an image under 128 pixels on a side or a thumbnail with too few pixels per square, instead of "varies too little"; a thumbnail that varies nowhere names the first square rather than "the square that varies most". - "Draw the pictures of the other 1 folder" (plural helper). - Regression tests: the same channel names in another order and a folder taken out on its own are not offered "Tag like the saved group"; a new Check folder of another folder shows no picture of the last one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
This was referenced Nov 9, 2026
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.
PR 17c of the notebook UX re-evaluation (owner decisions 2026-11-09). It is based on main at 45241f1, which has 17a #244, 17b-1 #247, 17b-2 #248 and #246. The diff is 24 files, +1263/−40, so it is one PR and not split.
Summary (by module)
header_preview(new,io): a picture of a folder's first image by path, drawn from its header before the axes are confirmed. It is display only: nothing it reads feeds an answer, an axis role, the draft or the run.metadata.named_axes). A plain stack (QYX,IYX) gets "preview after Axes (step 2)", and no axis is guessed.rgb_samples, S = 3) is drawn in colour with the existingcolour_composite.PLANE_CAP= 8 planes per picture, evenly spread, and at mostPIXEL_CAP= 4096 × 4096 pixels per plane and per picture;preview.READ_BUDGET(64 MiB) and is never read in blocks here;np.maximumkeeps a non-finite pixel non-finite, so it is shown magenta as in the existing pictures.planes.read_planewith a layout made from the header letters. Its Z/T/C slots only say which dimension to step through: all of them are projected, and no slot is shown or used as a role.preview_crop(new,pure):tile_picturesreturns the thumbnail and, when the downscale factor is over 2, a crop of 128 native pixels, drawn 2×2 with nearest neighbour.display_panelgained an optionallimits. Its caption gives the x/y range.notebook_thumb_tile(new,ui): one sharedThumbTileholds the thumbnail, the crop beside it (image-rendering: pixelated), the captions and Enlarge.show_detailis the enlarged view with Close, andzoom_buttonis now shared with the tag grid's existing Enlarge.Thumbnails.tilereads the same plane at native pixels, through the confirmed roles. That read is not cached, and only the PNGs are kept. A plane thatread_planewould reduce gets no crop, and the caption says why.Thumbnails.enlargedputs the 1024 px picture in the enlarged view.notebook_folder_previews(new,ui), the labels table with a Preview column on Images found. This is the described run only, so embedders'folder_stepis unchanged.notebook_channels_grid.TagGrid, Tag like the saved group (…):tag_likeapplieswith_tagsto every folder of the block and saves once, which writes the same draft bytes as choosing the tags by hand. It only ever happens on the click.MaskEvidence.in_colour()draws the evidence of an RGB folder (answered RGB, or pre-ticked from the header) on its colour picture. The overlay and the mask are unchanged. The caption says "in colour (channel 1 red, 2 green, 3 blue)". A plane that cannot be drawn in colour stays on channel 1, and the caption says why, "(not in colour: …)", so it never falls back silently.pyprojectdeclaresheader_preview(io),preview_crop(pure),notebook_thumb_tile(ui) andnotebook_folder_previews(ui).tools/code_rules.pyand the baseline are untouched.Decisions / for the owner
Image, which has no click event in 7.7 or 8. The tile uses the existing Enlarge button under the picture, as the tag grid does.Notes for review
embed_minimal_htmlin Playwright chromium (1180 px, deviceScaleFactor 2). Standalone renders lack JupyterLab styles and icons.Timings (Check folder, described run, median of 5, this container)
Before the cap, drawing every folder added 1.3 s to the 200-folder check, about 4.7 ms of reading and 3.8 ms of widgets per folder. That is why the cap is there.
Tests
tests/test_notebook_thumbnails.py(11):tests/test_notebook_tag_like.py(4):dapi≠DAPIis not offered;Updated:
test_notebook_check_save.py(the picture is now a tile).tests/channel_images.pygainslarge()(fine fibres on broad cells).python tools/check.py(Python 3.13,.[dev,notebook,zarr]): ruff, format and code rules pass; 5003 passed, 4 skipped. The skips are environment-dependent: a case-sensitive file system ×3 and running as root ×1.Screenshots (15) from
tests/channel_images.pyimages:Each one was looked at, and two problems were fixed after looking: Enlarge buttons collapsed by the scrolling table, and tiles stretching across Check and save. The crop shows the one-pixel fibres that the 8× thumbnail loses.
Generated by Claude Code