{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "The following line stops the cursor from blinking" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "var rate = 0;\n", "// apply setting to all current CodeMirror instances\n", "IPython.notebook.get_cells().map(\n", " function(c) { return c.code_mirror.options.cursorBlinkRate=rate; }\n", ");\n", "\n", "// make sure new CodeMirror instance also use this setting\n", "CodeMirror.defaults.cursorBlinkRate=rate;" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%javascript\n", "var rate = 0;\n", "// apply setting to all current CodeMirror instances\n", "IPython.notebook.get_cells().map(\n", " function(c) { return c.code_mirror.options.cursorBlinkRate=rate; }\n", ");\n", "\n", "// make sure new CodeMirror instance also use this setting\n", "CodeMirror.defaults.cursorBlinkRate=rate;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import needed libraries" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using cmappertools v1.0.24.\n" ] } ], "source": [ "import mapper\n", "#from mapper import cmappertools\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "from itertools import *\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Step 1: Input data
\n", " Load the circle data set, circle = $x^2 + y^2 = 1$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "### Uncomment below to read in data via file in Desktop folder\n", "# filename = 'Desktop/datafile.txt'\n", "# data = np.loadtxt(str(filename), delimiter=',', dtype=np.float)\n", "\n", "### Load circle data set \n", "data = mapper.shapes.circle(samples=80)\n", "#data.shape\n", "#data[:,0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the following without modification, just preprocessing some variables" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Preprocessing\n", "point_labels = None\n", "mask = None\n", "Gauss_density = mapper.filters.Gauss_density\n", "kNN_distance = mapper.filters.kNN_distance\n", "crop = mapper.crop\n", "data, point_labels = mapper.mask_data(data, mask, point_labels)\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Step 2: Choose metric
\n", "Below we are choosing to use the Euclidean metric" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "intrinsic_metric = False\n", "if intrinsic_metric:\n", " is_vector_data = data.ndim != 1\n", " if is_vector_data:\n", " metric = Euclidean # here we choose Euclidean metric\n", " if metric != 'Euclidean':\n", " raise ValueError('Not implemented')\n", " data = mapper.metric.intrinsic_metric(data, k=1, eps=1.0)\n", "is_vector_data = data.ndim != 1\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Step 3: Choose Filter function
\n", "Below we are choosing to use projection to first principal component" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Eigenvalues:\n", "[-36.9533893]\n" ] } ], "source": [ "if is_vector_data:\n", " metricpar = {'metric': 'euclidean'}\n", " f = mapper.filters.dm_eigenvector(data,\n", " metricpar=metricpar,\n", " k=0, mean_center=True)\n", "else:\n", " f = mapper.filters.dm_eigenvector(data,\n", " k=0, mean_center=True)\n", " \n", "### Uncomment out the following to change filter function\n", "### to Gauss density\n", "#if is_vector_data:\n", "# metricpar = {'metric': 'euclidean'}\n", "# f = mapper.filters.Gauss_density(data,\n", "# metricpar=metricpar,\n", "# sigma=1.0)\n", "#else:\n", "# f = mapper.filters.Gauss_density(data,\n", "# sigma=1.0)\n", "\n", "# Filter transformation\n", "mask = None\n", "crop = mapper.crop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Step 4: Select more Mapper parameters\n", "Below we choose to use 15 intervals with 50% overlap" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cover = mapper.cover.cube_cover_primitive(intervals=5, overlap=40.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we choose to use single linkage clustering" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cluster = mapper.single_linkage()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the following without modification to run mapper algorithm" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of CPU cores present: 4\n", "Start Mapper thread.\n", "Start Mapper thread.\n", "Start Mapper thread.\n", "Start Mapper thread.\n", "Mapper: Filter range in dimension 0: [-0.15, 0.15]\n", "Mapper: Cover: Hypercube cover. Intervals: (5,). Overlap: (40.0,)Filter level (0,) has 32 points.\n", "\n", "Mapper: Clustering: Single linkage clusteringFilter level (1,) has 14 points.Filter level (2,) has 11 points.Filter level (3,) has 17 points.Filter level (4,) has 30 points.\n", "\n", "\n", "\n", "\n", "Mapper: Cutoff: None\n", "Level: (0,)\n", "Level: (1,)\n", "Level: (2,)\n", "Level: (3,)\n", "Level: (4,)\n" ] } ], "source": [ "if not is_vector_data:\n", " metricpar = {}\n", "mapper_output = mapper.mapper(data, f,\n", " cover=cover,\n", " cluster=cluster,\n", " point_labels=point_labels,\n", " cutoff=None,\n", " metricpar=metricpar)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Choose where to cut the dendrogram in order to create clusters" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scale graph path: [1 3 2 2 1]\n", "There are 9 nodes.\n", "Generate the simplicial complex.\n", "Collect simplices of dimension 1:\n", "There are 7 simplices of dimension 1.\n", "Collect simplices of dimension 2:\n", "There are 0 simplices of dimension 2.\n", "Dimension: 1\n" ] } ], "source": [ "cutoff = mapper.cutoff.first_gap(gap=0.1)\n", "mapper_output.cutoff(cutoff, f, cover=cover, simple=False)\n", "\n", "### Uncomment out the following to change how the dendrogram is cut\n", "### in order to determine clusters.\n", "#mapper.scale_graph(mapper_output, f, cover=cover,\n", "# weighting='inverse', maxcluster=50, expand_intervals=False, exponent=1.0,\n", "# simple=False)\n", "\n", "# mapper_output.draw_scale_graph()\n", "# plt.savefig('scale_graph.pdf')\n", "# plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Step 5: Choose display parameters
\n", "Choose how to color the vertices (nodes) in mapper output" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "nodes = mapper_output.nodes #list of node objects; variables\n", " #of node are level, points, attribute\n", "node_color = None\n", "#node_color = [1,2,3,4,5,6,7,8]\n", "point_color = data[:,0] # coloring nodes in mapper output using average of first coordinate\n", "name = 'custom scheme'\n", "node_color = mapper_output.postprocess_node_color(node_color, point_color, point_labels)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Step 6: Output
\n", "Draw TDA mapper graph" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "minsizes = []\n", "mapper_output.draw_2D(minsizes=minsizes,\n", " node_color=node_color,\n", " node_color_scheme=name)\n", "plt.savefig('mapper_output.pdf')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Step 7: Graphing clusters in a given bin
\n", "Choose a value less than or equal to intervals for bin; i.e. bin = n where n <= intervals.\n", "\n", "\n", "\n", "Run the following code\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bin 1\n", "[ 6 22]\n", "bin 1\n", "[34 35 50 60]\n", "bin 1\n", "[ 9 10 19 32 43 49 58 78]\n" ] }, { "data": { "image/png": "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\nAjErVCu/aEdatxOAtUpdJ7hJ+nPgH4HZwEvA4xFxvqQ5JIelfijt9yHg6ySHq94WEV9L20/hjcNV\n/wP4WEQcGG29PsHNzGzsaj3BzWc+m5l1CJ/5bGZm4+LEYGZmZZwYzMysjBODmZmVcWIwM7MyTgxm\nZlZmQh6uKmkX8Js6XuI4kjOv243jGpt2jKsdYwLHNRbtGBMUE9fbI2L2aJ0mZGKol6T+Wo7lbTbH\nNTbtGFc7xgSOayzaMSZoblzelWRmZmWcGMzMrEynJoY1rQ6gCsc1Nu0YVzvGBI5rLNoxJmhiXB05\nxmBmZtV1asVgZmZVTNrEIOnDkp6S9LqkqiP5ki6Q9IykbZKuzrTPk/SopK2S1kk6qqC4Zkm6L33d\n+yTNzOnzQUmPZ/72S7oknXe7pGcz805rVlxpv4OZda/PtBe+vWrcVqdJ2pS+109IWpqZV+i2qvZZ\nycyflv7bt6Xb4uTMvGvS9mcknV9PHGOM6fOSBtJt84Ckt2fm5b6XTYrrE5J2Zdb/ycy85el7vlXS\n8ibHdVMmpl9KeikzryHbS9JtknZKerLKfEn6RhrzE5LOyMxrzLaKiEn5B5wKvAN4GOit0mcK8Cvg\nFOAo4BfAgnTeXcCy9Pm3gU8VFNeNwNXp86uBG0bpPwvYDbw5nb4duLQB26umuID/qtJe+PaqJSbg\nT4D56fM5wBAwo+htNdJnJdPnfwLfTp8vA9alzxek/acB89LXmdKkmD6Y+ex8qhTTSO9lk+L6BPDN\nKp/37enjzPT5zGbFVdH/b0nuH9Po7fU+4AzgySrzPwT8mOR2yO8BHm30tpq0FUNEPB0Rz4zS7Uxg\nW0Rsj4hXSW4atESSgLOAu9N+dwCXFBTakvT1an3dS4EfR8S+gtZfzVjjOqSB22vUmCLilxGxNX0+\nCOwkuXFU0XI/KyPEezdwdrptlgBrI+JARDwLbEtfr+ExRcRDmc/OIyS30G20WrZVNecD90XE7oh4\nEbgPuKBFcX0EuLOgdVcVEf9G8uOvmiXAdyPxCMktkbtp4LaatImhRicCz2Wmd6RtxwIvRXIv6mx7\nEd4WEUMA6ePxo/RfxuEfzq+lJeVNkqY1Oa4uSf2SHint3qJx22tM20rSmSS/BH+VaS5qW1X7rOT2\nSbfFHpJtU8uyjYop63KSX54lee9lEWqN6y/S9+ZuSaX7wjdqW43ptdNdbvOABzPNjdpeo6kWd8O2\nVTPu+dwwku4HTsiZdW1E1HL/aOW0xQjtdcdV62ukr9MNLAQ2ZpqvAZ4n+QJcA3wRWNnEuHoiYlDJ\nbVkflLQF2JvTr6btVfC2+h6wPCJeT5vHva3yVpHTVvlvbMjnaQQ1v66kjwG9wPszzYe9lxHxq7zl\nGxDXBuDOiDgg6UqSSuusGpdtZFwly4C7I+Jgpq1R22s0zf5cTezEEBHn1PkSO4CTMtNzgUGS65HM\nkDQ1/eVXaq87Lkm/l9QdEUPpl9nOEV7qMuAHEfFa5rWH0qcHJH0H+EIz40p31xAR2yU9DJwO/Cvj\n3F5FxCRpOnAP8KW01C699ri3VY5qn5W8PjskTQWOIdlFUMuyjYoJSeeQJNr3R+ae6lXeyyK+6EaN\nKyJeyEz+E3BDZtkPVCz7cAEx1RRXxjLgb7INDdxeo6kWd8O2VafvStoMzFdyRM1RJB+G9ZGM7DxE\nsn8fYDlQSwVSi/Xp69Xyuoft40y/IEv79S8Bco9kaERckmaWdsdIOg54LzDQwO1VS0xHAT8g2Qf7\n/Yp5RW6r3M/KCPFeCjyYbpv1wDIlRy3NA+YD/15HLDXHJOl0YDVwcUTszLTnvpcFxFRrXN2ZyYuB\np9PnG4Hz0vhmAudRXjE3NK40tneQDOZuyrQ1cnuNZj3w8fTopPcAe9IfPY3bVo0YZW+HP+DPSTLq\nAeD3wMa0fQ5wb6bfh4BfkmT+azPtp5D8590GfB+YVlBcxwIPAFvTx1lpey9wa6bfycDvgCMqln8Q\n2ELyJfd/gbc2Ky7gT9N1/yJ9vLyR26vGmD4GvAY8nvk7rRHbKu+zQrJr6uL0eVf6b9+WbotTMste\nmy73DPBnBX7OR4vp/vTzX9o260d7L5sU1/8BnkrX/xDwzsyyf51uw23AXzUzrnS6D1hVsVzDthfJ\nj7+h9HO8g2Qs6ErgynS+gFvSmLeQOcqyUdvKZz6bmVmZTt+VZGZmFZwYzMysjBODmZmVcWIwM7My\nTgxmZlbGicHMzMo4MZiZWRknBjMzK/P/AZ/GAa7dD/jBAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "levelSets = mapper_output.levelsets\n", "bins = set() #a set of numbers corsponding to bins\n", "for i in levelSets:\n", " bins.add(i[0])\n", "bin = 1 ##### CHANGE THIS TO COLOR DIFFERENT BINS ##### \n", "fig, ax = plt.subplots() #create a plt object to graph our data\n", "ax.scatter(data[:,0],data[:,1], marker='+') #graphing the entire data points with marker '+'\n", "\n", "for i in nodes:\n", " if i.level[0] == bin:\n", " print 'bin', i.level[0] #printing bin index\n", " print i.points #printing the indecis of data points in the bin\n", " #print data[i.points]\n", " ax.scatter(data[i.points][:,0], data[i.points][:,1]) #graphing the points in the chosen bin \n", " #using different colors\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", " " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.14" } }, "nbformat": 4, "nbformat_minor": 2 }