Export and run ShowPtycho#
This tutorial exports a ShowPtycho reconstruction as a browser folder and opens it with no Python kernel and no Jupyter. You can run it by granting the folder to Chrome, or by using the generated local launcher. The exported viewer opens from exact bright-field detector columns by default, then runs SSB live as you tune aberrations.
If you just want the interactive widget inside a notebook, see
ShowPtycho in Jupyter instead. This page assumes you already
have a fitted ssb (solved with ssb.fit(trials=200, refinement="nelder-mead"); an unfitted export uses only the supplied starting
aberrations).
Export#
from quantem.widget import ShowPtycho
# ssb is already fitted: result = ssb.fit(trials=200, refinement="nelder-mead")
w = ShowPtycho(ssb, source_file="scan_master.h5", save_dir="out/")
w.export("out/", title="my sample SSB")
This writes a folder:
index.html— the viewerShowPtycho.command— double-click launcher for Chrome on macOSsource/— the exact BF-column browser source plus linked HDF5 evidencesnapshots/— calibration, manifest, viewer snapshots, and review metadata
The export persists no expanded float32 images and no complex64 BF reducers.
By default, the browser range-reads source/bf_columns.u8 or
source/bf_columns.u16 and does not decode the compressed HDF5 stack on open.
Saved aberration states live in snapshots/snapshots.json; reopening the
folder through a folder grant or quantem showptycho out/ reads them back into
the snapshot strip automatically.
Export at native detector size#
The WebGPU browser export cannot bin the detector. If the ssb was built
with det_bin=2 (a 96x96 calibration) but the embedded HDF5 is native 192x192,
the browser decodes 192x192, mismatches the calibration, and shows
detector shape mismatch; HDF5 has 192x192, calibration has 96x96
with blank panels. Always build and export at native detector size
(det_bin=1, the default).
Run it#
The exported folder needs source/ and snapshots/ present next to
index.html. There are three ways to open it.
A. Double-click ShowPtycho.command (macOS, zero setup)#
Double-click
ShowPtycho.commandat the folder root.A Terminal window starts the bundled range server (stdlib-only, uses the Mac’s built-in Python) and Chrome opens the viewer already wired to it.
Close the Terminal window when done; that stops the server.
The launcher serves only this folder, from wherever it sits — copy the folder to another Mac and the same double-click works, nothing to install.
B. Double-click index.html (File System Access)#
Double-click
index.html.Click Open data folder and grant the folder the HTML lives in (browsers without the folder picker fall back to a plain file chooser).
It renders, starting at the embedded calibration snapshot.
One grant per session. This works fully offline.
C. CLI (serves and opens, no grant click)#
quantem showptycho out/
The command serves the folder over range-capable HTTP and opens it, so the viewer loads without the manual folder-grant. Use this when double-click + grant is inconvenient (for example over a remote connection).
What you can do in the viewer#
Drag C10 / C12 / phi12 / rotation — the browser rebuilds the BF-indexed
G(k)reducers and re-runs SSB live; the phase and FFT update in tens of milliseconds on a real GPU.Toggle the FFT panel to watch Bragg spots sharpen as aberrations improve.
Change colormap, contrast, and the amplitude/complex view.
Save writes the current aberrations and preview JPEG into
snapshots/without prompting for a separate download in the normal local folder workflow.
Verify WebGPU is on real hardware#
Interactive speed requires a real GPU. If a browser falls back to a software
renderer (SwiftShader), the reconstruction still runs but slowly, and any timing
you read is meaningless. On a real adapter the stats bar names the hardware
(for example nvidia ... or apple ...); a software fallback will not. New GPUs
can be missing from a browser’s allow-list — if WebGPU is unexpectedly absent,
launch the browser with GPU blocklisting ignored.
Checklist#
The
ssbwas fitted withfit(trials=200, refinement="nelder-mead")before export.Native detector (
det_bin=1) — the browser cannot bin.Export writes a clean root:
index.html,ShowPtycho.command,source/, andsnapshots/.Open by double-click + Open data folder, or
quantem showptycho out/.On open, the stats bar shows a non-null
lossand the phase renders.
Privacy#
Exports embed source HDF5 file basenames in the metadata under snapshots/ and
in the viewer state. The direct w.export(...) example above is therefore for
local or otherwise trusted use.
For a community-facing folder, build it through the canonical CLI and request redaction explicitly:
quantem showptycho scan_master.h5 \
--out shared-review \
--anonymize \
--trials 200 \
--refinement nelder-mead
--anonymize replaces the local acquisition name and source paths in saved
calibration and optimization provenance while retaining the scientific fit and
software-version record. Inspect the resulting folder before publishing it;
the detector evidence itself is still experimental data and must be yours to
share.