Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
487 commits
Select commit Hold shift + click to select a range
f672db8
Clarify docs status in signoff report
bobleesj Jul 4, 2026
d95ca32
Make ShowFolder the folder survey entrypoint
bobleesj Jul 5, 2026
f952ee3
Add widget timing profiling protocol
bobleesj Jul 5, 2026
c805849
Add browser-driven widget HTML smoke
bobleesj Jul 5, 2026
869a9e8
Add live refresh for ShowFolder
bobleesj Jul 5, 2026
194348d
Document ShowFolder live watch workflow
bobleesj Jul 5, 2026
6ef6930
Update ShowFolder selected viewers during watch
bobleesj Jul 5, 2026
6e3cb0b
Add live ShowFolder both view and 4D append hooks
bobleesj Jul 5, 2026
9604c80
Automate widget browser smoke checks
bobleesj Jul 5, 2026
2cad7b4
Add phone handoff automation
bobleesj Jul 5, 2026
d1f18c0
Fix Show3D FFT overlay idle loop
bobleesj Jul 5, 2026
c8ead2d
Document widget testing scheme
bobleesj Jul 5, 2026
d2a3214
Add standard issue template
bobleesj Jul 5, 2026
22a0ff0
Add expected behavior to issue template
bobleesj Jul 5, 2026
4035f3e
Clean stale browser artifacts during signoff
bobleesj Jul 5, 2026
b15e3e3
Add live Show4DSTEM folder append
bobleesj Jul 5, 2026
4c3b1a1
Clarify automation signoff protocol
bobleesj Jul 5, 2026
cc3938b
Use generic backend wording in automation docs
bobleesj Jul 5, 2026
9a8dbc2
Use generic backend wording in storyboards
bobleesj Jul 5, 2026
2cac8a6
Add signoff dashboard automation
bobleesj Jul 5, 2026
dcfeaa3
Support CUDA Show4DSTEM signoff
bobleesj Jul 5, 2026
63aca70
Support CUDA Show4DSTEM no-bin signoff
bobleesj Jul 5, 2026
a314c67
feat(show4dstem): wire Dataset5dstem paging into the dataset slider
bobleesj Jul 5, 2026
1680d83
feat(showfolder): Open Show4DSTEM button — folder masters into one pa…
bobleesj Jul 5, 2026
8756c5c
Fix Show4DSTEM paging signoff gaps
bobleesj Jul 5, 2026
474b590
Release ShowFolder 4DSTEM load temporaries
bobleesj Jul 5, 2026
00210b5
Add ShowFolder CUDA staging leak test
bobleesj Jul 5, 2026
479266f
Add nbconvert to test extra
bobleesj Jul 6, 2026
f241936
Add widget metadata tooltips
bobleesj Jul 6, 2026
a6f870f
Release Show4DSTEM paged data on free
bobleesj Jul 6, 2026
aac3423
Add automatic ShowFolder 4DSTEM paging
bobleesj Jul 6, 2026
dbd1355
Make ShowFolder Show4DSTEM loading lazy
bobleesj Jul 6, 2026
73b04a4
Refresh live ShowFolder 4DSTEM views
bobleesj Jul 6, 2026
0143d56
Add widget review matrix
bobleesj Jul 6, 2026
63e52f1
Add ShowFolder live handoff signoff
bobleesj Jul 6, 2026
ea27d57
Fix docs deploy action pin
bobleesj Jul 6, 2026
49dccfb
Speed up direct uint8 HDF5 browsing
bobleesj Jul 6, 2026
c744710
Add render thumbnail helpers
bobleesj Jul 6, 2026
d16ec66
Add disk-aware Show4DSTEM loader benchmarks
bobleesj Jul 6, 2026
edf71df
Summarize Show4DSTEM loader benchmark results
bobleesj Jul 6, 2026
0f81265
Document WebP thumbnail guidance
bobleesj Jul 6, 2026
e411fcb
Cover image stack reader
bobleesj Jul 6, 2026
5be90aa
Add ShowFolder master QC report previews
bobleesj Jul 6, 2026
caf3e8a
Add widget UI controls and MPS safeguards
bobleesj Jul 6, 2026
deecb25
Add review handoff and transfer controls
bobleesj Jul 6, 2026
9db00eb
Polish Show3D animation export guidance
bobleesj Jul 7, 2026
92379ad
Remove DataTransfer widget UI
bobleesj Jul 7, 2026
5d4af88
Add Show2D panel reorder controls
bobleesj Jul 7, 2026
0502908
Add Show3D panel reorder controls
bobleesj Jul 7, 2026
90ae889
Document Show2D and Show3D live rerender updates
bobleesj Jul 7, 2026
e7468a4
Fix Show3D panel column layout
bobleesj Jul 7, 2026
08ffe53
Add DataTransfer Show4DSTEM handoff
bobleesj Jul 7, 2026
e366c1f
Add Show2D paged galleries
bobleesj Jul 7, 2026
ec2bc73
Fix Show3D live panel reorder drag
bobleesj Jul 7, 2026
be1c8aa
Add Show3D reorder drag ghost
bobleesj Jul 7, 2026
3d0aab2
Add Show3D paged galleries
bobleesj Jul 7, 2026
0fc832c
Expand widget browser smoke coverage
bobleesj Jul 7, 2026
2134f50
Add Show4DSTEM compare grid mode
bobleesj Jul 7, 2026
5cb174c
Add Show4DSTEM compare panel curation
bobleesj Jul 7, 2026
d44747c
Add Show4DSTEM compare user story
bobleesj Jul 7, 2026
edffb07
Polish Show4DSTEM compare previews
bobleesj Jul 8, 2026
497bc6b
Recompute Show4DSTEM compare previews offline
bobleesj Jul 8, 2026
81b3324
Tighten Show4DSTEM mobile layouts
bobleesj Jul 8, 2026
19e1046
Add FFT metric performance signoff
bobleesj Jul 8, 2026
d673857
Respect Show4DSTEM mobile compare columns
bobleesj Jul 8, 2026
2b7f71d
Hide Show4DSTEM mobile between-panel text
bobleesj Jul 8, 2026
07ba06a
Add Show1D live review workflows
bobleesj Jul 8, 2026
f311634
Use inset ring for Show4DSTEM compare selection
bobleesj Jul 8, 2026
4b32f4a
Add Show4DSTEM compare grid resize handle
bobleesj Jul 8, 2026
e36b09c
Harden Show4DSTEM memmap and resize handling
bobleesj Jul 8, 2026
7c61cbc
Add Show4DSTEM compare wheel zoom and gap control
bobleesj Jul 8, 2026
55cff16
Remove Show4DSTEM compare status label
bobleesj Jul 8, 2026
b216eb0
Fix Show4DSTEM temporal refresh after compare
bobleesj Jul 8, 2026
7761801
Rename Show4DSTEM view modes to single and multiple
bobleesj Jul 8, 2026
ce85144
Select diffraction panel from Show4DSTEM multiple tiles
bobleesj Jul 8, 2026
eab04f4
Polish widget UI protocols and Show1D docs
bobleesj Jul 8, 2026
7f77c2e
Remove Show4DSTEM controls hide button
bobleesj Jul 8, 2026
33589f1
Add Show1D plot resize handle
bobleesj Jul 8, 2026
9846ade
Fix Show4DSTEM multiple scan cursor drag
bobleesj Jul 8, 2026
46ee924
Polish Show1D panel hide hover
bobleesj Jul 8, 2026
b5889ee
Stabilize Show1D hide hover state
bobleesj Jul 8, 2026
dc444ec
docs: document commit message standard
bobleesj Jul 8, 2026
eead7d7
docs: fix agent commit guidance
bobleesj Jul 8, 2026
9676ee3
Match Show4DSTEM multiple cursor style
bobleesj Jul 8, 2026
7b3a08e
docs: update unreleased changelog
bobleesj Jul 8, 2026
b7c74d4
fix: tighten Show3D mobile playback controls
bobleesj Jul 8, 2026
acddebc
fix: prevent Show3D mobile playback overlap
bobleesj Jul 8, 2026
0c486b8
fix: align mobile control row spacing
bobleesj Jul 8, 2026
c6b0c35
docs: document compact control pairing
bobleesj Jul 8, 2026
9ada155
fix: prevent Show3D exported playback flash
bobleesj Jul 8, 2026
9a032f3
Add Show4DSTEM export visual smoke test
bobleesj Jul 8, 2026
556464f
Add Show4DSTEM multi-panel resize handles
bobleesj Jul 8, 2026
c00281a
fix: smooth Show3D page scrubbing
bobleesj Jul 8, 2026
114a1fa
Match Show4DSTEM compare resize handle style
bobleesj Jul 8, 2026
cd800fd
Show Show4DSTEM compare coordinate label once
bobleesj Jul 8, 2026
34fcd33
Move Show4DSTEM columns control to grid header
bobleesj Jul 8, 2026
254b01f
Redraw Show4DSTEM VI when leaving multiple view
bobleesj Jul 8, 2026
38a6443
fix: persist Show3D paged panel visibility
bobleesj Jul 8, 2026
9432594
feat: add widget debug and performance signoff
bobleesj Jul 8, 2026
9c71a18
harden widget static fallback export
bobleesj Jul 8, 2026
abfb095
migrate live data hub into widget
bobleesj Jul 8, 2026
fb62477
Improve Show1D ptychography dashboard
bobleesj Jul 9, 2026
d01ba43
Add public widget tutorial dataset loaders
bobleesj Jul 9, 2026
74086c5
Organize widget tutorial dataset loaders
bobleesj Jul 9, 2026
c822a1c
feat: improve Show1D reconstruction review
bobleesj Jul 10, 2026
454c1ea
feat: add live folder-backed image viewers
bobleesj Jul 10, 2026
4ed012f
perf: improve Show4DSTEM live paging
bobleesj Jul 10, 2026
00d229d
Add ShowFolder dwell-time metadata
bobleesj Jul 10, 2026
d62d852
Add saved widget regression coverage
bobleesj Jul 10, 2026
6fda62c
Handle non-paged Show4DSTEM dataset wrappers
bobleesj Jul 10, 2026
936a48d
Add paged Show3DSlices comparison workflows
bobleesj Jul 10, 2026
2392121
Unify widget signoff reporting
bobleesj Jul 10, 2026
52f7ce1
Add ShowDiffraction analysis modules and candidate-first phase identi…
henryhng Jul 5, 2026
4f62ce1
update showdiffraction notebook
henryhng Jul 5, 2026
ca87778
remove unused fts in ShowDiffraction
henryhng Jul 6, 2026
2a8dfc1
remove faulty tests
henryhng Jul 6, 2026
b8789bf
Add kernel-side element detection to ShowEDS (#145)
henryhng Jul 10, 2026
2c08060
docs: add PR template mirroring README widget checklist
bobleesj Jul 10, 2026
1b14db5
docs: group PR template into selective sections, cite scikit-package
bobleesj Jul 10, 2026
7fc6911
correct ShowDiffraction absences, phase matching, profile numerics
henryhng Jul 10, 2026
1c128f5
consolidate ShowDiffraction tests
henryhng Jul 10, 2026
4db9155
add quantem showdiffraction CLI, Fe3O4 tutorial
henryhng Jul 10, 2026
239ceb3
gate ShowEDS saved-cube on save_state
henryhng Jul 10, 2026
6388572
Add ShowDiffraction analysis modules and candidate-first phase identi…
henryhng Jul 5, 2026
9b8bfe2
update showdiffraction notebook
henryhng Jul 5, 2026
fc7759a
remove unused fts in ShowDiffraction
henryhng Jul 6, 2026
cbb87cc
remove faulty tests
henryhng Jul 6, 2026
f0cc24b
correct ShowDiffraction absences, phase matching, profile numerics
henryhng Jul 10, 2026
780e33d
consolidate ShowDiffraction tests
henryhng Jul 10, 2026
3e80390
add quantem showdiffraction CLI, Fe3O4 tutorial
henryhng Jul 10, 2026
d53d1c8
gate ShowEDS saved-cube on save_state
henryhng Jul 10, 2026
2c0ec5c
docs: fix outdated README, CLI, export, and performance docs
bobleesj Jul 10, 2026
573d3fc
docs: adopt scikit-package standards for contributors and agents
bobleesj Jul 10, 2026
1439c9f
ci: execute tutorial notebooks in docs build instead of committing ba…
bobleesj Jul 10, 2026
0ff164f
docs: explain the no-force-push review rule, link ophusgroup/dev
bobleesj Jul 10, 2026
e0d5536
docs: add no-committed-widget-state rule to PR checklists and agent g…
bobleesj Jul 10, 2026
5ff66ea
docs: add storyboard coverage item to PR checklist
bobleesj Jul 10, 2026
f0753ac
docs: rename Saving and sharing to HTML and file export
bobleesj Jul 10, 2026
3c2a670
reattach pre-rebase history
henryhng Jul 10, 2026
d120076
docs: hide synthetic data cells, add memory management page, fold adv…
bobleesj Jul 10, 2026
9a3fe5d
docs: add data upload protocol to io FAQ and download tutorial
bobleesj Jul 10, 2026
b0685b6
docs: run IO tutorial on real HF data, add watch and reconstruction-c…
bobleesj Jul 10, 2026
f701228
refactor: source all tutorial loaders from widget-tutorials HF tree
bobleesj Jul 10, 2026
557c383
feat: inset selection ring so gallery panels sit flush with zero gap
bobleesj Jul 10, 2026
d090c87
feat: inset focus ring for Show3D and Show3DSlices containers
bobleesj Jul 10, 2026
3bec86d
fix: keep docs pages single-widget, no static fallback duplicate
bobleesj Jul 10, 2026
709c09b
docs: add single-output-per-widget rule for docs builds
bobleesj Jul 10, 2026
986eee8
docs: rename Advanced tutorials to Advanced, move API reference under…
bobleesj Jul 10, 2026
ff4ed63
ci: install tutorial data deps in widget-ci for docs signoff build
bobleesj Jul 11, 2026
1b1720e
fix: read symlinked folder images by their own name, not resolved target
bobleesj Jul 11, 2026
e0e9264
feat: add save_state contract to Show1D, trim snapshot buffers from s…
bobleesj Jul 11, 2026
439ed4e
ci: silence HF unauthenticated-request warning in baked tutorial outputs
bobleesj Jul 11, 2026
804adde
ci: merge duplicate env keys on docs build step
bobleesj Jul 11, 2026
5b804dd
docs: hide Colab bootstrap cells from built tutorial pages
bobleesj Jul 11, 2026
040a4db
docs: fix pytest path, release example versions, install extras
bobleesj Jul 11, 2026
c1daac6
chore(release): widget 0.0.1rc30
bobleesj Jul 11, 2026
c57de45
feat: read EMD, DM, and NPY frames in read_image_stack with carried c…
bobleesj Jul 11, 2026
332a450
feat: add static preview fallback to Show1D, completing the save_stat…
bobleesj Jul 11, 2026
5b3e3bb
ci: guard built docs page sizes and name heavy widget buffers
bobleesj Jul 11, 2026
6941dfa
fix: show only the current page's histograms in paged Show2D galleries
bobleesj Jul 11, 2026
7ae84e8
fix: repack Show3D offline stack in set_image so kernel-less reopen r…
bobleesj Jul 11, 2026
be731aa
docs: make show3d live demo scrubbable on docs pages, widen diffracti…
bobleesj Jul 11, 2026
a12ca38
feat: add display-only filter utility for sparse maps
bobleesj Jul 11, 2026
5fb8aed
feat: add live display-filter controls to Show2D for sparse maps
bobleesj Jul 11, 2026
26df588
feat: mirror display-filter knobs onto Show3D per-frame playback
bobleesj Jul 11, 2026
eaf7283
feat: add HAADF underlay blend and magenta colormap to Show2D
bobleesj Jul 11, 2026
8271c2b
feat: per-panel display filter lists with All/Panel UI scope
bobleesj Jul 11, 2026
9eacf98
feat: add browser display filter port (wgsl compute + cpu reference)
bobleesj Jul 11, 2026
b5dc4b7
feat: ship raw frames when the browser negotiates webgpu filtering
bobleesj Jul 11, 2026
d8371f8
feat: wire show2d frontend to live browser-side filter pipeline
bobleesj Jul 11, 2026
284fa2e
docs: add which-denoise-filter FAQ to Show2D reference
bobleesj Jul 11, 2026
8bee958
refactor: rename filter api to denoise family with three-mode menu
bobleesj Jul 11, 2026
033cc01
feat: gate denoise ui behind show_denoise toggle with canonical modes
bobleesj Jul 11, 2026
d790863
feat: browser-side WebGPU denoise pipeline with explicit denoise API
bobleesj Jul 11, 2026
7f6c1cf
fix: brighten underlay blend with Fig4-matched percentile stretch
bobleesj Jul 11, 2026
20af8d3
feat: advance interactive widget workflows
bobleesj Jul 11, 2026
3beb8cf
Merge remote-tracking branch 'origin/main'
bobleesj Jul 11, 2026
9d23f5f
feat: move denoise scope into the Link group
bobleesj Jul 11, 2026
7b79f5c
feat: add reversible crop-to-view and pad view ops to Show2D
bobleesj Jul 11, 2026
5e26afe
feat: link-group denoise scope and reversible crop/pad view ops
bobleesj Jul 11, 2026
cacd5c1
Merge branch 'main' of https://github.com/bobleesj/quantem.widget
bobleesj Jul 11, 2026
20a5f47
fix: accept RGB stacks in Show3D set_image and cover RGB offline stride
bobleesj Jul 11, 2026
f925443
fix: keep Show3D true color through set_image, export, and raster paths
bobleesj Jul 11, 2026
375bcef
docs: update denoise demo notebook and docs to the denoise API
bobleesj Jul 11, 2026
9c73d6c
feat: warn on deprecated Show2D filter kwargs and document denoise/un…
bobleesj Jul 11, 2026
fbd4c69
docs: update denoise demo notebook and docs to the denoise API
bobleesj Jul 11, 2026
1231a42
fix: guard Show2D pad_ratio on galleries and persist diff_reference
bobleesj Jul 11, 2026
1a3f916
feat: add Show2D set_denoise() setter with explicit panel scope
bobleesj Jul 11, 2026
9436bf3
feat: add Show3D.from_rgb and rgb= for explicit true-color control
bobleesj Jul 11, 2026
0f2d783
feat: Show2D deprecation warnings, pad_ratio guard, set_denoise setter
bobleesj Jul 11, 2026
89470b2
feat: RGB config rotation, Show3D.from_figure_gallery, and export siz…
bobleesj Jul 11, 2026
7207112
test: add underlay repaint regression coverage
bobleesj Jul 11, 2026
c5be87b
docs: add S3D-18/S3D-19 user stories for color gallery and safe export
bobleesj Jul 11, 2026
0228a6a
test: add underlay repaint regression coverage
bobleesj Jul 11, 2026
d8e96ba
feat: add underlay stretch/gamma/dual-composite Fig4 knobs to Show2D
bobleesj Jul 11, 2026
5a05d23
feat: add underlay stretch/gamma/dual-composite Fig4 knobs to Show2D
bobleesj Jul 11, 2026
f881e22
feat: add Show2D More overflow menu and collapse-safe reduction badge
bobleesj Jul 11, 2026
7c277a3
feat: add Show2D More overflow menu and collapse-safe reduction badge
bobleesj Jul 11, 2026
8d81800
feat: tidy Show2D control rows for wrap-safe labels and tooltips
bobleesj Jul 11, 2026
3392220
feat: tidy Show2D control rows for wrap-safe labels and tooltips
bobleesj Jul 11, 2026
d4aa62c
feat: harden folder paging and paint verification
bobleesj Jul 11, 2026
6c537fa
fix: preserve Show2D folder page state
bobleesj Jul 11, 2026
5bb9830
feat: multi-panel Show3D with independent RGB stacks
bobleesj Jul 11, 2026
6c8eb79
feat: GPU-paint Show3D RGB frames and enable moving average for color
bobleesj Jul 11, 2026
66a0c2c
docs: require problem-action handoff context (#150)
bobleesj Jul 11, 2026
ed94dc9
fix: preserve Show2D gallery preview on notebook reopen
bobleesj Jul 12, 2026
801752c
docs: explain bin and Anscombe denoise math in the Show2D info panel
bobleesj Jul 11, 2026
ec99901
docs: make the 128GB dev Mac the default widget test surface
bobleesj Jul 11, 2026
199be01
fix: enabling the Denoise section now denoises (defaults mode to gaus…
bobleesj Jul 11, 2026
5f65d1a
feat: Show3D More menu holding Stats and Denoise (mirrors Show2D)
bobleesj Jul 11, 2026
00bba39
feat: Show3D ships raw frames under _webgpu_filter_ok for browser-sid…
bobleesj Jul 11, 2026
372afa0
feat: Show3D browser-side WGSL denoise with live sigma scrub
bobleesj Jul 11, 2026
f6fe317
fix: per-panel denoise at construction defaults denoise_scope to panel
bobleesj Jul 11, 2026
90b0b14
fix: Show3D offline path ships raw so browser denoise engages (real-t…
bobleesj Jul 12, 2026
886bc5a
feat: Denoise toggle is a master on/off of the effect (raw when off, …
bobleesj Jul 12, 2026
ca79eca
feat: add frequency filter family
bobleesj Jul 12, 2026
16330c8
fix: clarify frequency filter interaction
bobleesj Jul 12, 2026
01516e9
fix: isolate Show2D panel filter FFT caches
bobleesj Jul 12, 2026
4423a28
fix: Show2D denoise editor edits auto-enable the master toggle (inter…
bobleesj Jul 12, 2026
a320fe2
feat: inline on/off toggle in the Denoise and Filter rows (Show2D + S…
bobleesj Jul 12, 2026
37916d1
revert: drop inline denoise/filter row toggles; keep the single maste…
bobleesj Jul 12, 2026
7e84109
style: drop in-row denoise/filter banners; fix-width slider value lab…
bobleesj Jul 12, 2026
f2afc8e
style: align Show3D denoise sigma label width with Show2D (40px)
bobleesj Jul 12, 2026
1957484
fix: remove redundant Filter 'Settings' button in More menu; the Filt…
bobleesj Jul 12, 2026
f9cab98
fix: dragging denoise sigma on a raw panel starts gaussian denoise (s…
bobleesj Jul 12, 2026
654d378
fix: Show3D More menu is one popover (Stats/Denoise/Filter); was two …
bobleesj Jul 12, 2026
22861a3
fix: serialize denoise_enabled in state_dict so export_html/saved sta…
bobleesj Jul 12, 2026
75c3c7d
fix: per-panel denoise/filter edits no longer bleed to other panels (…
bobleesj Jul 12, 2026
8e255d6
fix: Show3D re-applies denoise on frame scrub
bobleesj Jul 12, 2026
acec6f6
fix: offline export repaints canvas with denoised/filtered frames
bobleesj Jul 12, 2026
168db07
fix: sync Show2D denoise editor to selected panel
bobleesj Jul 12, 2026
277efba
docs: record display filtering fixes
bobleesj Jul 12, 2026
8d39b01
feat: add saved view and playback stories
bobleesj Jul 12, 2026
81615fc
feat: add Show3D playback dynamics controls
bobleesj Jul 12, 2026
34373e6
fix: stack Show3D bottom FFT below image
bobleesj Jul 12, 2026
51d86c7
fix: cache Show3D filtered playback frames
bobleesj Jul 12, 2026
99431a0
fix: move Show3D play style to playback row
bobleesj Jul 12, 2026
788548a
fix: prevent Show3D filtered playback repaint races
bobleesj Jul 12, 2026
24e75d2
docs: require organic Show3D playback trials
bobleesj Jul 12, 2026
5b883af
docs: prefer organic widget testing paths
bobleesj Jul 12, 2026
f0dee91
perf: improve Show3D remote scrub transport
bobleesj Jul 12, 2026
7845147
feat: support panel colormaps and GPU movie tools
bobleesj Jul 12, 2026
791b8e7
fix: align widget resize handles
bobleesj Jul 12, 2026
e509caf
feat: add CUDA MP4 movie export
bobleesj Jul 12, 2026
5e3a004
Merge remote-tracking branch 'upstream/main' into tutorial
henryhng Jul 13, 2026
55270df
Keep Show3D export playback cache silent
bobleesj Aug 3, 2026
d905111
fix Show3D contrast during linked zoom
bobleesj Aug 4, 2026
e04d9dc
test Show3D zoom contrast regression
bobleesj Aug 4, 2026
196b760
add Show3D hover hide and retire sidecar exports
bobleesj Aug 4, 2026
f2ca717
Merge remote-tracking branch 'upstream/main' into tutorial
henryhng Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@ new `rcN` heading when that rc is published to TestPyPI.
- SSB reconstruction in the browser is 5.6x faster at full bright field: slider drags use a Fourier-domain BF sum with a single inverse FFT (the same `angle(mean(object))` estimator as the Python reference, corr 0.997), reaching ~50 FPS on a real 512x512x192x192 dataset at all 13137 BF pixels on an Apple-silicon laptop. Release commits keep the exact per-BF path for the loss readout.
- Resident G(q,k) stores the Hermitian half-plane by default (bit-exact, 2x less GPU memory, faster) with an opt-in snorm16 quantized mode (4x), a GPU-memory clamp on the BF count so big scans cannot crash small GPUs, and acceptance of rfft half-plane calibrations from the CUDA backend.
- Depend on `quantem.gpu[movie]>=0.0.1rc5` for the CUDA/MPS/CPU movie backend, keep migrated HDF5 and movie shims patch-compatible during the transition, and accept 3-axis `Show3DSlices(pixel_size=...)` tuples in release notebooks.
- Fix ShowDiffraction systematic absences for spinel, bixbyite, cuprite, rutile-type, and I41/amd phases: new structure-verified rules remove symmetry-forbidden lines (for example Fe3O4 200 and anatase 002) from predicted reflection lists.
- Improve ShowDiffraction phase matching: optimal line assignment replaces the greedy pass, missing-strong counts read n/a when a phase carries no intensities, full-circle radial wedges no longer collapse to zero width, and the ellipse fit's sector weighting is de-biased on noisy patterns.
- Add `quantem showdiffraction`: one command from a diffraction pattern (or the real Fe3O4 SAED via `--demo`) to an analyzed standalone HTML through the Auto pipeline, with `--phase` library calibration and indexing.
- Add the `showdiffraction_fe3o4` tutorial dataset loader (public dataset hub download with packaged fallback) and rework the ShowDiffraction tutorial around a quickstart and what the widget solves.
- ShowDiffraction mobile/touch support: fluid layout at phone widths, pointer-event canvas interactions (tap, drag, two-finger pinch/pan, double-tap reset), and a dual-thumb contrast histogram slider that syncs traits once per gesture.
- ShowDiffraction phase library: pymatgen removed entirely (no more `phaseid` extra or CIF/Structure loaders); built-in lattice constants now carry per-entry source citations (NIST SRM / COD / primary literature).
- Keep display filtering consistent throughout review: Show3D reapplies denoise when a user scrubs to another frame, standalone Show2D/Show3D HTML paints denoised and frequency-filtered pixels on first load, and unlinked Show2D galleries show and edit each selected panel's own denoise mode, sigma, and bin without changing neighboring panels.
- Add display-side denoise for sparse maps (EDS, low dose) to Show2D and Show3D: a Denoise menu (`none` / `gaussian` / `anscombe`, the count-respecting Anscombe smoother) with `denoise_sigma` and `denoise_bin` knobs, a `show_denoise` gate that keeps the controls row hidden until needed, and an always-on banner whenever a reduction is active. It is purely a view transform: the stored array, the stats row, and every export of raw data keep the original counts, and `none` is the lossless default. Show2D adds per-panel lists for raw-vs-denoised A/B galleries and runs the filter through a browser-side WebGPU pipeline, so exported HTML denoises without a kernel. Replaces the earlier `display_filter` / `display_sigma` / `spatial_bin` kwargs, which stay accepted as aliases for one release.
- Add a Show2D HAADF underlay: `underlay=True` on a `(haadf, map)` pair adds a third panel blending the map onto the HAADF lattice, with a `magenta` colormap so bright atomic columns render magenta instead of clipping to white. Tune with `underlay_alpha` and `underlay_haadf_gain`.
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ python -c "import quantem.widget; print(quantem.widget.__version__)"
| `Show2D` | 2D image or stack | image + contrast, FFT, line profiles, scale bar, display-side denoise, view-only low/high/band-pass frequency filters |
| `Show3D` | 3D stack | scrub / play through frames |
| `Show3DSlices` | 3D volume | orthogonal-slice viewer |
| `ShowDiffraction` | 2D diffraction pattern or 3D stack | spot/ring d-spacings, center refinement, calibration, phase indexing |
| `Show4DSTEM` | 4D-STEM array, or 5D stack | live virtual detectors (BF / ABF / ADF), CoM / iCoM / DPC, dataset slider + compare grid, offline WebGPU export |
| `ShowPtycho` | 4D-STEM master / SSB result | interactive SSB phase review: C10/C12/phi12/rotation sliders re-reconstruct in ~5-18 ms on-GPU; kernel-less WebGPU folder export for laptops |
| `ShowDiffraction` | 2D pattern or 3D stack | d-spacing, g-vector, and angle measurement on Bragg spots and rings |
| `ChooseLattice` | 2D image | ordered origin, a1, and a2 point selection for lattice-vector measurements |
| `ShowEDS` | EDS/EELS spectrum image | linked element map, spectrum, energy band, real-space ROI, and automatic element identification |
| `ShowFolder` | microscopy session folder | fast thumbnail browser, grouping, and file selection |
Expand All @@ -47,6 +47,7 @@ ChooseLattice(np.random.rand(512, 512))
Show1D(np.random.rand(100), x_label="frame", y_label="defocus", y_unit="nm")
Show2D(np.random.rand(512, 512))
Show4DSTEM(np.random.rand(64, 64, 128, 128))
ShowDiffraction(np.random.rand(512, 512))
ShowEDS(np.random.poisson(2, (64, 64, 256)).astype("uint16"))
ShowFolder("/data/session")
```
Expand Down Expand Up @@ -95,6 +96,7 @@ quantem show4dstem ./masters/ --html # 4D-STEM -> shareable
quantem showptycho scan_master.h5 # raw 4D-STEM master -> user-owned review project
quantem showptycho ./ptycho-export/ # existing project -> WebGPU browser review
quantem showfolder ./session/ # microscopy folder -> ShowFolder notebook/HTML
quantem showdiffraction pattern.npy # diffraction -> analyzed ShowDiffraction HTML
quantem html tutorial.ipynb # a notebook -> standalone offline HTML
```

Expand All @@ -106,6 +108,7 @@ quantem html tutorial.ipynb # a notebook -> standalone
| `quantem show4dstem <master(s) / folder>` | one or more `*_master.h5` | live Show4DSTEM notebook (or `--html`) |
| `quantem showptycho <master(s) / folder>` | one or more `*_master.h5`, or an existing project | one index with direct ShowPtycho and Show4DSTEM browser viewers |
| `quantem showfolder <folder>` | microscopy session folder | ShowFolder notebook (or `--html`) |
| `quantem showdiffraction <pattern>` | a diffraction pattern, or `--demo` | analyzed ShowDiffraction HTML: rings and fits; with `--phase`, calibration and hkl |
| `quantem html <notebook.ipynb>` | a notebook you wrote | runs it, bakes outputs into one offline HTML |
| `quantem github <notebook.ipynb>` | a notebook copy for GitHub | strips widget state, embeds compressed pictures for GitHub's preview |

Expand Down
2 changes: 2 additions & 0 deletions docs/api/datasets.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ from quantem.widget.datasets import (
show2d_gold,
show3d_gold,
show4dstem_gold,
showdiffraction_fe3o4,
showfolder_gold,
)
```
Expand Down Expand Up @@ -65,6 +66,7 @@ widget-tutorials/show1d/ducky/small/show1d_monitor.jsonl
widget-tutorials/show1d/ducky/small/snapshots/*.npy
widget-tutorials/shared/gold-haadf/full/data.npy
widget-tutorials/show4dstem/gold-128-bin8/full/data.npy
widget-tutorials/showdiffraction/fe3o4-saed/small/data.npy
widget-tutorials/showfolder/gold-haadf-session/small/*.emd
```

Expand Down
5 changes: 2 additions & 3 deletions docs/api/html-export.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ browse-quality or count-preserving.
|---|---|---|---|---|---|---|
| Show1D | yes | `single` | `full` | `1`, `2`, `4`, `8` | no | preserves every trace/x sample; linked 2D snapshot and profile panels use a NaN-aware area mean, with pixel size and panel/profile coordinates rescaled |
| Show2D | yes | `single` | `full`, `uint8` | planned | no | `uint8` stores display-scaled image data |
| Show3D | yes | `single`; large reviews use `export_sidecar(...)` folder output | `full`, `uint8` | planned | yes, via `export_sidecar(...)` | `uint8` stores display-scaled volume data; folder output keeps the viewer HTML small and loads the stack from a nearby data file. See the [advanced tutorial](../tutorials/advanced.md) for the full-resolution folder workflow. |
| Show3D | yes | `single` | `full`, `uint8` | `1`, `2`, `4`, `8` | no | `uint8` stores display-scaled volume data; use explicit downsampling for smaller portable reports. Legacy sidecar folders remain readable but cannot be newly created. |
| Show3DSlices | yes | `single` | `full`, `uint8` | planned | no | `uint8` stores display-scaled volume data |
| Show4DSTEM | yes | `single`; interactive exports may write a local launcher/folder when a companion payload must be served | `uint8`, `full`/`uint16` | detector: `1`, `2`, `4`, `8`; scan: `1`, `2`, `4`, `8` | yes, for companion-data interactive exports and HDF5 bundles | `export_kind="report"` writes static PNG virtual-image pages with no raw 4D; `export_kind="interactive"` writes browser WebGPU raw-4D payload. The CLI WebGPU folder keeps source HDF5 beside `index.html` and `Show4DSTEM.command`. `scan_bin` and `det_bin` are explicit mean-binning choices. |
| ShowEDS | yes | `single`, `folder` | `full` | `2`, `4` | yes | count-preserving sum downsample across spatial and energy axes |
Expand All @@ -133,7 +133,7 @@ The public Python calls are:
|---|---|
| Show1D | `export_html(path=None, title=None, mode="single", encoding="full", downsample=None)` |
| Show2D | `export_html(path=None, title=None, mode="single", encoding="full", downsample=None)` |
| Show3D | `export_html(path=None, title=None, mode="single", encoding="full", downsample=None)`; multi-GB folder reviews use `export_sidecar(out_dir)` |
| Show3D | `export_html(path=None, title=None, mode="single", encoding="full", downsample=None)` |
| Show3DSlices | `export_html(path=None, title=None, mode="single", encoding="full", downsample=None)` |
| Show4DSTEM | `export_html(path=None, title=None, mode="single", encoding=None, downsample=None, dtype="uint8", det_bin=1, scan_bin=1, real_space_bin=None, export_kind="interactive", dataset_scope="unhidden")`; for compact screening use `export_kind="report"` |
| ShowPtycho | `export_webgpu_folder(out_dir)` for browser-side SSB review from compressed HDF5 source files; transient BF-indexed reducers are built in WebGPU |
Expand All @@ -149,7 +149,6 @@ Existing compatibility aliases remain supported:
| `dtype="uint16"` | `encoding="full"` |
| `det_bin=2` | `downsample=2` |
| `binning=4` | `downsample=4` |
| `mode="sidecar"` | `mode="folder"` |

For Show4DSTEM, prefer the newer explicit names instead of the generic
compatibility aliases: `dtype="uint8"` or `"uint16"`, `det_bin=...`,
Expand Down
49 changes: 13 additions & 36 deletions docs/api/show3d.md
Original file line number Diff line number Diff line change
Expand Up @@ -578,49 +578,26 @@ For pages containing several panels, pass `panel_slot=` to
specific numerical profile. The interactive kymograph intentionally remains a
single-panel-page tool so its line and depth axes are unambiguous.

## Full-resolution folder export (advanced)
## Portable HTML export

Use the folder export when a microscopist needs to scrub a large stack at the
native detector/reconstruction size instead of opening a reduced one-file HTML.
This writes a small `index.html` beside an `offline_stack.u8` data file and a
`manifest.json`:
Show3D writes one portable HTML file. Use `encoding="uint8"` for visual review
and choose `downsample=1`, `2`, `4`, or `8` explicitly based on the required
spatial detail:

```python
from quantem.widget import Show3D

w = Show3D(stack, title="800C 1.3Mx full-resolution review", debug=True)
w.export_sidecar("/data/reports/800C_1.3Mx_fullres")
```

Serve the folder over Range-capable local HTTP; do not open the HTML with
`file://` because the browser must fetch the data file:

```bash
# Use your project or lab helper that supports HTTP Range requests.
python scripts/serve_sidecar_range.py \
--dir /data/reports/800C_1.3Mx_fullres \
--port 8803 --bind 127.0.0.1
w = Show3D(stack, title="800C 1.3Mx review", debug=True)
w.export_html(
"/data/reports/800C_1.3Mx_review.html",
encoding="uint8",
downsample=1,
)
```

Then open `http://127.0.0.1:8803/index.html`. The viewer shell should appear
immediately. The browser then loads the full stack into memory, shows the load
status banner, and swaps to the cached playback path when the stack is ready.
Changing Color or the histogram range repaints the current microscope view
immediately, marks the playback cache as updating, and rebuilds the remaining
frames in the background. Scrubbing during that rebuild should still advance
the current frame; once the banner clears, playback uses the cached full-stack
path again.

This workflow preserves the source spatial shape used to construct the widget.
If you intentionally want a smaller browse artifact, make that explicit with a
separate downsampled/single-file export rather than treating it as the
full-resolution review copy. For the end-to-end browser checklist and example
timing report, see the [advanced tutorial](../tutorials/advanced.md).

When sharing this export, send or copy the whole folder. `index.html` is not a
standalone result for this mode; it needs `offline_stack.u8` and `manifest.json`
beside it. The colleague should serve the received folder with the same Range
helper and open the local URL.
For exact multi-gigabyte analysis, keep the live Jupyter widget connected to
the source arrays. Show3D no longer creates companion sidecar folders. Existing
legacy sidecar reports remain readable for compatibility.

## Animation exports

Expand Down
Loading