{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "# Node Centrality in SAN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - Degree Centrality" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nzSOMz507R9OmTW/pMr7vvvtKbHCkpaUx0t+f3evX82ZGBr3JvZt/BfC6yUSLTp2Y/9lnNn/IMQyD\nb775hvHjx/PEE08wa9YsqlWrZtN7iEjJovB1kGsDgPaazdz8Jm8P4AW0B8YBd5I19WUh8AEw7Kbz\nbTkA6OLFi/z888+3dBmfOHGCxo0b39KadXV1vS2nu6Snp1OnTh0a1KrF4eRkfHMY4La1XDliXFxw\n9/Bg/NSpxTK4Kjk5mZEjR5KSksJHH31Ehw4dbH4PESl5FL4Oktv+sq+QtcXdGbKC95pryznE5HDN\ntf1lN+7Yka/753caz7WQzW0az+3o3XffZdu2bXz77bckJSURHR1NXExM9tSuSlWq8L+1a9m5c2ex\nTCfKzMwkKCiIwMBAJk6cyIQJE3Bxye+GhiJyu1P4OkBe+8u+DHwI/Alc33H7OHAOiM3hGmuLPlw/\njef6LmNbTuO53Zw7d44GDRoQFRVlddN7wzCoWbMmcXFx1K1b16b3j46OZtiwYbi6urJgwYISN1hO\nRIpf6WnK3Eby2l92CFldzGPI2uKuElndzpHAV1aucQE6OTnx4Ycfct9991mdxtO9e3cCAgJsPo3n\ndhIYGEjPnj2tBi+Ak5MTXl5exMbG2ix8z5w5w8svv8yaNWsIDg6mT58+Jfa9uIgUL4WvA+S1v2wj\nYC3wDLDg6s/KAx8Dz+dSbtsLF1gQFsZTffrQvn17hg4dardpPLeLU6dO8cEHH7Bnz548z/Xy8iIm\nJobnn8/tTz1vhmHw5Zdf8vLLL9O3b1/27dunvxORMk7h6wB57S+bCPQE2gKjyWr5/hcYClQABlq5\nrg7Qtlkz5s6da8Pali4zZ87k73//O6752I3Iy8uLl19+uUj3+/nnnxkxYgRnz54lPDwcT0/PIpUn\nIqWDwrcEeg2oAoTz/39BnYDfgbFYD1/J3eHDh/nqq684cOBAvs739PQkMTGRixcvFnh1qYsXL/L2\n22+zYMECXnvtNUaOHFmqBqyJSNHcfnNESoGarq657i+7H2jOrU9GnmQF8Gkr1zlyf9nbweuvv87I\nkSPzvSnBnXfeSZMmTYiLiyvQfTZu3Ejz5s1JTExk7969jB07VsErIjfQvwgO0NrLiw2hoWDlvW8d\nshbXyCTrXe8128nqgra2/IKj9pe9Hezfv5/vvvuOgwcPFui6a4Ou2rdvn+e5p0+fZsKECURHRzN/\n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\nowAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import networkx as nx\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "g = nx.Graph()\n", "g.add_edge(1,2)\n", "g.add_edge(1,3)\n", "g.add_edge(1,4)\n", "g.add_edge(2,3)\n", "g.add_edge(3,4)\n", "g.add_edge(4,5)\n", "g.add_edge(4,6)\n", "g.add_edge(5,6)\n", "g.add_edge(5,7)\n", "g.add_edge(5,8)\n", "g.add_edge(6,7)\n", "g.add_edge(6,8)\n", "g.add_edge(7,8)\n", "g.add_edge(7,9)\n", "nx.draw(g, node_size=500, with_labels=True, font_size=16)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "degree_centrality = nx.degree_centrality(g)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1: 0.375,\n", " 2: 0.25,\n", " 3: 0.375,\n", " 4: 0.5,\n", " 5: 0.5,\n", " 6: 0.5,\n", " 7: 0.5,\n", " 8: 0.375,\n", " 9: 0.125}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "degree_centrality " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(degree_centrality)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(1, 0.375), (2, 0.25), (3, 0.375), (4, 0.5), (5, 0.5), (6, 0.5), (7, 0.5), (8, 0.375), (9, 0.125)]\n" ] } ], "source": [ "print degree_centrality.items()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import operator\n", "\n", "def sort_map(map):\n", " sortedList = map.items()\n", " sortedList.sort(key=operator.itemgetter(1), reverse=True)\n", " return sortedList\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "sorted_degree_centrality = sort_map(degree_centrality)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(4, 0.5),\n", " (5, 0.5),\n", " (6, 0.5),\n", " (7, 0.5),\n", " (1, 0.375),\n", " (3, 0.375),\n", " (8, 0.375),\n", " (2, 0.25),\n", " (9, 0.125)]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_degree_centrality" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - Closeness Centrality" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "closeness_centrality = nx.closeness_centrality(g)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1: 0.47058823529411764,\n", " 2: 0.34782608695652173,\n", " 3: 0.47058823529411764,\n", " 4: 0.6153846153846154,\n", " 5: 0.6153846153846154,\n", " 6: 0.6153846153846154,\n", " 7: 0.5,\n", " 8: 0.47058823529411764,\n", " 9: 0.34782608695652173}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "closeness_centrality" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sorted_closeness_centrality = sort_map(closeness_centrality)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(4, 0.6153846153846154),\n", " (5, 0.6153846153846154),\n", " (6, 0.6153846153846154),\n", " (7, 0.5),\n", " (1, 0.47058823529411764),\n", " (3, 0.47058823529411764),\n", " (8, 0.47058823529411764),\n", " (2, 0.34782608695652173),\n", " (9, 0.34782608695652173)]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_closeness_centrality " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - Betweenness Centrality" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "bet_centrality = nx.betweenness_centrality(g)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1: 0.10714285714285714,\n", " 2: 0.0,\n", " 3: 0.10714285714285714,\n", " 4: 0.5357142857142857,\n", " 5: 0.21428571428571427,\n", " 6: 0.21428571428571427,\n", " 7: 0.25,\n", " 8: 0.0,\n", " 9: 0.0}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bet_centrality" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sorted_bet_centrality =sort_map(bet_centrality)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(4, 0.5357142857142857),\n", " (7, 0.25),\n", " (5, 0.21428571428571427),\n", " (6, 0.21428571428571427),\n", " (1, 0.10714285714285714),\n", " (3, 0.10714285714285714),\n", " (2, 0.0),\n", " (8, 0.0),\n", " (9, 0.0)]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_bet_centrality" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - Eigenvector Centrality" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "eigenvector_centrality = nx.eigenvector_centrality(g)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1: 0.19575179821589203,\n", " 2: 0.11168619729756277,\n", " 3: 0.19575179821589203,\n", " 4: 0.3787497778502688,\n", " 5: 0.4680845766467968,\n", " 6: 0.4680845766467968,\n", " 7: 0.4099777873648636,\n", " 8: 0.3840189757284675,\n", " 9: 0.11695539517576153}" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eigenvector_centrality" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sorted_eigenvector_centrality= sort_map(eigenvector_centrality)\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(5, 0.4680845766467968),\n", " (6, 0.4680845766467968),\n", " (7, 0.4099777873648636),\n", " (8, 0.3840189757284675),\n", " (4, 0.3787497778502688),\n", " (1, 0.19575179821589203),\n", " (3, 0.19575179821589203),\n", " (9, 0.11695539517576153),\n", " (2, 0.11168619729756277)]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_eigenvector_centrality " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - Build a table with four centralities \n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "rounded_degree_centrality = {k: round(v, 3) for k, v in degree_centrality.items()}\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "rounded_closeness_centrality = {k: round(v, 3) for k, v in closeness_centrality.items()}\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "rounded_bet_centrality = {k: round(v, 3) for k, v in bet_centrality.items()}\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "rounded_eigenvector_centrality = {k: round(v, 3) for k, v in eigenvector_centrality.items()}\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "table = [[node, rounded_degree_centrality[node], \n", " rounded_closeness_centrality[node], \n", " rounded_bet_centrality[node], \n", " rounded_eigenvector_centrality[node]] for node in g.nodes()]\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[[1, 0.375, 0.471, 0.107, 0.196],\n", " [2, 0.25, 0.348, 0.0, 0.112],\n", " [3, 0.375, 0.471, 0.107, 0.196],\n", " [4, 0.5, 0.615, 0.536, 0.379],\n", " [5, 0.5, 0.615, 0.214, 0.468],\n", " [6, 0.5, 0.615, 0.214, 0.468],\n", " [7, 0.5, 0.5, 0.25, 0.41],\n", " [8, 0.375, 0.471, 0.0, 0.384],\n", " [9, 0.125, 0.348, 0.0, 0.117]]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table" ] } ], "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.6" } }, "nbformat": 4, "nbformat_minor": 0 }