From 286644d42dea658b7263bd0dcdb21cf2a48cfdfa Mon Sep 17 00:00:00 2001 From: MathieuCarriere Date: Thu, 19 Oct 2023 11:35:38 +0200 Subject: [PATCH 1/2] added better visu --- Tuto-GUDHI-cover-complex.ipynb | 181 ++++++++++++++++++++++++++++----- 1 file changed, 156 insertions(+), 25 deletions(-) diff --git a/Tuto-GUDHI-cover-complex.ipynb b/Tuto-GUDHI-cover-complex.ipynb index 7a0ec38..2d02a24 100644 --- a/Tuto-GUDHI-cover-complex.ipynb +++ b/Tuto-GUDHI-cover-complex.ipynb @@ -1062,7 +1062,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -1073,16 +1073,27 @@ } ], "source": [ + "def set_axes_equal(ax: plt.Axes):\n", + " limits = np.array([\n", + " ax.get_xlim3d(),\n", + " ax.get_ylim3d(),\n", + " ax.get_zlim3d(),\n", + " ])\n", + " origin = np.mean(limits, axis=1)\n", + " radius = 0.5 * np.max(np.abs(limits[:, 1] - limits[:, 0]))\n", + " _set_axes_radius(ax, origin, radius)\n", + "\n", + "def _set_axes_radius(ax, origin, radius):\n", + " x, y, z = origin\n", + " ax.set_xlim3d([x - radius, x + radius])\n", + " ax.set_ylim3d([y - radius, y + radius])\n", + " ax.set_zlim3d([z - radius, z + radius])\n", + " \n", "fig = plt.figure()\n", - "ax = fig.add_subplot(111, projection='3d')\n", + "ax = fig.add_subplot(projection='3d')\n", + "ax.set_aspect('equal')\n", "ax.scatter(X[::2,1], X[::2,0], X[::2,2], s=1)\n", - "limits = np.array([ax.get_xlim3d(), ax.get_ylim3d(), ax.get_zlim3d()])\n", - "origin = np.mean(limits, axis=1)\n", - "radius = 0.5 * np.max(np.abs(limits[:, 1] - limits[:, 0]))\n", - "x, y, z = origin\n", - "ax.set_xlim3d([x - radius, x + radius])\n", - "ax.set_ylim3d([y - radius, y + radius])\n", - "ax.set_zlim3d([z - radius, z + radius])\n", + "set_axes_equal(ax)\n", "plt.show()" ] }, @@ -4046,7 +4057,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -4055,7 +4066,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -4067,9 +4078,96 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n", + "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", + " warnings.warn(\n" + ] + } + ], "source": [ "_ = cover_complex.fit(X, filters=filt2d, colors=filt2d)" ] @@ -4097,7 +4195,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -4106,7 +4204,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -4115,7 +4213,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -5106,7 +5204,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -5131,7 +5229,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -6122,7 +6220,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -6138,7 +6236,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -6154,16 +6252,16 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ - "cover_complex.save_to_txt(file_name=\"human\", color_name=\"color\")" + "cover_complex.save_to_txt(file_name=\"human\", data_name=\"human\", cover_name=\"uniform\", color_name=\"height\")" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -6178,6 +6276,39 @@ "!python ./utils/KeplerMapperVisuFromTxtFile.py -f human.txt" ] }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(src=\"human.html\", width='100%', height='500px')" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -8649,7 +8780,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.11.4" }, "toc": { "base_numbering": 1, From f58b210fa215433a801415c60aff0ccc4c90550a Mon Sep 17 00:00:00 2001 From: MathieuCarriere Date: Wed, 25 Oct 2023 10:56:58 +0200 Subject: [PATCH 2/2] removed deprecation warning + fixed 3D visu with equal axes --- Tuto-GUDHI-cover-complex.ipynb | 2186 ++++++++++++++++++++++++++++---- 1 file changed, 1952 insertions(+), 234 deletions(-) diff --git a/Tuto-GUDHI-cover-complex.ipynb b/Tuto-GUDHI-cover-complex.ipynb index 2d02a24..9779526 100644 --- a/Tuto-GUDHI-cover-complex.ipynb +++ b/Tuto-GUDHI-cover-complex.ipynb @@ -1062,7 +1062,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -1081,9 +1081,6 @@ " ])\n", " origin = np.mean(limits, axis=1)\n", " radius = 0.5 * np.max(np.abs(limits[:, 1] - limits[:, 0]))\n", - " _set_axes_radius(ax, origin, radius)\n", - "\n", - "def _set_axes_radius(ax, origin, radius):\n", " x, y, z = origin\n", " ax.set_xlim3d([x - radius, x + radius])\n", " ax.set_ylim3d([y - radius, y + radius])\n", @@ -1091,7 +1088,7 @@ " \n", "fig = plt.figure()\n", "ax = fig.add_subplot(projection='3d')\n", - "ax.set_aspect('equal')\n", + "ax.set_box_aspect([1.0, 1.0, 1.0])\n", "ax.scatter(X[::2,1], X[::2,0], X[::2,2], s=1)\n", "set_axes_equal(ax)\n", "plt.show()" @@ -1117,31 +1114,1779 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We next provide different configurations for computing cover complexes:" + "We next provide different configurations for computing cover complexes:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Graph Induced complex with a Voronoi partition with 100 randomly sampled germs and Rips graph obtained with automatic threshold. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "cover_complex = GraphInducedComplex(\n", + " input_type='point cloud', cover='voronoi', min_points_per_node=0,\n", + " graph=\"rips\", rips_threshold=None, N=100, beta=0., C=10,\n", + " voronoi_samples=100, verbose=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "15910 points in R^3\n", + "Subsampling 3786 points\n", + "Computing distances...\n", + "\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "0%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "10%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "20%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "30%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "40%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "50%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "60%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "70%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "80%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "90%\r", + "100%\n", + "delta = 0.0613632\n", + "Computing geodesic distances to seed 0...\n", + "Computing geodesic distances to seed 1...\n", + "Computing geodesic distances to seed 2...\n", + "Computing geodesic distances to seed 3...\n", + "Computing geodesic distances to seed 4...\n", + "Computing geodesic distances to seed 5...\n", + "Computing geodesic distances to seed 6...\n", + "Computing geodesic distances to seed 7...\n", + "Computing geodesic distances to seed 8...\n", + "Computing geodesic distances to seed 9...\n", + "Computing geodesic distances to seed 10...\n", + "Computing geodesic distances to seed 11...\n", + "Computing geodesic distances to seed 12...\n", + "Computing geodesic distances to seed 13...\n", + "Computing geodesic distances to seed 14...\n", + "Computing geodesic distances to seed 15...\n", + "Computing geodesic distances to seed 16...\n", + "Computing geodesic distances to seed 17...\n", + "Computing geodesic distances to seed 18...\n", + "Computing geodesic distances to seed 19...\n", + "Computing geodesic distances to seed 20...\n", + "Computing geodesic distances to seed 21...\n", + "Computing geodesic distances to seed 22...\n", + "Computing geodesic distances to seed 23...\n", + "Computing geodesic distances to seed 24...\n", + "Computing geodesic distances to seed 25...\n", + "Computing geodesic distances to seed 26...\n", + "Computing geodesic distances to seed 27...\n", + "Computing geodesic distances to seed 28...\n", + "Computing geodesic distances to seed 29...\n", + "Computing geodesic distances to seed 30...\n", + "Computing geodesic distances to seed 31...\n", + "Computing geodesic distances to seed 32...\n", + "Computing geodesic distances to seed 33...\n", + "Computing geodesic distances to seed 34...\n", + "Computing geodesic distances to seed 35...\n", + "Computing geodesic distances to seed 36...\n", + "Computing geodesic distances to seed 37...\n", + "Computing geodesic distances to seed 38...\n", + "Computing geodesic distances to seed 39...\n", + "Computing geodesic distances to seed 40...\n", + "Computing geodesic distances to seed 41...\n", + "Computing geodesic distances to seed 42...\n", + "Computing geodesic distances to seed 43...\n", + "Computing geodesic distances to seed 44...\n", + "Computing geodesic distances to seed 45...\n", + "Computing geodesic distances to seed 46...\n", + "Computing geodesic distances to seed 47...\n", + "Computing geodesic distances to seed 48...\n", + "Computing geodesic distances to seed 49...\n", + "Computing geodesic distances to seed 50...\n", + "Computing geodesic distances to seed 51...\n", + "Computing geodesic distances to seed 52...\n", + "Computing geodesic distances to seed 53...\n", + "Computing geodesic distances to seed 54...\n", + "Computing geodesic distances to seed 55...\n", + "Computing geodesic distances to seed 56...\n", + "Computing geodesic distances to seed 57...\n", + "Computing geodesic distances to seed 58...\n", + "Computing geodesic distances to seed 59...\n", + "Computing geodesic distances to seed 60...\n", + "Computing geodesic distances to seed 61...\n", + "Computing geodesic distances to seed 62...\n", + "Computing geodesic distances to seed 63...\n", + "Computing geodesic distances to seed 64...\n", + "Computing geodesic distances to seed 65...\n", + "Computing geodesic distances to seed 66...\n", + "Computing geodesic distances to seed 67...\n", + "Computing geodesic distances to seed 68...\n", + "Computing geodesic distances to seed 69...\n", + "Computing geodesic distances to seed 70...\n", + "Computing geodesic distances to seed 71...\n", + "Computing geodesic distances to seed 72...\n", + "Computing geodesic distances to seed 73...\n", + "Computing geodesic distances to seed 74...\n", + "Computing geodesic distances to seed 75...\n", + "Computing geodesic distances to seed 76...\n", + "Computing geodesic distances to seed 77...\n", + "Computing geodesic distances to seed 78...\n", + "Computing geodesic distances to seed 79...\n", + "Computing geodesic distances to seed 80...\n", + "Computing geodesic distances to seed 81...\n", + "Computing geodesic distances to seed 82...\n", + "Computing geodesic distances to seed 83...\n", + "Computing geodesic distances to seed 84...\n", + "Computing geodesic distances to seed 85...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Computing geodesic distances to seed 86...\n", + "Computing geodesic distances to seed 87...\n", + "Computing geodesic distances to seed 88...\n", + "Computing geodesic distances to seed 89...\n", + "Computing geodesic distances to seed 90...\n", + "Computing geodesic distances to seed 91...\n", + "Computing geodesic distances to seed 92...\n", + "Computing geodesic distances to seed 93...\n", + "Computing geodesic distances to seed 94...\n", + "Computing geodesic distances to seed 95...\n", + "Computing geodesic distances to seed 96...\n", + "Computing geodesic distances to seed 97...\n", + "Computing geodesic distances to seed 98...\n", + "Computing geodesic distances to seed 99...\n" + ] + } + ], + "source": [ + "_ = cover_complex.fit(X, filter=height, color=height)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Graph Induced complex with a Voronoi partition with 100 randomly sampled germs and Rips graph obtained with automatic threshold. " + "Graph Induced complex with a preimage partition with automatic resolution and Rips graph obtained with automatic threshold. " ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "cover_complex = GraphInducedComplex(\n", - " input_type='point cloud', cover='voronoi', min_points_per_node=0,\n", + " input_type='point cloud', cover='functional', min_points_per_node=0,\n", " graph=\"rips\", rips_threshold=None, N=100, beta=0., C=10,\n", - " voronoi_samples=100, verbose=True)" + " resolution=None, gain=0., verbose=True)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -2752,79 +4497,38 @@ "90%\r", "90%\r", "100%\n", - "delta = 0.0614359\n", - "Computing geodesic distances (parallelized)...\n" - ] - } - ], - "source": [ - "_ = cover_complex.fit(X, filter=height, color=height)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Graph Induced complex with a preimage partition with automatic resolution and Rips graph obtained with automatic threshold. " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "cover_complex = GraphInducedComplex(\n", - " input_type='point cloud', cover='functional', min_points_per_node=0,\n", - " graph=\"rips\", rips_threshold=None, N=100, beta=0., C=10,\n", - " resolution=None, gain=0., verbose=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "15910 points in R^3\n", - "Subsampling 3786 points\n", - "Computing distances...\n", - "100%\n", - "delta = 0.0596065\n", - "resolution = 0.059534\n", + "delta = 0.0616142\n", + "resolution = 0.061597\n", "Min function value = -0.846853 and Max function value = 0.819366\n", - "Interval 0 = [-0.846853, -0.787319]\n", - "Interval 1 = [-0.787319, -0.727785]\n", - "Interval 2 = [-0.727785, -0.668251]\n", - "Interval 3 = [-0.668251, -0.608717]\n", - "Interval 4 = [-0.608717, -0.549183]\n", - "Interval 5 = [-0.549183, -0.489649]\n", - "Interval 6 = [-0.489649, -0.430115]\n", - "Interval 7 = [-0.430115, -0.370581]\n", - "Interval 8 = [-0.370581, -0.311047]\n", - "Interval 9 = [-0.311047, -0.251513]\n", - "Interval 10 = [-0.251513, -0.191979]\n", - "Interval 11 = [-0.191979, -0.132445]\n", - "Interval 12 = [-0.132445, -0.072911]\n", - "Interval 13 = [-0.072911, -0.013377]\n", - "Interval 14 = [-0.013377, 0.046157]\n", - "Interval 15 = [0.046157, 0.105691]\n", - "Interval 16 = [0.105691, 0.165225]\n", - "Interval 17 = [0.165225, 0.224759]\n", - "Interval 18 = [0.224759, 0.284293]\n", - "Interval 19 = [0.284293, 0.343827]\n", - "Interval 20 = [0.343827, 0.403361]\n", - "Interval 21 = [0.403361, 0.462895]\n", - "Interval 22 = [0.462895, 0.522429]\n", - "Interval 23 = [0.522429, 0.581963]\n", - "Interval 24 = [0.581963, 0.641497]\n", - "Interval 25 = [0.641497, 0.701031]\n", - "Interval 26 = [0.701031, 0.819366]\n", + "Interval 0 = [-0.846853, -0.785256]\n", + "Interval 1 = [-0.785256, -0.723659]\n", + "Interval 2 = [-0.723659, -0.662062]\n", + "Interval 3 = [-0.662062, -0.600465]\n", + "Interval 4 = [-0.600465, -0.538868]\n", + "Interval 5 = [-0.538868, -0.477271]\n", + "Interval 6 = [-0.477271, -0.415674]\n", + "Interval 7 = [-0.415674, -0.354077]\n", + "Interval 8 = [-0.354077, -0.29248]\n", + "Interval 9 = [-0.29248, -0.230883]\n", + "Interval 10 = [-0.230883, -0.169286]\n", + "Interval 11 = [-0.169286, -0.107689]\n", + "Interval 12 = [-0.107689, -0.046092]\n", + "Interval 13 = [-0.046092, 0.015505]\n", + "Interval 14 = [0.015505, 0.077102]\n", + "Interval 15 = [0.077102, 0.138699]\n", + "Interval 16 = [0.138699, 0.200296]\n", + "Interval 17 = [0.200296, 0.261893]\n", + "Interval 18 = [0.261893, 0.32349]\n", + "Interval 19 = [0.32349, 0.385087]\n", + "Interval 20 = [0.385087, 0.446684]\n", + "Interval 21 = [0.446684, 0.508281]\n", + "Interval 22 = [0.508281, 0.569878]\n", + "Interval 23 = [0.569878, 0.631475]\n", + "Interval 24 = [0.631475, 0.693072]\n", + "Interval 25 = [0.693072, 0.754669]\n", + "Interval 26 = [0.754669, 0.819366]\n", "Computing preimages...\n", - "Computing connected components (parallelized)...\n" + "Computing connected components...\n" ] } ], @@ -2841,7 +4545,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -2854,7 +4558,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -2877,7 +4581,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -2886,7 +4590,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -2895,7 +4599,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -3886,7 +5590,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -3911,7 +5615,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -3927,7 +5631,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -3939,7 +5643,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -3948,25 +5652,25 @@ "text": [ "15910 points in R^0\n", "Subsampling 3786 points\n", - "delta = 0.0610347\n", - "resolution = 0.0609878\n", + "delta = 0.061323\n", + "resolution = 0.0612461\n", "Min function value = 0.96263 and Max function value = 1.86879\n", - "Interval 0 = [0.96263, 1.02362]\n", - "Interval 1 = [1.02362, 1.08461]\n", - "Interval 2 = [1.08461, 1.14559]\n", - "Interval 3 = [1.14559, 1.20658]\n", - "Interval 4 = [1.20658, 1.26757]\n", - "Interval 5 = [1.26757, 1.32856]\n", - "Interval 6 = [1.32856, 1.38954]\n", - "Interval 7 = [1.38954, 1.45053]\n", - "Interval 8 = [1.45053, 1.51152]\n", - "Interval 9 = [1.51152, 1.57251]\n", - "Interval 10 = [1.57251, 1.6335]\n", - "Interval 11 = [1.6335, 1.69448]\n", - "Interval 12 = [1.69448, 1.75547]\n", - "Interval 13 = [1.75547, 1.86879]\n", + "Interval 0 = [0.96263, 1.02388]\n", + "Interval 1 = [1.02388, 1.08512]\n", + "Interval 2 = [1.08512, 1.14637]\n", + "Interval 3 = [1.14637, 1.20761]\n", + "Interval 4 = [1.20761, 1.26886]\n", + "Interval 5 = [1.26886, 1.33011]\n", + "Interval 6 = [1.33011, 1.39135]\n", + "Interval 7 = [1.39135, 1.4526]\n", + "Interval 8 = [1.4526, 1.51384]\n", + "Interval 9 = [1.51384, 1.57509]\n", + "Interval 10 = [1.57509, 1.63634]\n", + "Interval 11 = [1.63634, 1.69758]\n", + "Interval 12 = [1.69758, 1.75883]\n", + "Interval 13 = [1.75883, 1.86879]\n", "Computing preimages...\n", - "Computing connected components (parallelized)...\n" + "Computing connected components...\n" ] } ], @@ -3983,7 +5687,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -3995,7 +5699,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -4004,8 +5708,107 @@ "text": [ "15910 points in R^0\n", "Subsampling 3786 points\n", - "delta = 0.0619632\n", - "Computing geodesic distances (parallelized)...\n" + "delta = 0.0616358\n", + "Computing geodesic distances to seed 0...\n", + "Computing geodesic distances to seed 1...\n", + "Computing geodesic distances to seed 2...\n", + "Computing geodesic distances to seed 3...\n", + "Computing geodesic distances to seed 4...\n", + "Computing geodesic distances to seed 5...\n", + "Computing geodesic distances to seed 6...\n", + "Computing geodesic distances to seed 7...\n", + "Computing geodesic distances to seed 8...\n", + "Computing geodesic distances to seed 9...\n", + "Computing geodesic distances to seed 10...\n", + "Computing geodesic distances to seed 11...\n", + "Computing geodesic distances to seed 12...\n", + "Computing geodesic distances to seed 13...\n", + "Computing geodesic distances to seed 14...\n", + "Computing geodesic distances to seed 15...\n", + "Computing geodesic distances to seed 16...\n", + "Computing geodesic distances to seed 17...\n", + "Computing geodesic distances to seed 18...\n", + "Computing geodesic distances to seed 19...\n", + "Computing geodesic distances to seed 20...\n", + "Computing geodesic distances to seed 21...\n", + "Computing geodesic distances to seed 22...\n", + "Computing geodesic distances to seed 23...\n", + "Computing geodesic distances to seed 24...\n", + "Computing geodesic distances to seed 25...\n", + "Computing geodesic distances to seed 26...\n", + "Computing geodesic distances to seed 27...\n", + "Computing geodesic distances to seed 28...\n", + "Computing geodesic distances to seed 29...\n", + "Computing geodesic distances to seed 30...\n", + "Computing geodesic distances to seed 31...\n", + "Computing geodesic distances to seed 32...\n", + "Computing geodesic distances to seed 33...\n", + "Computing geodesic distances to seed 34...\n", + "Computing geodesic distances to seed 35...\n", + "Computing geodesic distances to seed 36...\n", + "Computing geodesic distances to seed 37...\n", + "Computing geodesic distances to seed 38...\n", + "Computing geodesic distances to seed 39...\n", + "Computing geodesic distances to seed 40...\n", + "Computing geodesic distances to seed 41...\n", + "Computing geodesic distances to seed 42...\n", + "Computing geodesic distances to seed 43...\n", + "Computing geodesic distances to seed 44...\n", + "Computing geodesic distances to seed 45...\n", + "Computing geodesic distances to seed 46...\n", + "Computing geodesic distances to seed 47...\n", + "Computing geodesic distances to seed 48...\n", + "Computing geodesic distances to seed 49...\n", + "Computing geodesic distances to seed 50...\n", + "Computing geodesic distances to seed 51...\n", + "Computing geodesic distances to seed 52...\n", + "Computing geodesic distances to seed 53...\n", + "Computing geodesic distances to seed 54...\n", + "Computing geodesic distances to seed 55...\n", + "Computing geodesic distances to seed 56...\n", + "Computing geodesic distances to seed 57...\n", + "Computing geodesic distances to seed 58...\n", + "Computing geodesic distances to seed 59...\n", + "Computing geodesic distances to seed 60...\n", + "Computing geodesic distances to seed 61...\n", + "Computing geodesic distances to seed 62...\n", + "Computing geodesic distances to seed 63...\n", + "Computing geodesic distances to seed 64...\n", + "Computing geodesic distances to seed 65...\n", + "Computing geodesic distances to seed 66...\n", + "Computing geodesic distances to seed 67...\n", + "Computing geodesic distances to seed 68...\n", + "Computing geodesic distances to seed 69...\n", + "Computing geodesic distances to seed 70...\n", + "Computing geodesic distances to seed 71...\n", + "Computing geodesic distances to seed 72...\n", + "Computing geodesic distances to seed 73...\n", + "Computing geodesic distances to seed 74...\n", + "Computing geodesic distances to seed 75...\n", + "Computing geodesic distances to seed 76...\n", + "Computing geodesic distances to seed 77...\n", + "Computing geodesic distances to seed 78...\n", + "Computing geodesic distances to seed 79...\n", + "Computing geodesic distances to seed 80...\n", + "Computing geodesic distances to seed 81...\n", + "Computing geodesic distances to seed 82...\n", + "Computing geodesic distances to seed 83...\n", + "Computing geodesic distances to seed 84...\n", + "Computing geodesic distances to seed 85...\n", + "Computing geodesic distances to seed 86...\n", + "Computing geodesic distances to seed 87...\n", + "Computing geodesic distances to seed 88...\n", + "Computing geodesic distances to seed 89...\n", + "Computing geodesic distances to seed 90...\n", + "Computing geodesic distances to seed 91...\n", + "Computing geodesic distances to seed 92...\n", + "Computing geodesic distances to seed 93...\n", + "Computing geodesic distances to seed 94...\n", + "Computing geodesic distances to seed 95...\n", + "Computing geodesic distances to seed 96...\n", + "Computing geodesic distances to seed 97...\n", + "Computing geodesic distances to seed 98...\n", + "Computing geodesic distances to seed 99...\n" ] } ], @@ -4022,7 +5825,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -4034,7 +5837,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -4057,7 +5860,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -4066,7 +5869,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -4078,96 +5881,11 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 24, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n", - "/user/mcarrier/home/.local/lib/python3.11/site-packages/sklearn/cluster/_agglomerative.py:1005: FutureWarning: Attribute `affinity` was deprecated in version 1.2 and will be removed in 1.4. Use `metric` instead\n", - " warnings.warn(\n" - ] - } - ], + "outputs": [], "source": [ "_ = cover_complex.fit(X, filters=filt2d, colors=filt2d)" ] @@ -4195,7 +5913,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -4204,7 +5922,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -4213,7 +5931,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -5229,7 +6947,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -6236,7 +7954,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -6252,7 +7970,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -6261,7 +7979,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -6278,7 +7996,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -6296,10 +8014,10 @@ " " ], "text/plain": [ - "" + "" ] }, - "execution_count": 22, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -6325,7 +8043,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -6338,7 +8056,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -6347,7 +8065,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -6356,7 +8074,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -6607,7 +8325,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -6616,7 +8334,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -7607,7 +9325,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -7636,14 +9354,14 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:27<00:00, 3.59it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:46<00:00, 2.14it/s]\n" ] } ], @@ -7653,7 +9371,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -7662,7 +9380,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -7671,7 +9389,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -8662,7 +10380,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -8698,7 +10416,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -8707,7 +10425,7 @@ "(array([0, 1, 2]), array([0., 0., 0.]))" ] }, - "execution_count": 41, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -8718,16 +10436,16 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(array([0, 2, 1]), array([0.00000000e+000, 0.00000000e+000, 3.87238276e-289]))" + "(array([1, 2, 0]), array([0.00000000e+000, 0.00000000e+000, 4.87710222e-147]))" ] }, - "execution_count": 42, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -8738,16 +10456,16 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(array([0, 2, 1]), array([0.00000000e+000, 0.00000000e+000, 9.31466329e-244]))" + "(array([0, 2, 1]), array([0.00000000e+000, 0.00000000e+000, 3.13211519e-128]))" ] }, - "execution_count": 43, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" }