Skip to content

Add interactive region annotation tutorial#5

Merged
timtreis merged 8 commits into
mainfrom
tutorial/interactive-annotate
May 27, 2026
Merged

Add interactive region annotation tutorial#5
timtreis merged 8 commits into
mainfrom
tutorial/interactive-annotate

Conversation

@timtreis
Copy link
Copy Markdown
Member

@timtreis timtreis commented May 21, 2026

Adds examples/interactive_annotate.ipynb for sdata.pl.annotate(), backed by anybioimage's BioImageViewer.

  • Loads squidpy.datasets.visium_hne_sdata() and renders the H&E.
  • Widget call is a markdown block, not a code cell — the docs build has no live JS runtime.
  • interactive_annotate.gif shows the live UX in the rendered docs.
  • A simulated 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.

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>
@review-notebook-app
Copy link
Copy Markdown

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

timtreis and others added 3 commits May 27, 2026 03:10
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>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 27, 2026

📖 Docs preview: https://scverse.org/spatialdata-plot-notebooks/pr-5/gallery.html

Built from ef91a72; redeployed on every push.

github-actions Bot pushed a commit that referenced this pull request May 27, 2026
@timtreis timtreis changed the title Add interactive region annotation tutorial (skeleton) Add interactive region annotation tutorial May 27, 2026
@timtreis timtreis marked this pull request as ready for review May 27, 2026 14:15
github-actions Bot pushed a commit that referenced this pull request May 27, 2026
github-actions Bot pushed a commit that referenced this pull request May 27, 2026
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>
github-actions Bot pushed a commit that referenced this pull request May 27, 2026
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
github-actions Bot pushed a commit that referenced this pull request May 27, 2026
@timtreis timtreis merged commit d891121 into main May 27, 2026
4 checks passed
@timtreis timtreis deleted the tutorial/interactive-annotate branch May 27, 2026 15:36
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.

1 participant