diff --git a/.github/workflows/test_notebooks.yml b/.github/workflows/test_notebooks.yml index d117b72..06cf1e9 100644 --- a/.github/workflows/test_notebooks.yml +++ b/.github/workflows/test_notebooks.yml @@ -22,4 +22,4 @@ jobs: pip install jupyter - name: Execute notebooks run: | - for f in *.ipynb; do echo "Processing $f file.."; time jupyter nbconvert --TagRemovePreprocessor.enabled=True --TagRemovePreprocessor.remove_cell_tags="['do_not_execute']" --to notebook --ExecutePreprocessor.timeout=600 --inplace --execute $f;done; + for f in tutorials/*.ipynb; do echo "Processing $f file.."; time jupyter nbconvert --TagRemovePreprocessor.enabled=True --TagRemovePreprocessor.remove_cell_tags="['do_not_execute']" --to notebook --ExecutePreprocessor.timeout=600 --inplace --execute $f;done; diff --git a/README.Rmd b/README.Rmd index 2ceac7a..0badcfb 100644 --- a/README.Rmd +++ b/README.Rmd @@ -1,20 +1,20 @@ --- title: "Tutorials for Topological Data Analysis with the Gudhi Library" -output: +output: github_document: pandoc_args: --webtex --- ```{r setup, include=FALSE} knitr::opts_chunk$set( - echo = FALSE, + echo = FALSE, fig.align = "center" ) ``` Topological Data Analysis (TDA) is a recent and fast growing field providing a set of new topological and geometric tools to infer relevant features for possibly complex data. Here we propose a set of notebooks for the practice of TDA with the Python Gudhi library together with popular machine learning and data sciences libraries. See for instance [this paper](https://arxiv.org/abs/1710.04019) for an introduction to TDA for data science. The complete list of notebooks can also be found at the end of this page. -## Install Python Gudhi Library +## Install Python Gudhi Library See the [installation page](https://gudhi.inria.fr/python/latest/installation.html) or if you have conda you can make a [conda install](https://anaconda.org/conda-forge/gudhi). @@ -22,15 +22,15 @@ See the [installation page](https://gudhi.inria.fr/python/latest/installation.ht ### 01 - Simplex trees and simpicial complexes -TDA typically aims at extracting topological signatures from a point cloud in $\mathbb{R}^d$ or in a general metric space. By studying the topology of a point cloud, we actually mean studying the topology of the unions of balls centered at the point cloud, also called *offsets*. However, non-discrete sets such as offsets, and also continuous mathematical shapes like curves, surfaces and more generally manifolds, cannot easily be encoded as finite discrete structures. [Simplicial complexes](https://en.wikipedia.org/wiki/Simplicial_complex) are therefore used in computational geometry to approximate such shapes. +TDA typically aims at extracting topological signatures from a point cloud in $\mathbb{R}^d$ or in a general metric space. By studying the topology of a point cloud, we actually mean studying the topology of the unions of balls centered at the point cloud, also called *offsets*. However, non-discrete sets such as offsets, and also continuous mathematical shapes like curves, surfaces and more generally manifolds, cannot easily be encoded as finite discrete structures. [Simplicial complexes](https://en.wikipedia.org/wiki/Simplicial_complex) are therefore used in computational geometry to approximate such shapes. A simplicial complex is a set of [simplices](https://en.wikipedia.org/wiki/Simplex), they can be seen as higher dimensional generalization of graphs. These are mathematical objects that are both topological and combinatorial, a property making them particularly useful for TDA. The challenge here is to define such structures that are proven to reflect relevant information about the structure of data and that can be effectively constructed and manipulated in practice. Below is an exemple of simplicial complex: ```{r simplicial-complex-example} -knitr::include_graphics("Images/Pers14.PNG") +knitr::include_graphics("tutorials/Images/Pers14.PNG") ``` - -A filtration is an increasing sequence of sub-complexes of a simplicial complex $\mathcal{K}$. It can be seen as ordering the simplices included in the complex $\mathcal{K}$. Indeed, simpicial complexes often come with a specific order, as for [Vietoris-Rips complexes](https://en.wikipedia.org/wiki/Vietoris%E2%80%93Rips_complex), [Cech complexes](https://en.wikipedia.org/wiki/%C4%8Cech_complex) and [alpha complexes](https://en.wikipedia.org/wiki/Alpha_shape#Alpha_complex). + +A filtration is an increasing sequence of sub-complexes of a simplicial complex $\mathcal{K}$. It can be seen as ordering the simplices included in the complex $\mathcal{K}$. Indeed, simpicial complexes often come with a specific order, as for [Vietoris-Rips complexes](https://en.wikipedia.org/wiki/Vietoris%E2%80%93Rips_complex), [Cech complexes](https://en.wikipedia.org/wiki/%C4%8Cech_complex) and [alpha complexes](https://en.wikipedia.org/wiki/Alpha_shape#Alpha_complex). [Notebook: Simplex trees](Tuto-GUDHI-simplex-Trees.ipynb). In Gudhi, filtered simplicial complexes are encoded through a data structure called simplex tree. Vertices are represented as integers, edges as pairs of integers, etc. @@ -42,16 +42,16 @@ knitr::include_graphics("https://gudhi.inria.fr/python/latest/_images/Simplex_tr [Notebook: Rips and alpha complexes from pairwise distance](Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb). It is also possible to define Rips complexes in general metric spaces from a matrix of pairwise distances. The definition of the metric on the data is usually given as an input or guided by the application. It is however important to notice that the choice of the metric may be critical to reveal interesting topological and geometric features of the data. We also give in this last notebook a way to define alpha complexes from matrix of pairwise distances by first applying a [multidimensional scaling (MDS)](https://en.wikipedia.org/wiki/Multidimensional_scaling) transformation on the matrix. -TDA signatures can extracted from point clouds but in many cases in data sciences the question is to study the topology of the sublevel sets of a function. +TDA signatures can extracted from point clouds but in many cases in data sciences the question is to study the topology of the sublevel sets of a function. ```{r sublevel-sets-example} -knitr::include_graphics("Images/sublevf.png") +knitr::include_graphics("tutorials/Images/sublevf.png") ``` -Above is an example for a function defined on a subset of $\mathbb{R}$ but in general the function $f$ is defined on a subset of $\mathbb{R}^d$. +Above is an example for a function defined on a subset of $\mathbb{R}$ but in general the function $f$ is defined on a subset of $\mathbb{R}^d$. [Notebook: cubical complexes](Tuto-GUDHI-cubical-complexes.ipynb). One first approach for studying the topology of the sublevel sets of a function is to define a regular grid on $\mathbb{R}^d$ and then to define a filtered complex based on this grid and the function $f$. - + ### 02 - Persistent homology and persistence diagrams Homology is a well-known concept in algebraic topology. It provides a powerful tool to formalize and handle the notion of topological features of a topological space or of a simplicial complex in an algebraic way. For any dimension $k$, the $k$-dimensional *holes* are represented by a vector space $H_k$, whose dimension is intuitively the number of such independent features. For example, the $0$-dimensional homology group $H_0$ represents the connected components of the complex, the $1$-dimensional homology group $H_1$ represents the $1$-dimensional loops, the $2$-dimensional homology group $H_2$ represents the $2$-dimensional cavities and so on. @@ -59,10 +59,10 @@ Homology is a well-known concept in algebraic topology. It provides a powerful t Persistent homology is a powerful tool to compute, study and encode efficiently multiscale topological features of nested families of simplicial complexes and topological spaces. It encodes the evolution of the homology groups of the nested complexes across the scales. The diagram below shows several level sets of the filtration: ```{r persistence} -knitr::include_graphics("Images/pers.png") +knitr::include_graphics("tutorials/Images/pers.png") ``` -[Notebook: persistence diagrams](Tuto-GUDHI-persistence-diagrams.ipynb) In this notebook we show how to compute barcodes and persistence diagrams from a filtration defined on the Protein binding dataset. This tutorial also introduces the bottleneck distance between persistence diagrams. +[Notebook: persistence diagrams](Tuto-GUDHI-persistence-diagrams.ipynb) In this notebook we show how to compute barcodes and persistence diagrams from a filtration defined on the Protein binding dataset. This tutorial also introduces the bottleneck distance between persistence diagrams. ### 03 - Representations of persistence and linearization @@ -82,7 +82,7 @@ C. Oballe and V. Maroulas provide a [tutorial](https://github.com/coballejr/misc ### 06 - Machine learning and deep learning with TDA -Two libraries related to Gudhi: +Two libraries related to Gudhi: - [ATOL](https://github.com/martinroyer/atol): Automatic Topologically-Oriented Learning. See [this tutorial](https://github.com/martinroyer/atol/blob/master/demo/atol-demo.ipynb). - [Perslay](https://github.com/MathieuCarriere/perslay): A Simple and Versatile Neural Network Layer for Persistence Diagrams. See [notebook](Tuto-GUDHI-perslay-visu.ipynb). @@ -97,7 +97,7 @@ This [notebook](Tuto-GUDHI-DTM-filtrations.ipynb) introduces the distance to mea ### 10 - TDA and dimension reduction -### 11 - Inverse problem and optimization with TDA +### 11 - Inverse problem and optimization with TDA In this [notebook](Tuto-GUDHI-optimization.ipynb), we will see how Gudhi and Tensorflow can be combined to perform optimization of persistence diagrams to sove an inverse problem. diff --git a/README.md b/README.md index 6fc941b..3a32b94 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ structures that are proven to reflect relevant information about the structure of data and that can be effectively constructed and manipulated in practice. Below is an exemple of simplicial complex: -![simplicial complex example](Images/Pers14.PNG) +![simplicial complex example](tutorials/Images/Pers14.PNG) A filtration is an increasing sequence of sub-complexes of a simplicial complex $\mathcal{K}$. It can be seen as ordering the simplices included in @@ -50,15 +50,15 @@ complexes](https://en.wikipedia.org/wiki/Vietoris%E2%80%93Rips_complex), [alpha complexes](https://en.wikipedia.org/wiki/Alpha_shape#Alpha_complex). -[Notebook: Simplex trees](Tuto-GUDHI-simplex-Trees.ipynb). In Gudhi, +[Notebook: Simplex trees](tutorials/Tuto-GUDHI-simplex-Trees.ipynb). In Gudhi, filtered simplicial complexes are encoded through a data structure called simplex tree. Vertices are represented as integers, edges as pairs of integers, etc. -![simplex tree representation](Images/Simplex_tree_representation.png) +![simplex tree representation](tutorials/Images/Simplex_tree_representation.png) [Notebook: Vietoris-Rips complexes and alpha complexes from data -points](https://github.com/GUDHI/TDA-tutorial/blob/master/Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb). +points](tutorials/Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb). In practice, the first step of the **TDA Analysis Pipeline** is to define a filtration of simplicial complexes for some data. This notebook explains how to build Vietoris-Rips complexes and alpha complexes (represented as @@ -66,11 +66,11 @@ simplex trees) from data points in $\mathbb{R}^d$, using the simplex tree data structure. -This [Notebook](Tuto-GUDHI-alpha-complex-visualization.ipynb) shows how to visualize simplicial complexes. +This [Notebook](tutorials/Tuto-GUDHI-alpha-complex-visualization.ipynb) shows how to visualize simplicial complexes. [Notebook: Rips and alpha complexes from pairwise -distance](Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb). +distance](tutorials/Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb). It is also possible to define Rips complexes in general metric spaces from a matrix of pairwise distances. The definition of the metric on the data is usually given as an input or guided by the application. It is @@ -85,13 +85,13 @@ TDA signatures can extracted from point clouds but in many cases in data sciences the question is to study the topology of the sublevel sets of a function. -![function exemple](Images/sublevf.png) +![function exemple](tutorials/Images/sublevf.png) Above is an example for a function defined on a subset of $\mathbb{R}$ but in general the function $f$ is defined on a subset of $\mathbb{R}^d$. -[Notebook: cubical complexes](Tuto-GUDHI-cubical-complexes.ipynb). One +[Notebook: cubical complexes](tutorials/Tuto-GUDHI-cubical-complexes.ipynb). One first approach for studying the topology of the sublevel sets of a function is to define a regular grid on $\mathbb{R}^d$ and then to define a filtered complex based on this grid and the @@ -115,9 +115,9 @@ simplicial complexes and topological spaces. It encodes the evolution of the homology groups of the nested complexes across the scales. The diagram below shows several level sets of the filtration: -![persistence](Images/pers.png) +![persistence](tutorials/Images/pers.png) -[Notebook: persistence diagrams](https://github.com/GUDHI/TDA-tutorial/blob/master/Tuto-GUDHI-persistence-diagrams.ipynb) +[Notebook: persistence diagrams](tutorials/Tuto-GUDHI-persistence-diagrams.ipynb) In this notebook we show how to compute barcodes and persistence diagrams from a filtration defined on the Protein binding dataset. This tutorial also introduces the bottleneck distance between persistence @@ -125,16 +125,16 @@ diagrams. ### 03 - Representations of persistence and linearization -In this [notebook](Tuto-GUDHI-representations.ipynb), we learn how to +In this [notebook](tutorials/Tuto-GUDHI-representations.ipynb), we learn how to use alternative representations of persistence with the representations module and finally we see a first example of how to efficiently combine machine learning and topological data analysis. -This [notebook](Tuto-GUDHI-Expected-persistence-diagrams.ipynb) +This [notebook](tutorials/Tuto-GUDHI-Expected-persistence-diagrams.ipynb) illustrates the notion of “Expected Persistence Diagram”, which is a way to encode the topology of a random process as a deterministic measure. -This [notebook](Tuto-GUDHI-persistent-entropy.ipynb) shows how to summarize +This [notebook](tutorials/Tuto-GUDHI-persistent-entropy.ipynb) shows how to summarize the information given by persistent homology using persistent entropy (a number) and the ES-function (a curve) and explains in which situations they can be useful. @@ -146,7 +146,7 @@ features close to the diagonal. Since they correspond to topological structures that die very soon after they appear in the filtration, these points are generally considered as “topological noise”. Confidence regions for persistence diagram provide a rigorous framework to this -idea. This [notebook](Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb) +idea. This [notebook](tutorials/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb) introduces the subsampling approach of [Fasy et al. 2014 AoS](https://projecteuclid.org/download/pdfview_1/euclid.aos/1413810729). @@ -167,15 +167,15 @@ Two libraries related to Gudhi: tutorial](https://github.com/martinroyer/atol/blob/master/demo/atol-demo.ipynb). - [Perslay](https://github.com/MathieuCarriere/perslay): A Simple and Versatile Neural Network Layer for Persistence Diagrams. See [this - notebook](Tuto-GUDHI-perslay-visu.ipynb). + notebook](tutorials/Tuto-GUDHI-perslay-visu.ipynb). ### 07 - Alternative filtrations and robust TDA -This [notebook](Tuto-GUDHI-DTM-filtrations.ipynb) introduces the +This [notebook](tutorials/Tuto-GUDHI-DTM-filtrations.ipynb) introduces the distance to measure (DTM) filtration, as defined in [this paper](https://arxiv.org/abs/1811.04757). This filtration can be used for robust TDA. The DTM can also be used for robust approximations of -compact sets, see this [notebook](Tuto-GUDHI-kPDTM-kPLM.ipynb). +compact sets, see this [notebook](tutorials/Tuto-GUDHI-kPDTM-kPLM.ipynb). ### 08 - Topological Data Analysis for Time series @@ -185,49 +185,49 @@ compact sets, see this [notebook](Tuto-GUDHI-kPDTM-kPLM.ipynb). ### 11 - Inverse problem and optimization with TDA -In this [notebook](Tuto-GUDHI-optimization.ipynb), we will see how Gudhi and +In this [notebook](tutorials/Tuto-GUDHI-optimization.ipynb), we will see how Gudhi and Tensorflow can be combined to perform optimization of persistence diagrams to solve an inverse problem. This other, less complete -[notebook](Tuto-GUDHI-PyTorch-optimization.ipynb) shows that this kind of +[notebook](tutorials/Tuto-GUDHI-PyTorch-optimization.ipynb) shows that this kind of optimization works just as well with PyTorch. ## Complete list of notebooks for TDA -[Simplex trees](Tuto-GUDHI-simplex-Trees.ipynb) +[Simplex trees](tutorials/Tuto-GUDHI-simplex-Trees.ipynb) [Vietoris-Rips complexes and alpha complexes from data -points](Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb) +points](tutorials/Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb) [Visualizing simplicial -complexes](Tuto-GUDHI-alpha-complex-visualization.ipynb) +complexes](tutorials/Tuto-GUDHI-alpha-complex-visualization.ipynb) [Rips and alpha complexes from pairwise -distance](Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb) +distance](tutorials/Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb) -[Cubical complexes](Tuto-GUDHI-cubical-complexes.ipynb) +[Cubical complexes](tutorials/Tuto-GUDHI-cubical-complexes.ipynb) [Persistence diagrams and bottleneck -distance](Tuto-GUDHI-persistence-diagrams.ipynb) +distance](tutorials/Tuto-GUDHI-persistence-diagrams.ipynb) -[Representations of persistence](Tuto-GUDHI-representations.ipynb) +[Representations of persistence](tutorials/Tuto-GUDHI-representations.ipynb) [Expected Persistence -Diagram](Tuto-GUDHI-Expected-persistence-diagrams.ipynb) +Diagram](tutorials/Tuto-GUDHI-Expected-persistence-diagrams.ipynb) [Confidence regions for persistence diagrams - data -points](Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb) +points](tutorials/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb) [ATOL tutorial](https://github.com/martinroyer/atol/blob/master/demo/atol-demo.ipynb) -[Perslay](Tuto-GUDHI-perslay-visu.ipynb) +[Perslay](tutorials/Tuto-GUDHI-perslay-visu.ipynb) -[DTM-filtrations](Tuto-GUDHI-DTM-filtrations.ipynb) +[DTM-filtrations](tutorials/Tuto-GUDHI-DTM-filtrations.ipynb) -[kPDTM-kPLM](Tuto-GUDHI-kPDTM-kPLM.ipynb) +[kPDTM-kPLM](tutorials/Tuto-GUDHI-kPDTM-kPLM.ipynb) -[Inverse problem and optimization with TDA](Tuto-GUDHI-optimization.ipynb) +[Inverse problem and optimization with TDA](tutorials/Tuto-GUDHI-optimization.ipynb) -[PyTorch differentiation of diagrams](Tuto-GUDHI-PyTorch-optimization.ipynb) +[PyTorch differentiation of diagrams](tutorials/Tuto-GUDHI-PyTorch-optimization.ipynb) Contact : diff --git a/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb b/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb deleted file mode 100644 index 0aca49a..0000000 --- a/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb +++ /dev/null @@ -1,447 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "# TDA with Python using the Gudhi Library \n", - "\n", - "# Confidence regions for persistence diagrams : data points " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import persistence_statistics as ps\n", - "\n", - "import pandas as pd\n", - "import numpy as np\n", - "import pickle as pickle\n", - "import gudhi as gd \n", - "import seaborn as sbs\n", - "from scipy.spatial import distance_matrix\n", - "from pylab import *" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Introduction" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this tutorial, we introduce confidence regions for persistence diagrams built on a set of data points. We present the subsampling approach of [Fasy et al. 2014 AoS](https://projecteuclid.org/download/pdfview_1/euclid.aos/1413810729). See [this notebook](https://github.com/GUDHI/TDA-tutorial/blob/master/Tuto-GUDHI-persistence-diagrams.ipynb) for an introduction to persistence diagrams with Gudhi." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For many applications of persistent homology, we observe topological features close to the diagonal. Since they correspond to topological structures that die very soon after they appear in the filtration, these points are generally considered as \"topological noise\". Confidence regions for persistence diagram provide a rigorous framework to this idea." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Confidence regions for persistence diagrams provide a rigorous framework for selecting significant topological features in a persistence diagram. We use the bottleneck distance $d_b$ to define confidence regions. We see point clouds as random variables. Under this approach, persistence diagrams are also seen as random quantities." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Confidence regions for persistence diagrams for point cloud data in $\\mathbb R^d$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We introduce the method for a simulated dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "U1 = np.random.uniform(0,2 * pi,size= 1000)\n", - "V1 = np.array([[0.35 * cos(u) +0.02*np.random.uniform(-1,1) ,\n", - " 0.35 *sin(u)+0.02*np.random.uniform(-1,1)] for u in U1])\n", - "U2 = np.random.uniform(0,2 * pi,size= 2000)\n", - "V2 = np.array([[0.7* cos(u) +0.02*np.random.uniform(-1,1) ,\n", - " 0.7*sin(u)+0.02*np.random.uniform(-1,1)] for u in U2])\n", - "W = np.concatenate((V1,V2), axis=0)\n", - "plt.scatter(W[:,0],W[:,1],s=0.1);\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Subsampling approach\n", - "\n", - "Let $\\mathbb X$ and $\\mathbb Y$ be two compact sets.\n", - "For the filtrations given below, persistence homology is stable with respect of Hausdorff perturbations:\n", - "$$\n", - "d_b\\left( Dgm \\left(Filt(\\mathbb X) \\right) , Dgm \\left( Filt(\\mathbb Y) \\right)\\right)\n", - "\\leq C_{Filt}\n", - " Haus \\left(\\mathbb X, \\mathbb Y \\right)\n", - "$$ \n", - "\n", - "The previous inequality is valid for the following Gudhi filtrations: \n", - "- for the Rips complex filtration with $C_{Rips} = 2$, \n", - "- for the $\\sqrt{alpha}$-complexes filtration (see further) with $C_{Alpha}= 1$. \n", - "\n", - "Following [Fasy et al. 2014 AoS](https://projecteuclid.org/download/pdfview_1/euclid.aos/1413810729) we derive confidence sets for persistence diagrams (for $d_b$) from confidence sets for compact sets (for $Haus$). Let $\\mathbb X_n$ be a sample from a distribution $P$ with compact support $\\mathbb X$. \n", - "The aim is to find a parameter $c_\\alpha$ such that\n", - "\n", - "$$ P ( Hauss(\\mathbb X_n, \\mathbb X) \\leq c_\\alpha) \\geq 1-\\alpha .$$\n", - "\n", - "The confidence set $\\mathcal C$ we consider is a subset of all persistence diagrams whose bottleneck distance to $Dgm \\left(Filt(\\mathbb X_n) \\right) $ is less than $d_\\alpha$:\n", - "$$ \\left\\{ Dgm \\: | \\: d_b \\left( Diag , Dgm \\left(Filt(\\mathbb X_n) \\right) \\right) c\\leq d_\\alpha \\right\\}, $$\n", - "with \n", - "$$ d_\\alpha = C_{Filt} c_\\alpha .$$\n", - "\n", - "The `hausd_interval` function from the `persistence_statistics` module implements the subsampling method of [Fasy et al. 2014 AoS](https://projecteuclid.org/download/pdfview_1/euclid.aos/1413810729), it outputs an estimation $\\hat c_\\alpha$ of $c_\\alpha$. By default a multiprocessing computation is applied." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.053896359713091466\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "hatc = ps.hausd_interval(data=W,level = 0.90, m = 2500)\n", - "print(hatc)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Stability and confidence region for the $\\sqrt{alpha}$-filtration" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When computing confidence regions for alpha complexes, we need to be careful with the scale of values of the filtration because the filtration value of each simplex is computed as the square of the circumradius of the simplex (if the circumsphere is empty)." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "Alpha_complex_W = gd.AlphaComplex(points = W)\n", - "Alpha_simplex_tree_W = Alpha_complex_W.create_simplex_tree() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We change the filtration value of each simplex by taking the square root of the filtration values:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "Alpha_simplex_tree_W_list = Alpha_simplex_tree_W.get_filtration()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "for splx in Alpha_simplex_tree_W_list:\n", - " Alpha_simplex_tree_W.assign_filtration(splx[0],filtration= np.sqrt(splx[1]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can compute persistence for the rescaled $\\sqrt{alpha}$ complex filtration." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "pers_alpha_W= Alpha_simplex_tree_W.persistence()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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zZvH5ZdfrsxCREIWlkzDWlsL4JSY3N55YF1L651ltzrZxhafZf76kRYcOnSI++67j5EjR5KamkppaSkjR45UwBCRNgnbdRre6yyaLcsKsD6oZXIqay1/+MMfmDFjBkOHDqWkpIRvf/vbkR6WiMQ4XREehz766COmTp3KJ598wn333ceIESOUWYhIu4jqs6ckNN988w133303o0aNIiMjg9WrVzN8+HAFDBFpNwoaccBaS0VFBSkpKbz33nuUlZVx++23062bEkkRaV/aq8S4999/n6lTp7J9+3YeeOABsrOzlVmISIdRphGjDh482HRDwZEjR7Jy5UqysrIUMESkQyloxBhrLaWlpSQnJ1NXV0dFRQW33XabSlEiEhba08SQv//970yZMoUvv/yy6eFIyixEJJyUacSAAwcOMGvWLL773e9yxRVXsGLFCtLT0xUwRCTsFDSimLWWlStXkpyczLZt2ygvLyc3N5euXbtGemgi0kmpPBWlNm3ahMvlYs+ePRQVFTFs2DBlFiIScco0osy+ffuYMWMG48eP56qrrmL58uUMHTpUAUNEooIyjTDZvN3Nmo072Ln3MH179eSG9ItI7ZfYtN5ay/LlyyksLGTcuHFUVFTQq1evCI5YRORUChod7K5lb/Lax3tOWtb33B58vucQeeMvIbVfIm+//TYul4uDBw/y2GOPkZaWpsxCRKKSgkY7+fJf76D+xRehsRG6dKHbVVdxzxV5vPv5gVO23bnvKADlr7zPotdWUlJSgsvl4sYbb6RLly4KGCIStRQ02sGX/3oH9evWnVjQ2Mjxdeu47v0veXfi9FO2t7aRd156jrUvPc1N37uOyspKzj333DCOWESkbRQ02sFJAcPHiM83nbLsm50f8+nzCzj7DFj05ALShw1RZiEiMUNBowMZn+n6wwfY9uLT7PvgVSb/NJ8f3XYLZ3XvpoAhIjFFQaODWdvIro1/4fMXn+byseP5+SPP0qf3uXQxJnBjEZEoE7ag4Tzr2w1kWmuLglkf7LJo9faxY2xePINze3bjqUW/JTU1me5ddWmMiMSusAQNY0wmgLW22hiTZIzJtNbWtrbeuy7QMt9+osXexgbm79/PC/XHcRW6uOWmf6JndyV1IhL7wvW19zY82QFAHZATxPpgl0WNBmtZ/s1Brtr1FSYzg9+/8AL/59abFTBEJG6Ea2+W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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gd.plot_persistence_diagram(pers_alpha_W);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now define the confidence region for this persistence diagram. We have to take a band of width $ d_\\alpha = C_{Filt} c_\\alpha $ $\\hat c_\\alpha$ to compute and plot the confidence band. The `band` parameter is the vertical height of the confidence region, it is thus twice the value of $\\hat c _\\alpha$ (because the bottleneck distance is based on the $\\ell_\\infty$ norm)." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gd.plot_persistence_diagram(pers_alpha_W, band=2 * hatc);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Only the topological features above the red band are considered as significant. Here we select the main topological features by this way.\n", - "\n", - "Generally speaking, the procedure is very conservative: the band is very large and only very few topological features are seen as significant." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Confidence regions for persistence diagrams of filtrations based on pairwise distances" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The subsampling approach can be also applied when data come has a matrix of pairwise distances." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We illustrate the procedure with the `trefoil_dist` dataset which contains the distances between 1000 points sampled in the neighborhood of a trefoil curve." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "trefoil_dist = pickle.load( open( \"./datasets/trefoil_dist\", \"rb\" ) )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We use again the `hausd_interval` function to infer the Hausdorff distance between the data and the support of the underlying distribution of the data." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.396104059680682\n" - ] - } - ], - "source": [ - "hatc = ps.hausd_interval(trefoil_dist,pairwise_dist=True,level = 0.90, m = 900)\n", - "print(hatc)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we define the Rips complex filtration from the matrix of pairwise distances:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "skeleton_trefoil = gd.RipsComplex(distance_matrix = trefoil_dist,max_edge_length=2) \n", - "Rips_simplex_tree_trefoil = skeleton_trefoil.create_simplex_tree(max_dimension=2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and we compute persistence on this filtration:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "BarCodes_trefoil = Rips_simplex_tree_trefoil.persistence()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To define a confidence band for the persistence diagram, we have to take a band of width $ \\hat d_\\alpha = 2 \\hat c_\\alpha$.\n", - "\n", - "The `band` parameter being the vertical height of the confidence region, it is twice the value of $\\hat d _\\alpha$ (because the bottleneck distance is based on the $\\ell_\\infty$ norm).\n", - "\n", - "So finally we take this band parameter equal to four times $\\hat c_\\alpha$." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gd.plot_persistence_diagram(BarCodes_trefoil,band = 4*hatc);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that only one topological feature of dimension 1 is seen as a significant." - ] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.3" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/Images/CodeCogsEqnRp.gif b/tutorials/Images/CodeCogsEqnRp.gif similarity index 100% rename from Images/CodeCogsEqnRp.gif rename to tutorials/Images/CodeCogsEqnRp.gif diff --git a/Images/MatchingDiag.png b/tutorials/Images/MatchingDiag.png similarity index 100% rename from Images/MatchingDiag.png rename to tutorials/Images/MatchingDiag.png diff --git a/Images/Pers14.PNG b/tutorials/Images/Pers14.PNG similarity index 100% rename from Images/Pers14.PNG rename to tutorials/Images/Pers14.PNG diff --git a/Images/Simplex_tree_representation.png b/tutorials/Images/Simplex_tree_representation.png similarity index 100% rename from Images/Simplex_tree_representation.png rename to tutorials/Images/Simplex_tree_representation.png diff --git a/Images/nappe_distance_avec_bruit.png b/tutorials/Images/nappe_distance_avec_bruit.png similarity index 100% rename from Images/nappe_distance_avec_bruit.png rename to tutorials/Images/nappe_distance_avec_bruit.png diff --git a/Images/nappe_distance_sans_bruit.png b/tutorials/Images/nappe_distance_sans_bruit.png similarity index 100% rename from Images/nappe_distance_sans_bruit.png rename to tutorials/Images/nappe_distance_sans_bruit.png diff --git a/Images/nappe_dtm_avec_bruit.png b/tutorials/Images/nappe_dtm_avec_bruit.png similarity index 100% rename from Images/nappe_dtm_avec_bruit.png rename to tutorials/Images/nappe_dtm_avec_bruit.png diff --git a/Images/pers.png b/tutorials/Images/pers.png similarity index 100% rename from Images/pers.png rename to tutorials/Images/pers.png diff --git a/Images/persistence.png b/tutorials/Images/persistence.png similarity index 100% rename from Images/persistence.png rename to tutorials/Images/persistence.png diff --git a/Images/sous_niveau_kPDTM2.png b/tutorials/Images/sous_niveau_kPDTM2.png similarity index 100% rename from Images/sous_niveau_kPDTM2.png rename to tutorials/Images/sous_niveau_kPDTM2.png diff --git a/Images/sous_niveau_kPDTM_cov2.png b/tutorials/Images/sous_niveau_kPDTM_cov2.png similarity index 100% rename from Images/sous_niveau_kPDTM_cov2.png rename to tutorials/Images/sous_niveau_kPDTM_cov2.png diff --git a/Images/sublevf.png b/tutorials/Images/sublevf.png similarity index 100% rename from Images/sublevf.png rename to tutorials/Images/sublevf.png diff --git a/Images/symbole_infini.png b/tutorials/Images/symbole_infini.png similarity index 100% rename from Images/symbole_infini.png rename to tutorials/Images/symbole_infini.png diff --git a/Tuto-GUDHI-Barycenters-of-persistence-diagrams.ipynb b/tutorials/Tuto-GUDHI-Barycenters-of-persistence-diagrams.ipynb similarity index 100% rename from Tuto-GUDHI-Barycenters-of-persistence-diagrams.ipynb rename to tutorials/Tuto-GUDHI-Barycenters-of-persistence-diagrams.ipynb diff --git a/tutorials/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb b/tutorials/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb new file mode 100644 index 0000000..cb8cdd0 --- /dev/null +++ b/tutorials/Tuto-GUDHI-ConfRegions-PersDiag-datapoints.ipynb @@ -0,0 +1,443 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "source": [ + "# TDA with Python using the Gudhi Library \n", + "\n", + "# Confidence regions for persistence diagrams : data points " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import utils.persistence_statistics as ps\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "import pickle as pickle\n", + "import gudhi as gd \n", + "import seaborn as sbs\n", + "from scipy.spatial import distance_matrix\n", + "from pylab import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial, we introduce confidence regions for persistence diagrams built on a set of data points. We present the subsampling approach of [Fasy et al. 2014 AoS](https://projecteuclid.org/download/pdfview_1/euclid.aos/1413810729). See [this notebook](https://github.com/GUDHI/TDA-tutorial/blob/master/Tuto-GUDHI-persistence-diagrams.ipynb) for an introduction to persistence diagrams with Gudhi." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For many applications of persistent homology, we observe topological features close to the diagonal. Since they correspond to topological structures that die very soon after they appear in the filtration, these points are generally considered as \"topological noise\". Confidence regions for persistence diagram provide a rigorous framework to this idea." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Confidence regions for persistence diagrams provide a rigorous framework for selecting significant topological features in a persistence diagram. We use the bottleneck distance $d_b$ to define confidence regions. We see point clouds as random variables. Under this approach, persistence diagrams are also seen as random quantities." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Confidence regions for persistence diagrams for point cloud data in $\\mathbb R^d$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We introduce the method for a simulated dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "U1 = np.random.uniform(0,2 * pi,size= 1000)\n", + "V1 = np.array([[0.35 * cos(u) +0.02*np.random.uniform(-1,1) ,\n", + " 0.35 *sin(u)+0.02*np.random.uniform(-1,1)] for u in U1])\n", + "U2 = np.random.uniform(0,2 * pi,size= 2000)\n", + "V2 = np.array([[0.7* cos(u) +0.02*np.random.uniform(-1,1) ,\n", + " 0.7*sin(u)+0.02*np.random.uniform(-1,1)] for u in U2])\n", + "W = np.concatenate((V1,V2), axis=0)\n", + "plt.scatter(W[:,0],W[:,1],s=0.1);\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Subsampling approach\n", + "\n", + "Let $\\mathbb X$ and $\\mathbb Y$ be two compact sets.\n", + "For the filtrations given below, persistence homology is stable with respect of Hausdorff perturbations:\n", + "$$\n", + "d_b\\left( Dgm \\left(Filt(\\mathbb X) \\right) , Dgm \\left( Filt(\\mathbb Y) \\right)\\right)\n", + "\\leq C_{Filt}\n", + " Haus \\left(\\mathbb X, \\mathbb Y \\right)\n", + "$$ \n", + "\n", + "The previous inequality is valid for the following Gudhi filtrations: \n", + "- for the Rips complex filtration with $C_{Rips} = 2$, \n", + "- for the $\\sqrt{alpha}$-complexes filtration (see further) with $C_{Alpha}= 1$. \n", + "\n", + "Following [Fasy et al. 2014 AoS](https://projecteuclid.org/download/pdfview_1/euclid.aos/1413810729) we derive confidence sets for persistence diagrams (for $d_b$) from confidence sets for compact sets (for $Haus$). Let $\\mathbb X_n$ be a sample from a distribution $P$ with compact support $\\mathbb X$. \n", + "The aim is to find a parameter $c_\\alpha$ such that\n", + "\n", + "$$ P ( Hauss(\\mathbb X_n, \\mathbb X) \\leq c_\\alpha) \\geq 1-\\alpha .$$\n", + "\n", + "The confidence set $\\mathcal C$ we consider is a subset of all persistence diagrams whose bottleneck distance to $Dgm \\left(Filt(\\mathbb X_n) \\right) $ is less than $d_\\alpha$:\n", + "$$ \\left\\{ Dgm \\: | \\: d_b \\left( Diag , Dgm \\left(Filt(\\mathbb X_n) \\right) \\right) c\\leq d_\\alpha \\right\\}, $$\n", + "with \n", + "$$ d_\\alpha = C_{Filt} c_\\alpha .$$\n", + "\n", + "The `hausd_interval` function from the `persistence_statistics` module implements the subsampling method of [Fasy et al. 2014 AoS](https://projecteuclid.org/download/pdfview_1/euclid.aos/1413810729), it outputs an estimation $\\hat c_\\alpha$ of $c_\\alpha$. By default a multiprocessing computation is applied." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.05282828169979164\n" + ] + } + ], + "source": [ + "hatc = ps.hausd_interval(data=W,level = 0.90, m = 2500)\n", + "print(hatc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Stability and confidence region for the $\\sqrt{alpha}$-filtration" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When computing confidence regions for alpha complexes, we need to be careful with the scale of values of the filtration because the filtration value of each simplex is computed as the square of the circumradius of the simplex (if the circumsphere is empty)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "Alpha_complex_W = gd.AlphaComplex(points = W)\n", + "Alpha_simplex_tree_W = Alpha_complex_W.create_simplex_tree() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We change the filtration value of each simplex by taking the square root of the filtration values:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "Alpha_simplex_tree_W_list = Alpha_simplex_tree_W.get_filtration()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "for splx in Alpha_simplex_tree_W_list:\n", + " Alpha_simplex_tree_W.assign_filtration(splx[0],filtration= np.sqrt(splx[1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can compute persistence for the rescaled $\\sqrt{alpha}$ complex filtration." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "pers_alpha_W= Alpha_simplex_tree_W.persistence()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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zsY111yDyMhIGI1GJCYmMinyACtGREREAWT37t1ISkrC999/j6VLlyI1NRXBwcFyh+U3WDEiIiIKAM3NzXjiiSdw5ZVXoqmpCa+//jrS09OZFHmJFSMiIiI/9/333yM5ORllZWVIT0/HPffcg9DQULnD8ktMjIiIiPyU3W7H888/j+zsbJx//vnYvHkzxo0bJ3dYfo2JERERkR/av38/5s6di/feew933XUX7r33XkRERMgdlt9jYkRERORHJEnCli1bsHjxYgwaNAgFBQWYPHmy3GEFDA6+JiIi8hPHjx/HnXfeieTkZFxzzTXYvn07k6JexooRERGRH/jrX/+KjIwMNDU1Yf369UhISJA7pIDEihEREZEPq62tRWpqKqZPn44xY8Zgx44dTIr6ECtGREREPmrnzp1ITU2FxWLBY489hjvuuIOzV/cxVoyIiIh8zOnTp7FkyRJMmzYNI0eORElJCaZPn86kqB+wYkRERORDPv/8c+j1euzbtw8GgwF33303goJYx+gvPNJEREQ+oLGxEQ8++CAmT56M0NBQbNu2DUlJSUyK+hkrRkRERDL7+uuvkZSUhK+++gpZWVmYN28eH+khE6ahREREMmlpacG6desQGxuL+vp6bNmyhc85kxkrRkRERDIQRREpKSn4+OOPkZycjMWLFyM8PFzusAY8JkZERET9SJIkbNy4EcuXL4cgCHjppZcQFxcnd1jUhokRERFRPzl8+DDS0tLwz3/+EzNnzsTKlSsxZMgQucOiszAxIiIi6gdFRUVYsGABgoOD8dxzz+Haa6+VOyRyg4OviYiI+pDFYsFdd92Fu+66C3FxcSgpKWFS5MNYMSIiIuojb7/9NtLS0nDmzBnk5eXhd7/7HWev9nGsGBEREfWykydPIjMzEzfffDNiYmKwfft23HzzzUyK/AArRkRERL3oo48+QnJyMo4ePYoHH3wQOp2OCZEfYcWIiIioFzQ0NGDlypW49tprIQgCjEYjZs2axaTIz7BiRERE1EO7du1CUlIS9uzZg2XLliElJQXBwcFyh0XdwIoRERFRNzU3N+Oxxx7DlVdeiZaWFrz++utIS0tjUuTHWDEiIiLqhu+++w56vR4VFRVIT0/nM84CBCtGREREXrDb7Xj22Wcxfvx4HDt2DK+++iqWLFnCpChAsGJERETkoR9//BGpqal4//33MXv2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gd.plot_persistence_diagram(pers_alpha_W);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now define the confidence region for this persistence diagram. We have to take a band of width $ d_\\alpha = C_{Filt} c_\\alpha $ $\\hat c_\\alpha$ to compute and plot the confidence band. The `band` parameter is the vertical height of the confidence region, it is thus twice the value of $\\hat c _\\alpha$ (because the bottleneck distance is based on the $\\ell_\\infty$ norm)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gd.plot_persistence_diagram(pers_alpha_W, band=2 * hatc);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Only the topological features above the red band are considered as significant. Here we select the main topological features by this way.\n", + "\n", + "Generally speaking, the procedure is very conservative: the band is very large and only very few topological features are seen as significant." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Confidence regions for persistence diagrams of filtrations based on pairwise distances" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The subsampling approach can be also applied when data come has a matrix of pairwise distances." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We illustrate the procedure with the `trefoil_dist` dataset which contains the distances between 1000 points sampled in the neighborhood of a trefoil curve." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "trefoil_dist = pickle.load( open( \"./datasets/trefoil_dist\", \"rb\" ) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We use again the `hausd_interval` function to infer the Hausdorff distance between the data and the support of the underlying distribution of the data." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.396104059680682\n" + ] + } + ], + "source": [ + "hatc = ps.hausd_interval(trefoil_dist,pairwise_dist=True,level = 0.90, m = 900)\n", + "print(hatc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we define the Rips complex filtration from the matrix of pairwise distances:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "skeleton_trefoil = gd.RipsComplex(distance_matrix = trefoil_dist,max_edge_length=2) \n", + "Rips_simplex_tree_trefoil = skeleton_trefoil.create_simplex_tree(max_dimension=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and we compute persistence on this filtration:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "BarCodes_trefoil = Rips_simplex_tree_trefoil.persistence()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To define a confidence band for the persistence diagram, we have to take a band of width $ \\hat d_\\alpha = 2 \\hat c_\\alpha$.\n", + "\n", + "The `band` parameter being the vertical height of the confidence region, it is twice the value of $\\hat d _\\alpha$ (because the bottleneck distance is based on the $\\ell_\\infty$ norm).\n", + "\n", + "So finally we take this band parameter equal to four times $\\hat c_\\alpha$." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gd.plot_persistence_diagram(BarCodes_trefoil,band = 4*hatc);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that only one topological feature of dimension 1 is seen as a significant." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Tuto-GUDHI-DTM-filtrations.ipynb b/tutorials/Tuto-GUDHI-DTM-filtrations.ipynb similarity index 100% rename from Tuto-GUDHI-DTM-filtrations.ipynb rename to tutorials/Tuto-GUDHI-DTM-filtrations.ipynb diff --git a/Tuto-GUDHI-Expected-persistence-diagrams.ipynb b/tutorials/Tuto-GUDHI-Expected-persistence-diagrams.ipynb similarity index 100% rename from Tuto-GUDHI-Expected-persistence-diagrams.ipynb rename to tutorials/Tuto-GUDHI-Expected-persistence-diagrams.ipynb diff --git a/Tuto-GUDHI-PyTorch-optimization.ipynb b/tutorials/Tuto-GUDHI-PyTorch-optimization.ipynb similarity index 100% rename from Tuto-GUDHI-PyTorch-optimization.ipynb rename to tutorials/Tuto-GUDHI-PyTorch-optimization.ipynb diff --git a/Tuto-GUDHI-Quantization-of-persistence-diagrams.ipynb b/tutorials/Tuto-GUDHI-Quantization-of-persistence-diagrams.ipynb similarity index 100% rename from Tuto-GUDHI-Quantization-of-persistence-diagrams.ipynb rename to tutorials/Tuto-GUDHI-Quantization-of-persistence-diagrams.ipynb diff --git a/Tuto-GUDHI-alpha-complex-visualization.ipynb b/tutorials/Tuto-GUDHI-alpha-complex-visualization.ipynb similarity index 100% rename from Tuto-GUDHI-alpha-complex-visualization.ipynb rename to tutorials/Tuto-GUDHI-alpha-complex-visualization.ipynb diff --git a/Tuto-GUDHI-cover-complex.ipynb b/tutorials/Tuto-GUDHI-cover-complex.ipynb similarity index 100% rename from Tuto-GUDHI-cover-complex.ipynb rename to tutorials/Tuto-GUDHI-cover-complex.ipynb diff --git a/Tuto-GUDHI-cubical-complexes.ipynb b/tutorials/Tuto-GUDHI-cubical-complexes.ipynb similarity index 100% rename from Tuto-GUDHI-cubical-complexes.ipynb rename to tutorials/Tuto-GUDHI-cubical-complexes.ipynb diff --git a/Tuto-GUDHI-extended-persistence.ipynb b/tutorials/Tuto-GUDHI-extended-persistence.ipynb similarity index 100% rename from Tuto-GUDHI-extended-persistence.ipynb rename to tutorials/Tuto-GUDHI-extended-persistence.ipynb diff --git a/Tuto-GUDHI-kPDTM-kPLM.ipynb b/tutorials/Tuto-GUDHI-kPDTM-kPLM.ipynb similarity index 100% rename from Tuto-GUDHI-kPDTM-kPLM.ipynb rename to tutorials/Tuto-GUDHI-kPDTM-kPLM.ipynb diff --git a/Tuto-GUDHI-optimization.ipynb b/tutorials/Tuto-GUDHI-optimization.ipynb similarity index 99% rename from Tuto-GUDHI-optimization.ipynb rename to tutorials/Tuto-GUDHI-optimization.ipynb index 298e74b..a969c37 100644 --- a/Tuto-GUDHI-optimization.ipynb +++ b/tutorials/Tuto-GUDHI-optimization.ipynb @@ -363,7 +363,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can actually play the same game with images! Indeed, Gudhi contains code for computing [cubical persistence](http://www2.im.uj.edu.pl/mpd/publications/Wagner_persistence.pdf), which is very well-suited for handling images. For instance, it can be used to filter a 2D image with its pixel values. Overall, the optimization follows the exact same steps as before, except that we use pixel filtration instead of Rips filtration. This means that the parameters $\\theta$ that we are now going to optimize are the pixel values themselves, and that the gradients for positive simplex $\\nabla_\\theta f_\\theta(\\sigma_+(p))$ and negative simplex $\\nabla_\\theta f_\\theta(\\sigma_-(p))$ now simply equal $1$ for the pixels associated to $\\sigma_+(p)$ and $\\sigma_-(p)$ and $0$ for all other pixels. All of that is implemented in `CubicalLayer`." + "We can actually play the same game with images! Indeed, Gudhi contains code for computing [cubical persistence](https://www.vrvis.at/publications/pdfs/PB-VRVis-2011-010.pdf), which is very well-suited for handling images. For instance, it can be used to filter a 2D image with its pixel values. Overall, the optimization follows the exact same steps as before, except that we use pixel filtration instead of Rips filtration. This means that the parameters $\\theta$ that we are now going to optimize are the pixel values themselves, and that the gradients for positive simplex $\\nabla_\\theta f_\\theta(\\sigma_+(p))$ and negative simplex $\\nabla_\\theta f_\\theta(\\sigma_-(p))$ now simply equal $1$ for the pixels associated to $\\sigma_+(p)$ and $\\sigma_-(p)$ and $0$ for all other pixels. All of that is implemented in `CubicalLayer`." ] }, { diff --git a/Tuto-GUDHI-persistence-diagrams.ipynb b/tutorials/Tuto-GUDHI-persistence-diagrams.ipynb similarity index 100% rename from Tuto-GUDHI-persistence-diagrams.ipynb rename to tutorials/Tuto-GUDHI-persistence-diagrams.ipynb diff --git a/Tuto-GUDHI-persistent-entropy.ipynb b/tutorials/Tuto-GUDHI-persistent-entropy.ipynb similarity index 100% rename from Tuto-GUDHI-persistent-entropy.ipynb rename to tutorials/Tuto-GUDHI-persistent-entropy.ipynb diff --git a/Tuto-GUDHI-perslay-visu.ipynb b/tutorials/Tuto-GUDHI-perslay-visu.ipynb similarity index 100% rename from Tuto-GUDHI-perslay-visu.ipynb rename to tutorials/Tuto-GUDHI-perslay-visu.ipynb diff --git a/Tuto-GUDHI-representations.ipynb b/tutorials/Tuto-GUDHI-representations.ipynb similarity index 100% rename from Tuto-GUDHI-representations.ipynb rename to tutorials/Tuto-GUDHI-representations.ipynb diff --git a/Tuto-GUDHI-simplex-Trees.ipynb b/tutorials/Tuto-GUDHI-simplex-Trees.ipynb similarity index 100% rename from Tuto-GUDHI-simplex-Trees.ipynb rename to tutorials/Tuto-GUDHI-simplex-Trees.ipynb diff --git a/Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb b/tutorials/Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb similarity index 100% rename from Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb rename to tutorials/Tuto-GUDHI-simplicial-complexes-from-data-points.ipynb diff --git a/Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb b/tutorials/Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb similarity index 100% rename from Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb rename to tutorials/Tuto-GUDHI-simplicial-complexes-from-distance-matrix.ipynb diff --git a/datasets/Corr_ProteinBinding/1anf.corr_1.txt b/tutorials/datasets/Corr_ProteinBinding/1anf.corr_1.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1anf.corr_1.txt rename to tutorials/datasets/Corr_ProteinBinding/1anf.corr_1.txt diff --git a/datasets/Corr_ProteinBinding/1ez9.corr_1.txt b/tutorials/datasets/Corr_ProteinBinding/1ez9.corr_1.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1ez9.corr_1.txt rename to tutorials/datasets/Corr_ProteinBinding/1ez9.corr_1.txt diff --git a/datasets/Corr_ProteinBinding/1fqa.corr_2.txt b/tutorials/datasets/Corr_ProteinBinding/1fqa.corr_2.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1fqa.corr_2.txt rename to tutorials/datasets/Corr_ProteinBinding/1fqa.corr_2.txt diff --git a/datasets/Corr_ProteinBinding/1fqb.corr_3.txt b/tutorials/datasets/Corr_ProteinBinding/1fqb.corr_3.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1fqb.corr_3.txt rename to tutorials/datasets/Corr_ProteinBinding/1fqb.corr_3.txt diff --git a/datasets/Corr_ProteinBinding/1fqc.corr_2.txt b/tutorials/datasets/Corr_ProteinBinding/1fqc.corr_2.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1fqc.corr_2.txt rename to tutorials/datasets/Corr_ProteinBinding/1fqc.corr_2.txt diff --git a/datasets/Corr_ProteinBinding/1fqd.corr_3.txt b/tutorials/datasets/Corr_ProteinBinding/1fqd.corr_3.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1fqd.corr_3.txt rename to tutorials/datasets/Corr_ProteinBinding/1fqd.corr_3.txt diff --git a/datasets/Corr_ProteinBinding/1jw4.corr_4.txt b/tutorials/datasets/Corr_ProteinBinding/1jw4.corr_4.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1jw4.corr_4.txt rename to tutorials/datasets/Corr_ProteinBinding/1jw4.corr_4.txt diff --git a/datasets/Corr_ProteinBinding/1jw5.corr_5.txt b/tutorials/datasets/Corr_ProteinBinding/1jw5.corr_5.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1jw5.corr_5.txt rename to tutorials/datasets/Corr_ProteinBinding/1jw5.corr_5.txt diff --git a/datasets/Corr_ProteinBinding/1lls.corr_6.txt b/tutorials/datasets/Corr_ProteinBinding/1lls.corr_6.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1lls.corr_6.txt rename to tutorials/datasets/Corr_ProteinBinding/1lls.corr_6.txt diff --git a/datasets/Corr_ProteinBinding/1mpd.corr_4.txt b/tutorials/datasets/Corr_ProteinBinding/1mpd.corr_4.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1mpd.corr_4.txt rename to tutorials/datasets/Corr_ProteinBinding/1mpd.corr_4.txt diff --git a/datasets/Corr_ProteinBinding/1omp.corr_7.txt b/tutorials/datasets/Corr_ProteinBinding/1omp.corr_7.txt similarity index 100% rename from datasets/Corr_ProteinBinding/1omp.corr_7.txt rename to tutorials/datasets/Corr_ProteinBinding/1omp.corr_7.txt diff --git a/datasets/Corr_ProteinBinding/3hpi.corr_5.txt b/tutorials/datasets/Corr_ProteinBinding/3hpi.corr_5.txt similarity index 100% rename from datasets/Corr_ProteinBinding/3hpi.corr_5.txt rename to tutorials/datasets/Corr_ProteinBinding/3hpi.corr_5.txt diff --git a/datasets/Corr_ProteinBinding/3mbp.corr_6.txt b/tutorials/datasets/Corr_ProteinBinding/3mbp.corr_6.txt similarity index 100% rename from datasets/Corr_ProteinBinding/3mbp.corr_6.txt rename to tutorials/datasets/Corr_ProteinBinding/3mbp.corr_6.txt diff --git a/datasets/Corr_ProteinBinding/4mbp.corr_7.txt b/tutorials/datasets/Corr_ProteinBinding/4mbp.corr_7.txt similarity index 100% rename from datasets/Corr_ProteinBinding/4mbp.corr_7.txt rename to tutorials/datasets/Corr_ProteinBinding/4mbp.corr_7.txt diff --git a/datasets/ElongatedTorus.txt b/tutorials/datasets/ElongatedTorus.txt similarity index 100% rename from datasets/ElongatedTorus.txt rename to tutorials/datasets/ElongatedTorus.txt diff --git a/datasets/NoisyTrefoil180.txt b/tutorials/datasets/NoisyTrefoil180.txt similarity index 100% rename from datasets/NoisyTrefoil180.txt rename to tutorials/datasets/NoisyTrefoil180.txt diff --git a/datasets/crater_tuto b/tutorials/datasets/crater_tuto similarity index 100% rename from datasets/crater_tuto rename to tutorials/datasets/crater_tuto diff --git a/datasets/data_acc b/tutorials/datasets/data_acc similarity index 100% rename from datasets/data_acc rename to tutorials/datasets/data_acc diff --git a/datasets/diff/mnist_test.csv b/tutorials/datasets/diff/mnist_test.csv similarity index 100% rename from datasets/diff/mnist_test.csv rename to tutorials/datasets/diff/mnist_test.csv diff --git a/datasets/human.off b/tutorials/datasets/human.off similarity index 100% rename from datasets/human.off rename to tutorials/datasets/human.off diff --git a/datasets/human.txt b/tutorials/datasets/human.txt similarity index 100% rename from datasets/human.txt rename to tutorials/datasets/human.txt diff --git a/datasets/mnist_test.csv b/tutorials/datasets/mnist_test.csv similarity index 100% rename from datasets/mnist_test.csv rename to tutorials/datasets/mnist_test.csv diff --git a/datasets/tore3D_1307.off b/tutorials/datasets/tore3D_1307.off similarity index 100% rename from datasets/tore3D_1307.off rename to tutorials/datasets/tore3D_1307.off diff --git a/datasets/trefoil_dist b/tutorials/datasets/trefoil_dist similarity index 100% rename from datasets/trefoil_dist rename to tutorials/datasets/trefoil_dist diff --git a/utils/KeplerMapperVisuFromTxtFile.py b/tutorials/utils/KeplerMapperVisuFromTxtFile.py similarity index 100% rename from utils/KeplerMapperVisuFromTxtFile.py rename to tutorials/utils/KeplerMapperVisuFromTxtFile.py diff --git a/utils/broken_links_scraper.py b/tutorials/utils/broken_links_scraper.py similarity index 100% rename from utils/broken_links_scraper.py rename to tutorials/utils/broken_links_scraper.py diff --git a/persistence_statistics.py b/tutorials/utils/persistence_statistics.py similarity index 51% rename from persistence_statistics.py rename to tutorials/utils/persistence_statistics.py index 16e867b..60e8301 100644 --- a/persistence_statistics.py +++ b/tutorials/utils/persistence_statistics.py @@ -1,118 +1,104 @@ -def hausd_interval(data, level = 0.95, m=-1, B =1000,pairwise_dist = False, - leaf_size = 2,ncores = None): - - ''' - Subsampling Confidence Interval for the Hausdorff Distance between a +def hausd_interval(data, level=0.95, m=-1, B=1000, pairwise_dist=False, leaf_size=2, ncores=None): + """ + Subsampling Confidence Interval for the Hausdorff Distance between a Manifold and a Sample Fasy et al AOS 2014 - + Input: data : a nxd numpy array representing n points in R^d, or a nxn matrix of pairwise distances - m : size of each subsample. If m=-1 then m = n / np.log(n) - B : number of subsamples + m : size of each subsample. If m=-1 then m = n / np.log(n) + B : number of subsamples level : confidence level pairwise_dist : if pairwise_dist = True then data is a nxn matrix of pairwise distances leaf_size : leaf size for KDTree ncores : number of cores for multiprocessing (if None then the maximum number of cores is used) - - Output: + + Output: quantile for the Hausdorff distance - - - ''' - - + + + """ + import numpy as np from multiprocessing import Pool from sklearn.neighbors import KDTree - - # sample size - n = np.size(data,0) - + n = np.size(data, 0) + # subsample size if m == -1: - m = int (n / np.log(n)) - - + m = int(n / np.log(n)) + # Data is an array if pairwise_dist == False: - + # for subsampling - # a reprendre sans shuffle slit + # a reprendre sans shuffle slit - global hauss_dist + def hauss_dist(m): - ''' + """ Distances between the points of data and a random subsample of data of size m - ''' - I = np.random.choice(n,m) + """ + I = np.random.choice(n, m) Icomp = [item for item in np.arange(n) if item not in I] - tree = KDTree(data[I,],leaf_size=leaf_size) - dist, ind = tree.query(data[Icomp,],k=1) + tree = KDTree(data[I,], leaf_size=leaf_size) + dist, ind = tree.query(data[Icomp,], k=1) hdist = max(dist) - return(hdist) - + return hdist + # parrallel computing with Pool(ncores) as p: - dist_vec = p.map(hauss_dist,[m]*B) + dist_vec = p.map(hauss_dist, [m] * B) p.close() - dist_vec = [a[0] for a in dist_vec] - - - # Data is a matrix of pairwise distances + dist_vec = [a[0] for a in dist_vec] + + # Data is a matrix of pairwise distances else: + def hauss_dist(m): - ''' + """ Distances between the points of data and a random subsample of data of size m - ''' - I = np.random.choice(n,m) - hdist= np.max([np.min(data[I,j]) for j in np.arange(n) if j not in I]) - return(hdist) - + """ + I = np.random.choice(n, m) + hdist = np.max([np.min(data[I, j]) for j in np.arange(n) if j not in I]) + return hdist + # parrallel computing with Pool(ncores) as p: - dist_vec = p.map(hauss_dist, [m]*B) + dist_vec = p.map(hauss_dist, [m] * B) p.close() - - + # quantile and confidence band myquantile = np.quantile(dist_vec, level) - c = 2 * myquantile - - return(c) - - + c = 2 * myquantile + return c +def truncated_simplex_tree(st, int_trunc=100): + """ + This function return a truncated simplex tree - -def truncated_simplex_tree(st,int_trunc=100): - ''' - This function return a truncated simplex tree - Input: st : a simplex tree int_trunc : number of persistent interval keept per dimension (the largest) - + Ouptut: - st_trunc_pers : truncated simplex tree - ''' - - st.persistence() + st_trunc_pers : truncated simplex tree + """ + + st.persistence() dim = st.dimension() - st_trunc_pers = []; + st_trunc_pers = [] for d in range(dim): pers_d = st.persistence_intervals_in_dimension(d) - d_l= len(pers_d) + d_l = len(pers_d) if d_l > int_trunc: - pers_d_trunc = [pers_d[i] for i in range(d_l-int_trunc,d_l)] + pers_d_trunc = [pers_d[i] for i in range(d_l - int_trunc, d_l)] else: pers_d_trunc = pers_d - st_trunc_pers = st_trunc_pers + [(d,(l[0],l[1])) for l in pers_d_trunc] - return(st_trunc_pers) - - + st_trunc_pers = st_trunc_pers + [(d, (l[0], l[1])) for l in pers_d_trunc] + return st_trunc_pers diff --git a/utils/utils_dtm.py b/tutorials/utils/utils_dtm.py similarity index 100% rename from utils/utils_dtm.py rename to tutorials/utils/utils_dtm.py diff --git a/utils/utils_epd.py b/tutorials/utils/utils_epd.py similarity index 100% rename from utils/utils_epd.py rename to tutorials/utils/utils_epd.py diff --git a/utils/utils_quantization.py b/tutorials/utils/utils_quantization.py similarity index 100% rename from utils/utils_quantization.py rename to tutorials/utils/utils_quantization.py