Releases: giotto-ai/pyflagser
v0.4.7
What's Changed
- Add python 311 and 312 support by @raphaelreinauer in #83
Full Changelog: v0.4.6...v0.4.7
Reason for this small release
To allow giotto-tda to be built on python 3.12
v0.4.6
What's Changed
- Support rectangular (esp. sparse) matrices in pyflagser, fixing #48 by @ulupo in #55
- fix unweighted flag saving crashes by @flomlo in #60
- Prepare v0.4.4 by @ulupo in #62
- Use pkg_resources.extern.packaging.version instead of LooseVersion fr… by @ulupo in #71
- fix save_unweighted_flag by removing the leading '#' in the first line by @flomlo in #69
- compiling flagser, flagser-count with MANY_VERTICES to fix overflows … by @flomlo in #68
- Update CI from azure to github actions by @reds-heig in #70
- Prepare v0.4.5 by @ulupo in #78
- Fix README in CI and use delvewheel to repair Windows wheels by @ulupo in #80
- Add support for building Python 3.11 wheels by @raphaelreinauer in #82
New Contributors
- @flomlo made their first contribution in #60
- @raphaelreinauer made their first contribution in #82
Full Changelog: v0.4.3...v0.4.6
pyflagser version 0.4.5
Major Features and Improvements
- Wheels for Python 3.10 are now available (#70).
- Wheels for Apple Silicon are now available for Python versions 3.8, 3.9 and 3.10 (#70).
- A
MANY_VERTICEScompilation flag has been added to enable computations on graphs with more than 2^16 vertices (Florian Unger, #68).
Bug Fixes
- A bug in
save_unweighted_flaghas been fixed (Florian Unger, #69).
Backwards-Incompatible Changes
Python 3.6 is no longer supported, and the manylinux standard has been bumped from manylinux2010 to manylinux2014 (#70).
Thanks to our Contributors
This release contains contributions from:
Julian Burella Pérez, Umberto Lupo, and Florian Unger.
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
pyflagser version 0.4.4
Major Features and Improvements
None.
Bug Fixes
A fatal error in save_unweighted_flag has been fixed (Florian Unger).
Backwards-Incompatible Changes
None.
Thanks to our Contributors
This release contains contributions from:
Florian Unger and Umberto Lupo.
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
pyflagser version 0.4.3
Release 0.4.3
Major Features and Improvements
All functions in pyflagser now accept rectangular adjacency matrices. However, warnings remain in the case of non-square dense input.
Bug Fixes
None.
Backwards-Incompatible Changes
None.
Thanks to our Contributors
This release contains contributions from:
Umberto Lupo.
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
pyflagser version 0.4.2
Release 0.4.2
Major Features and Improvements
-
Wheels for Python 3.9 have been added.
-
The
flagsersubmodule has been updated to the latest upstream version, integrating the following changes:flagsernow trows exceptions instead of exiting the computation;flagsernow supports a number of threads as input parameter and, by default, it will use the maximum number of logic cores available.
-
flagserno longer produces output files.
Bug Fixes
An error encountered when running multiple instances of pyflagser in parallel (due to clashes between temporary file names) has been fixed.
Backwards-Incompatible Changes
None.
Thanks to our Contributors
This release contains contributions from many people:
Julian Burella Pérez and Umberto Lupo.
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
pyflagser version 0.4.1
Release 0.4.1
Bug Fixes
A bug was fixed which caused some computations to hang when the prime for the finite field of coefficients used is greater than 2.
Backwards-Incompatible Changes
None.
Thanks to our Contributors
This release contains contributions from many people:
Julian Burella Pérez and Umberto Lupo.
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
pyflagser version 0.4.0
Release 0.4.0
Major Features and Improvements
flagser_count_unweightedandflagser_count_weightedwere added to provide fast computations of simplex counts per dimension.flagser_unweightedandflagser_weighted's performance was improved whencoeffis 2 by using a compiled version of C++flagserwithout theUSE_COEFFICIENTSflag.- All C++ library files were moved to
pyflagser/modules/upon compilation. - The documentation of
flagser_unweightedandflagser_weightedwas further improved. - Python bindings were made clearer, and documented for future maintenance.
Bug Fixes
- A bug was fixed which caused
flagser_unweightedandflagser_weighted's output persistence diagrams to be of shape(0,)instead of(0, 2)if empty.
Backwards-Incompatible Changes
None.
Thanks to our Contributors
This release contains contributions from many people:
Guillaume Tauzin, Umberto Lupo, and Julian Burella Pérez.
We are also grateful to all who filed issues or helped resolve them, asked and
answered questions, and were part of inspiring discussions.
pyflagser version 0.3.1
Release 0.3.1
Major Features and Improvements
- Clarity of the code of
flagser_unweightedandflagser_weightedwas improved. - Auditwheel repair is now run in the manylinux jobs.
twine checkis now run as part of the CI.
Bug Fixes
- Fix bug causing
flagser_weighted's output persistence diagrams to be a list of list of tuples instead of a list ofnumpy.ndarraysof shape (n_points, 2).
Backwards-Incompatible Changes
- Installation from tarballs is no longer supported.
Thanks to our Contributors
This release contains contributions from many people:
Umberto Lupo and Guillaume Tauzin.
We are also grateful to all who filed issues or helped resolve them, asked and
answered questions, and were part of inspiring discussions.
pyflagser version 0.3.0
Major Features and Improvements
This is a major release. The whole library has been fully refactored and all functions have been renamed. In particular:
-
All functions have been split into an
unweightedand aweightedversion.- The
unweightedfunctions process unweighted graphs. In the adjacency matrices passed to them, off-diagonal,0orFalsevalues denote absent edges while non-0orTruevalues denote edges which are present. Diagonal values are ignored. - The
weightedfunctions process weighted graphs. In the adjacency matrices passed to them, the way zero values are handled depends on the format of the matrix. If the matrix is a densenumpy.ndarray, zero values denote zero-weighted edges. If the matrix is a sparsescipy.sparsematrix, explicitly stored off-diagonal zeros and all diagonal zeros denote zero-weighted edges. Off-diagonal values that have not been explicitely stored are treated byscipy.sparseas zeros but will be understood as infinitely-valued edges, i.e., edges absent from the filtration. Diagonal elements are vertex weights.
- The
-
saveflaghas been split intosave_unweighted_flagand asave_weighted_flag:save_unweighted_flagfocuses on saving adjacency matrices of unweighted graphs into a.flagfile understandable by C++flagser.save_weighted_flagfocuses on saving adjacency matrices of weighted graphs into a.flagfile understandable by C++flagser. It now takes amax_edge_weightargument. All edge weights greater than that value will be considered as infinitely-valued, i.e., absent from the filtration.
-
loadflaghas been split intoload_unweighted_flagand aload_weighted_flag.load_unweighted_flagfocuses on loading.flagfiles as adjacency matrices of unweighted graphs.load_weighted_flagfocuses on loading.flagfiles as adjacency matrices of weighted graphs. It now take aninfinity_valueparameter which is the value to use to denote an absence of edge. It is only useful when the output adjacency matrix is set to be anumpy.ndarrayby passingfmtas'dense. IfNone, it is set to the maximum value allowed by the passeddtype.
-
flagserhas been split intoflagser_unweightedand aflagser_weighted.flagser_unweightedfocuses on the computation of homology and outputs Betti numbers, cell counts per dimension, and Euler characteristic.flagser_weightedfocuses on the computation of persistent homology and outputs persistence diagrams, Betti numbers, cell counts per dimension, and Euler characteristic. It now takes amax_edge_weightargument. All edge weights greater than that value will be considered as infinitely-valued, i.e., absent from the filtration.
Additionally,
- The documentation have been strongly improved both in docstrings and in the code.
- The handling of default parameters has been improved and warnings are now issued.
- Sparse matrix efficiency warnings have been turned off (
lil_matrixcannot be used because it ignores explicitly set 0 values). - Core functions to transform an adjacency matrix into the data structures understood by C++
flagserhave been moved to the new_utils.py. - Tests have been extended according to cover the new functionalities.
Bug Fixes
The following bug fixes were introduced:
- A bug fix from C++
flagseronvertex_degreefiltration has been propagated to pyflagser. - A bug in the C++
flagserbindings causing persistence diagrams and cell counts to be wrong based on the values ofmin_dimensionandmax_dimensionhas been fixed. - Tests were updated accordingly and
conftest.pyhas been improved. - Bugs in the
pyflagserflagserfunctions causing incompatibilities with sparse matrix and non-float datatype have been fixed. CMakeListshas been updated to use C++14. This addresses problem when compiling on MacOS.
Backwards-Incompatible Changes
The library has been fully refactored, which means that most changes were backwards-incompatible. In particular:
- All functions have been renamed as they now include an
unweightedand aweightedversion. - The
flag_matrixargument have been renamedadjacency_matrix.
Please check the documentation for more information.
Thanks to our Contributors
This release contains contributions from many people:
Guillaume Tauzin, Umberto Lupo, and Julian Burella Pérez.
We are also grateful to all who filed issues or helped resolve them, asked and
answered questions, and were part of inspiring discussions.