From f5abfc589993c2c724dbc8af6c2bf97e4e748b63 Mon Sep 17 00:00:00 2001 From: Nathaniel Saul Date: Thu, 8 Nov 2018 12:16:19 -0800 Subject: [PATCH] rearranging, cleaning, adding adapters example --- docs/index.rst | 10 +- examples/my_circles_export.pdf | Bin 0 -> 44143 bytes notebooks/Adapters.ipynb | 120 ++++++++++++++++++++++ {examples => notebooks}/Plotly Demo.ipynb | 10 +- 4 files changed, 134 insertions(+), 6 deletions(-) create mode 100644 examples/my_circles_export.pdf create mode 100644 notebooks/Adapters.ipynb rename {examples => notebooks}/Plotly Demo.ipynb (99%) diff --git a/docs/index.rst b/docs/index.rst index 7bc64440..2dfaaf4d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -32,8 +32,16 @@ Contents :maxdepth: 1 :caption: Tutorials - KeplerMapper Newsgroup20 Pipeline + Adapters + Plotly Demo KeplerMapper usage in Jupyter Notebook + +.. toctree:: + :maxdepth: 1 + :caption: Advanced Tutorials + + KeplerMapper Newsgroup20 Pipeline + TOR-XGB-TDA Confidence Graphs self-guessing diff --git a/examples/my_circles_export.pdf b/examples/my_circles_export.pdf new file mode 100644 index 0000000000000000000000000000000000000000..06f07572c352a46cea9730df95c298364ae1752f GIT binary patch literal 44143 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 AKL7v# literal 0 HcmV?d00001 diff --git a/notebooks/Adapters.ipynb b/notebooks/Adapters.ipynb new file mode 100644 index 00000000..ada97aae --- /dev/null +++ b/notebooks/Adapters.ipynb @@ -0,0 +1,120 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Adapters example\n", + "\n", + "Demonstration using the networkx adapter. This example requires installing the `networkx` library before continuing:\n", + "```\n", + "pip install networkx\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import kmapper\n", + "from sklearn import datasets\n", + "import networkx as nx" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Construct data and a simple Mapper" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "data = datasets.make_circles(n_samples=1000)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "km = kmapper.KeplerMapper()\n", + "lens = km.project(data)\n", + "graph = km.map(X=data, lens=lens)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convert Mapper to a networkx graph\n", + "\n", + "We can easily convert the graph to a networkx graph representation. This enables us to use many of the commonly provided algorithms and visualization methods." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "nx_graph = kmapper.adapter.to_nx(graph)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nx.draw(nx_graph)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/Plotly Demo.ipynb b/notebooks/Plotly Demo.ipynb similarity index 99% rename from examples/Plotly Demo.ipynb rename to notebooks/Plotly Demo.ipynb index 7c2514f2..86b8aa73 100644 --- a/examples/Plotly Demo.ipynb +++ b/notebooks/Plotly Demo.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Plotlyviz features\n", + "# Demo of Plotlyviz features\n", "\n", "To visualize a Kepler Mapper graph with plotly, we've built some handy constructors to help you. This notebook will detail some of the features so you are better able to customize the outputs." ] @@ -156,7 +156,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Color palettes\n", + "## Color palettes\n", "\n", "You can define new color palettes using the plotly specs for this.\n", "\n", @@ -328,7 +328,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Different Layouts\n", + "## Different Layouts\n", "\n", "The default layout is Kamada-Kawai. It is possible to specify other layouts to use with the `graph_layout` keyword argument.\n", "\n", @@ -404,7 +404,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Further customization\n", + "## Further customization\n", "\n", "We've supplied one nice function to handle the sanest defaults for you convenience. If you find yourself needing further customization, look at the code in `plotlyviz()` function and customize at will. If you build a new constructor you find helpful, we would be thrilled if you added it to the package and sent us a pull request." ] @@ -426,7 +426,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.7.1" }, "widgets": { "application/vnd.jupyter.widget-state+json": {