{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:07.920621Z", "start_time": "2020-11-18T18:33:04.592247Z" } }, "outputs": [], "source": [ "import pandas as pd\n", "import networkx as nx\n", "import seaborn as sns\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.029849Z", "start_time": "2020-11-18T18:33:07.922749Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(102831, 4)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timesourcetargetmeters
01139017
1122159
21224618
31226545
41536732
\n", "
" ], "text/plain": [ " time source target meters\n", "0 1 1 390 17\n", "1 1 2 215 9\n", "2 1 2 246 18\n", "3 1 2 265 45\n", "4 1 5 367 32" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DataS1= pd.read_csv('haslemere/Kissler_DataS1.csv', header=None)\n", "\n", "print(DataS1.shape)\n", "DataS1.columns=['time','source','target','meters']\n", "DataS1.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# meaning of the columns\n", "\n", "__DataS1.csv__ The “Haslemere dataset”, consisting of pairwise distances between users of the BBC Pandemic Haslemere app over time. Each row consists of an encounter (within 50m) between two users. \n", "\n", "* Column 1 gives the time step as an integer value (see DataS2.csv for conversion to real time). \n", "* Columns 2 and 3 give the user ID numbers. \n", "* Column 4 gives the distance between the users at that time step, rounded to the nearest metre. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# What kind of network\n", "\n", "1. Undirected.\n", " * \"met each other at time X with distance Y\n", "2. Weighted\n", " * with the distance\n", "3. Multigraph\n", " * two nodes can have multiple interactions \n", " * for each timestamp we create an edge.\n", " * Thus multiple edges between nodes are possible." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.806329Z", "start_time": "2020-11-18T18:33:08.037279Z" } }, "outputs": [], "source": [ "G= nx.from_pandas_edgelist(DataS1,'source','target',\n", " edge_attr=['meters'],\n", " create_using=nx.MultiGraph(),\n", " edge_key='time') # New in 2.5 !pip install --upgrade networkx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Inspect the network" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.837354Z", "start_time": "2020-11-18T18:33:08.807387Z" } }, "outputs": [ { "data": { "text/plain": [ "(469, 469, 469, 469)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# number of nodes\n", "\n", "G.number_of_nodes(), len(G), len(G.nodes), len(G.nodes())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## All edges from node 1\n", "\n", "* A dict with nodes as keys\n", " * and a dict of edges as values\n", " * each edge has a **timestamp** as key,\n", " * and a dict with the distance as value" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.869435Z", "start_time": "2020-11-18T18:33:08.845191Z" } }, "outputs": [ { "data": { "text/plain": [ "([390,\n", " 234,\n", " 389,\n", " 4,\n", " 127,\n", " 172,\n", " 184,\n", " 415,\n", " 459,\n", " 203,\n", " 76,\n", " 311,\n", " 425,\n", " 448,\n", " 249,\n", " 409,\n", " 2,\n", " 201,\n", " 325,\n", " 460,\n", " 138,\n", " 131,\n", " 209,\n", " 106,\n", " 107,\n", " 211,\n", " 447,\n", " 171,\n", " 49,\n", " 449,\n", " 189,\n", " 125,\n", " 174,\n", " 191,\n", " 259,\n", " 287,\n", " 82,\n", " 199,\n", " 464,\n", " 84,\n", " 392,\n", " 86,\n", " 44,\n", " 179,\n", " 235,\n", " 302,\n", " 66,\n", " 327,\n", " 384,\n", " 439,\n", " 445],\n", " 368)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(G.neighbors(1)),G.degree(1)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.901148Z", "start_time": "2020-11-18T18:33:08.875884Z" } }, "outputs": [ { "data": { "text/plain": [ "AdjacencyView({390: {1: {'meters': 17}, 2: {'meters': 17}, 3: {'meters': 17}, 4: {'meters': 17}, 5: {'meters': 17}, 6: {'meters': 2}, 7: {'meters': 2}, 8: {'meters': 2}, 9: {'meters': 2}, 10: {'meters': 7}, 11: {'meters': 8}, 12: {'meters': 4}, 13: {'meters': 7}, 14: {'meters': 6}, 15: {'meters': 8}, 16: {'meters': 8}, 17: {'meters': 14}, 18: {'meters': 11}, 19: {'meters': 11}, 134: {'meters': 4}, 135: {'meters': 0}, 136: {'meters': 0}, 137: {'meters': 0}, 138: {'meters': 0}, 139: {'meters': 0}, 140: {'meters': 0}, 141: {'meters': 0}, 142: {'meters': 0}, 143: {'meters': 0}, 144: {'meters': 0}, 145: {'meters': 0}, 146: {'meters': 0}, 147: {'meters': 0}, 148: {'meters': 0}, 149: {'meters': 0}, 150: {'meters': 3}, 151: {'meters': 0}, 152: {'meters': 0}, 153: {'meters': 0}, 154: {'meters': 0}, 155: {'meters': 7}, 156: {'meters': 7}, 174: {'meters': 11}, 175: {'meters': 0}, 176: {'meters': 0}, 177: {'meters': 0}, 178: {'meters': 0}, 179: {'meters': 0}, 180: {'meters': 4}, 181: {'meters': 0}, 182: {'meters': 0}, 183: {'meters': 0}, 184: {'meters': 0}, 185: {'meters': 0}, 186: {'meters': 0}, 187: {'meters': 12}, 188: {'meters': 0}, 189: {'meters': 0}, 190: {'meters': 0}, 191: {'meters': 0}, 192: {'meters': 4}, 193: {'meters': 4}, 194: {'meters': 4}, 195: {'meters': 15}, 196: {'meters': 15}, 197: {'meters': 4}, 198: {'meters': 15}, 199: {'meters': 4}, 200: {'meters': 4}, 201: {'meters': 0}, 202: {'meters': 0}, 203: {'meters': 0}, 204: {'meters': 0}, 205: {'meters': 0}, 206: {'meters': 0}, 207: {'meters': 0}, 208: {'meters': 0}, 209: {'meters': 0}, 210: {'meters': 0}, 211: {'meters': 8}, 212: {'meters': 0}, 213: {'meters': 0}, 214: {'meters': 0}, 215: {'meters': 0}, 216: {'meters': 0}, 217: {'meters': 0}, 218: {'meters': 0}, 219: {'meters': 0}, 220: {'meters': 11}, 221: {'meters': 13}, 222: {'meters': 13}, 223: {'meters': 13}, 225: {'meters': 37}, 226: {'meters': 12}, 228: {'meters': 35}, 229: {'meters': 14}, 230: {'meters': 27}, 232: {'meters': 33}, 233: {'meters': 21}, 239: {'meters': 31}, 241: {'meters': 8}, 242: {'meters': 8}, 244: {'meters': 32}, 248: {'meters': 14}, 249: {'meters': 46}, 250: {'meters': 24}, 254: {'meters': 43}, 259: {'meters': 44}, 263: {'meters': 17}, 264: {'meters': 29}, 266: {'meters': 34}, 267: {'meters': 50}, 270: {'meters': 28}, 271: {'meters': 30}, 272: {'meters': 11}, 273: {'meters': 16}, 274: {'meters': 16}, 276: {'meters': 27}, 282: {'meters': 4}, 283: {'meters': 0}, 284: {'meters': 0}, 285: {'meters': 4}, 286: {'meters': 4}, 287: {'meters': 4}, 288: {'meters': 0}, 385: {'meters': 4}, 386: {'meters': 4}, 387: {'meters': 15}, 388: {'meters': 4}, 389: {'meters': 4}, 390: {'meters': 4}, 391: {'meters': 4}, 392: {'meters': 4}, 393: {'meters': 4}, 394: {'meters': 4}, 395: {'meters': 4}, 396: {'meters': 0}, 397: {'meters': 0}, 398: {'meters': 0}, 399: {'meters': 0}, 400: {'meters': 0}, 401: {'meters': 4}, 402: {'meters': 4}, 403: {'meters': 4}, 404: {'meters': 0}, 405: {'meters': 10}, 410: {'meters': 42}, 437: {'meters': 38}, 438: {'meters': 38}, 439: {'meters': 0}, 441: {'meters': 0}, 457: {'meters': 6}, 458: {'meters': 14}, 459: {'meters': 15}, 460: {'meters': 14}, 461: {'meters': 14}, 462: {'meters': 14}, 463: {'meters': 14}, 464: {'meters': 0}, 465: {'meters': 4}, 468: {'meters': 12}, 469: {'meters': 21}, 470: {'meters': 4}, 471: {'meters': 4}, 472: {'meters': 0}, 473: {'meters': 4}, 474: {'meters': 0}, 475: {'meters': 0}, 476: {'meters': 4}, 477: {'meters': 0}, 478: {'meters': 0}, 479: {'meters': 0}, 480: {'meters': 0}, 481: {'meters': 0}, 482: {'meters': 0}, 483: {'meters': 0}, 484: {'meters': 0}, 485: {'meters': 0}, 486: {'meters': 0}, 487: {'meters': 0}, 488: {'meters': 0}, 489: {'meters': 0}, 490: {'meters': 0}, 491: {'meters': 0}, 492: {'meters': 0}, 493: {'meters': 0}, 494: {'meters': 0}, 495: {'meters': 0}, 496: {'meters': 0}, 497: {'meters': 0}, 498: {'meters': 0}, 499: {'meters': 3}, 511: {'meters': 4}, 512: {'meters': 0}, 513: {'meters': 0}, 514: {'meters': 0}, 515: {'meters': 0}, 516: {'meters': 0}, 517: {'meters': 0}, 518: {'meters': 0}, 519: {'meters': 0}, 520: {'meters': 0}, 521: {'meters': 0}, 522: {'meters': 0}, 523: {'meters': 0}, 524: {'meters': 0}, 525: {'meters': 4}}, 234: {20: {'meters': 39}}, 389: {20: {'meters': 47}}, 4: {22: {'meters': 22}}, 127: {22: {'meters': 45}}, 172: {23: {'meters': 5}, 24: {'meters': 30}}, 184: {23: {'meters': 28}, 24: {'meters': 43}}, 415: {23: {'meters': 40}}, 459: {23: {'meters': 23}}, 203: {24: {'meters': 43}}, 76: {25: {'meters': 26}}, 311: {25: {'meters': 38}}, 425: {25: {'meters': 26}}, 448: {25: {'meters': 26}}, 249: {29: {'meters': 49}}, 409: {36: {'meters': 16}, 37: {'meters': 8}, 38: {'meters': 13}, 39: {'meters': 13}, 40: {'meters': 13}, 41: {'meters': 8}, 42: {'meters': 9}, 43: {'meters': 15}, 44: {'meters': 13}, 45: {'meters': 8}, 46: {'meters': 8}, 47: {'meters': 16}, 48: {'meters': 15}, 49: {'meters': 9}, 50: {'meters': 13}, 51: {'meters': 9}, 52: {'meters': 15}, 53: {'meters': 10}, 54: {'meters': 13}, 55: {'meters': 13}, 57: {'meters': 15}, 58: {'meters': 16}, 59: {'meters': 15}, 60: {'meters': 15}, 61: {'meters': 13}, 62: {'meters': 13}, 63: {'meters': 13}, 64: {'meters': 15}, 65: {'meters': 15}, 66: {'meters': 13}, 67: {'meters': 15}, 68: {'meters': 12}, 69: {'meters': 14}, 70: {'meters': 14}, 71: {'meters': 9}, 72: {'meters': 16}, 73: {'meters': 16}, 74: {'meters': 16}, 75: {'meters': 16}, 76: {'meters': 13}, 77: {'meters': 8}, 78: {'meters': 8}, 79: {'meters': 9}, 80: {'meters': 13}, 81: {'meters': 13}, 82: {'meters': 9}, 83: {'meters': 26}, 85: {'meters': 9}, 86: {'meters': 15}, 87: {'meters': 8}, 88: {'meters': 11}, 89: {'meters': 19}, 97: {'meters': 13}, 98: {'meters': 10}, 99: {'meters': 13}, 100: {'meters': 14}, 101: {'meters': 10}, 102: {'meters': 7}, 103: {'meters': 7}, 104: {'meters': 9}, 105: {'meters': 9}, 106: {'meters': 16}, 107: {'meters': 12}, 108: {'meters': 15}, 109: {'meters': 15}, 110: {'meters': 7}, 111: {'meters': 9}, 112: {'meters': 9}, 113: {'meters': 11}, 114: {'meters': 7}, 115: {'meters': 19}, 116: {'meters': 14}, 117: {'meters': 16}, 118: {'meters': 9}, 119: {'meters': 9}, 120: {'meters': 9}, 121: {'meters': 18}, 122: {'meters': 9}, 123: {'meters': 9}, 124: {'meters': 9}}, 2: {126: {'meters': 45}, 131: {'meters': 25}}, 201: {132: {'meters': 24}}, 325: {133: {'meters': 42}}, 460: {133: {'meters': 43}}, 138: {166: {'meters': 50}}, 131: {167: {'meters': 35}}, 209: {167: {'meters': 13}}, 106: {168: {'meters': 21}, 455: {'meters': 48}}, 107: {168: {'meters': 35}}, 211: {168: {'meters': 42}, 455: {'meters': 27}}, 447: {170: {'meters': 36}, 171: {'meters': 32}, 172: {'meters': 38}}, 171: {173: {'meters': 33}}, 49: {237: {'meters': 22}, 240: {'meters': 38}, 260: {'meters': 48}, 418: {'meters': 5}}, 449: {237: {'meters': 22}, 240: {'meters': 38}, 483: {'meters': 10}}, 189: {418: {'meters': 2}, 421: {'meters': 16}, 427: {'meters': 0}, 428: {'meters': 15}}, 125: {449: {'meters': 32}}, 174: {450: {'meters': 40}, 451: {'meters': 41}, 452: {'meters': 38}}, 191: {450: {'meters': 35}}, 259: {450: {'meters': 22}, 452: {'meters': 12}, 453: {'meters': 34}, 454: {'meters': 36}}, 287: {450: {'meters': 37}, 452: {'meters': 14}, 453: {'meters': 36}, 454: {'meters': 21}, 455: {'meters': 46}}, 82: {451: {'meters': 27}, 454: {'meters': 24}}, 199: {451: {'meters': 10}, 452: {'meters': 13}, 453: {'meters': 25}, 454: {'meters': 7}}, 464: {451: {'meters': 24}, 452: {'meters': 44}, 453: {'meters': 14}}, 84: {453: {'meters': 34}, 454: {'meters': 27}}, 392: {453: {'meters': 34}, 454: {'meters': 33}}, 86: {454: {'meters': 47}}, 44: {456: {'meters': 44}}, 179: {456: {'meters': 30}}, 235: {456: {'meters': 48}}, 302: {456: {'meters': 41}}, 66: {467: {'meters': 33}}, 327: {467: {'meters': 40}}, 384: {467: {'meters': 30}}, 439: {467: {'meters': 43}}, 445: {526: {'meters': 20}}})" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## All edges between 1 and 2" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.916477Z", "start_time": "2020-11-18T18:33:08.906625Z" } }, "outputs": [ { "data": { "text/plain": [ "AtlasView({126: {'meters': 45}, 131: {'meters': 25}})" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G[1][2]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.947840Z", "start_time": "2020-11-18T18:33:08.926407Z" } }, "outputs": [ { "data": { "text/plain": [ "AtlasView({126: {'meters': 45}, 131: {'meters': 25}})" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# just checking\n", "G[2][1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### what does this mean?\n", "\n", "* there are two edges\n", "* at timepoints 126 and 131\n", "* with distances 45 and 25 meters, respectively" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## all edges between 1 and 390" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:08.978702Z", "start_time": "2020-11-18T18:33:08.954583Z" } }, "outputs": [ { "data": { "text/plain": [ "AtlasView({1: {'meters': 17}, 2: {'meters': 17}, 3: {'meters': 17}, 4: {'meters': 17}, 5: {'meters': 17}, 6: {'meters': 2}, 7: {'meters': 2}, 8: {'meters': 2}, 9: {'meters': 2}, 10: {'meters': 7}, 11: {'meters': 8}, 12: {'meters': 4}, 13: {'meters': 7}, 14: {'meters': 6}, 15: {'meters': 8}, 16: {'meters': 8}, 17: {'meters': 14}, 18: {'meters': 11}, 19: {'meters': 11}, 134: {'meters': 4}, 135: {'meters': 0}, 136: {'meters': 0}, 137: {'meters': 0}, 138: {'meters': 0}, 139: {'meters': 0}, 140: {'meters': 0}, 141: {'meters': 0}, 142: {'meters': 0}, 143: {'meters': 0}, 144: {'meters': 0}, 145: {'meters': 0}, 146: {'meters': 0}, 147: {'meters': 0}, 148: {'meters': 0}, 149: {'meters': 0}, 150: {'meters': 3}, 151: {'meters': 0}, 152: {'meters': 0}, 153: {'meters': 0}, 154: {'meters': 0}, 155: {'meters': 7}, 156: {'meters': 7}, 174: {'meters': 11}, 175: {'meters': 0}, 176: {'meters': 0}, 177: {'meters': 0}, 178: {'meters': 0}, 179: {'meters': 0}, 180: {'meters': 4}, 181: {'meters': 0}, 182: {'meters': 0}, 183: {'meters': 0}, 184: {'meters': 0}, 185: {'meters': 0}, 186: {'meters': 0}, 187: {'meters': 12}, 188: {'meters': 0}, 189: {'meters': 0}, 190: {'meters': 0}, 191: {'meters': 0}, 192: {'meters': 4}, 193: {'meters': 4}, 194: {'meters': 4}, 195: {'meters': 15}, 196: {'meters': 15}, 197: {'meters': 4}, 198: {'meters': 15}, 199: {'meters': 4}, 200: {'meters': 4}, 201: {'meters': 0}, 202: {'meters': 0}, 203: {'meters': 0}, 204: {'meters': 0}, 205: {'meters': 0}, 206: {'meters': 0}, 207: {'meters': 0}, 208: {'meters': 0}, 209: {'meters': 0}, 210: {'meters': 0}, 211: {'meters': 8}, 212: {'meters': 0}, 213: {'meters': 0}, 214: {'meters': 0}, 215: {'meters': 0}, 216: {'meters': 0}, 217: {'meters': 0}, 218: {'meters': 0}, 219: {'meters': 0}, 220: {'meters': 11}, 221: {'meters': 13}, 222: {'meters': 13}, 223: {'meters': 13}, 225: {'meters': 37}, 226: {'meters': 12}, 228: {'meters': 35}, 229: {'meters': 14}, 230: {'meters': 27}, 232: {'meters': 33}, 233: {'meters': 21}, 239: {'meters': 31}, 241: {'meters': 8}, 242: {'meters': 8}, 244: {'meters': 32}, 248: {'meters': 14}, 249: {'meters': 46}, 250: {'meters': 24}, 254: {'meters': 43}, 259: {'meters': 44}, 263: {'meters': 17}, 264: {'meters': 29}, 266: {'meters': 34}, 267: {'meters': 50}, 270: {'meters': 28}, 271: {'meters': 30}, 272: {'meters': 11}, 273: {'meters': 16}, 274: {'meters': 16}, 276: {'meters': 27}, 282: {'meters': 4}, 283: {'meters': 0}, 284: {'meters': 0}, 285: {'meters': 4}, 286: {'meters': 4}, 287: {'meters': 4}, 288: {'meters': 0}, 385: {'meters': 4}, 386: {'meters': 4}, 387: {'meters': 15}, 388: {'meters': 4}, 389: {'meters': 4}, 390: {'meters': 4}, 391: {'meters': 4}, 392: {'meters': 4}, 393: {'meters': 4}, 394: {'meters': 4}, 395: {'meters': 4}, 396: {'meters': 0}, 397: {'meters': 0}, 398: {'meters': 0}, 399: {'meters': 0}, 400: {'meters': 0}, 401: {'meters': 4}, 402: {'meters': 4}, 403: {'meters': 4}, 404: {'meters': 0}, 405: {'meters': 10}, 410: {'meters': 42}, 437: {'meters': 38}, 438: {'meters': 38}, 439: {'meters': 0}, 441: {'meters': 0}, 457: {'meters': 6}, 458: {'meters': 14}, 459: {'meters': 15}, 460: {'meters': 14}, 461: {'meters': 14}, 462: {'meters': 14}, 463: {'meters': 14}, 464: {'meters': 0}, 465: {'meters': 4}, 468: {'meters': 12}, 469: {'meters': 21}, 470: {'meters': 4}, 471: {'meters': 4}, 472: {'meters': 0}, 473: {'meters': 4}, 474: {'meters': 0}, 475: {'meters': 0}, 476: {'meters': 4}, 477: {'meters': 0}, 478: {'meters': 0}, 479: {'meters': 0}, 480: {'meters': 0}, 481: {'meters': 0}, 482: {'meters': 0}, 483: {'meters': 0}, 484: {'meters': 0}, 485: {'meters': 0}, 486: {'meters': 0}, 487: {'meters': 0}, 488: {'meters': 0}, 489: {'meters': 0}, 490: {'meters': 0}, 491: {'meters': 0}, 492: {'meters': 0}, 493: {'meters': 0}, 494: {'meters': 0}, 495: {'meters': 0}, 496: {'meters': 0}, 497: {'meters': 0}, 498: {'meters': 0}, 499: {'meters': 3}, 511: {'meters': 4}, 512: {'meters': 0}, 513: {'meters': 0}, 514: {'meters': 0}, 515: {'meters': 0}, 516: {'meters': 0}, 517: {'meters': 0}, 518: {'meters': 0}, 519: {'meters': 0}, 520: {'meters': 0}, 521: {'meters': 0}, 522: {'meters': 0}, 523: {'meters': 0}, 524: {'meters': 0}, 525: {'meters': 4}})" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G[1][390]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What is this?\n", "\n", "* When 1 and 390 were \"close\" (at range less than 50 meters)\n", "* let s plot this" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:09.715254Z", "start_time": "2020-11-18T18:33:08.982131Z" } }, "outputs": [], "source": [ "# dict comprehension\n", "\n", "effe= {time: d['meters'] for (time,d) in G[1][390].items()}\n", "\n", "\n", "pd.Series(effe).plot(\n", "kind='bar', figsize=(16,7),\n", "title='distance between nodes 1 and 390 over time in meters');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# degree again\n", "\n", "* recall that the degree of node 2 was 30\n", "* i.e., it met 30 other people" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:12.860455Z", "start_time": "2020-11-18T18:33:09.722615Z" } }, "outputs": [ { "data": { "text/plain": [ "220" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "G.degree[2] # counts the number of edges adjacent to 2" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:12.892219Z", "start_time": "2020-11-18T18:33:12.863852Z" } }, "outputs": [ { "data": { "text/plain": [ "30" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(G[2]) # G[2] is a dict with the adjacent nodes as keys, thus that is " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:12.923159Z", "start_time": "2020-11-18T18:33:12.898495Z" } }, "outputs": [ { "data": { "text/plain": [ "1 51\n", "390 7\n", "2 30\n", "215 67\n", "246 35\n", " ..\n", "71 15\n", "247 11\n", "264 8\n", "254 12\n", "451 14\n", "Length: 469, dtype: int64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# simple dict comprehension\n", "\n", "degree_distribution=pd.Series({node:len(G[node]) for node in G})\n", "degree_distribution\n", "\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:13.312862Z", "start_time": "2020-11-18T18:33:12.928595Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Same as before\n", "degree_distribution.sort_values(ascending =False).reset_index()[0].plot(\n", "title='degree distribution');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Components\n", "\n", "* Can we travel from every node, **via a path**, to every other node?\n", " * If yes, we call a graph **connected**\n", " * If no, the graph consists of a number of **components**" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:13.346117Z", "start_time": "2020-11-18T18:33:13.317297Z" } }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nx.number_connected_components(G)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:13.377524Z", "start_time": "2020-11-18T18:33:13.352695Z" } }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nx.is_connected(G)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prune the graph\n", "\n", "* Let s remove all edges whose distance is more than 2 meters\n", "* Let s also turn it into a **simple graph**, \n", " * no more multi-edges\n", " * so there is an edge if the ndes were at least once within 2 meters distance\n", "* How many components do we have?" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.100372Z", "start_time": "2020-11-18T18:33:13.384627Z" } }, "outputs": [ { "data": { "text/plain": [ "276" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "non_dangerous_edges=[(s,t,m) for (s,t,m) in G.edges if m > 2]\n", "\n", "H= G.copy()\n", "H.remove_edges_from(non_dangerous_edges)\n", "H=nx.Graph(H)\n", "nx.number_connected_components(H)\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.131122Z", "start_time": "2020-11-18T18:33:15.107010Z" } }, "outputs": [ { "data": { "text/plain": [ "[{1, 390},\n", " {2, 21, 181, 189, 215, 246, 265, 276, 330, 361, 375, 378, 429},\n", " {5, 11, 22, 39, 78, 367, 430},\n", " {8, 10},\n", " {9, 130, 218, 274}]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# list the connected components\n", "list(nx.connected_components(H))[:5]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.163316Z", "start_time": "2020-11-18T18:33:15.138447Z" } }, "outputs": [ { "data": { "text/plain": [ "Counter({2: 40,\n", " 13: 2,\n", " 7: 3,\n", " 4: 12,\n", " 3: 18,\n", " 16: 1,\n", " 6: 1,\n", " 8: 1,\n", " 9: 1,\n", " 5: 1,\n", " 1: 196})" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# how many do we have for each size?\n", "\n", "from collections import Counter\n", "\n", "Counter([len(component) for component in nx.connected_components(H)])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.662167Z", "start_time": "2020-11-18T18:33:15.169100Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20 13\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# lets draw one component\n", "\n", "a_component=H.subgraph({2, 21, 181, 189, 215, 246, 265, 276, 330, 361, 375, 378, 429})\n", "\n", "print(nx.number_of_edges(a_component), nx.number_of_nodes(a_component))\n", "nx.draw_networkx(a_component)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Density\n", "\n", "* the relative number of edges\n", "* In a **simple undirected** graph this is \n", " * the number of existing edges\n", " * divided by\n", " * the maximum number of edges (with that amount of nodes)\n", " * whcih equals $N\\cdot (N-1)/2$" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.677751Z", "start_time": "2020-11-18T18:33:15.664368Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.2564102564102564\n" ] } ], "source": [ "# density by networkx\n", "print(nx.density(a_component))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.708607Z", "start_time": "2020-11-18T18:33:15.686545Z" } }, "outputs": [ { "data": { "text/plain": [ "0.2564102564102564" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check with our own formula\n", "N= nx.number_of_nodes(a_component)\n", "\n", "nx.number_of_edges(a_component)/ (N*(N-1)/2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Compute length and density for each component\n", "\n", "* Of course with a comprehension\n", "* and a nice plot\n", "* we exclude singleton components" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.755103Z", "start_time": "2020-11-18T18:33:15.717155Z" } }, "outputs": [ { "data": { "text/plain": [ "[(2, 1.0),\n", " (13, 0.2564102564102564),\n", " (7, 0.3333333333333333),\n", " (2, 1.0),\n", " (4, 0.5)]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data= [(len(component), nx.density(H.subgraph(component)))\n", " for component in nx.connected_components(H)\n", " if len(component)>1\n", "]\n", "data[:5]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.801625Z", "start_time": "2020-11-18T18:33:15.762753Z" } }, "outputs": [ { "data": { "text/plain": [ "size\n", "2 1.000000\n", "3 0.944444\n", "4 0.819444\n", "5 0.800000\n", "6 0.400000\n", "7 0.476190\n", "8 0.535714\n", "9 0.333333\n", "13 0.243590\n", "16 0.283333\n", "Name: density, dtype: float64" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# average density per size of a component\n", "df= pd.DataFrame(data)\n", "df.columns=['size','density']\n", "df.groupby('size')['density'].mean()\n", "# conclsuion: the smaller the graph, the more dense (pretty obvious eh)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cliques\n", "\n", "* A graph is a clique if and only if all edges are directly connected to each other\n", "* iff its density equals 1\n", "\n", "### flauw\n", "\n", "* elk paartje is een clique" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:15.847862Z", "start_time": "2020-11-18T18:33:15.808595Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of cliques: 60\n" ] }, { "data": { "text/plain": [ "size\n", "2 100.000000\n", "3 83.333333\n", "4 41.666667\n", "5 0.000000\n", "6 0.000000\n", "7 0.000000\n", "8 0.000000\n", "9 0.000000\n", "13 0.000000\n", "16 0.000000\n", "Name: clique, dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['clique']= df.density==1\n", "print(\"Number of cliques: \", df.clique.sum())\n", "\n", "# percentage cliques per size\n", "df.groupby('size')['clique'].mean() *100" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Path lengths, diameter\n", "\n", "* OK, not in all components is everuone connected to everyone,\n", "* but what is **the minimal number of steps needed** in each component to go from one node to another?\n", "* this is called the **diameter** of a network" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:16.545230Z", "start_time": "2020-11-18T18:33:15.855306Z" } }, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nx.draw_networkx(a_component)\n", "nx.diameter(a_component)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:17.408005Z", "start_time": "2020-11-18T18:33:16.550955Z" } }, "outputs": [ { "data": { "text/plain": [ "[(2, 1.0, 1),\n", " (13, 0.3333333333333333, 5),\n", " (7, 0.7142857142857143, 2),\n", " (2, 1.0, 1),\n", " (4, 0.8333333333333334, 2)]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute the diameter for each componenet\n", "\n", "data= [(len(component), \n", " nx.density(nx.Graph(G.subgraph(component))),\n", " nx.diameter(nx.Graph(G.subgraph(component))))\n", " for component in nx.connected_components(H)\n", " if len(component)>1\n", "]\n", "data[:5]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:17.728205Z", "start_time": "2020-11-18T18:33:17.413297Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# turn to dataframe again\n", "\n", "df= pd.DataFrame(data)\n", "df.columns=['size','density','diameter']\n", "df.groupby('size')['diameter'].mean().plot(kind='bar',\n", " title='mean diameter of components grouped by size');" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:17.892302Z", "start_time": "2020-11-18T18:33:17.735112Z" } }, "outputs": [ { "data": { "text/plain": [ "count 80.000000\n", "mean 1.250000\n", "std 0.626422\n", "min 1.000000\n", "25% 1.000000\n", "50% 1.000000\n", "75% 1.000000\n", "max 5.000000\n", "Name: diameter, dtype: float64" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.diameter.describe()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:18.227791Z", "start_time": "2020-11-18T18:33:17.896490Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.diameter.value_counts().plot(kind='bar',\n", " title='Number of components with diameter X');" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "ExecuteTime": { "end_time": "2020-11-18T18:33:18.259035Z", "start_time": "2020-11-18T18:33:18.237626Z" }, "scrolled": true }, "outputs": [], "source": [ "#!jupyter nbconvert --to slides --post serve --ServePostProcessor.port=8001 --ServerPostProcessor.ip='*' FromSpreadsheetToNetwork.ipynb" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "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.8.3" }, "toc": { "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }