Q: Can RIVET handle arbitrary bifiltrations?
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?
: 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?
: 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?
: 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.