Verified highlighting captures#
Every image below was captured from the running web app against the
Pancreatic endocrinogenesis (scVelo) sample (3,696 cells), coloured by
cell_type, at a 1440×1000 viewport with a device pixel ratio of 2, in the
light theme. Each one is a named scenario in docs/_tooling/screenshots/
(highlighting-… in scenarios.mjs) and can be regenerated and re-verified
byte for byte with node capture.mjs check. The selection gestures are real
gestures: Alt held while the mouse presses, drags and releases over the plot.
The pointer glyph marks where the pointer was and whether the button was down,
and every gesture is checked against the step readout the panel wrote for it,
so nothing here is a mock-up.
The 2D embedding is shown in Planar navigation because a flat projection makes the geometry of a gesture legible. Everything on this page behaves the same way in 1D and 3D; the 3D-specific caveats are in Selection tools (annotation, lasso, proximity, KNN), and the two-panel capture below is taken in 3D.
The toolbelt#
The Highlighting accordion before anything is selected. Four tools (the
Selection (i) describes each); the Select mode switch, which stands in
for a held Alt on a touch screen (Select mode (touch screens, or no Alt key)); one page tab reading
Page 1 (0); and No cells highlighted. Clear is not drawn at all
while the page is empty.#
One lasso, start to finish#
Step 1 — draw. Alt is held and the button is down. The enclosed cells are
already repainted in the highlight colour: that is the preview, which shows
the set a release would commit under the modifier you are holding. The path
does not have to be closed by hand — releasing closes it.#
Step 2 — read the step. Releasing over the plot records a step. The readout
names the step number and the candidate count; the step controls appear beneath
it. Nothing is stored yet — Page 1 (0) and No cells highlighted are still
true.#
Step 3 — confirm. Confirm turns the candidate set into one group on the active page. The page tab, the summary line and the group row now all carry the same count, and Clear has appeared.#
Step 4 — the result. The group survives everything that is not a filter: change the coloured field, move the camera, switch embedding, and these 826 cells stay members.#
The other three tools#
Annotation. One Alt+click on one cell selected all 591 visible cells
of that cell’s cell_type category, Beta — including the ones far from the
pointer. The help line changes to Alt to replace on a categorical field,
because intersecting one category with another is almost always empty.#
Proximity drag. The dashed circle is the radius in embedding space, not screen space; the small dot at its centre is the seeded cell. In 3D the same gesture is a sphere. The step readout appears only on release, so mid-drag the panel shows no step yet.#
KNN drag. The same seed cell and the same drag distance as the proximity
capture above, dragged upward. Compare the shape: the selection follows the
neighbour graph, so it spreads along the manifold instead of filling a disc.
Drag distance sets the degree in whole steps, and the label beside the dashed
circle (3°) names the degree reached.#
Two pages#
Pages are alternative workspaces. Each carries its own colour, its own count and
its own group list; only the active one is rendered. The ⋈ control on a tab
combines it with another page by intersection or union.#
Highlight membership is one list for the whole dataset, so both panels draw the same members. What each panel draws is still its own business: a cell a panel is filtering out is not highlighted there. See Selection synchronization (views, pages, filters, Python).#
What the app says when a gesture fails#
A click that hits nothing says so, in one line, under the Tool buttons. That line is the only place these messages appear — no toast, no history. The full list is in Troubleshooting (highlighting and selection).#
With no coloured field, Annotation has no rule to apply, so the Selection (i) leads with an instruction instead of the usual invitation.#
The help line under the step readout is tool-specific and field-specific. Read
it before you press a modifier: it is the only place the app tells you that
Alt means replace here and intersect everywhere else.#
A named page#
The confirmed lasso group from above, on a page renamed by double-clicking its tab. Highlighted cells are stored on a named page, and that page is the explicit group later analysis and session workflows use. The Python guide reuses this capture.#