Add interactive region annotation tutorial#5
Merged
Conversation
Adds examples/interactive_annotate.ipynb covering the new `sdata.pl.annotate()` API from scverse/spatialdata-plot#684. Uses the same `squidpy.datasets.visium_hne_sdata()` dataset as visium_mouse_brain.ipynb so the download cache is shared. Structure follows the existing examples/ pattern: - Intro + dataset citation + install hint for the [interactive] extra - Load → render the image so the reader sees what to annotate - Widget invocation shown in a markdown fenced block (the static docs build can't execute the anywidget JS runtime; live-kernel users copy the snippet) - GIF placeholder cell — replace interactive_annotate.gif with a real recording before merging - "What the widget produces": a code cell that builds the equivalent ShapesModel directly via shapely + ShapesModel.parse, so downstream cells reproduce in the docs build without the widget - Overlay with render_shapes; polygon-crop via sd.polygon_query - Watermark block matching the other tutorials Wires the new entry into examples/index.md alongside the Visium card. Outstanding before merge: - Replace the hippocampus polygon coordinates with values from an actual annotation pass against visium_hne_sdata - Record interactive_annotate.gif (~3-5 s of drawing/saving) - Add interactive_annotate.png thumbnail for the gallery grid card Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
Pixi 0.54.2 refuses to load `[tool.pixi]` with dotted-key children (`workspace.channels = [...]`, `dependencies.python = ">=3.11"`, …) and requires one of `[tool.pixi.workspace]` / `.project` / `.package` as a real TOML table header. Rewrite the inline-dotted block into explicit `[tool.pixi.workspace]`, `[tool.pixi.dependencies]`, `[tool.pixi.pypi-dependencies]`, and `[tool.pixi.tasks]` sections so `pixi install` and `pixi run kernel-install` actually work. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Move existing thumbnails from beside their notebooks to a shared `_static/img/` directory (Sphinx convention) so all gallery media lives in one place: examples/visium_mouse_brain.png -> _static/img/visium_mouse_brain.png tutorials/getting_started.png -> _static/img/getting_started.png tutorials/color_and_palette.png -> _static/img/color_and_palette.png Update the `:img-top:` references in `examples/index.md` and `tutorials/index.md` to point at `../_static/img/<slug>.png`. Add step 6 to `CONTRIBUTING.md` documenting the convention: gallery thumbnails and notebook-embedded GIFs / screenshots go under `_static/img/`, never next to the notebook itself. Renumber the following CI step accordingly. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The widget pivoted from the custom anywidget+JS canvas to the external `anybioimage` library's `BioImageViewer` (see scverse/spatialdata-plot#684). Update the tutorial to match: - Intro: replace the anywidget/SVG architecture blurb with a description of the `BioImageViewer` backend. - Launch section: rewrite the API signature from the old positional `annotate(coordinate_system, element, persist=True)` to the new keyword-only chain-step form `.pl.render_images(...).pl.annotate( coordinate_systems=...)`. Drop the lasso tool (no longer present) and the JS-canvas-specific shortcut list. Replace the "Write to disk" button with a `sdata.write_element(<name>)` follow-up note. - Polygon query cell: pass the actual shapely geometry rather than the whole `GeoDataFrame`. spatialdata's `polygon_query` overload for `DataArray`/`DataTree` calls `GeoDataFrame(geometry=[polygon])` internally, which fails with `GeometryTypeError: Unknown geometry type: 'featurecollection'` if passed a nested gdf. - Watermark: drop `anywidget` (transitive dep that isn't imported by any executable cell) to keep the watermark report honest. - Add a `warnings.filterwarnings("ignore")` housekeeping cell ahead of the squidpy dataset load so the notebook's recorded outputs don't leak Zarr v3 deprecation chatter into the docs build. - Add the recorded GIF (`_static/img/interactive_annotate.gif`) and a placeholder PNG thumbnail (regenerate before merging). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
📖 Docs preview: https://scverse.org/spatialdata-plot-notebooks/pr-5/gallery.html Built from ef91a72; redeployed on every push. |
0.4.0 ships `sdata.pl.annotate()` (scverse/spatialdata-plot#684), so the tutorial can require the published wheel instead of an editable path. Re-executed the notebook to refresh the watermark output to 0.4.0. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.
Adds
examples/interactive_annotate.ipynbforsdata.pl.annotate(), backed byanybioimage'sBioImageViewer.squidpy.datasets.visium_hne_sdata()and renders the H&E.interactive_annotate.gifshows the live UX in the rendered docs.ShapesModel.parse(...)cell stands in for a real draw + Save so downstream cells (overlay,polygon_query) execute reproducibly in CI.examples/index.md: gallery card + toctree entry.