summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorGard Spreemann <gspr@nonempty.org>2020-08-11 13:55:57 +0200
committerGard Spreemann <gspr@nonempty.org>2020-08-11 13:55:57 +0200
commit1c05c20d7cf92c96b5036620cc892cb956c96785 (patch)
tree8ae9a9396ea2b97f617915b8730632917cf786ec /.github
parent9b3079646ee3f6a494b83e864b3e10b8a93597d0 (diff)
parent92fe082aed387ef050d5077157daea9ee3a7c7f4 (diff)
Merge tag 'tags/gudhi-release-3.3.0' into dfsg/latest
Diffstat (limited to '.github')
-rw-r--r--.github/for_maintainers/new_gudhi_version_creation.md16
-rw-r--r--.github/next_release.md68
-rw-r--r--.github/test-requirements.txt2
-rw-r--r--.github/workflows/pip-packaging-linux.yml56
-rw-r--r--.github/workflows/pip-packaging-osx.yml45
-rw-r--r--.github/workflows/pip-packaging-windows.yml49
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/*