Pipeline Steps: Overview

This section documents every analysis step — one page per analyze() step. Each step is selected by the type of its config (see The Pipeline Model), runs in the order you list it in AnalysisConfig.steps, and returns an updated SMLD plus a StepInfo. This page is the map: the catalog, the typical order, and where each method comes from in the literature.

Catalog

StepConfigBacked byWhat it does
Detection & FittingDetectFitConfigSMLMBoxer + GaussMLEDetect ROIs in raw frames and fit a PSF to each → the initial localizations
Quality FilterFilterConfigSMLMAnalysisThreshold on photons, precision, p-value, PSF width, z
Intensity FilterIntensityFilterConfigSMLMAnalysisReject multi-emitter events via a Poisson upper-tail test
Frame ConnectionFrameConnectConfigSMLMFrameConnectionLink repeated blinks into single, higher-precision localizations
Drift CorrectionDriftConfigSMLMDriftCorrectionEstimate and remove sample drift (fiducial-free)
Density FilterDensityFilterConfigSMLMAnalysisDrop isolated localizations by neighbor count
RenderingRenderConfigSMLMRenderRender localizations to a super-resolution image
Bayesian GroupingBaGoLConfigSMLMBaGoLGroup localizations into true emitters (RJMCMC)
ClusteringDBSCANConfig, VoronoiConfig, HopkinsConfig, …SMLMClusteringLabel clusters / compute spatial statistics
Edge ClassificationKdeValleyConfig, OuterPolygonConfigSMLMClusteringLabel localizations interior / membrane / outside a cell mask
Composite RenderCompositeRenderConfigSMLMAnalysis + SMLMRenderMulti-channel RGB overlay
Cross-AlignmentCrossAlignConfigSMLMAnalysis + SMLMDriftCorrectionRegister channels to a common frame
Cross-CorrelationCrossCorrConfigSMLMAnalysis + NearestNeighborsPair cross-correlation g(r) between channels

The last three operate on multiple channels (Vector{BasicSMLD}) and are usually driven by MultiTargetConfig — see Multi-Channel.

A typical pipeline

A standard single-color dSTORM / DNA-PAINT analysis runs roughly in this order:

steps = [
    DetectFitConfig(boxer = BoxerConfig(boxsize = 9, psf_sigma = 0.130),
                    fitter = GaussMLEConfig(psf_model = GaussianXYNBS())),
    FilterConfig(photons = (500.0, Inf)),     # cut weak / spurious fits
    FrameConnectConfig(max_frame_gap = 5),     # link repeated blinks
    DriftConfig(degree = 2),                   # remove drift
    RenderConfig(zoom = 20, colormap = :inferno),
]

Common variations:

  • Add an Intensity Filter early to reject multi-emitter events.
  • Add a Density Filter after drift correction to clean isolated noise.
  • Replace/augment the final render with Bayesian Grouping for counting and maximum precision, then render the grouped emitters.
  • Add a Clustering step to label structures, then render colored by label.

Steps are composable (see The Pipeline Model): reorder, repeat, or omit them as the experiment requires.

Primary literature

Each method's primary reference, as published by the backing package. Full citations are on the References page; each step page repeats its own reference and links to the upstream documentation for algorithm details.

StepMethodPrimary reference
DetectionGaussian-filter local-max + sCMOS-aware thresholdingHuang et al., Nat. Methods 10, 653 (2013)
FittingMLE Gaussian/astigmatic PSF; CRLB precisionSmith et al., Nat. Methods 7, 373 (2010)
Frame connectionSpatiotemporal LAP clustering of repeated blinksSchodt & Lidke, Front. Bioinform. (2021)
Drift correctionFiducial-free entropy minimization (Legendre basis)Cnossen et al., Opt. Express 29, 27961 (2021); Wester et al., Sci. Rep. 11, 23672 (2021)
Bayesian groupingCollapsed reversible-jump MCMC groupingFazel et al., Nat. Commun. 13, 7152 (2022)
ClusteringDBSCAN; Voronoi tessellation (SR-Tesseler)Ester et al., KDD-96 (1996); Levet et al., Nat. Methods 12, 1065 (2015)

The native SMLMAnalysis steps — Quality Filter, Intensity Filter, Density Filter, and the multi-channel steps — are described in full on their own pages, including the method and any reference.