Skip to content

Releases: DavidLapous/multipers

v2.2.3

04 Feb 13:15
Compare
Choose a tag to compare

This release adds experimental support for Windows (Thanks @VincentRouvreau ! ), and cleans a few things for conda-forge.

v2.2.2

03 Feb 10:29
Compare
Choose a tag to compare

TL;DR: Bug fixes and optimizations.

[Features]

  • small vector column
  • slicers are now pickle-able
  • ignoring simplices at infinity can be chosen at runtime
  • insert_batch is now compatible with multicritical filtrations

[Fixes]

  • MMA plots improvements
  • Windows build (still doesn't compile)
  • MMA with empty boxes, or array boxes
  • dtype issues with slicers, and cubical filtrations
  • MMA cpp templates now follow the tempita file
  • less rigid typings in slicers, insert_batch

[Optimizations]

  • !Möbius inversion in python, now moved in the point_measure module
  • python to cpp filtration values translations
  • slicer constructor

[Documentation]

  • Updated external libraries' doc

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