Skip to content

Releases: DavidLapous/multipers

v2.2.1

05 Nov 18:35
Compare
Choose a tag to compare

TL;DR: Bug fixes and optimizations.

[Features]

  • SimplexTreeMulti are now pickle-able (thanks @hschreiber).
  • Backend synced with gudhi PR
  • Improved representation strings of slicer/simplextrees

[Fixes]

  • In some situations, reading scc files from mpfree or function_delaunay was not giving the good degree
  • Removed an optimization of GudhiCohomology to allow for arbitrary module presentation (@hschreiber)
  • Fixed bugs preventing enabling the inf-optimization in all (non-vineyard) cases for Matrix and GudhiCohomology backends (@hschreiber).

[Optimizations]

  • !Unsafe simplextree conversions are now safer, and enabled by default. This requires gudhi>=3.8.
    This can yield a significant performance (>20x) boost when converting gudhi simplextree to multipers.
  • Re-enabled the inf-optimization for persistence slices with non-appearing simplices (@hschreiber).

[Documentation]

  • !Changed the host to GitHub to auto-build the website with a GitHub action.

v2.2.0

23 Oct 08:47
f7f35b9
Compare
Choose a tag to compare

TL;DR: Cubical complexes, Gudhi backend for slicers, and some nice optimizations and fixes.

Features

  • Fill from distance matrix; similar to fill_lowerstar, but with distance matrices for clique complexes
  • proper is_slicer, is_mma
  • Compute grids from module approximation, and signed measures
  • Typing improvements
  • compute_bounding_box of given object
  • benchmark file to check the performance of different alternatives
  • unsqueeze operation. stuff.grid_squeeze(...).unsqueeze() should be the identity.
  • GudhiCohomology backend for slicers. It uses native gudhi persistence for 1-parameter persistence computations.
    In some situations, this backend yields significantly faster non-vine computations.
  • Cubical complexes from numpy tensor, with its corresponding notebook in the documentation.
  • more tests, and tests are skipped if dependencies are not met.
  • Better compilation options management. When compiling from source, the options can be tuned in the _tempita_grid_gen.py file.

Possibly breaking changes

  • ! default rips threshold is now set to max-min of distance matrix. Topology is trivial after this point.
  • ! representative cycles improvements (@hschreiber )
  • ! non-vine slicers as default values. This is meant to make computation faster for signed measures, at the expense of a copy for module approximation (with a warning)
  • ! squeezed slicers are unsqueezed before being written to an scc file (to prevent loss of information)
  • ! disabled clement slicer backend, as it wasn't really used. This will be re-enabled when zigzag computations are needed, and can still be enabled when compiling from sources.
  • ! simplextree manual insertion behaviour changed a bit.
    • Previous behaviour: insert simplex at specific location without any checks
    • New behaviour: each inserted simplex is insered at the first possible time with respect of the filtration that is greater than the given insertion value (defaults at $-\infty$). Also see GUDHI/gudhi-devel#974. Multi-critical filtrations are not affected (there is no natural definition for it in that case).

Fixes

  • Point cloud pipeline was ignoring some arguments in some cases
  • multipers initialization should load more documentation/core modules by default
  • MMA representation pipelines issues
  • Some hacks to fix the torch rips-density signed measure function

Optimizations

  • vineyard backend optimizations (@hschreiber)
  • Changed scc parser from python to cpp code (@hschreiber ) IO operations now also release the gil

v2.1.0

26 Sep 17:52
Compare
Choose a tag to compare

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

v2.0.5

30 Jul 17:58
Compare
Choose a tag to compare

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

v2.0.4

08 Jul 13:20
Compare
Choose a tag to compare

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

v2.0.3

04 Jul 08:08
Compare
Choose a tag to compare

[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.

v2.0.2

24 Jun 16:40
Compare
Choose a tag to compare

[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

v2.0.1

17 Jun 14:00
Compare
Choose a tag to compare

[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

v2.0.0

13 May 18:16
Compare
Choose a tag to compare

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)

v1.2.2

21 Feb 18:12
f89152e
Compare
Choose a tag to compare

[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