The following packages can be used to compute the persistent homology from a point cloud:

Our Field Filtration and Radial Filtration methods are available here:

- FieldFiltrations (uses CGAL and GUDHI)

In addition, you can use our fork of the HERA code to calculate the Frechet average and variances of persistence diagrams:

- HERA (use geom_matching/wasserstein/frechet_average after building)

**Background**

In topology, homology provides us with a description of an object in terms of its holes. In three dimensions, we distinguish holes in dimensions 0, 1, and 2. A 0-dimensional hole is a gap separating different components. A 1-dimensional hole is a tunnel that can be encircled by a loop. A 2-dimensional hole is a void enclosed by a shell.

By computing the homology of a filtration (a sequence of growing/shrinking objects), we can study how the topology changes as we vary some filtration parameter α. For example, one can study how the superlevel set of a field evolves as one lowers the threshold from +∞ to –∞. In our paper (Elbers & van de Weygaert, 2018), we consider growing bubble networks modelled as balls in **R**^{3} with increasing radius.

In both examples above, we see the death of multiple gaps as components merge. In the top example, we also see the birth and death of a tunnel. In the bottom example, we see the birth of two tunnels in the final panel.

Recall that α is the filtration parameter. We assign every hole a birth scale α_{birth} and death scale α_{death} at which the hole appears and disappears, respectively. The difference α_{death} – α_{birth} is the persistence of the hole. We can plot the (birth, death)-pairs in a persistence diagram. The horizontal/vertical distance from the diagonal is the persistence.