Experimental data

August 26, 2026 · View on GitHub

Links to publicaly available SMLM stacks for benchmarking and validation. Locally added files are currently git-ignored — see .gitignore. That is deliberate:

  • This repository is public. Committing a stack publishes it, along with any licensing or prior-publication implications.
  • GitHub rejects files over 100 MB and warns above 50 MB. Raw SMLM stacks are routinely far larger.
  • Git history is permanent. A large binary committed once bloats every future clone even if it is deleted in a later commit.

The files are still fully usable locally — they are simply untracked.

Dataset I — DNA nanorulers

GATTAquant GATTA-PAINT 80R DNA-PAINT nanoruler (80 nm mark-to-mark), acquired on a Leica GSD system.

Full raw dataset (public): GATTA-PAINT-80R-RAW.zip from GATTAquant.

PropertyValue
Native frame size180 × 180 px
Bit depth16-bit, uncompressed
Byte orderlittle-endian per individual frame; big-endian once concatenated into a stack by ImageJ
Pixel size99.2 nm (from XResolution 4294967295/42605 = 100808.996 px/cm)
Exposure80 ms

The public download is not a single ready-to-load stack — it's one TIFF per frame. webSMLM loads it directly: click Load movie, then select all the frame files at once (Ctrl/Cmd+click, or your file manager's "select all")

Three reasons this dataset is a good fixture beyond raw speed:

  • It exercises the multi-file loader (loadTiffSequence) — natural filename sorting (so frame 2 sorts before frame 10) and per-file decoding, each frame in its own little-endian byte order.
  • It carries a resolution ground truth — the 80 nm mark-to-mark spacing lets the FRC precision work be validated against a known distance rather than only self-consistency.

FRC on this dataset shows extra peaks at 40 nm and 20 nm, alongside the expected 80 nm one — exact submultiples of the ruler spacing (80/2, 80/4). A periodic structure like a regularly-spaced nanoruler array concentrates its Fourier content at the fundamental spatial frequency and its harmonics, so FRC — which assumes a generic, non-periodic structure — picks those harmonics. Expect this on any sufficiently periodic sample.

Dataset II — 3D STORM (very large, ~4.9 GB)

3D STORM of spectrin rings in neurons, by Christophe Leterrier, on figshare: 3D STORM spectrin rings in neurons.

PropertyValue
Frames~40,000
Frame size256 × 256 px
Formatlarge multi-IFD TIFF (Micro-Manager MMStack) — indexed by walking the IFD chain
On disk~4.9 GB (never loaded whole — streamed frame-by-frame via File.slice())

A good stress test for large-stack handling: webSMLM never loads the file whole — frames are streamed on demand via File.slice() — so this is a practical check that a multi-GB stack processes without the browser running out of memory. It's also a real 3D dataset, useful for exercising Phasor 3D and z-drift correction on something larger than the synthetic generator.

Camera parameters (Andor iXon 897 EMCCD, 16 µm physical pixel, 256×256 center quadrant, 160 nm/pixel post-magnification; acquisition settings confirmed by Christophe Leterrier from the Nikon NIS-Elements panel): EM gain = 100, e⁻/ADU = 0.1248, baseline 100 ADU.

webSMLM settings to match: Pixel size (nm) = 160; Camera offset (ADU) = 100; Camera gain (photons/ADU) = 0.1248 — used directly, not divided by the EM gain again, since NIS-Elements' "e⁻/ADU" readout already reflects the current EM gain setting (system gain at a given EM setting = unity-gain sensitivity ÷ EM gain). Also consistent physically: 0.1248 e⁻/ADU alone would cap the 16-bit ADC at ~8,000 e⁻, far below this sensor's ~180,000 e⁻ well depth, while ×100 = 12.48 e⁻/ADU is a plausible unity-gain figure. The iXon 897 has a known QE curve (~92.5% peak at 575 nm, back-illuminated) that isn't part of the reported settings above, so as with the EPFL dataset's stated 0.90 e⁻/photon, a QE correction could be layered on top if wanted — not applied here.

Dataset III — 3D astigmatism ground truth (EPFL SMLM 2016 Challenge)

Three files from the EPFL Biomedical Imaging Group's SMLM 2016 3D simulation challenge, astigmatism (AS) modality, MT0.N1 microtubule structure — bigwww.epfl.ch/srm/dataset/challenge-3D-simulation (Sage et al., Super-resolution fight club, Nat. Methods 2019). Unlike the other stacks in this folder, these are fully synthetic with known ground-truth emitter positions (positions.csv / activations.csv, published alongside the LD/HD downloads on the site but not included here) — the right fixture for validating fit accuracy against a known answer, not just self-consistency.

