rivetTDA / rivet

RIVET is a tool for Topological Data Analysis, in particular two-parameter persistent homology.
GNU General Public License v3.0
73 stars 24 forks source link

Optimizations #105

Closed mlesnick closed 6 years ago

mlesnick commented 6 years ago

EDIT: Bryn gave some good feedback about this pull request, and I have also discovered some other issues related to code structure and memory efficiency. I will make a new pull request sometime soon. In the meantime, this is still useable and provides significant additional functionality.


The major issues with the multicritical branch have been addressed.

Summary: -Introduction of FIRep class to help organize the code. -Ability to handle multicritical filtrations -Ability to handle parameter-free Rips bifiltrations -Ability to handle arbitrary FI-Reps or presentations as input -Changed the file format for input type "bifiltration", and now require that all faces of a simplex are explicitly given -Use hash tables instead of simplex trees to create boundary matrices.

Issues: -Construction of boundary matrices is now significantly faster, but probably less memory efficient. Use of combinatorial number systems would help.

-For parameter free Rips bifiltrations, there is a slight quirk with the axis labelling and numbering (Issue #95). It is not wrong exactly, but not optimal.

xoltar commented 6 years ago

Please run clang-format -i */.cpp */.h from the repo checkout directory for style consistency. Thanks.

mlesnick commented 6 years ago

I've now run the formatting script.

mlesnick commented 6 years ago

These changes have been addressed in a private fork. I will open a separate pull request soon.