Overview
Fig. 1 Preview of the software interface.
ThunderSTORM Origami Analyzer, a desktop application that automates the complete post-ThunderSTORM analysis workflow for SMLM data. By combining photon-count and precision-based quality filters, Gaussian-fitted NND analysis, DBSCAN emitter clustering, and a multi-criteria blinking quality score, the tool enables rigorous quality assessment of DNA origami super-resolution datasets without requiring custom scripting. The interactive blinking triplet showcase and cross-dataset comparison plots accelerate data review and facilitate reproducible reporting.
Fig. 2 Analysis workflow of ThunderSTORM Origami Analyzer
Analysis workflow of ThunderSTORM Origami Analyzer. Raw localization tables exported from ThunderSTORM are passed through a sequential quality-control pipeline. The filtered data feed a super-resolution rendering engine and a nearest-neighbour distance analyser in parallel. Concurrently, DBSCAN clustering groups repeat localizations per emitter; blinking quality scores are computed and used to detect collinear DNA origami triplets. All outputs are written to the user-specified results directory.
How to Download
Windows
Download the Windows installer:
This installer is for Windows 10 and Windows 11. After downloading it, run the installer and follow the setup steps.
macOS
Choose the correct DMG file for your Mac:
Use the Apple Silicon version for Macs with M1, M2, or M3 chips. Use the Intel version for older Intel-based Macs.
After downloading the DMG file, open it and drag the application into the Applications folder.
Linux AppImage
Download the Linux AppImage:
The AppImage works on most Linux distributions and does not need installation.
After downloading it, run:
chmod +x ThunderSTORMAnalyzer.AppImage
./ThunderSTORMAnalyzer.AppImage
Linux Flatpak
Download the Flatpak package:
Install it with:
flatpak install ThunderSTORMAnalyzer.flatpak
ImageJ / Fiji Plugin
Download the ImageJ / Fiji plugin:
Releases
The links above always point to the latest release.
All releases and release notes are available on the GitHub Releases page.
How to Use
Native GUI Software
It is actually as straightforward as possible. All you need to do is, after running normal analysis on ThunderSTORM, export the localization table with a table protocol. This is to be loaded and read, and automatic filling of some of the QC parameters, such as max sigma uncertainty, minimum intensity, and camera pixel, will be done depending on the table and its protocol. All others are manually adjustable, such as magnification and spacings in the configuration panel, as well as other configurations, such as spots per structure or even collinear angle and more. It is also possible to add more than one dataset, which will also initiate comparison results between the different datasets. Upon running, results will appear after loading in the results panel (as mentioned “straightforward”).
Fig. 3 GUI Dataset Panel The Datasets tab allows users to add multiple localization CSV files, assign camera pixel sizes and magnification, and configure per-dataset QC thresholds and spacing target ranges.
Now, other configurations can be set from the configuration panel, where each column mapping the results table from ThunderSTORM can be selected correctly, as well as other parameters such as the target structure spots, the bin size of the rendered image, and more. Also, it is possible to make the rendering quicker by disabling unwanted plots to speed up the analysis as well.
Fig. 4 GUI Configuration Panel The Configuration tab provides global settings including column-name mapping, DNA origami parameters, advanced blinking thresholds, and toggles for individual output plots.
Fiji Plugin
For the Fiji plugin, it is constructed exactly the same as the software GUI, yet it has one extra, better feature: it is not necessary to export the data to load the dataset. It is possible to load the active data results table from ThunderSTORM directly using “Load Results…”, where it asks for an output folder in which it will output the table and the results.
Fig. 5 ThunderSTORM Origami Analyzer Fiji plugin user interface. The left sidebar provides one-click access to dataset management and analysis control. The Load Results… button invokes ThunderSTORM’s built-in Export results macro to capture the currently open localization table directly into the chosen output directory, bypassing manual CSV export.
Examples
Super-resolution Image Reconstruction
The super-resolution reconstructions in this example were generated from Gatta Quant example Raw Data (GATTAquant DNA Nanotechnologies - Home, 2026).
DNA Origami Detection
The detection applied to the reconstructed DNA-PAINT dataset in order to identify groups of three localization clusters that could correspond to individual GATTA-PAINT 80R nanorulers. Figure fig:Top scoring dna origami blinking shows one candidate triplet detected. In the full-field reconstruction, the selected region appears as a localized structure that was further magnified for closer inspection. In the enlarged view, three candidate localization clusters can be distinguished and are marked by colored circles.
The blinking traces below the reconstruction show the temporal behavior of the three detected spots. The three clusters exhibited repeated blinking events over the acquisition respectively.
Fig. 8 Candidate DNA origami blinking. Top left: Super-resolution reconstruction of the GATTA-PAINT 80R dataset with the selected candidate structure indicated. Top right: Magnified view of the selected region showing three candidate localization clusters, highlighted by colored circles. Bottom: Corresponding blinking traces of the three detected spots. Together, the spatial grouping and repeated temporal detection support the classification of this structure as a candidate DNA origami triplet.
Cross-Dataset Comparison
Nearest-Neighbour Distance Analysis
The nearest-neighbour distance analysis is used to compare the characteristic localization spacing between datasets as shown in Figure fig:NND mean comparison.
Fig. 9 Mean nearest-neighbour distance comparison. Mean nearest-neighbour distance values calculated for the DNA-PAINT datasets acquired at \(2\,\mathrm{mW}\), \(5\,\mathrm{mW}\), and \(10\,\mathrm{mW}\) excitation power using the \(561\,\mathrm{nm}\) laser. The measured mean distances were \(34.3\,\mathrm{nm}\), \(11.6\,\mathrm{nm}\), and \(19.2\,\mathrm{nm}\).
Localization uncertainty and intensity distributions
The localization uncertainty and intensity distributions between datasets are as shown in Figure fig:Uncertainty intensity boxplots.
Localizations per frame
The number of detected localizations per frame for the DNA-PAINT datasets acquired at \(2\,\mathrm{mW}\), \(5\,\mathrm{mW}\), and \(10\,\mathrm{mW}\) excitation power as shown in Figure fig:Localizations per frame.
Fig. 12 Localizations per frame for DNA-PAINT datasets. Number of detected localizations per frame for the datasets acquired at \(2\,\mathrm{mW}\), \(5\,\mathrm{mW}\), and \(10\,\mathrm{mW}\) excitation power using the \(561\,\mathrm{nm}\) laser.
Deep Dive
ThunderSTORM Origami Analyzer
The localization tables exported from ThunderSTORM can be further analyzed using a ThunderSTORM Origami Analyzer. This custom analysis tool accepts ThunderSTORM CSV files together with a configuration protocol file in .txt format. The configuration file defines the analysis parameters used for each run, allowing the detected localizations to be evaluated with respect to the expected DNA origami nanoruler geometry.
The software uses the Python package \(\texttt{Locan}\) (\(\geq 0.21.0\)) to handle and process localization data (Doose, 2022). Additional Python packages used for data handling, numerical analysis, clustering, and visualization included \(\texttt{NumPy}\), \(\texttt{Pandas}\), \(\texttt{SciPy}\), \(\texttt{scikit-learn}\), and \(\texttt{Matplotlib}\). After importing the ThunderSTORM results, the localizations will be filtered, grouped, and analyzed to generate quantitative outputs such as localization cluster positions and inter-cluster distances. In this way, the reconstructed localization clusters could be compared with the known spacing of nanoruler. The Fiji plugin, A parallel pure-Java implementation is distributed as a Maven-packaged fat JAR that installs directly into Fiji.app/plugins/ and registers as Plugins > ThunderSTORM > ThunderSTORM Origami Analyzer. The plugin reproduces the complete analysis pipeline in Java and has an extra Load Results… button that triggers ThunderSTORM’s own Export results macro to write the currently open localization table directly to an output directory, eliminating manual export of CSV files. See complete workflow fig:ThunderSTORM Origami Analyzer Workflow.
Quality Control Filtering
Four sequential quality-control filters will be applied to the raw localization table before further analysis. First, a minimum photon-count threshold used to remove weak localizations, where only localizations with \(I > I_{\min}\) were retained. Second, localizations filtering according to their localization precision by retaining only events with \(\sigma_{\mathrm{loc}} < \sigma_{\max}\). Third, a constraint on the fitted PSF size is applied by requiring \(\sigma_{\mathrm{PSF}} < \sigma_{\mathrm{PSF,max}}\), which helped exclude out-of-focus events or incorrectly fitted signals. Finally, intensity outliers gets removed using a three-sigma criterion, \(\left| I - \overline{I} \right| < 3\sigma_I\), where \(\overline{I}\) and \(\sigma_I\) are the mean and standard deviation of the intensity distribution after the previous filtering steps.
Super-resolution image reconstruction
After filtering, the localization coordinates is used to generate a two-dimensional super-resolution reconstruction using the render_2d function from Locan. This works by binning the \(x,y\)-coordinates into regular bins (Doose, 2022). Therefore, the reconstructed image represents a two-dimensional histogram of localization counts instead of a Gaussian-rendered image. A 3d rendering is not yet established but is one of the main improvement points.
The reconstruction bin size defines the pixel size of the final rendered image and determines how finely the localization coordinates are displayed. The rendering attempts first with the configured bin size. If memory limitations occurred, the software automatically repeated the rendering using coarser bin sizes. The rendered image is displayed with intensity equalization and a false-color lookup table to improve visual contrast.
Nearest-neighbor distance analysis
Nearest-neighbor distance analysis is used to estimate the characteristic spacing between detected localization clusters. Nearest-neighbor methods are a standard approach in spatial point-pattern analysis for quantifying distances between neighboring points (Dixon, 2001). In the analysis, each localization cluster was represented by its centroid position \(\mathbf{r}_i\), and the nearest-neighbor distance is defined as the shortest Euclidean distance from this centroid to any other cluster centroid:
The resulting distance values are analyzed for each localization cluster. If fewer than 20 distances are available, the median distance is used as a descriptive estimate and no Gaussian fit is performed. For larger datasets, the nearest-neighbor distance distribution is smoothed using a Gaussian kernel density estimate (KDE) with Silverman’s bandwidth rule (Dehnad, 1987). The KDE is evaluated over the measured distance range up to a maximum of \(600\,\mathrm{nm}\), and the dominant peak is identified as the global maximum of the KDE curve.
To refine the peak position, a Gaussian function is fitted to the KDE values within a window around the detected peak:
where \(A\) is the fitted amplitude, \(\mu_{\mathrm{NND}}\) is the fitted peak position, and \(\sigma_{\mathrm{NND}}\) describes the width of the fitted distance distribution. The fitted peak position \(\mu_{\mathrm{NND}}\) is used as the characteristic nearest-neighbor distance.
DBSCAN clustering of localization clusters
Density-based spatial clustering of applications with noise (DBSCAN) was used to group spatially related localizations into localization clusters. It is applied using Locan using a neighbourhood radius \(\varepsilon\), which defines the maximum distance between neighbouring localizations within the same cluster (Doose, 2022) :
where \(p_{\mathrm{px}}\) is the effective camera pixel size in nanometers and \(s_{\mathrm{DNA}}\) is the expected signal-to-signal spacing of the nanoruler. The lower limit of \(10\,\mathrm{nm}\) is included as a safeguard to prevent the DBSCAN neighborhood radius from becoming unrealistically small due to configuration values. This ensured that repeated localizations from the same docking site could still be grouped, while the upper constraint based on \(s_{\mathrm{DNA}}/2.2\) reduced the risk of merging neighboring docking sites. This is used to group repeated localizations from the same docking site while reducing the chance that neighboring docking sites on the same origami structure were merged into one cluster. A localization \(\mathbf{r}_i\) is considered a core point when the number of neighboring points within the radius \(\varepsilon\) fulfilled
where \(\mathcal{N}_{\varepsilon}(\mathbf{r}_i)\) is the set of neighbouring localizations within the radius \(\varepsilon\), and \(\mathrm{MinPts}\) is the minimum number of points required to form a cluster.
Blinking quality score
For each DBSCAN cluster, a custom blinking quality score is calculated to rank how reliably the corresponding emitter site contributed localization events over time. The score combined the number of detected blinking cycles, the number of frames in which the emitter is observed, the stability of the photon counts, and the temporal structure of the blinking trace.
First, the frame indices belonging to each localization cluster are sorted. Consecutive localizations are considered part of the same ON event when the gap between their frame indices did not exceed a defined threshold \(g_{\max}\). If the gap between two detected frames is larger than \(g_{\max}\), a new ON event is counted. The number of blinking cycles is calculated as
where \(f_m\) are the sorted frame indices of the cluster, \(M\) is the number of detected frames, \(g_{\max}\) is the maximum allowed gap within one ON event, and \(\mathbf{1}[\cdot]\) is an indicator function.
To describe the temporal structure of the blinking trace, the detected frames are converted into a binary trace \(b[t]\), where \(b[t]=1\) indicates detection in frame \(t\), and \(b[t]=0\) indicates no detection. The discrete Fourier transform of this binary trace is calculated as
where \(T\) is the total number of frames and \(\hat{b}[k]\) is the Fourier coefficient at frequency index \(k\). The zero-frequency component is removed because it only represents the average number of ON frames. A temporal score \(P\) is then calculated as the fraction of the Fourier magnitude contained in the strongest nonzero frequency component:
Photon-count stability is evaluated using the coefficient of variation of the per-frame intensities,
where \(\overline{I}\) is the mean per-frame intensity and \(\sigma_I\) is its standard deviation. The intensity consistency factor is calculated as
where \(\epsilon\) is a small constant used to avoid division by zero. A lower coefficient of variation corresponds to more stable photon emission and therefore gives a higher consistency factor.
The final blinking quality score is calculated as
where \(N_{\mathrm{frames}}\) is the number of unique frames in which the emitter is detected. Higher \(Q\) values indicate clusters with repeated blinking events, sufficient temporal coverage, stable photon emission, and a stronger temporal signal. This custom score is used to rank localization clusters before searching for DNA origami.
DNA origami detection
To identify intact DNA origami nanorulers, the software searches for localization clusters with distances and geometry consistent with the expected structure. Only clusters with a positive blinking quality score were included in the search; for details on the score calculation, see Section subsec:Blinking quality score. First, all cluster pairs \((i,j)\) with an inter-cluster distance within the target range were identified:
where \(s_{\mathrm{DNA}}\) is the expected signal-to-signal spacing and \(\delta\) is the allowed distance tolerance.
For each valid pair, the software searches for a cluster \(k\) that was positioned consistently with the nanoruler geometry. Candidates are then tested for approximate collinearity. Valid candidates were ranked using a score based on the blinking behavior of the clusters. The score was calculated as
where \(N_{\mathrm{cycles,min}}\) is the smallest number of blinking cycles among the clusters, \(\overline{N}_{\mathrm{cycles}}\) is the mean number of blinking cycles, and \(Q_i\), \(Q_j\), and \(Q_k\) are the blinking quality scores of the clusters. This scoring approach penalizes candidates in which one of the spots shows poor blinking behavior, while favoring clusters with balanced and repeated localization events at all expected dye positions.
After detection, the structure spots were ordered per score for visualization. For each selected cluster, the software generated a zoomed in super-resolution image with color-coded cluster markers and synchronized blinking traces, allowing the spatial arrangement and temporal behavior of the detected nanoruler sites to be evaluated together.
References
Dehnad, K. (1987). Density Estimation for Statistics and Data Analysis. Technometrics. https://doi.org/10.1080/00401706.1987.10488295
Dixon, P. M. (2001). Nearest Neighbor Methods. Encyclopedia of Environmetrics. https://doi.org/10.1002/9780470057339.van007
Doose, S. (2022). LOCAN: A python library for analyzing single-molecule localization microscopy data. Bioinformatics. https://doi.org/10.1093/bioinformatics/btac160
GATTAquant DNA Nanotechnologies - Home. (2026). https://www.gattaquant.com/.