Skip to content

Releases: HohlbeinLab/webSMLM

webSMLM v0.5.0 — 3D astigmatism

Choose a tag to compare

@jhohlbein jhohlbein released this 21 Jul 21:03

Adds astigmatism-based 3D localization (Phasor 3D), a full calibration workflow, and depth-coded rendering.

Try it: https://hohlbeinlab.github.io/webSMLM/

3D astigmatism

  • Calibration. Load a bead z-stack, set the frame range and z-step, and Calibrate. Every spot in each plane is detected and fitted with an elliptical Gaussian (independent σ_x, σ_y), pooled across the field (a stage z-scan means all emitters in a plane share z). The right panel shows a scatter of σ_x (green) / σ_y (magenta) vs z with vertex-quadratic fits σ = a(z−c)² + b, and z=0 is placed at the σ_x=σ_y focus. Calibrations save/load as JSON.
  • Phasor 3D fit method. Assigns z per localization from the phasor width ratio via a monotonic z(ratio) fit (~137 nm axial RMS on the test beads). "Phasor (fast)" is now "Phasor 2D".
  • Depth-coded rendering. Colour by z (hue = z, brightness = density) with an adjustable z range (out-of-range renders black, so you can optically section), a depth colourbar, and a Turbo blue-green-red map. z [nm] is added to the CSV export.

Also in this release

  • Frame scrubber under the raw panel (slider or mouse-wheel) to browse any stack.
  • Loader fix: contiguous ImageJ stacks with trailing ROI/overlay metadata now load fully (previously such a stack could load as one frame).
  • Consistent Save-As handling for CSV and calibration exports, with a clear note on the file:// download limitation.

Known limitations

3D is astigmatism-only; the Gaussian fitter is 2D least-squares (not MLE); dense overlapping PSFs bias single-emitter fits; intensities are ADU unless a camera gain is set. The astigmatism calibration is a vertex-quadratic per axis — a local approximation, best over a cropped z-range.

Licensed CC BY 4.0.

webSMLM v0.4.0

Choose a tag to compare

@jhohlbein jhohlbein released this 20 Jul 12:50

Localization export, very large stacks, and a much faster pipeline.

Try it: https://hohlbeinlab.github.io/webSMLM/

Localization export

  • ThunderSTORM-compatible CSV, with a Save-As dialog and a filename derived from the loaded stack.
  • Phasor now estimates background from the ROI perimeter, so intensity [photon] is background-subtracted rather than a raw ROI sum.
  • uncertainty [nm] via Thompson/Larson/Webb, including pixelation and background terms.
  • Camera gain/offset inputs. With gain 1 the intensities are ADU, not photons, and the app says so — see docs/REFACTOR_PLAN.md for why this matters more on sCMOS than EMCCD.

Very large stacks

  • Contiguous ImageJ stacks (a single directory entry with frames laid out after it, as written above ~4 GB) are now read frame by frame with File.slice(), so the file is never held in memory. Previously a 4.89 GB / 40,000-frame stack loaded as one frame and reported success.
  • That stack now processes in ~24 s — 4.36 M localizations at ~182,000 loc/s, 91% worker utilisation.

Performance (from 0.2.0)

Dataset 0.2.0 0.4.0
GATTA-PAINT 80R, 1999 × 82×83 5.4 s ~0.7 s
Nile Red / L. lactis, 1173 × 256×256 20.5 s ~0.68 s

Web Worker pool, box-filter background approximation (with an Exact band-pass option for reproducibility), symmetric Gaussian kernels, precomputed mirrored index maps, and an unclamped yield.

Also

  • Colour maps (Fire / Inferno / Viridis / Grey) and percentile display scaling.
  • Live reconstruction preview and a Stop button that keeps partial results.
  • Small-screen layout with pinch-to-zoom.

Known limitations

2D only; least-squares rather than Poisson MLE; single-emitter fitting biases dense samples with overlapping PSFs; intensities are ADU without a camera gain.

Licensed CC BY 4.0.

webSMLM v0.1.0

Choose a tag to compare

@jhohlbein jhohlbein released this 19 Jul 19:25

First release of webSMLM — a browser-based single-molecule localization microscopy (SMLM) tool. Load a raw TIFF stack, detect and localize single emitters, and reconstruct a super-resolution image entirely client-side. Nothing is uploaded.

Try it: https://hohlbeinlab.github.io/webSMLM/ (or download webSMLM.html and open it in any modern browser).

Highlights

  • Loads multi-frame TIFF stacks (8/16/32-bit, little- or big-endian, uncompressed or deflate/LZW), with memory-aware in-RAM caching and automatic streaming fallback for large stacks.
  • DoG band-pass detection with a mean + k·σ threshold.
  • Phasor (fast, non-iterative) or least-squares 2D Gaussian localization.
  • Instant super-resolution re-render (magnification/blur) with zoom, pan, and a scale bar.

Fixes since the initial commit

  • run(): errors no longer lock the Run button (try/finally recovery).
  • 32-bit big-endian float TIFFs now decode with correct byte order.
  • Stale synthetic ground-truth no longer logged on real-data runs.
  • Time-budgeted UI yielding in run() and synthetic generation.
  • Band-pass reuses scratch buffers; zoom-aware pan clamping; scale-bar rect clamp.

Licensed CC BY 4.0. See the in-app Help & guide for methods and references.