Skip to content

add com/dpc imaging modes to show4dstem#121

Closed
henryhng wants to merge 164 commits into
bobleesj:mainfrom
henryhng:feature/com-dpc
Closed

add com/dpc imaging modes to show4dstem#121
henryhng wants to merge 164 commits into
bobleesj:mainfrom
henryhng:feature/com-dpc

Conversation

@henryhng

Copy link
Copy Markdown
Contributor
  • Add 6 center-of-mass virtual imaging modes that compute beam deflection maps from 4D-STEM dat:
    • com-x/com-y
    • com magnitude
    • iCOM - integrated COM via Fourier-space Poisson solver, recovers projected electrostatic potential
    • dCOM - divergence of COM field
    • curl (EM)
  • Corresponding tests
  • Rewrite show4dstem all_features notebook data generator to simulate SrTiO3 perovskite crystal (atomic potential gradient & BF disk shift, Bragg spots, thickness modulation) to achieve clearer/more obvious visualisations
Screenshot 2026-04-22 at 2 11 08 PM

…cker with roi/snap/undo, convert coordinates to (row, col), add dataset integration
…ll widgets with fft filtering, line profiles, export figures, state persistence, canvas resize, mps gpu fallback
improve `Show4DSTEM` drag, support 5DSTEM, use `Self`
bobleesj and others added 26 commits April 13, 2026 12:26
- Remove duplicate zoom.toFixed(1)× Typography elements (keep only overlay canvas one)
- Add pixel_size=result.pixel_size to manual push notebook cell
- Add pixel_size=0.1861 to Live.watch notebook cell
- Scale bar will render when pixel_size > 0
…lers

Show2D + Show3D:
- Truthful render_total_ms via JS→Python _js_rendered trait (matches real
  wall clock, not just __init__); removes misleading 'N ms' print that hid
  _repr_mimebundle_ + comm + JS time.
- _repr_mimebundle_ matplotlib fallback gated behind QUANTEM_WIDGET_STATIC_FALLBACK.
- _apply_rotations no-op fast path for all-zero init case.
- canvas_size renamed to size; kwargs hardener rejects typos + legacy names
  with a helpful message. load_state_dict silently migrates old keys.
- Docstring + summary() now surface render_total_ms + build/wire/js subsets.

Infra:
- enable_hmr() background watcher launches 'npm run dev' from any notebook.
- Two new E2E profilers land in tests/ (test_e2e_timing_truthful,
  test_e2e_scrub_profile) — CI workflows to run them are in a follow-up
  commit that needs workflow-scope push.
- tests/conftest passes notebook via ?reset so JupyterLab opens in the
  foreground tab (was racing behind earlier tabs).
- Widget notebooks get %env ANYWIDGET_HMR=1 where missing.

ShowComplex2D/Align2D alignment: image_width_px renamed to canvas_size;
Align2D canvas_size default 300→0 to match the '0 = frontend default' pattern.
…ader

Checks: fix pillow pdf save and skip missing smoke-loader workflow
…nmax

ShowComplex2D: add vmin/vmax for absolute intensity range
Show4D: add vmin/vmax for absolute intensity range
Show4DSTEM: add vmin/vmax for absolute intensity range
@henryhng

Copy link
Copy Markdown
Contributor Author

in test widget showcomplex, change NamedTemporaryFile to pytest's tmp_path fixture which gives an unlocked directory path (on Windows NamedTemporaryFile holds file locked so PIL cannot write to it)

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.

2 participants