diff --git a/TDA_Background.ipynb b/TDA_Background.ipynb index 8af3affcda8cf47c11dce670803b9651299f156b..d600a82fe125d0dc07fe18266f092e25cad8cbe6 100644 --- a/TDA_Background.ipynb +++ b/TDA_Background.ipynb @@ -11,31 +11,16 @@ "<p style=\"text-align: center;\">Gif from: https://gfycat.com/disgustingblanddromedary</p>" ] }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from ripser import ripser\n", - "from persim import plot_diagrams\n", - "\n", - "%matplotlib inline" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Background\n", - "\n", - "Define TDA... in simple terms.\n", + "The tools from Topological Data Analysis (TDA) emerged in response to the issues in high-dimensional data. Essentially, TDA seeks to utilize tools from topology, a brach of mathematics “concerned with the properties of a geometric object that are preserved under continuous deformations, such as stretching, twisting, crumpling and bending, but not tearing or gluing,†[1] to analyze data. How does topology relate to data analysis? TDA seeks to utilize mathematical, statistical, and algorithmic methods to make inferences and analyze the topological structure and geometric structures of data [2]. \n", "\n", "This notebook (and the remaining notebooks) are designed to introduce data scientists to TDA without needing a background in math.\n", "\n", - "Before exploring TDA applications, this notebook will cover some of the most important topics in TDA." + "Before exploring TDA applications, this particular notebook will cover some of the most important topics in TDA." ] }, { @@ -49,75 +34,312 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, "source": [ - "### Homology" + "import numpy as np\n", + "import scipy as sp\n", + "import ripser\n", + "import matplotlib.pyplot as plt\n", + "import scipy.spatial.distance as distance\n", + "import scipy.io as sio\n", + "import time\n", + "import copy\n", + "\n", + "from matplotlib.offsetbox import OffsetImage, AnnotationBbox\n", + "from scipy.sparse import csr_matrix\n", + "from scipy.sparse.csgraph import floyd_warshall\n", + "from sklearn.neighbors import kneighbors_graph\n", + "\n", + "from matplotlib.patches import Circle\n", + "from persim import plot_diagrams\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import random \n", + "import numpy as np\n", + "\n", + "from ripser import ripser\n", + "from ripser import Rips\n", + "from persim import plot_diagrams\n", + "\n", + "from IPython.display import display, clear_output\n", + "import time\n", + "\n", + "%matplotlib inline" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 5, "metadata": {}, + "outputs": [], "source": [ - "#### Betti Number" + "def maxmin(dist_matrix, n):\n", + " '''\n", + " Given a distance matrix retunrs a maxmin subsampling and the covering radious \n", + " corresponding to the subsampled set.\n", + " \n", + " :param dist_matrix: Distance matrix\n", + " :param n: Size of subsample set.\n", + " :returns L: List of indices corresponding to the subsample set.\n", + " :return cr: Covering radious for the subsample set.\n", + " '''\n", + " L = [np.random.randint(0,len(dist_matrix))]\n", + " \n", + " dist_to_L = dist_matrix[ L[-1] ,:]\n", + " \n", + " for i in range(n-1):\n", + " ind = np.argmax( dist_to_L )\n", + " L.append(ind)\n", + " \n", + " dist_to_L = np.minimum(dist_to_L, dist_matrix[L[-1], :])\n", + " \n", + " cr = np.max(dist_to_L)\n", + "\n", + " return L, cr\n", + "\n", + "def uniform_sampling(dist_matrix, n):\n", + " '''\n", + " Given a distance matrix retunrs an subsamplig that preserves the distribution of the original data set \n", + " and the covering radious corresponding to the subsampled set.\n", + " \n", + " :param dist_matrix: Distance matrix\n", + " :param n: Size of subsample set.\n", + " :returns L: List of indices corresponding to the subsample set.\n", + " :return cr: Covering radious for the subsample set.\n", + " '''\n", + " num_points = dist_matrix.shape[0]\n", + " \n", + " L = np.random.choice(num_points, n)\n", + " \n", + " dist_to_L = np.min(dist_matrix[L,:], axis=0)\n", + " \n", + " return L, np.max(dist_to_L)" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 40, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<Figure size 1200x700 with 0 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "(-1.9555140864980118, 1.9555140864980118)" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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fdizZw8ikQiuu+46/OxnP+vxSntDsVjE4cOHkUqlkEqlcPjwYZRKpW0fc91112147++8884+rbhz/vZv/xbnnnsuwuEwrrjiCvz3f//3tvf/1re+hYsvvhiqquLiiy/Gt7/97T6ttDe0c/xf+9rXNrzHkiTBMIw+rrg7/Nd//RduvfVW7NmzB5Ik4Z/+6Z92fMwPfvADXHHFFQiHwzjvvPPwpS99qQ8r7T7tHvsTTzyx6fv+3HPP9WnFg4fFywhhWRZuv/12fOhDH2rrce9617tw5swZ8fOd73ynRyvsHZ0c++c+9zl8/vOfxxe/+EUcPXoUc3NzeOc73ynmX40S73//+3H8+HE89thjeOyxx3D8+HEcPnx4x8fddddd6977L3/5y31Ybed885vfxEc+8hF8/OMfx9NPP423ve1tuPnmm3Hq1KlN73/kyBHccccdOHz4MJ555hkcPnwY73vf+/CjH/2ozyvvDu0eP3DWcdX/Hp85cwbhcLiPq+4O9Xodv/Irv4IvfvGLLd3/pZdewrvf/W687W1vw9NPP40/+ZM/wd13341vfetbPV5p92n32IkTJ06se98vuOCCHq1wCPGYkeOrX/2ql0qlWrrvb/7mb3rvec97eryi/tHqsbuu683NzXl//ud/Lm4zDMNLpVLel770pV4usev8/Oc/9wB4Tz31lLjtyJEjHgDvueee2/Jx1157rff7v//7/Vhi13jrW9/q/c7v/M662w4cOOD98R//8ab3f9/73ue9613vWnfbTTfd5N155509W2Mvaff42zkXjBIAvG9/+9vb3ueee+7xDhw4sO623/7t3/auuuqqXi6t57Ry7I8//rgHwCsWi31a1fDBkZcJ4Ikn6oZrxQAABmxJREFUnsDMzAwuvPBC3HXXXVhZWRn0knrOSy+9hKWlJdx4443iNlVVce211+LJJ58c4Mra58iRI0ilUrjyyivFbVdddRVSqdSOx/Lwww8jl8vhzW9+Mz760Y8OddTJsiz8+Mc/XveeAcCNN9645XEeOXJkw/1vuummkXuPgc6OHwBqtRoWFxexd+9e/Nqv/RqefvrpXi91KNjqvT927Bhs2x7QqvrLZZddhvn5edxwww14/PHHB72cvsI2fWPOzTffjNtvvx2Li4t46aWX8IlPfALveMc78OMf/xiqqg56eT1jaWkJADA7O7vu9tnZWbzyyiuDWFLHLC0tYWZmZsPtMzMz4jg34wMf+ADOPfdczM3N4dlnn8W9996LZ555Bt/73vd6udyOWV1dRaPR2PQ92+o4l5aW2rr/MNPJ8R84cABf+9rXcMkll6BSqeCv//qv8au/+qt45plnxj6FsNV77zgOVldXMT8/P6CV9Z75+Xl85StfwRVXXAHTNPHQQw/hhhtuwBNPPIG3v/3tg15eX2DxMmDuu+8+3H///dve5+jRozh06FBHv/+OO+4Qfz948CAOHTqExcVFPProo3jve9/b0e/sFr0+dgCQJGndvz3P23DboGj1+IGNxwHsfCx33XWX+PvBgwdxwQUX4NChQ/jJT36Cyy+/vMNV957/187dhMLWx3EA/z3MOeQlXUaNFMri2Lg14yUHsZOFkqWkyV4iGzvsRom6kpVsLJS3hZTMAguExZHX4l7jbeNqFkzZUN9n4THdwfNcxzXOnKfvp2bhnP84v+/5O/qdcf7Mzlksz/F7mMlTVlYW8QB+RUWFeDweGRoakm/fvkW1zljw2rl6bfv/jaZpomla+Gtd1+Xi4kL6+/vZvNDnaG1t/e0KkLy8vA87XlZWluTm5srx8fGHfc/3imZ2l8slIo93Z7/egf38+fPF3ZpV3pp/Z2dHrq6uXuy7vr42lcXj8YiiKHJ8fByTzYvT6ZT4+PgXnzL815y5XC5T42PZe/I/FxcXJyUlJTFxfUfbv829w+GQjIwMi6qyTllZmYyPj1tdxqdh82Ixp9MpTqfz044XDAbl4uIiJj5SjWb2pz+X+P1+cbvdIvL4TMHKyor09fVF5ZhmvTW/rutyc3Mjm5ubUlpaKiIiGxsbcnNzI+Xl5W8+3v7+vtzf38fE3L9GVVUpKioSv98vDQ0N4e1+v1/q6+tffY+u6+L3+6WjoyO8bXFx0dR5iRXvyf8cANne3pbCwsJolRkzdF2Xubm5iG2Li4tSXFwsiqJYVJV1DMOI2Ws7Kix8WJhMOjs7g2EY6O3tRUpKCgzDgGEYCIVC4TGapmFmZgYAEAqF0NnZibW1NQQCASwtLUHXdWRnZ+P29taqGO9iNjsA+Hw+pKWlYWZmBru7u2hsbERWVpbtsgNAbW0tvn79ivX1dayvr6OwsBB1dXXh/ZeXl9A0DRsbGwCA79+/o7e3F1tbWwgEApifn0dBQQHcbjceHh6sivFbExMTUBQFo6OjODg4QHt7O5KTk3F6egoAaG5ujlh5s7q6ivj4ePh8PhweHsLn88HhcESszLITs/l7enqwsLCAHz9+wDAMtLS0wOFwhH8O7CQUCoWvaxHBwMAADMPA2dkZAKCrqwvNzc3h8ScnJ0hKSkJHRwcODg4wOjoKRVEwNTVlVYR3M5t9cHAQs7OzODo6wt7eHrq6uiAimJ6etirCp2PzYiNerxci8uK1tLQUHiMiGBsbAwDc3d2hpqYGmZmZUBQFOTk58Hq9OD8/tybAHzCbHXhcLt3d3Q2Xy4WEhARUVVVhd3f384v/AMFgEE1NTUhNTUVqaiqampoilkkGAoGI83F+fo6qqiqkp6dDVVXk5+ejra0NwWDQogRvNzw8jNzcXKiqCo/Hg5WVlfC+6upqeL3eiPGTk5PQNA2KoqCgoMD2v8DN5G9vb0dOTg5UVUVmZiZqamqwtrZmQdV/7mn57/PXU16v14vq6uqI9ywvL8PtdkNVVeTl5WFkZOTzC/8AZrP39fUhPz8fiYmJ+PLlCyorKzE/P29N8Rb5C/jnCSciIiIiG+D/eSEiIiJbYfNCREREtsLmhYiIiGyFzQsRERHZCpsXIiIishU2L0RERGQrbF6IiIjIVti8EBERka2weSEiIiJbYfNCREREtsLmhYiIiGyFzQsRERHZyt+8gOToBrJUTAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "#### Euler-Poincare Formula" + "\n", + "n=200\n", + "theta = np.random.uniform(0, 2*np.pi, n)\n", + "\n", + "# Generate radii with Gaussian noise centered at 1\n", + "r = 1 + np.random.normal(0, 0.05, n)\n", + "r[0] = 0\n", + "# Use angles and radii to generate circle \n", + "X = r[:,np.newaxis]*np.concatenate((np.cos(theta)[:,np.newaxis], np.sin(theta)[:,np.newaxis]), axis=1)\n", + "# Compute the distance matrix for the data set X using auclidean distance.\n", + "dm_X = distance.cdist(X,X)\n", + "\n", + "ind_L, cover_r = uniform_sampling(dm_X, 20)\n", + "\n", + "# scatter plot the landmark subset\n", + "fig, ax = plt.subplots()\n", + "#plt.scatter(X[:,0], X[:,1], c=theta, cmap='jet')\n", + "plt.scatter(X[ind_L,0], X[ind_L,1], c='black')\n", + "R=np.arange(0,1.5,0.1)\n", + "# Plot balls or radious defined by the covering radious of the landmark set\n", + "for point in range(len(ind_L)):\n", + " cir = Circle((X[ind_L[point],0], X[ind_L[point],1]),.5, color=(.5,.5,.5,0.2))\n", + " ax.add_patch(cir)\n", + " \n", + " \n", + " \n", + "fig = plt.figure(figsize = (12,7))\n", + "time.sleep(0.2)\n", + "clear_output(wait=True) # Clear output for dynamic display\n", + "display(fig) # Reset display\n", + "fig.clear() # Prevent overlapping and layered plots\n", + "plt.close();\n", + "\n", + " \n", + "ax.set_ylim(-1-cover_r,1+cover_r)\n", + "ax.set_xlim(-1-cover_r,1+cover_r)" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 34, "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "### Persistent Homology" + "cir = Circle((X[ind_L[point],0], X[ind_L[point],1]),.5, color=(.5,.5,.5,0.2))\n", + "dgms = ripser(X, maxdim=0, thresh=1)['dgms']\n", + "plot_diagrams(dgms, show=True)" ] }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": true - }, + "execution_count": 79, + "metadata": {}, "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'matplotlib.pyplot' has no attribute 'add_patch'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-79-feb8b3743107>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mpoint\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind_L\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mcir\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCircle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mind_L\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mind_L\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcover_r\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_patch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcir\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 23\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_ylim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mcover_r\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mcover_r\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_xlim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mcover_r\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mcover_r\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: module 'matplotlib.pyplot' has no attribute 'add_patch'" + ] + }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "<Figure size 432x288 with 1 Axes>" + "<Figure size 640x480 with 1 Axes>" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "from sklearn.datasets import make_blobs\n", + "def animate_H0(data, radius):\n", + " fig = plt.figure(figsize=(6,6))\n", + " fig.suptitle('Persistent Homology of a Circle (H0)')\n", + " plt.subplot(121)\n", + " plt.scatter(X[ind_L,0], X[ind_L,1], c='red')\n", + " for point in range(len(ind_L)):\n", + " cir = Circle((X[ind_L[point],0], X[ind_L[point],1]), cover_r, color=(0.7,0.2,0.5,0.2))\n", + " add_patch(cir)\n", + " plt.subplot(122)\n", + " dgms = ripser(X, maxdim=0, thresh=radius)['dgms']\n", + " plt.plot_diagrams(dgms, show=True)\n", "\n", - "X, y = make_blobs(n_samples=10, centers=3, n_features=2, random_state=0)\n", "\n", - "plt.scatter(X[y == 0, 0], X[y == 0, 1], color=\"red\", s=10)\n", - "plt.scatter(X[y == 1, 0], X[y == 1, 1], color=\"blue\", s=10)\n", + " \n", "\n", - "plt.show()" + "plt.scatter(X[ind_L,0], X[ind_L,1], c='red')\n", + "plt.subplot(121)\n", + "plt.scatter(X[ind_L,0], X[ind_L,1], c='red')\n", + "# Plot balls or radious defined by the covering radious of the landmark set\n", + "for point in range(len(ind_L)):\n", + " cir = Circle((X[ind_L[point],0], X[ind_L[point],1]), cover_r, color=(0.6,0.6,0.6,0.2))\n", + " ax.add_patch(cir)\n", + "plt.set_ylim(-1-cover_r,1+cover_r)\n", + "plt.set_xlim(-1-cover_r,1+cover_r)\n", + "\n", + "plt.subplot(122)\n", + "dgms = ripser(X, maxdim=0, thresh=1)['dgms']\n", + "plot_diagrams(dgms, show=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'add_patch' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-74-fc37399fbb5e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0manimate_H0\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m<ipython-input-73-1df6d4c94ef9>\u001b[0m in \u001b[0;36manimate_H0\u001b[0;34m(data, radius)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mpoint\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind_L\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mcir\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCircle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mind_L\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mind_L\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcover_r\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.7\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0madd_patch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcir\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m122\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mdgms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mripser\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmaxdim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mthresh\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mradius\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'dgms'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'add_patch' is not defined" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcAAAAI1CAYAAABBkipEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdfXxU1YH/8e8wkAQERiHmicQQqTwVoRINSdxoFIkgoJjFgtQg/VUQ0EJEC0a0RaxSQF2oEPEJKVvWUjG4UpE1KGh2CQiUYFVE64IJkOFJSHjQBIb7+2M2I5OZPJIhD+fzfr3uS+fMueeeO8nlm3Pn3HttlmVZAgDAMK0auwMAADQGAhAAYCQCEABgJAIQAGAkAhAAYCQCEABgJAIQAGAkAhAAYCQCEABgJAIQ1Vq2bJlsNptnad26taKjo/XLX/5S+/fvb7T+7N27t07rPfPMM3r77bcD06lK1q5dq1mzZtW6/rhx49S+ffsq32/fvr3GjRt34R0LoHHjxqlr166N3Y0GsXfvXg0dOlSdOnWSzWZTZmZmQLf36aef6pe//KXi4uIUEhKi9u3bq3///po3b56+++47T73U1FSlpqY26LZtNludfldr48yZM+rZs6f+8Ic/eMoqjttt27b5XWfYsGF+f3/Wr1+vpKQktWvXTqGhoRo3bpwOHTrkVeeDDz5Q+/bt6/XvEQGIWnn99deVn5+v3NxcjR8/Xm+88YZSUlJ06tSpi9qPoUOHKj8/X5GRkXVa72IH4JNPPnlRtoWG99BDD2nLli1aunSp8vPz9dBDDwVsW6+88ori4+O1detW/eY3v9G6deu0evVq3XXXXVqyZIl+9atfeepmZ2crOzs7YH1pKNnZ2Tp27Jh+/etfX1A7H330kYYMGaLw8HD953/+pxYuXKj169dr4MCBKisr89QbOHCgEhIS9Nhjj9V5G60vqIcwRp8+fXTttddKkm666Sa5XC499dRTevvtt/WLX/zigtp2uVw6e/asgoODa6x7+eWX6/LLL7+g7QHV+eyzz5SQkKARI0YEdDv5+fmaNGmSBg0apLffftvr93/QoEF6+OGHtW7dOk9Z7969a2yzLsdSIJw9e1bz58/X//t//0+XXHLJBbX1m9/8Rt27d9eqVavUurU7quLi4nT99ddr6dKlmjRpkqfuAw88oFGjRun3v/+9YmJiar0NRoCol8TEREnSt99+6ylzOp26//77FR0draCgIMXFxenJJ5/U2bNnPXX27t0rm82mefPm6fe//73i4uIUHBysDRs26Ny5c/r973+vHj16qG3btrr00kvVt29fLVy40LO+v1OgO3bs0LBhwxQWFqbg4GBFRUVp6NCh2rdvnyT3aZ5Tp07pT3/6k+dU7vmnkurS72effVbPP/+84uLi1L59eyUlJWnz5s2eeuPGjdPixYs9261Y6nrKtiaFhYW65557PPvcq1cvPffcczp37pxPn+fPn6+5c+eqa9euatu2rVJTU/XVV1/pzJkzevTRRxUVFSWHw6E777zT5/TSuXPnNG/ePPXs2VPBwcEKCwvT2LFjPZ9tdX744QdlZWUpLi5OQUFB6tKlix544AEdP37cq15ZWZkefvhhRUREqF27drrhhhu0fft2de3a1XPqd+/evWrdurXmzJnjs52PP/5YNptNb7755gV9Zhs3bpTNZtM///lPvffee7X62S1evFg33HCDwsLCdMkll+jqq6/WvHnzdObMmRo/n2eeeUY2m00vv/yy38AKCgrS7bff7nld+RRodceSJB0/flwPP/ywrrzySs/P7rbbbtOXX35Zbb9qczxU5Z133tH+/fuVkZFRY93q7N+/X1u3blVGRoYn/CQpOTlZ3bt31+rVq73qDx8+XO3bt9crr7xSp+0wAkS9/POf/5Qkz2jM6XQqISFBrVq10m9/+1t169ZN+fn5+v3vf6+9e/fq9ddf91r/j3/8o7p3765nn31WHTt21FVXXaV58+Zp1qxZevzxx3XDDTfozJkz+vLLL33+wTzfqVOnNGjQIMXFxWnx4sUKDw+X0+nUhg0bdOLECUnuv7Rvvvlm3XTTTXriiSckSR07dqxXvxcvXqyePXtqwYIFkqQnnnhCt912m/bs2SOHw6EnnnhCp06d0qpVq5Sfn+9ZrzanbGvzD4wkHT58WMnJySovL9dTTz2lrl276m9/+5seeeQRffPNNz6nyRYvXqy+fftq8eLFnn8Uhw8frgEDBqhNmzZaunSpvv32Wz3yyCO677779M4773jWnTRpkl5++WU9+OCDGjZsmPbu3asnnnhCGzdu1N///neFhob67aNlWRoxYoQ++OADZWVlKSUlRZ9++ql+97vfKT8/X/n5+Z5/9H/5y19q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bLrpppsaZDs333yzJOnPf/6zV/nWrVu1a9cuDRw4sNo++lv3rbfe0qlTpzzv33DDDZKklStXetVbtWqV38kSISEhmjBhgv70pz/p+eef189+9jNdf/31Ne5LID6ziuA5fwanZVm1nomYlZUly7I0fvx4lZeX+7x/5swZrVmzps79kqQhQ4boq6++qvOp3Qs9Hnr27KlvvvmmXn0+X5cuXZSQkKA///nPcrlcnvLNmzdr9+7dSk9P91nnf//3f9W5c2efswnVYQSIBjF79mzl5uYqOTlZU6ZMUY8ePfTDDz9o7969Wrt2rZYsWVLjX7nDhw/3XG94+eWX69tvv9WCBQsUGxurq666yu86f/vb35Sdna0RI0boyiuvlGVZysnJ0fHjxzVo0CBPvauvvlobN27UmjVrFBkZqQ4dOqhHjx4N0u/Krr76aknS3LlzNWTIENntdvXt29dzivFCPfTQQ1q+fLmGDh2q2bNnKzY2Vu+++66ys7M1adIkde/evUG206NHD02YMEEvvPCCWrVqpSFDhnhmgcbExFR7gfigQYN06623asaMGSotLdX111/vmQV6zTXXeKbJ//SnP9Xdd9+t5557Tna7XTfffLM+//xzPffcc3I4HD6nfyVp8uTJmjdvnrZv365XX321VvsSiM9s0KBBCgoK0t13363p06frhx9+0Isvvqhjx47Vav2kpCS9+OKLmjx5suLj4zVp0iT99Kc/1ZkzZ7Rjxw69/PLL6tOnj4YPH17nvmVmZmrlypW644479OijjyohIUHff/+9PvroIw0bNqzKwL/Q4yE1NVWzZ8/W6dOnqzxjU1tz587VoEGDdNddd2ny5Mk6dOiQHn30UfXp00e//OUvfepv3rxZN954Y5XfG/pV6+kyMFLF7K2tW7fWWPfw4cPWlClTrLi4OKtNmzZWp06drPj4eGvmzJmemVkVM9fmz5/vs/5zzz1nJScnW6GhoVZQUJB1xRVXWL/61a+svXv3+vSnYhbol19+ad19991Wt27drLZt21oOh8NKSEiwli1b5tV2QUGBdf3111vt2rWzJHnNprvQfqvSTLqysjLrvvvusy6//HLLZrN59defe++917rkkkuqfN/fDNZvv/3WGjNmjNW5c2erTZs2Vo8ePaz58+d7zfasqs8VsynffPNNr3J/P2uXy2XNnTvX6t69u9WmTRsrNDTUuueee6yioiKffTh/Fp9lWdb3339vzZgxw4qNjbXatGljRUZGWpMmTbKOHTvmVe+HH36wpk2bZoWFhVkhISFWYmKilZ+fbzkcDuuhhx7y+5mkpqZanTp1sk6fPl3l51ZZbT4zy6rbLNA1a9ZY/fr1s0JCQqwuXbpYv/nNb6z33nvPkmRt2LChVm0UFBRY9957r3XFFVdYQUFB1iWXXGJdc8011m9/+1vr0KFDnnpVzQL19ztpWZZ17Ngxa+rUqdYVV1xhtWnTxgoLC7OGDh1qffnll546lX93Lat2x0NV/vnPf1o2m83661//6lVe078jQ4cO9fn9sSzLev/9963ExEQrJCTE6tSpkzV27Fjr4MGDfrcryXrrrbeq7V9lNsuqdAEGADSyTZs26frrr9eKFSs0ZswYr/cOHTqk2NhY/frXv9a8efMaqYeoyvDhw3X27Fm99957F22bTzzxhJYvX65vvvnGZ/ZwdQhAAI0qNzdX+fn5io+PV9u2bbVz50794Q9/kMPh0KeffuqZ3bdv3z797//+r+bPn68PP/xQX331ldfEGTQNn332ma655hpt2rTJM9kpkI4fP64rr7xSL7zwQp1vy8h3gAAaVceOHfX+++9rwYIFOnHihEJDQzVkyBDNmTPHa0r9q6++qtmzZ6tr165asWIF4ddE9enTR6+//nqdrse7EHv27FFWVpbPmYLaYAQIADASl0EAAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCMRAACAIxEAAIAjEQAAgCM1LqxO9AYzp07pwMHDqhDhw6y2WyN3R2g2bIsSydOnFBUVJRateLvaTQvRgbggQMHFBMT09jdAFqMoqIiRUdHN3Y3gDoxMgA7dOggyX3QduzYsZF7AzRfpaWliomJ8RxTQHNiZABWnPbs2LEjAQg0AL5KQHPESXsAgJEIQACAkQhAAICRCEAAgJEIQACAkQhAAICRCEAAgJEIQACAkQhAAICRCEAAgJEIQACAkQhAAICRCEAAgJEIQACAkQhAAICRjHweIJoIl0vKy5OKi6XISCklRbLbG7tXAAxBAKJx5ORIU6dK+/b9WBYdLS1cKKWnN16/ABiDU6C4+HJypJEjvcNPkvbvd5fn5DROvwAYhQDExeVyuUd+luX7XkVZZqa7HgAEUEAD8OOPP9bw4cMVFRUlm82mt99+u8Z1PvroI8XHxyskJERXXnmllixZ4lMnOztbcXFxCgkJUXx8vPLy8gLRfQRCXp7vyO98liUVFbnrAUAABTQAT506pX79+mnRokW1qr9nzx7ddtttSklJ0Y4dO/TYY49pypQpeuuttzx1Vq5cqczMTM2cOVM7duxQSkqKhgwZosLCwkDtBhpScXHD1gOAerJZlr9zUQHYkM2m1atXa8SIEVXWmTFjht555x3t2rXLUzZx4kTt3LlT+fn5kqQBAwaof//+evHFFz11evXqpREjRmjOnDm16ktpaakcDodKSkrUsWPHeu4R6mXjRummm2qut2GDlJoa6N7gAnEsoTlrUt8B5ufnKy0tzavs1ltv1bZt23TmzBmVl5dr+/btPnXS0tK0adOmKtstKytTaWmp14JGkpLinu1ps/l/32aTYmLc9QAggJpUADqdToWHh3uVhYeH6+zZszpy5IiOHDkil8vlt47T6ayy3Tlz5sjhcHiWmJiYgPQftWC3uy91kHxDsOL1ggVcDwgg4JpUAEruU6XnqzhDe365vzqVy86XlZWlkpISz1JUVNSAPUadpadLq1ZJXbp4l0dHu8u5DhDARdCkLoSPiIjwGckdOnRIrVu3VufOnWVZlux2u986lUeF5wsODlZwcHBA+ox6Sk+X7riDO8EAaDRNagSYlJSk3Nxcr7L3339f1157rdq0aaOgoCDFx8f71MnNzVVycvLF7Coagt3unuhy993u/xJ+AC6igAbgyZMnVVBQoIKCAknuyxwKCgo8lyxkZWVp7NixnvoTJ07Ut99+q2nTpmnXrl1aunSpXnvtNT3yyCOeOtOmTdOrr76qpUuXateuXXrooYdUWFioiRMnBnJXAAAtTEBPgW7btk03nTflfdq0aZKke++9V8uWLVNxcbHX9XtxcXFau3atHnroIS1evFhRUVH64x//qH/913/11Bk1apSOHj2q2bNnq7i4WH369NHatWsV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\n", + "text/plain": [ + "<Figure size 600x600 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "animate_H0(X, 0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Homology" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Betti Number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "" + "#### Euler Formula\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Persistent Homology" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "words\n", + "" ] }, { @@ -164,9 +386,12 @@ "source": [ "[Kelper Mapper](https://kepler-mapper.scikit-tda.org/) is the Python TDA Mapper package.\n", "#### Mapper Parameters:\n", - "- __Filter Function__:\n", + "- __Data__: Point Cloud Data\n", + "- __Filter Function__: A filter function is a function on the data set, $f: X \\to \\mathbb{R}^2$\n", + " - Filter functions can help reveal possible geometric structures within the data [3].\n", + " - Some choices for [filter functions](http://danifold.net/mapper/filters.html) include _eccentricity,_ _Kernel Density Estimator,_ _k-th nearest neighbor,_ _k-th eigenvector,_ or the _Graph Laplacian._\n", "- __Clustering Technique__: \n", - "- __Number of Intervals__:\n", + "- __Number of Interval__:\n", "- __Percent Overlap__:" ] }, @@ -216,7 +441,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### References" + "### References\n", + "\n", + "[1] https://en.wikipedia.org/wiki/Topology\n", + "\n", + "[2] https://arxiv.org/abs/1710.04019\n", + "\n", + "[3] http://www.diva-portal.org/smash/get/diva2:900997/FULLTEXT01.pdf" ] }, {