FileRoleFramesFrame sizeOn disk
sequence-as-stack-Beads-AS-Exp.tifZ-calibration bead stack151150 × 150 px6.5 MB
sequence-as-stack-MT0.N1.HD-AS-Exp.tifHigh-density microtubules (ground truth)2'50064 × 64 px19.9 MB
sequence-as-stack-MT0.N1.LD-AS-Exp.tifLow-density microtubules (ground truth)19'99664 × 64 px158.9 MB

Frame counts and dimensions above were verified directly from each file's own embedded ImageJ images= tag and TIFF ImageWidth/ImageLength (16-bit, big-endian), not just copied off the site — its shared "Parameters of simulation" table lists a generic 64 px / 6400 nm field of view that does not apply to the beads file, which is actually 150 × 150 px (that row is evidently boilerplate inherited from the MT0.N1 page template).

Simulation / camera parameters (from the HD dataset's and beads z-stack's "Parameters of simulation" tables on the site; MT0.N1 LD and HD share the same "N1" noise profile — "typical photon counts and background levels for Alexa647 labelled STORM sample"):

ParameterValue
Pixel size100.00 nm (MT0.N1 HD/LD; not embedded as a TIFF resolution tag — set manually)
Quantum efficiency (QE)0.90 e⁻/photon
Wavelength660.00 nm
Numerical aperture (NA)1.49
Read-out noiseGaussian, σ = 74.4 e⁻
EM gain300× (Gamma-distributed multiplicative noise)
Spurious (clock-induced) chargePoisson, mean 0.0020 e⁻/pixel/frame
Electron conversion45.00 e⁻/ADU
Baseline (offset)100.00 ADU
Saturation65535 ADU (16-bit)
Total system gain (QE × EM gain / e⁻ per ADU)6.00 ADU/photon

webSMLM settings to match: Pixel size (nm) = 100; Camera offset (ADU) = 100; Camera gain (photons/ADU) = 1 / 6.00 ≈ 0.167 (webSMLM's field multiplies ADU by this to get photons — the site's "total gain" is the inverse, ADU per photon).

Beads z-calibration: 6 beads/slice, z-step 10 nm, range −750 to +750 nm, focal plane (z = 0) at the centre slice → frame 76 of 151, a ready value for the "z=0 ref frame" field. Spanning the full ±750 nm defocus range end to end, it's also a good stress-test for the "Fix bead x,y" calibration option (v0.9.x) — large defocus is exactly where per-frame detection is prone to drift or split.

Molecule density: LD "0.2", HD "2" (unit not stated on the source page).

Candidates for committing as fixtures: sequence-as-stack-Beads-AS-Exp.tif (6.5 MB) and sequence-as-stack-MT0.N1.HD-AS-Exp.tif (19.9 MB) are both well under GitHub's 50 MB warning threshold — worth force-adding once we've validated webSMLM's fits against the published ground truth, so future regression checks don't depend on re-downloading from EPFL. sequence-as-stack-MT0.N1.LD-AS-Exp.tif (158.9 MB) stays local-only regardless (over the 100 MB hard limit).

Dataset IV — spectrally resolved SMLM pair-finding

Data for Figure 2A of Martens et al. " Enabling Spectrally Resolved Single-Molecule Localization Microscopy at High Emitter Densities", Nano Lett. 22(21), 8618–8625 (2022), 10.1021/acs.nanolett.2c03140. The full dataset behind the paper — TIFF stacks for Figures 2–4 and Supplementary Figures 1–2, plus processed CSVs, 19.3 GB total — is on Zenodo: 10.5281/zenodo.6778964.

Localize run across 4 combined, cropped movies loaded together via the multi-file "combine several multi-frame TIFFs" path (loadTiffFilesAuto()/makeConcatStack(), see in/out in CLAUDE.md), then Pair. 100,000 frames total, z holds the inter-order distance (~2,994–3,110 nm here), same trick as always.

Data found a sharp distance peak against the expected smooth combinatorial background, and a dominant angle at ~0°/180° within that window. The module's own PARAMS defaults (sSmlmDistMin=2200, sSmlmDistMax=2800, sSmlmAngleTol=5) were tuned to that peak, recovering 547,183 pairs (64.0%) there, mean distance 2546 ± 73 nm — a mean-position sanity check (averaging all 0th-order positions vs. all matched 1st-order positions, an entirely independent computation from the per-pair distance stat) reproduced a (2544, 87) nm separation, confirming the pairs found were self-consistent.

Useful properties to note for benchmarking

When adding a stack, record these — they determine which speed optimizations matter and make timings comparable:

PropertyWhy it matters
Frame size (px)Band-pass cost scales with pixel count
Frame countDetermines whether streaming or in-RAM loading is used
Bit depth / endiannessExercises the TIFF decode paths
Pixel size (nm)Needed for correct nm-space output
Approx. σ_PSF (px)Sets the DoG kernel size — the dominant cost term
Emitter densityAffects detection count and the fit-vs-detect time split