diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/for_maintainers/new_gudhi_version_creation.md | 16 | ||||
-rw-r--r-- | .github/next_release.md | 68 | ||||
-rw-r--r-- | .github/test-requirements.txt | 2 | ||||
-rw-r--r-- | .github/workflows/pip-packaging-linux.yml | 56 | ||||
-rw-r--r-- | .github/workflows/pip-packaging-osx.yml | 45 | ||||
-rw-r--r-- | .github/workflows/pip-packaging-windows.yml | 49 |
6 files changed, 192 insertions, 44 deletions
diff --git a/.github/for_maintainers/new_gudhi_version_creation.md b/.github/for_maintainers/new_gudhi_version_creation.md index 8674222b..0dcb25fe 100644 --- a/.github/for_maintainers/new_gudhi_version_creation.md +++ b/.github/for_maintainers/new_gudhi_version_creation.md @@ -17,9 +17,8 @@ rm -rf data/points/COIL_database/lucky_cat.off_dist data/points/COIL_database/lu Checkin the modifications, build and test the version: ```bash git submodule update --init -mkdir build -cd build -cmake -DCGAL_DIR=/your/path/to/CGAL -DWITH_GUDHI_EXAMPLE=ON -DWITH_GUDHI_BENCHMARK=ON -DUSER_VERSION_DIR=gudhi.@GUDHI_VERSION@ -DPython_ADDITIONAL_VERSIONS=3 .. +rm -rf build; mkdir build; cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCGAL_DIR=/your/path/to/CGAL -DWITH_GUDHI_EXAMPLE=ON -DWITH_GUDHI_BENCHMARK=ON -DUSER_VERSION_DIR=gudhi.@GUDHI_VERSION@ -DPython_ADDITIONAL_VERSIONS=3 .. make user_version date +"%d-%m-%Y-%T" > gudhi.@GUDHI_VERSION@/timestamp.txt tar -czvf gudhi.@GUDHI_VERSION@.tar.gz gudhi.@GUDHI_VERSION@ @@ -27,7 +26,7 @@ md5sum gudhi.@GUDHI_VERSION@.tar.gz > md5sum.txt sha256sum gudhi.@GUDHI_VERSION@.tar.gz > sha256sum.txt sha512sum gudhi.@GUDHI_VERSION@.tar.gz > sha512sum.txt -make -j all test +make -j 4 all && ctest -j 4 --output-on-failure ``` ***[Check there are no error]*** @@ -43,8 +42,9 @@ make doxygen 2>&1 | tee dox.log && grep warning dox.log ```bash cp -R gudhi.@GUDHI_VERSION@/doc/html gudhi.doc.@GUDHI_VERSION@/cpp cd gudhi.@GUDHI_VERSION@ -rm -rf build; mkdir build; cd build; cmake -DCGAL_DIR=/your/path/to/CGAL -DWITH_GUDHI_EXAMPLE=ON -DPython_ADDITIONAL_VERSIONS=3 .. -export LC_ALL=en_US.UTF-8 # cf. bug +rm -rf build; mkdir build; cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCGAL_DIR=/your/path/to/CGAL -DWITH_GUDHI_EXAMPLE=ON -DPython_ADDITIONAL_VERSIONS=3 .. +export LC_ALL=en_US.UTF-8 # cf. bug https://github.com/GUDHI/gudhi-devel/issues/111 make sphinx ``` @@ -56,7 +56,7 @@ cd ../.. tar -czvf gudhi.doc.@GUDHI_VERSION@.tar.gz gudhi.doc.@GUDHI_VERSION@ cd gudhi.@GUDHI_VERSION@/build -make all test +make -j 4 all && ctest -j 4 --output-on-failure ``` ***[Check there are no error]*** @@ -82,7 +82,7 @@ ln -s @GUDHI_VERSION@ latest * Go on page https://github.com/GUDHI/gudhi-devel/releases/new * Name the tag: tags/gudhi-release-@GUDHI_VERSION@ -* Name the release GUDHI @GUDHI_VERSION@ +* Name the release GUDHI @GUDHI_VERSION@ release * Write the release note * Drag'n drop *gudhi.@GUDHI_VERSION@.tar.gz*, *md5sum.txt*, *sha256sum.txt*, *sha512sum.txt* files * Tick the *This is a pre-release* check button if this is a release candidate (untick if this is an official version) diff --git a/.github/next_release.md b/.github/next_release.md index d3c9ce68..14546066 100644 --- a/.github/next_release.md +++ b/.github/next_release.md @@ -1,50 +1,47 @@ -We are pleased to announce the release 3.2.0 of the GUDHI library. +We are pleased to announce the release 3.3.0 of the GUDHI library. -As a major new feature, the GUDHI library now offers a Python interface to [Hera](https://bitbucket.org/grey_narn/hera/src/master/) to compute the Wasserstein distance. -[PyBind11](https://github.com/pybind/pybind11) is now required to build the Python module. +As a major new feature, the GUDHI library now offers a persistence-based clustering algorithm, weighted Rips complex using DTM +and edge collapse. -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.2.0.tar.gz). +The GUDHI library is hosted on GitHub, 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.3.0.tar.gz). -Below is a list of changes made since GUDHI 3.1.1: +Below is a list of changes made since GUDHI 3.2.0: -- Point cloud utilities - - A new module [Time Delay Embedding](https://gudhi.inria.fr/python/latest/point_cloud.html#time-delay-embedding) - to embed time-series data in the R^d according to [Takens' Embedding Theorem](https://en.wikipedia.org/wiki/Takens%27s_theorem) - and obtain the coordinates of each point. - - A new module [K Nearest Neighbors](https://gudhi.inria.fr/python/latest/point_cloud.html#k-nearest-neighbors) - that wraps several implementations for computing the k nearest neighbors in a point set. - - A new module [Distance To Measure](https://gudhi.inria.fr/python/latest/point_cloud.html#distance-to-measure) - to compute the distance to the empirical measure defined by a point set +- [DTM density estimator](https://gudhi.inria.fr/python/latest/point_cloud.html#module-gudhi.point_cloud.dtm) + - Python implementation of a density estimator based on the distance to the empirical measure defined by a point set. -- [Persistence representations](https://gudhi.inria.fr/python/latest/representations.html) - - Interface to Wasserstein distances. +- [DTM Rips complex](https://gudhi.inria.fr/python/latest/rips_complex_user.html#dtm-rips-complex) + - This Python implementation constructs a weighted Rips complex giving larger weights to outliers, + which reduces their impact on the persistence diagram -- Rips complex - - A new module [Weighted Rips Complex](https://gudhi.inria.fr/python/latest/rips_complex_user.html#weighted-rips-complex) - to construct a simplicial complex from a distance matrix and weights on vertices. +- [Alpha complex](https://gudhi.inria.fr/python/latest/alpha_complex_user.html) - Python interface improvements + - 'fast' and 'exact' computations + - Delaunay complex construction by not setting filtration values + - Use the specific 3d alpha complex automatically to make the computations faster -- [Wassertein distance](https://gudhi.inria.fr/python/latest/wasserstein_distance_user.html) - - An [another implementation](https://gudhi.inria.fr/python/latest/wasserstein_distance_user.html#hera) - comes from Hera (BSD-3-Clause) which is based on [Geometry Helps to Compare Persistence Diagrams](http://doi.acm.org/10.1145/3064175) - by Michael Kerber, Dmitriy Morozov, and Arnur Nigmetov. - - `gudhi.wasserstein.wasserstein_distance` has now an option to return the optimal matching that achieves the distance between the two diagrams. - - A new module [Barycenters](https://gudhi.inria.fr/python/latest/wasserstein_distance_user.html#barycenters) - to estimate the Frechet mean (aka Wasserstein barycenter) between persistence diagrams. +- [Clustering](https://gudhi.inria.fr/python/latest/clustering.html) + - Python implementation of [ToMATo](https://doi.org/10.1145/2535927), a persistence-based clustering algorithm -- [Simplex tree](https://gudhi.inria.fr/python/latest/simplex_tree_ref.html) - - Extend filtration method to compute extended persistence - - Flag and lower star persistence pairs generators - - A new interface to filtration, simplices and skeleton getters to return an iterator +- [Edge Collapse](https://gudhi.inria.fr/doc/latest/group__edge__collapse.html) of a filtered flag complex + - This C++ implementation reduces a filtration of Vietoris-Rips complex from its graph to another smaller + flag filtration with the same persistence. -- [Alpha complex](https://gudhi.inria.fr/doc/latest/group__alpha__complex.html) - - Improve computations (cache circumcenters computation and point comparison improvement) +- [Bottleneck distance](https://gudhi.inria.fr/python/latest/bottleneck_distance_user.html) + - Python interface to [hera](https://github.com/grey-narn/hera)'s bottleneck distance -- [Persistence graphical tools](https://gudhi.inria.fr/python/latest/persistence_graphical_tools_user.html) - - New rendering option proposed (use LaTeX style, add grey block, improved positioning of labels, etc.). - - Can now handle (N x 2) numpy arrays as input +- Persistence representations + - [Atol](https://gudhi.inria.fr/python/latest/representations.html#gudhi.representations.vector_methods.Atol) + is integrated in finite vectorisation methods. This + [article](https://www.fujitsu.com/global/about/resources/news/press-releases/2020/0316-01.html) talks about + applications using Atol. This module was originally available at + [https://github.com/martinroyer/atol](https://github.com/martinroyer/atol) + - Python interface change: [Wasserstein metrics](https://gudhi.inria.fr/python/latest/representations.html#gudhi.representations.metrics.WassersteinDistance) + is now [hera](https://github.com/grey-narn/hera) by default - Miscellaneous - - The [list of bugs that were solved since GUDHI-3.2.0](https://github.com/GUDHI/gudhi-devel/issues?q=label%3A3.2.0+is%3Aclosed) is available on GitHub. + - The [list of bugs that were solved since GUDHI-3.2.0](https://github.com/GUDHI/gudhi-devel/issues?q=label%3A3.3.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. @@ -56,3 +53,4 @@ We provide [bibtex entries](https://gudhi.inria.fr/doc/latest/_citation.html) fo Feel free to [contact us](https://gudhi.inria.fr/contact/) in case you have any questions or remarks. For further information about downloading and installing the library ([C++](https://gudhi.inria.fr/doc/latest/installation.html) or [Python](https://gudhi.inria.fr/python/latest/installation.html)), please visit the [GUDHI web site](https://gudhi.inria.fr/). + diff --git a/.github/test-requirements.txt b/.github/test-requirements.txt index fb1df134..98f1007e 100644 --- a/.github/test-requirements.txt +++ b/.github/test-requirements.txt @@ -7,7 +7,7 @@ scipy scikit-learn POT tensorflow -torch +torch<1.5 pykeops hnswlib eagerpy diff --git a/.github/workflows/pip-packaging-linux.yml b/.github/workflows/pip-packaging-linux.yml new file mode 100644 index 00000000..bd524af9 --- /dev/null +++ b/.github/workflows/pip-packaging-linux.yml @@ -0,0 +1,56 @@ +name: pip packaging linux + +on: + release: + types: [published] + +jobs: + build: + name: build pip wheels + runs-on: ubuntu-latest + container: gudhi/pip_for_gudhi + steps: + - uses: actions/checkout@v1 + with: + submodules: true + - name: Build wheels for Python 3.5 + run: | + mkdir build_35 + cd build_35 + cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$PYTHON35/bin/python .. + cd src/python + $PYTHON35/bin/python setup.py bdist_wheel + auditwheel repair dist/*.whl + - name: Build wheels 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 setup.py bdist_wheel + auditwheel repair dist/*.whl + - name: Build wheels 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 setup.py bdist_wheel + auditwheel repair dist/*.whl + - name: Build wheels for Python 3.8 + run: | + mkdir build_38 + cd build_38 + cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=$PYTHON38/bin/python .. + cd src/python + $PYTHON38/bin/python setup.py bdist_wheel + auditwheel repair dist/*.whl + - name: Publish on PyPi + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + $PYTHON38/bin/python -m twine upload build_35/src/python/wheelhouse/* + $PYTHON38/bin/python -m twine upload build_36/src/python/wheelhouse/* + $PYTHON38/bin/python -m twine upload build_37/src/python/wheelhouse/* + $PYTHON38/bin/python -m twine upload build_38/src/python/wheelhouse/*
\ No newline at end of file diff --git a/.github/workflows/pip-packaging-osx.yml b/.github/workflows/pip-packaging-osx.yml new file mode 100644 index 00000000..c94369ac --- /dev/null +++ b/.github/workflows/pip-packaging-osx.yml @@ -0,0 +1,45 @@ +name: pip packaging osx + +on: + release: + types: [published] + +jobs: + build: + runs-on: macos-latest + strategy: + max-parallel: 4 + matrix: + python-version: ['3.5', '3.6', '3.7', '3.8'] + name: Build wheels for Python ${{ matrix.python-version }} + steps: + - uses: actions/checkout@v1 + with: + submodules: true + - uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + architecture: x64 + - name: Install dependencies + run: | + brew update || true + brew install boost eigen gmp mpfr cgal || true + python -m pip install --user -r .github/build-requirements.txt + python -m pip install --user twine delocate + - name: Build python wheel + run: | + python --version + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release -DPython_ADDITIONAL_VERSIONS=3 .. + cd src/python + python setup.py bdist_wheel + - name: Publish on PyPi + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + mkdir wheelhouse + /Users/runner/.local/bin/delocate-listdeps build/src/python/dist/* + /Users/runner/.local/bin/delocate-wheel --require-archs x86_64 -w wheelhouse build/src/python/dist/* + python -m twine upload wheelhouse/*
\ No newline at end of file diff --git a/.github/workflows/pip-packaging-windows.yml b/.github/workflows/pip-packaging-windows.yml new file mode 100644 index 00000000..2e45ad71 --- /dev/null +++ b/.github/workflows/pip-packaging-windows.yml @@ -0,0 +1,49 @@ +name: pip packaging windows + +on: + release: + types: [published] + +jobs: + build: + runs-on: windows-latest + strategy: + max-parallel: 4 + matrix: + python-version: ['3.5', '3.6', '3.7', '3.8'] + name: Build wheels for Python ${{ matrix.python-version }} + steps: + - uses: actions/checkout@v1 + with: + submodules: true + - uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + architecture: x64 + - name: Patch + run: | + (new-object System.Net.WebClient).DownloadFile('https://github.com/microsoft/vcpkg/files/4978792/vcpkg_fixup_pkgconfig.cmake.txt','c:\vcpkg\scripts\cmake\vcpkg_fixup_pkgconfig.cmake') + (new-object System.Net.WebClient).DownloadFile('https://github.com/microsoft/vcpkg/files/4978796/vcpkg_acquire_msys.cmake.txt','c:\vcpkg\scripts\cmake\vcpkg_acquire_msys.cmake') + shell: powershell + - name: Install dependencies + run: | + vcpkg update + vcpkg upgrade --no-dry-run + vcpkg install boost-graph boost-serialization boost-date-time boost-system boost-filesystem boost-units boost-thread boost-program-options eigen3 mpfr mpir cgal --triplet x64-windows + python -m pip install --user -r .github/build-requirements.txt + python -m pip install --user twine + python -m pip list + - name: Build python wheel + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release -DGMP_INCLUDE_DIR="c:/vcpkg/installed/x64-windows/include" -DGMP_LIBRARIES="c:/vcpkg/installed/x64-windows/lib/mpir.lib" -DGMP_LIBRARIES_DIR="c:/vcpkg/installed/x64-windows/lib" -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -DPython_ADDITIONAL_VERSIONS=3 .. + cd src/python + cp c:/vcpkg/installed/x64-windows/bin/mpfr.dll gudhi/ + cp c:/vcpkg/installed/x64-windows/bin/mpir.dll gudhi/ + python setup.py bdist_wheel + - name: Publish on PyPi + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: python -m twine upload build/src/python/dist/* |