multipers

[NeurIPS2023,ICML2024] Multiparameter Persistence for Machine Learning

MIT License

Downloads
4.1K
Stars
12

Bot releases are visible (Hide)

multipers - v2.1.0 Latest Release

Published by DavidLapous 23 days ago

TL;DR SimplexTrees and Slicer behave more consistently, and share pipelines, complex reductions are better handled, and a bunch of backend code was changed.

Note. This may break code related to pipelines, or minimal presentations.
A bunch of code changed, as well as the interface, so bug are expected; please fill an issue if you find one.
Also, I may have forgotten some changes.

[Possibly breaking changes]

  • ! Aligned minimal presentation degrees with (geometric) dimension.
  • ! grid_conversion was renamed to grid
  • ! Made pipeline take care of FilteredComplex=Union[SimplexTree,Slicer] instead of SimplexTree only.
    Warning This renamed pipelines: e.g.,
    • PointCloud2SimplexTree -> PointCloud2FilteredComplex,
    • SimplexTree2MMA -> FilteredComplex2MMA,
    • SimplexTree2SignedMeasure->FilteredComplex2SignedMeasure.
  • method name uniformization between SimplexTree and Slicer
  • Some default values were changed

[Features]

  • Pipelines should handle both SimplexTrees and Slicers
  • Minimal presentations are now checked, to prevent unnecessary computations (and bugs)
  • mpfree is now an optional dependency (i.e., every function can be executed without this backend); but we still recommend users to use it for faster computations.
  • Multi-Filtration backend update (sync with gudhi/gudhi-devel#976) -- Thanks @hschreiber !
  • Cleaner tempita templates
  • optimized some tests
  • Added a differentiable weakenned version of the delaunay complex bifiltration
  • MMA representation
    • Better interface for custom kernels
    • More default kernels (now "exponential", "gaussian", "linear") and their signed versions
    • Optimized the code for custom kernels
  • Added kernels to convolutions, e.g., sinc.
  • Build system was updated -- Thanks @hschreiber !
  • Bunch of typing fixes and improvements
  • minimal presentations can be computed on multiple degrees at once
  • Barcode estimation from line slices of rank invariant
  • interfaced the barcodes (in parallel / vineyard) of lines from slicers
  • updated barcode slicing of MMA outputs
  • optimized and fixed (rank and hilbert) signed barcodes computations

[Documentation]

  • Updated with latest version
  • Improved documentation of some functions, e.g., signed_measure
  • Added a contribution page #19, and issue templates
  • Documentation now refers to github pages, for easier modification
  • Fixed latex not rendering #18
multipers - v2.0.5

Published by DavidLapous 3 months ago

TL;DR Mostly bugfixes. And some optimizations to (non-vine) rank signed measure computations.

[Features]

  • Slicer dimension pruning (similar to simplextree)
  • Some documentation improvements, and type hints for slicer
  • __repr__ for slicer (to show the various options)

[Fixes]

  • Invariant was sometimes not properly infered from other arguments
  • Simplextree's copy was not complete
  • Module Formatter doesn't default anymore to degrees 0,1 when degree is not given
  • Consistence between simplextree and slicer methods
  • Plot argument are now taken into account for rank signed measures
  • data and grids modules are imported by default (small + frequently used)

[Optimizations]

  • Persistence computations with the non-vine pipeline now ignore infinite simplices
  • Automatic dimension pruning when computing low homological degrees
  • Point cloud generation in higher dimensions

[Workflows]

  • Faster workflow, available for external contribution (without exposing secrets)
  • For windows builds : still needs some investigation
multipers - v2.0.4

Published by DavidLapous 3 months ago

TL;DR. This is mostly a bugfix release, with some QOL warnings.

[Features]

  • mass_default should be available for any invariant / conditions
  • Persistence Matrix update (fixing several bugs with non-simplicial filtrations, and some optimizations)
  • more natural choices in signed measures
  • Slicer checks to prevent unnecessary computations (and mpfree segfaults)
  • Slicer that come from minimal presentation now store their original dimension (under slicer.minpres_degree)
  • Some external libraries, e.g., mpfree can break due to a boost update; added a check to remove a cryptic error message

[Bug Fixes]

  • Rank invariant wasn't properly recovered in some conditions
  • slicers could not be pushed on exact grids
  • several other issues related to signed measures computations

[Tests]

  • signed measure matrix of tests, and checking different backends (vanilla gudhi, persistence matrices with different options, mpfree)
  • checks results with mpfree reductions, when available
multipers - v2.0.3

Published by DavidLapous 4 months ago

[Features]

  • Compatibility with numpy>=2, gudhi>=3.10
  • Added some missing functions in the doc
  • test representative cycles

[Bug fixes]

  • Fixed some bug which prevented multipers.signed_measure to properly recover the autodiff from the input, depending on the simplextree/slicer type or if using mpfree.
  • Fixed a bug in multipers.signed_measure which, in some conditions, made it ignore the mass_default argument.
  • It is now not possible anymore to give a grid resolution to exact strategies.
  • added missing dependencies tqdm and matplotlib

Note

Some refactoring has been made to the multipers.signed_measure engine, and this requires some more testing.
Feel free to open an issue if you find one.

multipers - v2.0.2

Published by DavidLapous 4 months ago

[Features]

  • Representative cycles are given by simplices instead of their keys, i.e., better interface
  • Updated some documentation: added point cloud experiment from ICML 2024 paper

[Fixes]

  • Differentiation of rips-density like: better errors
multipers - v2.0.1

Published by DavidLapous 4 months ago

[Features]

  • More template activated (more columns, more numpy types) for slicers, simplextrees, mma modules
  • weaken a simplextree to a flag complex
  • weakened delaunay bifiltration auto-differentiation

[Fixes]

  • mma modules from multiple slicers were not properly splitted
  • some files generated by external libraries were not properly cleaned
multipers - v2.0.0

Published by DavidLapous 5 months ago

TL;DR: Differentiability, more k-critical support, and bunch of refactorizations.

Note. Due to the large amount of code moved, this release may contain some bugs.

[Features]

  • templated simplextrees (float/int/kcritical)
  • templated slicers (float/int/kcritical/vineyard/backend matrix column)
  • templated module approximations
  • more support for kcritical filtrations
  • hilbert, rank invariant for multicritical filtrations
  • differentiable signed measures
  • rank invariant using vineyard, or any slicer
  • non-inplace squeeze of slicer/st
  • differentiable helpers (e.g. grids computations, convolutions)
  • matrix backend updates (Thanks Hannah Schreiber)
  • improved external libraries handling
  • doc website, with notebook updates inside (Thanks Inés García-Redondo). Required dependencies: sphinx + myst-nb + sphinx_rtd_theme
  • MMA module now can now be constructed from any orientations, and allows for custom paths
  • more test coverage

[Fixes]

  • removed some unsafe hacks in cpp
  • plot fixes, and more consistent between invariants.
  • Some pipelines were broken, due to some renamings.

[Optimizations]

  • less copies between cpp and python, and some variable are view-able from python
  • (Slightly) faster io with scc files
  • backend optimizations
  • simplextree python simplifications : __iter__ (same as get_simplices), __contains__ (same as find,), __getitem__ (same as simplex_filtration)
multipers - v1.2.2

Published by DavidLapous 8 months ago

[Features]

  • clean measures (useful for euler characteristic)
  • slicer to simplextree
  • new grid module (multipers.grids)
  • slicers can now be coarsenned
  • Added proper build dependencies

[optimizations]

  • grids optimizations
  • backend optimizations

[Fixes]

  • installations from venv
multipers - v1.2.1 bugfixes

Published by DavidLapous 8 months ago

[Features]

  • Updated introduction notebook with function delaunay for second example

[Bugfixes]

  • Homological degree could be missmatched in some conditions when computing signed measures from slicer
  • Signed Measure weights could be wrong when computed from slicer
  • In some situation, convolutions with pykeops was a bit picky.
multipers - More interfaces with external libraries

Published by DavidLapous 9 months ago

[Features]

  • better overall interface for libraries with scc formats, e.g., mpfree, rivet, function delaunay, 2pac.
  • it is now easier to jump from simplextrees to module presentation to module resolutions and vice versa
  • it is now easier to compute persistence invariant (signed measure, MMA) from minimal resolutions
  • More c++ backends available in python to encode module presentations.

[Bufixes]

  • A lot of it.

[Still missing]

  • Rank invariant from minimal resolution is not available yet.
  • test all of this new stuff

Note

Interface with 2pac is still experimental. And this new code may be unstable, as it's not properly tested yet. Expect some tinkering.

multipers - v1.1.3: bugfixes

Published by DavidLapous 10 months ago

multipers - Compatibility with gudhi and Python 3.12

Published by DavidLapous 10 months ago

This release should improve the compatibility with gudhi 3.9, and should thus work now with python 3.12.
This also includes a slicer compatible with the scc format, which can be used to compute MMA decompositions,
as well as a few minor fixes.

multipers - Slicer update

Published by DavidLapous 10 months ago

This release interfaces the persistence slicer in python, and more interactions with mpfree-like programs.
It also contains some major backend code, so this might be unstable.