# PoCA: a software platform for point cloud data visualization and quantification

Florian Levet, Jean-Baptiste Sibarita

► To cite this version:

Florian Levet, Jean-Baptiste Sibarita. PoCA: a software platform for point cloud data visualization and quantification. Nature Methods, 2023, 20 (5), pp.629-630. 10.1038/s41592-023-01811-4. hal-05200143

HAL Id: hal-05200143

https://hal.science/hal-05200143v1

Submitted on 5 Aug 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# PoCA: a software platform for point cloud data visualization and quantification

Florian Levet¹, ²,* , Jean-Baptiste Sibarita¹,*

¹Univ. Bordeaux, CNRS, Interdisciplinary Institute for Neuroscience, IINS, UMR 5297, F-33000
Bordeaux, France

²Univ. Bordeaux, CNRS, INSERM, Bordeaux Imaging Center, BIC, UAR3420, US 4, F-33000 Bordeaux,
France

*Corresponding authors

## Main text

SMLM is a mature but still growing field, which still lacks efficient and user-friendly analysis and visualization software platform adapted for both users and developers. This is especially true when dealing with 3D quantification and large datasets, with only a couple of recent software platforms capable to handle properly 3D SMLM data ¹,². We here present Point Cloud Analyst (PoCA), a powerful open-source software designed to ease the manipulation and quantification of multidimensional SMLM point cloud data (Figure 1a). PoCA is the result of a decade of developments and the legacy of SR-Tesseler and Coloc-Tesseler ³,⁴, software solutions that were swiftly adopted by the community. Driven by the community needs as well as the strong evolution of SMLM acquisition and analysis techniques, PoCA integrates the following key features:

**Usability.** PoCA GUI is simple, intuitive and user-friendly (Figure 1b). It is designed to allow standard users as well as developers to perform efficient investigation and quantitative analysis of SMLM data on a standard desktop computer equipped with a GPU. Every action or plot is available in a few mouse clicks, improving the user efficiency and visual feedback. Filtering, object creation, data interaction and quantifications are examples of available native functionalities. Each computed quantitative feature (eg. localization density, object characteristics, etc.) can be displayed to improve visual feedback. PoCA also integrates user-friendly capabilities such as file drag and drop, camera saving or look-up-tables (LUT).

**Visualization.** PoCA is built around a powerful custom-made Open-GL-based rendering engine that provides full user interactive control of SMLM point cloud data. It integrates several advanced visualization modes made to improve data comprehension. This includes uncertainty-based Gaussian intensity rendering (Figure c), screen space ambient occlusion (Figure 1d) and heatmaps. 3D raw and segmented data can be easily manipulated for deeper investigations, thanks to annotated object bounding boxes and intelligent data cropping (Figure 1c).

**Efficiency and interactivity.** PoCA exploits Graphical Processing Units (GPU) for fluid interactive visualization and manipulation of millions of localizations, in two and three dimensions (Figure 1e). It integrates new optimized hybrid CPU/GPU algorithms for Voronoi diagrams generation, allowing the reconstruction of 4,000,000 localizations in less than 35 seconds in 2D and 80 seconds in 3D on a regular workstation equipped with a NVIDIA graphic graph. We also integrated an optimized version of the computer demanding method DBSCAN ⁵, allowing the segmentation of 1,600,000 3D localizations in 80 seconds.

**Modularity.** PoCA relies on a modular design composed of a backbone and a plugin architecture facilitating the addition of new functionalities (Figure 1f, Supplementary Information). This plugin
architecture provides the developers with the capacity to develop new analysis methods in C++, as well as adding widgets to the GUI.

**Automation and batch processing.** Every action that can be performed in PoCA is internally described by a JavaScript Object Notation (JSON) file, a concise ASCII file format. It allows recording and displaying each command run by PoCA in a user-friendly macro recorder interface, in order to easily create and execute macros, an important feature for automation, batch analysis and reproducibility (Figure 1f).

**Advanced point cloud data visualization and manipulation.** The CGAL library⁶ integrated inside PoCA allows advanced geometric computation, such as the kd-tree, octree or Voronoi diagram, to be performed efficiently. It also provides several data structures, such as meshes, polyhedrons, or tetrahedrons, allowing segmented objects to be rendered as surface (mesh) or volume (tetrahedral) models and quantified (Figure 1d). CGAL also provides advanced functionalities, such as reconstructing Poisson surface from point clouds, or checking the belonging of a point inside an object, as required for example to compute object colocalization.

**Python code integration.** While developed in C++, PoCA integrates a native Python code interpreter through the Numpy library⁷, allowing bi-directional transfers of arrays from C++ to the Python interpreter (Figure 1f, Methods). Python code can then be executed on those arrays, and the results carried to PoCA for visualization or further analysis. This allows rapid code prototyping as well as advanced computational methods, such as machine learning algorithms, to be executed in the PoCA environment (Supplementary Information, Supplementary Figure 1).

To conclude, PoCA is a powerful and flexible software platform dedicated to the analysis and visualization of 2D and 3D localization data. It combines the strengths of both C++ and Python programming languages, providing access to efficient and optimized C++ computer graphics algorithms and Python ecosystem. It is designed for improving users and developers' experience, by integrating a user-friendly GUI with an efficient 3D rendering engine, a macro recorder, and the capability to execute Python code easily. PoCA can also be used with any kind of point clouds such as Protein Data Bank files ⁹. Future directions include the integration of additional analysis methods for qPAINT ¹⁰, cluster distribution analysis on 3D surfaces and single molecule tracking.

