{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# SocioPatterns" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "autoscroll": false, "collapsed": false, "ein.tags": "worksheet-0", "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "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": 4, "metadata": {}, "outputs": [], "source": [ "plt.style.use(\"fivethirtyeight\")\n", "plt.rcParams[\"figure.figsize\"] = 10, 6" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data import" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "g = ig.read(\"data/sociopatterns/infectious/infectious.graphml\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'IGRAPH UN-- 10972 415912 -- \\n+ attr: id (v), name (v), id (e), time (e)'" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.summary()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "76944" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(np.unique(g.es[\"time\"]))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(12, 11), (10, 9), (0, 2), (3, 4), (5, 8), (6, 7), (1, 2, 8)]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "edges = g.es.select(time_eq=1240916059)\n", "g.subgraph_edges(edges).maximal_cliques()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cliques = []\n", "for t in np.unique(g.es[\"time\"]):\n", " edges = g.es.select(time_eq=t)\n", " cliques.append(g.subgraph_edges(edges).maximal_cliques())" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "maxcliques = g.maximal_cliques()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def filt_subgraph(t):\n", " edges = g.es.select(time_eq=t)\n", " cliques = g.subgraph_edges(edges).maximal_cliques()\n", " return d.Filtration(cliques)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "times = np.sort(np.unique(g.es[\"time\"]))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "import multiprocessing" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Process ForkPoolWorker-73:\n", "Process ForkPoolWorker-89:\n", "Process ForkPoolWorker-90:\n", "Process ForkPoolWorker-72:\n", "Process ForkPoolWorker-78:\n", "Process ForkPoolWorker-79:\n", "Process ForkPoolWorker-67:\n", "Process ForkPoolWorker-76:\n", "Process ForkPoolWorker-81:\n", "Process ForkPoolWorker-70:\n", "Process ForkPoolWorker-95:\n", "Process ForkPoolWorker-68:\n", "Process ForkPoolWorker-71:\n", "Process ForkPoolWorker-94:\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "Process ForkPoolWorker-66:\n", "Process ForkPoolWorker-91:\n", "Process ForkPoolWorker-65:\n", "Process ForkPoolWorker-75:\n", "Process ForkPoolWorker-74:\n", "Process ForkPoolWorker-96:\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Process ForkPoolWorker-80:\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Process ForkPoolWorker-92:\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", "Traceback (most recent call last):\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3849, in select\n", " es = es.select(filtered_idxs)\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3753, in select\n", " es = _igraph.EdgeSeq.select(self, *args)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Process ForkPoolWorker-88:\n", "KeyboardInterrupt\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", "Process ForkPoolWorker-93:\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", "KeyboardInterrupt\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3849, in select\n", " es = es.select(filtered_idxs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", "Traceback (most recent call last):\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3849, in select\n", " es = es.select(filtered_idxs)\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mpool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmultiprocessing\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPool\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocesses\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmultiprocessing\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcpu_count\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----> 2\u001b[0;31m \u001b[0mcliques\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpool\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclique_subgraph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/lib/python3.5/multiprocessing/pool.py\u001b[0m in \u001b[0;36mmap\u001b[0;34m(self, func, iterable, chunksize)\u001b[0m\n\u001b[1;32m 258\u001b[0m \u001b[0;32min\u001b[0m \u001b[0ma\u001b[0m \u001b[0mlist\u001b[0m \u001b[0mthat\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mreturned\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 259\u001b[0m '''\n\u001b[0;32m--> 260\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_map_async\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0miterable\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmapstar\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchunksize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\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 261\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 262\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstarmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0miterable\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.5/multiprocessing/pool.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 600\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 601\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 602\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 603\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mready\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 604\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mTimeoutError\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.5/multiprocessing/pool.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 597\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 598\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 599\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_event\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 600\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 601\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.5/threading.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 547\u001b[0m \u001b[0msignaled\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_flag\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 548\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0msignaled\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 549\u001b[0;31m \u001b[0msignaled\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cond\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 550\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msignaled\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 551\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.5/threading.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# restore state no matter what (e.g., KeyboardInterrupt)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 292\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 293\u001b[0;31m \u001b[0mwaiter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0macquire\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 294\u001b[0m \u001b[0mgotit\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] }, { "name": "stderr", "output_type": "stream", "text": [ " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", "Process ForkPoolWorker-77:\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in \n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3753, in select\n", " es = _igraph.EdgeSeq.select(self, *args)\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3753, in select\n", " es = _igraph.EdgeSeq.select(self, *args)\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", "Traceback (most recent call last):\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3841, in select\n", " values = es[attr]\n", "Process ForkPoolWorker-84:\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "KeyboardInterrupt\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in \n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", "KeyboardInterrupt\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", "Process ForkPoolWorker-69:\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "Process ForkPoolWorker-86:\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "KeyboardInterrupt\n", "KeyboardInterrupt\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3841, in select\n", " values = es[attr]\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", "Process ForkPoolWorker-85:\n", "Process ForkPoolWorker-82:\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", "Process ForkPoolWorker-83:\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", "KeyboardInterrupt\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Traceback (most recent call last):\n", "Traceback (most recent call last):\n", "KeyboardInterrupt\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", "Process ForkPoolWorker-87:\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", "Traceback (most recent call last):\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", "Traceback (most recent call last):\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 249, in _bootstrap\n", " self.run()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/usr/lib/python3.5/multiprocessing/process.py\", line 93, in run\n", " self._target(*self._args, **self._kwargs)\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 119, in worker\n", " result = (True, func(*args, **kwds))\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in \n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", "KeyboardInterrupt\n", " File \"/usr/lib/python3.5/multiprocessing/pool.py\", line 44, in mapstar\n", " return list(map(*args))\n", "KeyboardInterrupt\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "KeyboardInterrupt\n", " File \"\", line 2, in clique_subgraph\n", " return g.subgraph_edges(g.es.select(time_eq=t)).maximal_cliques()\n", "KeyboardInterrupt\n", "KeyboardInterrupt\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3846, in select\n", " filtered_idxs=[i for i, v in enumerate(values) \\\n", " File \"/home/lozeve/.local/share/virtualenvs/tda-networks--KypeAmE/lib/python3.5/site-packages/igraph/__init__.py\", line 3847, in \n", " if func(v, value)]\n", "KeyboardInterrupt\n" ] } ], "source": [ "pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())\n", "cliques = pool.map(clique_subgraph, times)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "pool.terminate()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "maxcliques = g.subgraph_edges(g.es.select(time_lt=times[30])).maximal_cliques()\n", "filts = [filt_subgraph(t) for t in times[1:30]]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<3,4,11> 0\n", "<7,9,10> 0\n", "<7,8,10> 0\n", "<5,6,7,8> 0\n", "<4,8> 0\n", "<3,5> 0\n", "<0,1,2> 0\n" ] } ], "source": [ "maxfilt = d.Filtration(maxcliques)\n", "for s in maxfilt:\n", " print(s)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "presences = [[s in filt for filt in filts] for s in maxfilt]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[False,\n", " False,\n", " False,\n", " True,\n", " False,\n", " False,\n", " True,\n", " False,\n", " False,\n", " False,\n", " True,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " True,\n", " False,\n", " True,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "presences[-1]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[], [], [], [], [], [], [2, 3, 5, 6, 9, 10, 17, 18, 19, 20]]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[np.argwhere(np.array(p)[1:] ^ np.array(p)[:-1]).flatten().tolist() for p in presences]" ] }, { "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 }