Skip to content

Commit

Permalink
update from upstream master
Browse files Browse the repository at this point in the history
  • Loading branch information
hschreiber committed Apr 18, 2024
2 parents 902db3b + 5d44350 commit da925a0
Show file tree
Hide file tree
Showing 143 changed files with 4,194 additions and 1,186 deletions.
20 changes: 20 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,25 @@ jobs:
make all
ctest --output-on-failure
debug_tests:
docker:
- image: gudhi/ci_for_gudhi:latest
steps:
- checkout
- run:
name: Checkout submodules
command: |
git submodule sync
git submodule update --init
- run:
name: Build and test unitary tests
command: |
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS=-fsanitize=address -DWITH_GUDHI_EXAMPLE=OFF -DWITH_GUDHI_TEST=ON -DWITH_GUDHI_UTILITIES=OFF -DWITH_GUDHI_PYTHON=OFF ..
make all
ctest --output-on-failure
utils:
docker:
- image: gudhi/ci_for_gudhi:latest
Expand Down Expand Up @@ -322,6 +341,7 @@ workflows:
- python_without_cgal
- examples
- tests
- debug_tests
- utils
- python
- doxygen
Expand Down
52 changes: 50 additions & 2 deletions .github/changelog.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,63 @@
Release History
===============


[Release 3.9.0](https://github.com/GUDHI/gudhi-devel/releases/tag/tags%2Fgudhi-release-3.9.0)
-----------

Release date: December 2023

Below is a list of changes made since GUDHI 3.8.0:

- [CubicalPersistence](https://gudhi.inria.fr/python/latest/cubical_complex_sklearn_itf_ref.html)
- Much faster implementation for the 2d case with input from top-dimensional cells.

- [Simplex_tree](https://gudhi.inria.fr/doc/latest/group__simplex__tree.html)
- A helper `for_each_simplex` that applies a given function object on each simplex
- A new method `num_simplices_by_dimension` is now available thanks to this helper.
- A `clear` method to empty the data stucture.
- A new argument `ignore_infinite_values` for `initialize_filtration` method to skip infinite values. As a side effect, this change enhances the persistence computation.
- `Simplex_tree_options_full_featured` has been renamed `Simplex_tree_options_default` and `Simplex_tree_options_python`.
These are respectively the default options used by the `Simplex_tree` and by the python interface of the `SimplexTree` (as before this version).
- From GUDHI 3.9.0, `Simplex_tree_options_full_featured` now activates `link_nodes_by_label` and `stable_simplex_handles` (making it slower, except for browsing cofaces).

| Simplex_tree_options_* | :warning: full_featured | default | python | minimal |
| ---- | ---- | ---- | ---- | ---- |
| store_key | 1 | 1 | 1 | 0 |
| store_filtration | 1 | 1 | 1 | 0 |
| contiguous_vertices | 0 | 0 | 0 | 0 |
| link_nodes_by_label | ***1*** | 0 | 0 | 0 |
| stable_simplex_handles | ***1*** | 0 | 0 | 0 |
| Filtration_value | double | double | double | |

- [Simplex_tree options](https://gudhi.inria.fr/doc/latest/struct_simplex_tree_options.html)
- A new option `link_nodes_by_label` to speed up cofaces and stars access, when set to true.
- A new option `stable_simplex_handles` to keep Simplex handles valid even after insertions or removals, when set to true.

- [Čech complex](https://gudhi.inria.fr/doc/latest/group__cech__complex.html)
- A function `assign_MEB_filtration` that assigns to each simplex a filtration value equal to the squared radius of its minimal enclosing ball (MEB), given a simplicial complex and an embedding of its vertices. Applied on a Delaunay triangulation, it computes the Delaunay-Čech filtration.

- [Edge collapse](https://gudhi.inria.fr/python/latest/edge_collapse.html)
- A Python function `reduce_graph` to simplify a clique filtration (represented as a sparse weighted graph), while preserving its persistent homology.

- [Mapper/GIC/Nerve complexes](https://gudhi.inria.fr/python/latest/cover_complex_sklearn_isk_ref.html)
- A new method `save_to_html` to ease the Keppler Mapper visualization

- Installation
- Boost ≥ 1.71.0 is now required (was ≥ 1.66.0).
- cython >= 3.0.0 is now supported.
- Python 3.12 pip package.

- Miscellaneous
- The [list of bugs that were solved since GUDHI-3.8.0](https://github.com/GUDHI/gudhi-devel/issues?q=label%3A3.9.0+is%3Aclosed) is available on GitHub.

[Release 3.8.0](https://github.com/GUDHI/gudhi-devel/releases/tag/tags%2Fgudhi-release-3.8.0)
-----------

Release date: April 2023

As a major new feature, the GUDHI library now offers Perslay, a Tensorflow model for the representations module, scikit-learn like interfaces for Cover Complexes, a new function to compute persistence of a function on ℝ and the possibility to build a Cubical Complex as a lower-star filtration from vertices.

We are now using GitHub to develop the GUDHI library, do not hesitate to [fork the GUDHI project on GitHub](https://github.com/GUDHI/gudhi-devel). From a user point of view, we recommend to download GUDHI user version (gudhi.3.X.X.tar.gz).

Below is a list of changes made since GUDHI 3.7.1:

- [Perslay](https://gudhi.inria.fr/python/latest/representations_tflow_itf_ref.html)
Expand Down
9 changes: 7 additions & 2 deletions .github/for_maintainers/switcher.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
[
{
"name": "v3.8.0 (latest)",
"version": "3.8.0",
"name": "v3.9.0 (latest)",
"version": "3.9.0",
"url": "https://gudhi.inria.fr/python/latest/"
},
{
"name": "v3.8.0",
"version": "3.8.0",
"url": "https://gudhi.inria.fr/python/3.8.0/"
},
{
"name": "v3.7.1",
"version": "3.7.1",
Expand Down
16 changes: 5 additions & 11 deletions .github/next_release.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,17 @@
We are pleased to announce the release 3.9.0 of the GUDHI library.

As a major new feature, the GUDHI library now offers ...
We are pleased to announce the release 3.10.0 of the GUDHI library.

We are now using GitHub to develop the GUDHI library, do not hesitate to [fork the GUDHI project on GitHub](https://github.com/GUDHI/gudhi-devel). From a user point of view, we recommend to download GUDHI user version (gudhi.3.X.X.tar.gz).

Below is a list of changes made since GUDHI 3.8.0:
Below is a list of changes made since GUDHI 3.9.0:

- [Module](link)
- **...**
- [Rips complex](https://gudhi.inria.fr/python/latest/rips_complex_sklearn_itf_ref.html)
- Rips complex persistence scikit-learn like interface

- [Module](link)
- **...**

- Installation
- Boost ≥ 1.71.0 is now required (was ≥ 1.66.0).
- cython >= 3.0.0 is now supported.

- Miscellaneous
- The [list of bugs that were solved since GUDHI-3.8.0](https://github.com/GUDHI/gudhi-devel/issues?q=label%3A3.9.0+is%3Aclosed) is available on GitHub.
- The [list of bugs that were solved since GUDHI-3.9.0](https://github.com/GUDHI/gudhi-devel/issues?q=label%3A3.10.0+is%3Aclosed) is available on GitHub.

All modules are distributed under the terms of the MIT license.
However, there are still GPL dependencies for many modules. We invite you to check our [license dedicated web page](https://gudhi.inria.fr/licensing/) for further details.
Expand Down
30 changes: 15 additions & 15 deletions .github/workflows/pip-build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,30 @@ jobs:
name: build pip wheel
runs-on: ubuntu-latest
# cf. https://github.com/GUDHI/gudhi-deploy/blob/main/Dockerfile_for_pip
container: gudhi/pip_for_gudhi:latest
container: gudhi/pip_for_gudhi:2023.12.01
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Build wheel for Python 3.6
- name: Build wheel for Python 3.8
run: |
mkdir build_36
cd build_36
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$PYTHON36/bin/python ..
mkdir build_38
cd build_38
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$PYTHON38/bin/python ..
cd src/python
$PYTHON36/bin/python -m build -n -w
$PYTHON38/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.6
- name: Install and test wheel for Python 3.8
run: |
$PYTHON36/bin/python -m pip install --user pytest build_36/src/python/dist/*.whl
$PYTHON36/bin/python -m pip install numpy --upgrade
$PYTHON36/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON36/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON36/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON36/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON36/bin/python -m pytest -v src/python/test/test_rips_complex.py
$PYTHON38/bin/python -m pip install --user pytest build_38/src/python/dist/*.whl
$PYTHON38/bin/python -m pip install numpy --upgrade
$PYTHON38/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON38/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON38/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON38/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON38/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Upload linux python wheel
uses: actions/upload-artifact@v3
with:
name: linux python wheel
path: build_36/src/python/wheelhouse/*.whl
path: build_38/src/python/wheelhouse/*.whl
4 changes: 2 additions & 2 deletions .github/workflows/pip-build-osx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ name: pip build osx
on: [push, pull_request]

env:
MACOSX_DEPLOYMENT_TARGET: 11.7
_PYTHON_HOST_PLATFORM: macosx-11.7-universal2
MACOSX_DEPLOYMENT_TARGET: 12.0
_PYTHON_HOST_PLATFORM: macosx-12.0-universal2
ARCHFLAGS: "-arch arm64 -arch x86_64"

jobs:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pip-build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ jobs:
strategy:
max-parallel: 4
matrix:
python-version: ['3.7']
python-version: ['3.8']
include:
- python-version: '3.7'
numpy-version: '1.15.0'
- python-version: '3.8'
numpy-version: '1.21.4'
name: Build wheels for Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v3
Expand Down
64 changes: 23 additions & 41 deletions .github/workflows/pip-packaging-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,45 +9,11 @@ jobs:
name: build pip wheel
runs-on: ubuntu-latest
# cf. https://github.com/GUDHI/gudhi-deploy/blob/main/Dockerfile_for_pip
container: gudhi/pip_for_gudhi:latest
container: gudhi/pip_for_gudhi:2023.12.01
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Build wheel for Python 3.6
run: |
mkdir build_36
cd build_36
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$PYTHON36/bin/python ..
cd src/python
$PYTHON36/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.6
run: |
$PYTHON36/bin/python -m pip install --user pytest build_36/src/python/dist/*.whl
$PYTHON36/bin/python -m pip install numpy --upgrade
$PYTHON36/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON36/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON36/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON36/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON36/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.7
run: |
mkdir build_37
cd build_37
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$PYTHON37/bin/python ..
cd src/python
$PYTHON37/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.7
run: |
$PYTHON37/bin/python -m pip install --user pytest build_37/src/python/dist/*.whl
$PYTHON37/bin/python -m pip install numpy --upgrade
$PYTHON37/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON37/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON37/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON37/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON37/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.8
run: |
mkdir build_38
Expand Down Expand Up @@ -116,14 +82,30 @@ jobs:
$PYTHON311/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON311/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON311/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.12
run: |
mkdir build_312
cd build_312
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$PYTHON312/bin/python ..
cd src/python
$PYTHON312/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.12
run: |
$PYTHON312/bin/python -m pip install --user pytest build_312/src/python/dist/*.whl
$PYTHON312/bin/python -m pip install numpy --upgrade
$PYTHON312/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON312/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON312/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON312/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON312/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Publish on PyPi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
$PYTHON36/bin/python -m twine upload build_36/src/python/wheelhouse/*.whl
$PYTHON36/bin/python -m twine upload build_37/src/python/wheelhouse/*.whl
$PYTHON36/bin/python -m twine upload build_38/src/python/wheelhouse/*.whl
$PYTHON36/bin/python -m twine upload build_39/src/python/wheelhouse/*.whl
$PYTHON36/bin/python -m twine upload build_310/src/python/wheelhouse/*.whl
$PYTHON36/bin/python -m twine upload build_311/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_38/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_39/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_310/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_311/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_312/src/python/wheelhouse/*.whl
8 changes: 5 additions & 3 deletions .github/workflows/pip-packaging-osx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ on:
types: [published]

env:
MACOSX_DEPLOYMENT_TARGET: 11.7
_PYTHON_HOST_PLATFORM: macosx-11.7-universal2
MACOSX_DEPLOYMENT_TARGET: 12.0
_PYTHON_HOST_PLATFORM: macosx-12.0-universal2
ARCHFLAGS: "-arch arm64 -arch x86_64"

jobs:
Expand All @@ -17,7 +17,7 @@ jobs:
matrix:
# numpy packages for osx x86 and arm are only available from 1.21.2, but stable for both versions from 1.21.4
# and python 3.8+
python-version: ['3.8', '3.9', '3.10', '3.11']
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
include:
# numpy >= 1.21.4 fort osx x86 and arm, but minimal numpy version for python 3.10 is 1.21.6 for instance
# numpy~=1.21.6 means any numpy=1.21.*, but also numpy>=1.21.6 (numpy~=1.21 do not work as it means any numpy==1.*)
Expand All @@ -29,6 +29,8 @@ jobs:
numpy-version: '1.21.6'
- python-version: '3.11'
numpy-version: '1.23.2'
- python-version: '3.12'
numpy-version: '1.26.0'
name: Build wheels for Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v3
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pip-packaging-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@ jobs:
strategy:
max-parallel: 4
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11']
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
# gudhi requires numpy >= 1.15.0, but minimal numpy version for python 3.8 is 1.17.3 for instance
# numpy~=1.17.3 means any numpy=1.17.*, but also numpy>=1.17.3 (numpy~=1.17 do not work as it means any numpy==1.*)
include:
- python-version: '3.7'
numpy-version: '1.15.0'
- python-version: '3.8'
numpy-version: '1.17.3'
- python-version: '3.9'
Expand All @@ -24,6 +22,8 @@ jobs:
numpy-version: '1.21.6'
- python-version: '3.11'
numpy-version: '1.23.2'
- python-version: '3.12'
numpy-version: '1.26.0'
name: Build wheels for Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v3
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,8 @@ data/points/human.off_sc.txt
# IDE specific
# CLion
.idea/
# VSCode
.vscode

# macOS metadata
.DS_Store
2 changes: 1 addition & 1 deletion CMakeGUDHIVersion.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Must be conform to pep440 - https://www.python.org/dev/peps/pep-0440/#pre-releases
set (GUDHI_MAJOR_VERSION 3)
set (GUDHI_MINOR_VERSION 9)
set (GUDHI_MINOR_VERSION 10)
# GUDHI_PATCH_VERSION can be 'ZaN' for Alpha release, 'ZbN' for Beta release, 'ZrcN' for release candidate or 'Z' for a final release.
set (GUDHI_PATCH_VERSION 0a1)
set(GUDHI_VERSION ${GUDHI_MAJOR_VERSION}.${GUDHI_MINOR_VERSION}.${GUDHI_PATCH_VERSION})
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ foreach(GUDHI_MODULE ${GUDHI_MODULES})
endforeach()
endforeach()

if (WITH_GUDHI_THIRD_PARTY)
if (WITH_GUDHI_GUDHUI)
add_subdirectory(src/GudhUI)
endif()

Expand Down
12 changes: 12 additions & 0 deletions biblio/bibliography.bib
Original file line number Diff line number Diff line change
Expand Up @@ -1413,6 +1413,18 @@ @misc{arxivpers1d
year = {2023},
copyright = {arXiv.org perpetual, non-exclusive license}
}

@misc{icml2014,
doi = {10.48550/ARXIV.1406.1901},
url = {https://arxiv.org/abs/1406.1901},
author = {Chazal, Frédéric and Fasy, Brittany Terese and Lecci, Fabrizio and Michel, Bertrand and Rinaldo, Alessandro and Wasserman, Larry},
keywords = {Algebraic Topology (math.AT), Computational Geometry (cs.CG), Applications (stat.AP), FOS: Mathematics, FOS: Mathematics, FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {Subsampling Methods for Persistent Homology},
publisher = {arXiv},
year = {2014},
copyright = {arXiv.org perpetual, non-exclusive license}
}

@InProceedings{chubet_et_al:LIPIcs.SoCG.2023.64,
author = {Chubet, Oliver A. and Macnichol, Paul and Parikh, Parth and Sheehy, Donald R. and Sheth, Siddharth S.},
title = {{Greedy Permutations and Finite Voronoi Diagrams}},
Expand Down
Loading

0 comments on commit da925a0

Please sign in to comment.