FAQ

Q: Can RIVET handle arbitrary bifiltrations?

A: Currently, RIVET handles arbitrary 1-critical simplicial bifiltrations, i.e., bifiltered simplicial complexes where each simplex has a unique bigrade of appearance. Support for multicritical and cellular bifiltrations is coming soon.

Q: How large a bifiltration can RIVET handle, and how does the performance of RIVET compare to that of 1-D persistence code?

A: In RIVET, the computation time is controlled by coarsening the bifiltration, so that the bigrades of appearance of simplices in the bifiltration live on a $k_x$ x $k_y$ grid for some small values of $k_x$ and $k_y$. Choosing relatively small values of $k_x$ and $k_y$ (say $k_x=k_y\sim 15$), we have been able to comfortably compute the 1st persistent homology of bifiltrations coming from real data with $>$ 15 million simplices, using the current code. Compared to what is being done today in in ordinary one-parmeter persistence computation, 15 million simplices is fairly small: State of the art persistence codes now handle some 1-D filtrations with billions of simplices.  Still, the current code is powerful enough to allow us to apply RIVET to modestly sized real-world data sets. We expect RIVET to be able to do significantly larger computations soon: The code does not yet take advantage of some critical optimizations to how we compute the main data structure underlying RIVET; we now are in the process of implementing these optimizations. When they are complete, we expect that RIVET will be reasonably competitive with general algorithms for computing 1-D persistent homology in terms scalability. Visualizing 0th persistent homology modules in RIVET is typically much less expensive than for higher degree homology modules, and 0-th persistent homology is often more interesting in the two-parameter setting than in the ordinary one-parameter setting. So if your data set is large, you might try RIVET first with a 0th homology persistence computation.

Q: While looking at the RIVET code, I noticed RIVET uses the simplex tree data structure of Boissonnat and Maria to store bifiltrations. Why and how are you using that?

A: In the particular context of our code and the way we choose to do 1-D persistence computations there, there is not a great reason to use the simplex tree; in later versions of the code, the simplex tree this will probably be phased out and replaced with hash table-based data structures for representing boundary matrices. This is NOT to suggest that the simplex tree data structure is not useful in other settings; in particular, it is used in the GUHDI code for computing persistent homology, whose performance is considered to be amongst the best of the many persistence codes available.

Q: I'm interested in working on the development of RIVET or, more generally on the computational aspects of multi-D persistent homology.  Is there room for me to get involved?

A: There is a huge amount to do, both on the development side and on the more mathematical side. We'd be happy to talk to you about this.