Skip to content

feat(operate): calibration gets its own pane (#108) - #158

Merged
pskeshu merged 1 commit into
gently-project:developmentfrom
pskeshu:feat/calibration-tab
Sep 5, 2026
Merged

feat(operate): calibration gets its own pane (#108)#158
pskeshu merged 1 commit into
gently-project:developmentfrom
pskeshu:feat/calibration-tab

Conversation

@pskeshu

@pskeshu pskeshu commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Judgement call, flagged

Kesavan raised on the walkthrough whether one embryo's calibration should apply to all of them, or each should carry its own. That is a question about the experiment, not the interface — so the pane is built per-embryo, matching what calibrate_embryo already does, and the question is left open rather than answered by a layout.


Calibrate was a button in the SPIM head's status bar, and its result appeared in a different tab entirely.

Ryan, 25:30: "after setting up the bottom camera and SPIM head, I feel like I'm not quite sure what to do in gently at this point."

There was no next step on screen, because the next step was a button in the corner of the step before. His own description of the order is now the pane order:

Bottom cam → SPIM head → Calibration → Acquisition

The pane

Declares its method before running it — Kesavan, same call: "it should show what is the method it is going to use to calibrate." One method on this rig, so it is named rather than offered as a choice, and the text says the part that matters: it needs the laser, because the LED alone gives a DIC-like image with no nuclei to find. That is the confusion #106 turns on, written where the button is.

It carries the Calibrate button, the selected embryo, the fit readout, and the focus-sweep montage — which previously appeared under the SPIM head while the result lived elsewhere. Control, evidence and result in one place.

Leaving the pane closes the LED. calibrateSelected never did, which is half of #106.

The rail says which embryos still need it

RosterPanel gains showFit, reading the same field the server-side gate checks (a finite non-zero slope_um_per_deg). The shared rail sits beside every pane, so CAL / UNCAL is visible wherever you are — an operator sees what a run will refuse before reaching Start rather than discovering it there.

Muted, not red: an uncalibrated embryo is one you haven't got to yet, not an error.

Also

PANE_ORDER is one list — it used to be spelled out in showPane and again in showPaneInitial, so adding a pane meant remembering both. And three stray double publishRoster() calls left by the roster rename are collapsed.

Verified live

Subtab order · pane shows while others hide · Calibrate and the montage host moved · SPIM bar carries neither · fit readout reads 96.4 µm/deg · R² 0.91 for a calibrated embryo and not calibrated for one without · rail badges track both.

Calibrate was a button in the SPIM head's status bar, and its result appeared
in a different tab entirely. Ryan, 25:30 on the 2026-08-07 walkthrough: "after
setting up the bottom camera and SPIM head, I feel like I'm not quite sure what
to do in gently at this point." There was no next step on screen, because the
next step was a button in the corner of the step before.

His own description of the order is the pane order, so that is the order:

    Bottom cam → SPIM head → Calibration → Acquisition

The pane declares its method before running it — Kesavan on the same call: "it
should show what is the method it is going to use to calibrate." There is one
method on this rig, so it is named rather than offered as a choice, and the
text says the part that matters: it needs the laser, because the LED alone
gives a DIC-like image with no nuclei to find. That is the confusion gently-project#106 turns
on, written where the button is.

It carries the Calibrate button, the selected embryo, the fit readout, and the
focus-sweep montage — which previously appeared under the SPIM head while the
button that produced it was also there but the result was elsewhere. Control,
evidence and result in one place.

Leaving the pane closes the LED. `calibrateSelected` never did, which is half
of gently-project#106; the pane's `onLeave` does it the same way the SPIM pane does.

## The rail says which embryos still need it

`RosterPanel` gains `showFit`, reading the same field the server-side gate
checks — a finite non-zero `slope_um_per_deg`. The shared rail sits beside every
pane, so `CAL` / `UNCAL` is visible wherever you are. An operator now sees what
a run will refuse before reaching Start, rather than discovering it there.

Muted rather than red: an uncalibrated embryo is one you have not got to yet,
not an error.

## Also

`PANE_ORDER` is one list. It used to be spelled out in `showPane` and again in
`showPaneInitial`, so adding a pane meant remembering both — and three stray
double `publishRoster()` calls left by the roster rename are collapsed.

JUDGEMENT CALL: Kesavan raised on the walkthrough whether one embryo's
calibration should apply to all of them, or each should carry its own. That is
a real question about the experiment, not the interface, so the pane is built
per-embryo — matching what `calibrate_embryo` already does — and the question
is left open rather than answered by a layout.

Verified live: subtab order, the pane showing while the others hide, Calibrate
and the montage host moved, the SPIM bar no longer carrying either, the fit
readout reading "96.4 µm/deg · R² 0.91" for a calibrated embryo and "not
calibrated" for one without, and the rail badges tracking both.

Audit finding: gently-project#108, and the dead end at 25:30.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@pskeshu
pskeshu merged commit 372b8c8 into gently-project:development Sep 5, 2026
2 checks passed
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