Why
Collaborators often already have BF/ADF/DPC/SSB products from a prior run. They should open one Show4DSTEM widget and switch between raw 4D navigation and those maps without re-running SSB inside the widget.
Show4DSTEM(
data,
products={
"DPC r": dpc_r,
"DPC c": dpc_c,
"SSB": ssb.phase, # phase only; amplitude not required for v1
},
)
The widget shows those as selectable map presets/tabs. Do not run SSB (or other heavy recon) inside Show4DSTEM by default.
Scope
Show4DSTEM (this issue — implement first)
- Add
products= (or equivalent) argument.
- Accept 2D arrays and simple 3D stacks (e.g. multi-frame products).
- Register names in the map selector / preset row with same label font as existing BF/ABF/ADF controls.
- Use a sensible colormap scheme:
- DPC r / DPC c: diverging (e.g. coolwarm / RdBu-style), zero-centered when appropriate
- SSB phase: cyclic or standard phase map consistent with house style (match existing SSB/phase displays if any)
- If a value looks like an SSBResult-like object, auto-register phase only (not amplitude) for v1.
- No heavy SSB compute inside Show4DSTEM unless explicitly requested later.
Out of scope for this issue (follow-ups)
Design split
| Surface |
Role |
| Show4DSTEM |
4D navigation + passed-in inspection products (DPC r/c, SSB phase) |
| ShowPtycho |
Full SSB/ptycho interactive exploration |
Acceptance
Refs
Why
Collaborators often already have BF/ADF/DPC/SSB products from a prior run. They should open one
Show4DSTEMwidget and switch between raw 4D navigation and those maps without re-running SSB inside the widget.The widget shows those as selectable map presets/tabs. Do not run SSB (or other heavy recon) inside Show4DSTEM by default.
Scope
Show4DSTEM (this issue — implement first)
products=(or equivalent) argument.Out of scope for this issue (follow-ups)
Design split
Acceptance
products={"DPC r": ..., "DPC c": ..., "SSB": ...}works onShow4DSTEMRefs