Computing persistent homology Betti numbers on big data

273 Views Asked by At

I have a huge 3D big data (128×128×128). I want to compute the Betti numbers for this 3D data. I tried using the moguTDA and ripser packages from Python and my kernel dies when I try computing the Betti numbers. Is there a big data approach to compute the Betti numbers?

1

There are 1 best solutions below

0
Marc Glisse On

It is unclear what you are trying to compute. You mention voxel data and Gudhi, so I would have expected gudhi.CubicalComplex, but you seem to derive a point cloud and build its RipsComplex instead?

For a cubical complex, 128³ is far from huge, gudhi.CubicalComplex can handle that easily. For significantly larger input, I recommend reading the recent paper Slice, Simplify and Stitch: Topology-Preserving Simplification Scheme for Massive Voxel Data. It is about the software Cubicle, which was used in particular on grids of size 2048³ (on a laptop). It also mentions other software like Cubical Ripser and TTK (topology toolkit).

Rips filtrations are a different business. By default, gudhi.RipsComplex first computes the distance between each pair of points, to check if it is less than max_edge_length. This quadratic behavior is already hard to manage for a million points. In low dimension, it seldom makes sense to use a Rips filtration, gudhi.AlphaComplex makes much more sense.

Note that if other software causes the Python kernel to crash, you could try reporting a bug to the authors of such software, sometimes a small tweak can replace that with an exception.