{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# SocialEvolution" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "autoscroll": false, "collapsed": false, "ein.tags": "worksheet-0", "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88\n", " return f(*args, **kwds)\n", "/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88\n", " return f(*args, **kwds)\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "autoscroll": false, "collapsed": false, "ein.tags": "worksheet-0", "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "import igraph as ig\n", "import dionysus as d" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "plt.style.use(\"fivethirtyeight\")\n", "plt.rcParams[\"figure.figsize\"] = 10, 6" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2.0.7.dev0'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data import" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "g = ig.read(\"data/realitycommons/SocialEvolution/Proximity.graphml\")" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "g.es[\"time\"] = pd.to_datetime(g.es[\"time\"]).astype(np.int64) // 10**9" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "g.to_undirected(mode=\"each\")" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'IGRAPH U--- 81 2124564 -- \\n+ attr: id (v), id (e), prob2 (e), time (e)'" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.summary()" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1189000931, 1247769643)" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "times = np.unique(g.es[\"time\"])\n", "(times.min(), times.max())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Temporal partitioning" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "from zigzag import *" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [], "source": [ "wins = sliding_windows(g, 0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zigzag persistence" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "image/png": "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AAAAgoLgCQAAgKAgeAIAACAoCJ4AAAAICoInAAAAgoLgCQAAgKAgeHZxr776qm677TalpaXJbDbLarVeVaampkZLlixRWlqa0tLStGTJEtXU1LiV+eKLL3TrrbeqX79+uvbaa7VmzRo5neG7k9bmzZt13XXXKTk5WTfddJMOHjzY2VXqEg4cOKC7775b1157rcxms9544w23+06nU7m5uRoxYoT69eun2bNn68svv3Qr48/nsbtav369pkyZotTUVA0ZMkQLFizQsWPH3MrQhi3btGmTJkyYoNTUVKWmpuqWW25RQUGB6z7t1zrr16+X2WzWihUrXNdow5bl5ubKbDa7fQ0bNsx1n/YLDMGzizt37pymTp2qlStXei2zaNEiHT16VPn5+crPz9fRo0f1wAMPuO6fPXtWd9xxh5KSkrR7926tXr1av//97/Xcc88F4y10Odu3b9fKlSv1q1/9Sh999JGysrJ011136dtvv+3sqnW6+vp6jRw5UqtXr1ZsbOxV95999llt3LhRa9as0e7du2WxWHTHHXfIZrO5yvj6PHZn+/fv1/3336+CggK9++67ioyM1Lx58/T999+7ytCGLevfv79++9vfau/evSosLNTkyZN177336m9/+5sk2q81Pv74Y7366qvKzMx0u04b+paRkaHjx4+7vi7vnKD9AsMG8iHis88+05QpU/SXv/xF6enpruvHjx/XuHHjtGvXLo0fP16SdOjQIc2aNUsff/yxMjIytGXLFj3xxBP6xz/+4QoT69at08svv6xjx47JYDB0ynvqLNOmTVNmZqZ+97vfua6NGTNGc+fO1eOPP96JNetaBgwYoLVr1+ree++VdPGv/BEjRmjx4sVavny5JMlutysjI0NPPfWUFi5c6NfnMZzU1dUpLS1Nb7zxhmbNmkUbttE111yjxx9/XPfddx/t56fa2lrddNNN+t3vfqc1a9Zo5MiRWrduHZ9BP+Tm5urdd9/VoUOHrrpH+wWOHs8QV1RUpPj4eI0bN851bfz48YqLi9ORI0dcZX784x+79WBNmzZNpaWlHofuu7PGxkZ9/vnnmjp1qtv1qVOnutoLnlmtVpWXl7u1XWxsrCZMmOD2WfP1eQwndXV1am5ultlslkQbtlZTU5O2bdum+vp6ZWVl0X6t8PDDD2vu3LmaPHmy23Xa0D/ffPONRowYoeuuu04/+9nP9M0330ii/dpDZGdXAIGpqKhQYmKiW6+lwWBQ3759VVFR4SrTv39/t8dZLBbXvWuuuSZo9e1s1dXVampqcr3/SywWi6u94Fl5ebkkeWy70tJSSf59HsPJypUrNWrUKGVlZUmiDf31xRdfaMaMGWpoaFBcXJxef/11ZWZmuv7Rpv1a9oc//EEnTpzQSy+9dNU9PoO+XX/99Xr++eeVkZGhqqoqrVu3TjNmzNDhw4dpv3ZA8OwEOTk5evrpp1sss2PHDk2aNClINQLQ3n7961/r8OHD2rVrl4xGY2dXJ6RkZGRo3759Onv2rN555x0tXbpU7733XmdXKySUlJToySef1K5duxQVFdXZ1QlJt9xyi9v3119/vUaPHq0//vGPuuGGGzqpVt0HwbMTLF26VP/2b//WYpmBAwf69VxJSUmqrq6W0+l0/XXldDpVVVWlpKQkVzbZlrEAAAOtSURBVJnKykq3x136/lKZcJGYmCij0eixPcKtLVorOTlZ0sW2Sk1NdV2/vO38+TyGg+zsbG3fvl07duxwG1GgDf0THR2twYMHS5JGjx6t4uJiPf/88645dbSfd0VFRaqurnbNLZQuTlk4ePCgXn75ZR0+fFgSbdga8fHxGjFihE6cOKHbbrtNEu0XCOZ4doLExEQNGzasxa+ePXv69VxZWVmqq6tTUVGR61pRUZHq6+td80uysrJ06NAhNTQ0uMoUFhYqJSXFbaFSOIiOjtbo0aNVWFjodr2wsNBtPg6ulp6eruTkZLe2a2ho0KFDh9w+a74+j93do48+qm3btundd99124JFog3bqrm5WY2NjbSfH2bPnq2DBw9q3759rq8f/ehHmj9/vvbt26ehQ4fShq3U0NCgkpISJScn8xlsB8aVK1c+0dmVgHfl5eU6ceKESkpKtGPHDk2dOlX19fWKjo5WbGys+vbtq08++UT5+fkaNWqUTp8+rWXLlmnMmDGurRuGDBmiV155RX/961+VkZGhQ4cO6X/9r/+lhx9+OCx/CEwmk3Jzc9WvXz/16NFD69at08GDB/Xcc88pISGhs6vXqerq6vT3v/9d5eXleu211zRy5Ej16tVLjY2NSkhIUFNTkzZs2KAhQ4aoqalJjz32mMrLy7VhwwbFxMT49XnszpYvX64333xTr776qgYOHKj6+nrV19dLuvhHj8FgoA19eOKJJxQdHa3m5madPn1aeXl5euutt/TEE0+42oz2865Hjx6yWCxuX1u3blVaWpruvfdePoN+WLVqlesz+D//8z9asWKFTpw4oWeeeUZms5n2CxDbKXVxubm5WrNmzVXXN27c6NrmpqamRo888og++OADSdKsWbO0du1a10pa6eJk/eXLl6u4uFhms1kLFy7Uo48+GnZbKV2yefNmPfvssyovL9e1116r//qv/9LEiRM7u1qdbt//384doygMhGEY/k5glUMELeMNLMUD2NqlsQ3BC1ikT+tdAjlMQPAGbmeziMsuTLE8TzlMMz9TvMUw05TD4fBt/Xg8ZhzHPJ/PXK/X3G63PB6PNE2TYRiyXq9fe39yH/+rd2fsui593yeJGX7Qtm2macqyLFmtVtlsNjmfz9ntdknM7zf2+/3rO6XEDD85nU6Z5zn3+z1VVWW73eZyuaSu6yTm91fCEwCAIrzxBACgCOEJAEARwhMAgCKEJwAARQhPAACKEJ4AABQhPAEAKEJ4AgBQxBdY0K0OTFXACgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for w in wins[0:1]:\n", " (f, t) = presence_times(w)\n", " zz, dgms, cells = d.zigzag_homology_persistence(f, t)\n", " d.plot.plot_diagram(dgms[0])" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "import multiprocessing" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())\n", "dgms = pool.map(zigzag_network, wins)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "pool.terminate()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "dgms0 = [dgm[0] for dgm in dgms if dgm != []]" ] }, { "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }