- 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_VERTICES
compilation flag has been added to enable computations on graphs with more than 2^16 vertices (Florian Unger, #68).
- A bug in
save_unweighted_flag
has been fixed (Florian Unger, #69).
Python 3.6 is no longer supported, and the manylinux standard has been bumped from manylinux2010
to manylinux2014
(#70).
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.
None.
A fatal error in save_unweighted_flag
has been fixed (Florian Unger).
None.
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.
All functions in pyflagser
now accept rectangular adjacency matrices. However, warnings remain in the case of non-square dense input.
None.
None.
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.
- Wheels for Python 3.9 have been added.
- The
flagser
submodule has been updated to the latest upstream version, integrating the following changes:flagser
now trows exceptions instead of exiting the computation;flagser
now supports a number of threads as input parameter and, by default, it will use the maximum number of logic cores available.
flagser
no longer produces output files.
An error encountered when running multiple instances of pyflagser
in parallel (due to clashes between temporary file names) has been fixed.
None.
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.
A bug was fixed which caused some computations to hang when the prime for the finite field of coefficients used is greater than 2.
None.
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.
flagser_count_unweighted
andflagser_count_weighted
were added to provide fast computations of simplex counts per dimension.flagser_unweighted
andflagser_weighted
's performance was improved whencoeff
is 2 by using a compiled version of C++flagser
without theUSE_COEFFICIENTS
flag.- All C++ library files were moved to
pyflagser/modules/
upon compilation. - The documentation of
flagser_unweighted
andflagser_weighted
was further improved. - Python bindings were made clearer, and documented for future maintenance.
- A bug was fixed which caused
flagser_unweighted
andflagser_weighted
's output persistence diagrams to be of shape(0,)
instead of(0, 2)
if empty.
None.
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.
- Clarity of the code of
flagser_unweighted
andflagser_weighted
was improved. - Auditwheel repair is now run in the manylinux jobs.
twine check
is now run as part of the CI.
- Fix bug causing
flagser_weighted
's output persistence diagrams to be a list of list of tuples instead of a list ofnumpy.ndarrays
of shape (n_points, 2).
- Installation from tarballs is no longer supported.
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.
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
unweighted
and aweighted
version.- The
unweighted
functions process unweighted graphs. In the adjacency matrices passed to them, off-diagonal,0
orFalse
values denote absent edges while non-0
orTrue
values denote edges which are present. Diagonal values are ignored. - The
weighted
functions 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.sparse
matrix, 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.sparse
as zeros but will be understood as infinitely-valued edges, i.e., edges absent from the filtration. Diagonal elements are vertex weights.
- The
saveflag
has been split intosave_unweighted_flag
and asave_weighted_flag
:save_unweighted_flag
focuses on saving adjacency matrices of unweighted graphs into a .flag file understandable by C++ flagser.save_weighted_flag
focuses on saving adjacency matrices of weighted graphs into a .flag file understandable by C++ flagser. It now takes amax_edge_weight
argument. All edge weights greater than that value will be considered as infinitely-valued, i.e., absent from the filtration.
loadflag
has been split intoload_unweighted_flag
and aload_weighted_flag
.load_unweighted_flag
focuses on loading.flag
files as adjacency matrices of unweighted graphs.load_weighted_flag
focuses on loading.flag
files as adjacency matrices of weighted graphs. It now take aninfinity_value
parameter 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.ndarray
by passing fmt as'dense'
. IfNone
, it is set to the maximum value allowed by the passed dtype.
flagser
has been split intoflagser_unweighted
and aflagser_weighted
.flagser_unweighted
focuses on the computation of homology and outputs Betti numbers, cell counts per dimension, and Euler characteristic.flagser_weighted
focuses on the computation of persistent homology and outputs persistence diagrams, Betti numbers, cell counts per dimension, and Euler characteristic. It now takes amax_edge_weight
argument. 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_matrix
cannot be used because it ignores explicitly set 0 values). - Core functions to transform an adjacency matrix into the data structures understood by C++
flagser
have been moved to the new_utils.py
. - Tests have been extended according to cover the new functionalities.
The following bug fixes were introduced:
- A bug fix from C++
flagser
onvertex_degree
filtration has been propagated to pyflagser. - A bug in the C++
flagser
bindings causing persistence diagrams and cell counts to be wrong based on the values ofmin_dimension
andmax_dimension
has been fixed. - Tests were updated accordingly and conftest.py has been improved.
- Bugs in the
pyflagser
flagser
functions causing incompatibilities with sparse matrix and non-float datatype have been fixed. CMakeLists
has been updated to use C++14. This addresses problem when compiling on MacOS.
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
unweighted
and aweighted
version. - The
flag_matrix
argument have been renamedadjacency_matrix
.
Please check the documentation for more information.
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.
CMakeLists
updated to enable compile flags on MSVC. This improves performance on Windows systems.
Hotfix addressing multiples issues where forwarding arguments to C++ flagser
:
filtration
was not correctly forwarded and it always fallback to zero filtration.max-dim
andmin-dim
were always equal to 0.
CMakeLists
updated to disable AVX instructions. This addresses incompatibilities observed with specific hardware setups.
None.
This release contains contributions from many people:
Julian Burella Pérez, 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.
The flagser
method now accepts filtration
as an argument. All filtrations available for the C++ flagser software can be used.
Fixed bug related to the generation of a file by C++ flagser
. Whenever pyflagser's flagser
method was interrupted, it would not remove the generated file, which would prevent the flagser
method to be called again.
None.
This release contains contributions from many people:
Julian Burella Pérez, 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.
Initial release of pyflagser
.
The following methods where added:
loadflag
enable the user to load a.flag
file into ascipy
ornumpy
matrix.saveflag
enables the user to save ascipy
ornumpy
matrix into a.flag
file.flagser
computes the persistent homology of directed/undirected flag complexes.
This release contains contributions from many people:
Guillaume Tauzin, 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.