## Data availability

Data are available with the Windows binaries (https://github.com/flevet/PoCA/releases) and upon request.

## Code Availability

PoCA is packaged as a one-click installer for Windows operating system (OS), and the source code is available on GitHub (https://github.com/flevet/PoCA), with a cmake script facilitating its building inside other OS. The documentation is available at https://poca-smlm.github.io/.

## Competing Financial Interests

All the authors declare no competing interests.

## Acknowledgements

This work was supported by the Ministère de l'Enseignement Supérieur et de la Recherche (ANR-20-CE11-0006 NANO-SYNATLAS to F.L.), the Centre National de la Recherche Scientifique (CNRS), the Conseil Régional d'Aquitaine, and the Institut National de la Santé et de la Recherche Médicale
(Inserm). We also acknowledge France-BioImaging infrastructure supported by the French National Research Agency (ANR-10-INBS-04).

## Author Contributions

F.L. came up with the original idea and developed the software. F.L. and J.-B. S. designed the software requirements and contributed to the manuscript.

## References

1. Ries, J. *Nat. Methods* 24–27 (2020).doi:10.1038/s41592-020-0938-1

2. Marin, Z. et al. *Nat. Methods* **18**, 582–584 (2021).

3. Levet, F. et al. *Nat. Methods* **12**, (2015).

4. Levet, F. et al. *Nat. Commun.* **10**, 1–12 (2019).

5. Ester, M., Ester, M., Kriegel, H., Sander, J. & Xu, X.226--231 (1996).at <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.71.1980>

6. The CGAL Project (CGAL Editorial Board: 2020).at <https://doc.cgal.org/5.1/Manual/packages.html>

7. Harris, C.R. et al. *Nat. 2020* **585** 7825 **585**, 357–362 (2020).

8. Williamson, D.J. et al. *Nat. Commun.* **11**, 1–10 (2020).

9. Berman, H.M. et al. *Nucleic Acids Res.* **28**, 235–242 (2000).

10. Jungmann, R. et al. *Nat. Methods* 2016 **13** **13**, 439–442 (2016).
<figure><img src="image_2.png" /><figcaption>b</figcaption></figure>

<figure><img src="image_3.png" /><figcaption>Toolbar</figcaption></figure>

<figure><img src="image_4.png" /><figcaption>LUT selection</figcaption></figure>

<figure><img src="image_5.png" /><figcaption>Interactive histograms</figcaption></figure>

<table><caption>Object statistics</caption><thead><tr><th>ID</th><th>nbLocs</th><th>size</th><th>surface</th><th>volume</th></tr></thead><tbody><tr><td>1</td><td>102</td><td>62.7215</td><td>16673.8</td><td>352123</td></tr><tr><td>2</td><td>102</td><td>73.0699</td><td>14093.6</td><td>358020</td></tr><tr><td>3</td><td>100</td><td>59.7658</td><td>12701.8</td><td>308477</td></tr><tr><td>4</td><td>102</td><td>58.5301</td><td>12523</td><td>314568</td></tr><tr><td>5</td><td>102</td><td>70.8445</td><td>15157.2</td><td>361312</td></tr><tr><td>6</td><td>100</td><td>61.5069</td><td>12147.5</td><td>323257</td></tr></tbody></table>

<caption>C</caption>

<figure><img src="image_6.png" /><figcaption>Manual crop</figcaption></figure>

<figure><img src="image_7.png" /><figcaption>Automatics crop</figcaption></figure>

<figure><img src="image_8.png" /><figcaption>d</figcaption></figure>

<figure><img src="image_9.png" /><figcaption>Representations</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>e</figcaption></figure>

<figure><img src="image_11.png" /></figure>

import numpy as np

from math import sqrt

# Define a sphere to X, Y, and Z data points
# returns the radius and center points of
# the best fit sphere

def spherefit(spX, spY, spZ):

# Assemble the Matrix

spX = np.array(spX)

spY = np.array(spY)

spZ = np.array(spZ)

A = np zeroeslen(spX),4)

A_0 = spX_0

A_1 = spY_1

A_2 = spZ_2

A_3 = 1

# Assemble the f matrix

f = np zeros(3, len(spX))

f_0 = (spX - spX_0) + (spY - spY_0) + (spZ - spZ_0)

C, residues, rank, singval = np.lndlghsqj(A,1)

# solve for the radius

r = (C'*C'*C')*(C'*C'*C') + (C'*C'*C') + C'*C'*C'

C = C.ravel()

C[3] = radius

radius = sqrt(r)

<figure><img src="image_12.png" /><figcaption>Readable</figcaption></figure>

<figure><img src="image_13.png" /><figcaption>Recordable</figcaption></figure>

<figure><img src="image_14.png" /><figcaption>Batch-processable</figcaption></figure>
## Figure Legends

**Figure 1: Overview of PoCA.** (a) Schematic representation of the main features of PoCA. (b) Snapshots of some GUIs, allowing rapid visualization of quantitative features. (c) Examples of visualization and manipulation of 3D SMLM data. Left: Uncertainty-based Gaussian intensity rendering. Center: Manual cropping (white box). Quantitative features of selected object are displayed in the yellow box. Right: Automatic cropping of segmented data obtained by double clicking an object of interest. (d) Different object representations, from which specific quantitative features are computed. (e) Voronoi diagram of a 2D SMLM dataset. (f) Global architecture of PoCA, allowing plugins development, batch processing and communication with Python.