You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sitc/sna/3_Network_Analysis.ipynb

2231 lines
828 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "skip"
},
"tags": []
},
"source": [
"![](images/EscUpmPolit_p.gif \"UPM\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"# Course Notes for Learning Intelligent Systems"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Department of Telematic Engineering Systems, Universidad Politécnica de Madrid, © Carlos A. Iglesias"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"## [Introduction to Network Analysis](0_Intro_Network_Analysis.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Network Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Case study: Zackary's karate club"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "fragment"
},
"tags": []
},
"outputs": [],
"source": [
"import networkx as nx\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "skip"
},
"tags": []
},
"outputs": [],
"source": [
"import warnings\n",
"warnings.simplefilter(action='ignore', category=FutureWarning)\n",
"warnings.simplefilter(action='ignore', category=DeprecationWarning)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "fragment"
},
"tags": []
},
"outputs": [],
"source": [
"KCG = nx.karate_club_graph()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "fragment"
},
"tags": []
},
"outputs": [],
"source": [
"pos = nx.spring_layout(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nx.draw_networkx(KCG, pos, node_color='pink')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"NodeDataView({0: {'club': 'Mr. Hi'}, 1: {'club': 'Mr. Hi'}, 2: {'club': 'Mr. Hi'}, 3: {'club': 'Mr. Hi'}, 4: {'club': 'Mr. Hi'}, 5: {'club': 'Mr. Hi'}, 6: {'club': 'Mr. Hi'}, 7: {'club': 'Mr. Hi'}, 8: {'club': 'Mr. Hi'}, 9: {'club': 'Officer'}, 10: {'club': 'Mr. Hi'}, 11: {'club': 'Mr. Hi'}, 12: {'club': 'Mr. Hi'}, 13: {'club': 'Mr. Hi'}, 14: {'club': 'Officer'}, 15: {'club': 'Officer'}, 16: {'club': 'Mr. Hi'}, 17: {'club': 'Mr. Hi'}, 18: {'club': 'Officer'}, 19: {'club': 'Mr. Hi'}, 20: {'club': 'Officer'}, 21: {'club': 'Mr. Hi'}, 22: {'club': 'Officer'}, 23: {'club': 'Officer'}, 24: {'club': 'Officer'}, 25: {'club': 'Officer'}, 26: {'club': 'Officer'}, 27: {'club': 'Officer'}, 28: {'club': 'Officer'}, 29: {'club': 'Officer'}, 30: {'club': 'Officer'}, 31: {'club': 'Officer'}, 32: {'club': 'Officer'}, 33: {'club': 'Officer'}})"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"KCG.nodes(data=True)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"mr_hi_nodes = [x for x,y in KCG.nodes(data=True) if y['club']=='Mr. Hi']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 16, 17, 19, 21]\n"
]
}
],
"source": [
"print(mr_hi_nodes)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"colors = ['yellow' if not node in mr_hi_nodes else 'pink' for node in KCG.nodes()]\n",
"nx.draw_networkx(KCG, pos, node_color=colors)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Case study: directed graph"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"D = nx.DiGraph()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"D.add_edges_from([('A', 'B'), ('C','A')])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"dpos = nx.layout.spring_layout(D)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"editable": true,
"slideshow": {
"slide_type": "fragment"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nx.draw_networkx(D, dpos, node_color='c')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Case study: weighted graph"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"W = nx.Graph()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"W.add_weighted_edges_from([('@user1', '@user2', 5),('@user1', '@user3', 2), ('@user1', '@user4', 4),('@user3', '@user4', 2)]) "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"wpos = nx.spring_layout(W) # positions for all nodes"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{('@user1', '@user2'): Text(0.6018955503921715, -0.24679947126373863, '5'),\n",
" ('@user1', '@user3'): Text(-0.17970137346946247, 0.29333141640278315, '2'),\n",
" ('@user1', '@user4'): Text(-0.21840580053176595, -0.1501865110092797, '4'),\n",
" ('@user3', '@user4'): Text(-0.6018896056692925, 0.24679395449426322, '2')}"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"labels = nx.get_edge_attributes(W,'weight')\n",
"nx.draw_networkx(W, wpos, node_color='y', node_size=600)\n",
"nx.draw_networkx_edges(W,wpos,width=4, edge_color='pink', arrows=False)\n",
"nx.draw_networkx_edge_labels(W,wpos,edge_labels=labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We will use a helper function to draw the measures"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import matplotlib.colors as mcolors\n",
"\n",
"# for Notebook\n",
"%matplotlib inline\n",
"\n",
"# Adapted from https://aksakalli.github.io/2017/07/17/network-centrality-measures-and-their-visualization.html\n",
"def draw(G, pos, measures, measure_name):\n",
" nodes = nx.draw_networkx_nodes(G, pos, node_size=250, cmap=plt.cm.YlOrRd, \n",
" node_color=list(measures.values()),\n",
" nodelist=measures.keys())\n",
" nodes.set_norm(mcolors.SymLogNorm(linthresh=0.01, linscale=1))\n",
" labels = nx.draw_networkx_labels(G, pos)\n",
" edges = nx.draw_networkx_edges(G, pos)\n",
" plt.title(measure_name)\n",
" plt.colorbar(nodes)\n",
" plt.axis('off')\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Micro level analysis"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Degree centrality"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Undirected Graphs\n",
"\n",
"Calculate degree"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[(0, 16), (1, 9), (2, 10), (3, 6), (4, 3), (5, 4), (6, 4), (7, 4), (8, 5), (9, 2), (10, 3), (11, 1), (12, 2), (13, 5), (14, 2), (15, 2), (16, 2), (17, 2), (18, 2), (19, 3), (20, 2), (21, 2), (22, 2), (23, 5), (24, 3), (25, 3), (26, 2), (27, 4), (28, 3), (29, 4), (30, 4), (31, 6), (32, 12), (33, 17)]\n"
]
}
],
"source": [
"print(KCG.degree())"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"9\n"
]
}
],
"source": [
"print(KCG.degree(1))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Normalized centrality"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[(33, 0.5151515151515151),\n",
" (0, 0.48484848484848486),\n",
" (32, 0.36363636363636365),\n",
" (2, 0.30303030303030304),\n",
" (1, 0.2727272727272727),\n",
" (3, 0.18181818181818182),\n",
" (31, 0.18181818181818182),\n",
" (8, 0.15151515151515152),\n",
" (13, 0.15151515151515152),\n",
" (23, 0.15151515151515152)]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"degree = nx.degree_centrality(KCG)\n",
"sorted(degree.items(), key=lambda x:x[1], reverse=True)[0:10]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw(KCG, pos, nx.degree_centrality(KCG), 'Degree centrality')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Directed grahps"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('A', 2), ('B', 1), ('C', 1)]\n"
]
}
],
"source": [
"print(D.degree())"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('A', 1), ('B', 1), ('C', 0)]\n"
]
}
],
"source": [
"print(D.in_degree)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('A', 1), ('B', 0), ('C', 1)]\n"
]
}
],
"source": [
"print(D.out_degree)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Weighted graphs"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('@user1', 3), ('@user2', 1), ('@user3', 2), ('@user4', 2)]\n"
]
}
],
"source": [
"print(W.degree)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('@user1', 11), ('@user2', 5), ('@user3', 4), ('@user4', 6)]\n"
]
}
],
"source": [
"print(W.degree(weight='weight')) #name of relationship with numeric weight"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n"
]
}
],
"source": [
"print(W.degree('@user2', weight='weight'))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Betweenness centrality"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[(0, 231.0714285714286),\n",
" (33, 160.5515873015873),\n",
" (32, 76.69047619047619),\n",
" (2, 75.85079365079366),\n",
" (31, 73.00952380952378),\n",
" (8, 29.529365079365082),\n",
" (1, 28.478571428571424),\n",
" (13, 24.215873015873015),\n",
" (19, 17.1468253968254),\n",
" (5, 15.833333333333334)]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"betweenness = nx.betweenness_centrality(KCG, normalized=False)\n",
"sorted(betweenness.items(), key=lambda x:x[1], reverse=True)[0:10]"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw(KCG, pos, nx.betweenness_centrality(KCG, normalized=False), 'Betweeenness centrality')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Closeness centrality"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[(0, 0.5689655172413793),\n",
" (2, 0.559322033898305),\n",
" (33, 0.55),\n",
" (31, 0.5409836065573771),\n",
" (8, 0.515625),\n",
" (13, 0.515625),\n",
" (32, 0.515625),\n",
" (19, 0.5),\n",
" (1, 0.4852941176470588),\n",
" (3, 0.4647887323943662)]"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"closeness = nx.closeness_centrality(KCG)\n",
"sorted(closeness.items(), key=lambda x:x[1], reverse=True)[0:10]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAAGbCAYAAABJUKDJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD3R0lEQVR4nOyddXhURxeH37ubbNwICQlBgru7OxR3KaVIKaW414F6Sw0ozkcLFGnR4lAsuBdosRACBE+Iu6zM98cmC8smRAnSeZ9nn3bvyJ27SfjtOXPmHEUIIZBIJBKJRPJUVM97ARKJRCKRvAxIwZRIJBKJJAtIwZRIJBKJJAtIwZRIJBKJJAtIwZRIJBKJJAtIwZRIJBKJJAtIwZRIJBKJJAtIwZRIJBKJJAtIwZRIJBKJJAtIwZRkCV9fXwYPHvy8lyF5zhw4cABFUThw4IDp2uDBg/H19X1ua5JI8gspmP9xrl+/zvDhwylZsiS2trY4OzvTqFEjZs+eTWJi4vNeniQHzJ8/n2XLlj23+yckJPDpp5+aiapE8ipg9bwXIHl+bN++nd69e2NjY8PAgQOpXLkyKSkpHDlyhClTpnDp0iUWL178vJcpySbz58+nYMGC+eYR+N///ofBYDC9T0hI4LPPPgOgefPm+bIGiSQ/kIL5H+XmzZv069eP4sWLs3//fry9vU1to0aNIjAwkO3btz/HFUryg/j4eBwcHHI1h7W1dR6tRiJ5sZEu2f8o3333HXFxcfzyyy9mYplG6dKlGTdu3FPnuHHjBr1796ZAgQLY29tTv379dEV2zpw5VKpUCXt7e9zc3KhduzarV68263Pv3j3eeustChUqhI2NDZUqVeLXX38165O2f7Z27Vq++uorihQpgq2tLa1atSIwMNDividPnuS1117DxcUFe3t7mjVrxtGjR836xMbGMn78eHx9fbGxscHT05M2bdpw9uxZU59r167Rs2dPvLy8sLW1pUiRIvTr14/o6Oinfj5pa+jQoQNubm44ODhQtWpVZs+ebdbH39+fXr16UaBAAWxtbalduzZbtmwx67Ns2TIUReHo0aNMnDgRDw8PHBwc6N69O6GhoaZ+vr6+XLp0iYMHD6IoCoqimKy8tDkOHjzIyJEj8fT0pEiRIgDcunWLkSNHUq5cOezs7HB3d6d3794EBQVl+oyP72EGBQXh4eEBwGeffWZaw6effsrSpUtRFIVz585ZzPH111+jVqu5d+9epveTSJ4X0sL8j7J161ZKlixJw4YNczQ+JCSEhg0bkpCQwNixY3F3d2f58uV06dKF9evX0717d8Dorhs7diy9evVi3LhxJCUl8e+//3Ly5En69+9vmqt+/fooisLo0aPx8PBg586dDB06lJiYGMaPH29272+//RaVSsXkyZOJjo7mu+++44033uDkyZOmPvv376d9+/bUqlWL6dOno1KpWLp0KS1btuTw4cPUrVsXgHfffZf169czevRoKlasSHh4OEeOHOHKlSvUrFmTlJQU2rVrR3JyMmPGjMHLy4t79+6xbds2oqKicHFxyfAz2rNnD506dcLb25tx48bh5eXFlStX2LZtm+nLyKVLl2jUqBE+Pj588MEHODg4sHbtWrp168aGDRtMn2MaY8aMwc3NjenTpxMUFMSsWbMYPXo0a9asAWDWrFmMGTMGR0dHPv74YwAKFSpkNsfIkSPx8PBg2rRpxMfHA3D69GmOHTtGv379KFKkCEFBQSxYsIDmzZtz+fJl7O3ts/R74eHhwYIFCxgxYgTdu3enR48eAFStWpUSJUowatQoVq1aRY0aNczGrVq1iubNm+Pj45Ol+0gkzwUh+c8RHR0tANG1a9csjylevLgYNGiQ6f348eMFIA4fPmy6FhsbK0qUKCF8fX2FXq8XQgjRtWtXUalSpafOPXToUOHt7S3CwsLMrvfr10+4uLiIhIQEIYQQfn5+AhAVKlQQycnJpn6zZ88WgLhw4YIQQgiDwSDKlCkj2rVrJwwGg6lfQkKCKFGihGjTpo3pmouLixg1alSGazt37pwAxLp16576DE+i0+lEiRIlRPHixUVkZKRZ2+NratWqlahSpYpISkoya2/YsKEoU6aM6drSpUsFIFq3bm02fsKECUKtVouoqCjTtUqVKolmzZpZrCltjsaNGwudTmfWlvYZP87x48cFIH777TfTtbSfgZ+fn+naoEGDRPHixU3vQ0NDBSCmT59uMefrr78uChcubPr9EEKIs2fPCkAsXbrUor9E8iIhXbL/QWJiYgBwcnLK8Rw7duygbt26NG7c2HTN0dGRd955h6CgIC5fvgyAq6srd+/e5fTp0+nOI4Rgw4YNdO7cGSEEYWFhple7du2Ijo42c48CDBkyBI1GY3rfpEkTwOgiBjh//jzXrl2jf//+hIeHm+aLj4+nVatWHDp0yBSk4urqysmTJ7l//36660uzIP/66y8SEhKy/PmcO3eOmzdvMn78eFxdXc3aFEUBICIigv3799OnTx9iY2NN6wwPD6ddu3Zcu3bNwkX5zjvvmManPbter+fWrVtZXtuwYcNQq9Vm1+zs7Ez/r9VqCQ8Pp3Tp0ri6ulp8/rlh4MCB3L9/Hz8/P9O1VatWYWdnR8+ePfPsPhLJs0AK5n8QZ2dnwLh/l1Nu3bpFuXLlLK5XqFDB1A7w/vvv4+joSN26dSlTpgyjRo0y20cMDQ0lKiqKxYsX4+HhYfYaMmQIAA8fPjS7R7Fixczeu7m5ARAZGQkY9xwBBg0aZDHnkiVLSE5ONu0/fvfdd1y8eJGiRYtSt25dPv30U5PwApQoUYKJEyeyZMkSChYsSLt27Zg3b16m+5fXr18HoHLlyhn2CQwMRAjB1KlTLdY5ffr0HD17VihRooTFtcTERKZNm0bRokWxsbGhYMGCeHh4EBUVlaW92qzSpk0bvL29WbVqFQAGg4Hff/+drl275uoLnESSH8g9zP8gzs7OFC5cmIsXLz7ze1WoUIGrV6+ybds2du3axYYNG5g/fz7Tpk3js88+M1l6AwYMYNCgQenOUbVqVbP3T1pHaQghAExzfv/991SvXj3dvo6OjgD06dOHJk2a8Oeff7J7926+//57ZsyYwcaNG2nfvj0AP/74I4MHD2bz5s3s3r2bsWPH8s0333DixAlT0ExOSFvn5MmTadeuXbp9SpcubfY+s2fPCo9bk2mMGTOGpUuXMn78eBo0aICLiwuKotCvXz+zIyO5Ra1W079/f/73v/8xf/58jh49yv379xkwYECe3UMieVZIwfyP0qlTJxYvXszx48dp0KBBtscXL16cq1evWlz39/c3tafh4OBA37596du3LykpKfTo0YOvvvqKDz/8EA8PD5ycnNDr9bRu3TrnD/QYpUqVAoxfDLIyp7e3NyNHjmTkyJE8fPiQmjVr8tVXX5kEE6BKlSpUqVKFTz75hGPHjtGoUSMWLlzIl19++dQ1XLx4McM1lCxZEjAey8irZwfMXLZZZf369QwaNIgff/zRdC0pKYmoqKg8v//AgQP58ccf2bp1Kzt37sTDwyPDLwwSyYuEdMn+R3nvvfdwcHDg7bffJiQkxKL9+vXrFscfHqdDhw6cOnWK48ePm67Fx8ezePFifH19qVixIgDh4eFm4zQaDRUrVkQIgVarRa1W07NnTzZs2JCuxfv4kYmsUqtWLUqVKsUPP/xAXFxchnPq9XoLd6OnpyeFCxcmOTkZMO736nQ6sz5VqlRBpVKZ+qRHzZo1KVGiBLNmzbIQnTRr0NPTk+bNm7No0SIePHiQ4Tqzi4ODQ7aFTq1WW1ipc+bMQa/XZ/v+aRG1Ga2hatWqVK1alSVLlrBhwwb69euHlZX87i558ZG/pf9RSpUqxerVq+nbty8VKlQwy/Rz7Ngx1q1b99RMMR988AG///477du3Z+zYsRQoUIDly5dz8+ZNNmzYgEpl/C7Wtm1bvLy8aNSoEYUKFeLKlSvMnTuXjh07mvasvv32W/z8/KhXrx7Dhg2jYsWKREREcPbsWfbu3UtERES2nk2lUrFkyRLat29PpUqVGDJkCD4+Pty7dw8/Pz+cnZ3
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw(KCG, pos, nx.closeness_centrality(KCG), 'Closeness centrality')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Eigenvector centrality"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[(33, 0.37337121301323506),\n",
" (0, 0.35548349418519426),\n",
" (2, 0.3171893899684447),\n",
" (32, 0.3086510477336959),\n",
" (1, 0.2659538704545024),\n",
" (8, 0.22740509147166046),\n",
" (13, 0.22646969838808145),\n",
" (3, 0.21117407832057056),\n",
" (31, 0.191036269797917),\n",
" (30, 0.17476027834493088)]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eigenvector = nx.eigenvector_centrality(KCG)\n",
"sorted(eigenvector.items(), key=lambda x:x[1], reverse=True)[0:10]"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw(KCG, pos, nx.eigenvector_centrality(KCG), 'Eigenvector centrality')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Local clustering coefficient"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.6666666666666666"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.clustering(KCG, 3)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[(7, 1.0),\n",
" (12, 1.0),\n",
" (14, 1.0),\n",
" (15, 1.0),\n",
" (16, 1.0),\n",
" (17, 1.0),\n",
" (18, 1.0),\n",
" (20, 1.0),\n",
" (21, 1.0),\n",
" (22, 1.0)]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clustering = nx.clustering(KCG)\n",
"sorted(clustering.items(), key=lambda x:x[1], reverse=True)[0:10]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Meso analysis. Group level metrics"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Cliques"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABc60lEQVR4nO3dd1RUV9sF8D0IAnbEErEiHaQJI2o0ajQqqLFEE8XeNcaWaL5oNKZoAnaxx2401qixx5pYYJCmKChFiQViQ1TKUIa53x8KLyNIkXKn7N9arCTOMPfRFbn7nvOccySCIAggIiIinaUndgFEREQkLoYBIiIiHccwQEREpOMYBoiIiHQcwwAREZGOYxggIiLScQwDREREOk6/OG9SKpVISEhA9erVIZFIyrsmIiIiKgOCICA5ORlmZmbQ03v783+xwkBCQgIaN25cZsURERFRxbl//z4aNWr01teLFQaqV6+e+2E1atQom8qIiIioXL18+RKNGzfOvY+/TbHCQM7UQI0aNRgGiIiINExRU/xsICQiItJxDANEREQ6jmGAiIhIxzEMEBER6TiGASIiIh3HMEBERKTjGAaIiIh0HMMAERGRjmMYICIi0nEMA0RERDqOYYCIiEjHMQwQERHpOIYBIiIiHccwQEREpOMYBoiIiHQcwwAREZGO0xe7ACJNlqJQIFYuR4YgwFAigaWxMarp868VEWkW/tQiKqHI1FSsS0jA8cRE3ElPh5DnNQmA5kZG8DI1xQQzM9hXrSpWmURExSYRBEEo6k0vX75EzZo18eLFC9SoUaMi6iJSO3FyOcZHR+N0UhL0ASgKeW/O6x+ZmGC9tTXMjY0rpkgiojyKe/9mzwBRMWxMSIB9UBDOJyUBKDwI5H39fFIS7IOCsDEhoVzrIyIqDYYBoiIsuHsXY6Ojka5UFhkC3qQAkK5UYmx0NBbcvVse5RERlRrDAFEhNiYkYE5cXJl81py4OGz6778y+SwiorLEBkKit4iTyzE5NrbwN8XHA7t3AyEhwNOngIEBYG4OdOwI9OoFGBqqvP2LmBh8WKsWewiISK0wDBC9xfjoaCiUyre/ISAA+OGHVwGga9dXISArC7hxA1i/Hvj3X2DGDJVvUSiVGB8djVPOzuVbPBFRCTAMEBUgMjUVp183Cxbov/+An34C6tcHli4FTE3/91rfvq9GDAIC8n2bAsDppCTcTE2FHZcdEpGaYM8AUQHWJSQUnpR37wbkcmDmTNUgkKNhQ6B//wK/VR/AWq4uICI1wjBAVIDjiYmFrxzw9wfMzIAWLUr82QoAJxIT37U0IqIyxzBA9IZkhQJ30tPf/obU1FfNgubm73yN2+npSFGUdKEiEVH5YBggesNtuRyFbsuZlvbqn1WqvPM1BACxcvk7fz8RUVliGCB6Q0ZRO3TnhICcUFBe1yEiqiAMA0RvMJRICn9D1apAnTpAKTcjKvI6REQVhGGA6A2WxsYo8jbdujWQkABERLzbRQQBVw4dQlRUFJSF7WVARFQBGAaI3lBNXx/NjYwKf9PAgYCREbBoEfDsWf7X4+OB/fvf+u0GT55g/LBhsLW1RZ06deDp6Ynvv/8eJ0+exLOCPo+IqBzxCGOiAkyJicHa+PjClxdevgz8+OOrLYfz7kAYEQH88w/QrRvw1Vf5vk0fwMSGDfFDnToICgqCTCZDYGAgZDJZbhCwtrZG69at0bp1a3h4eMDR0REGBgbl8nslIu1V3Ps3wwBRASJTU+EQFFT0Gx88+N/ZBImJr7Ymbt4c+PBDoEcPoHLlgj9fKs23A6EgCIiNjVUJB9euXYNCoYCxsTHc3d3h4eGRGxIaNmxYFr9VItJiDANEpdT12jWcT0oq8bHFhdEH0MnEpNhnE8jlcoSGhqoEhPv37wMAGjZsmBsMWrdujZYtW6JKKZY7EpH2YRggKqU4uRz2QUFIL8MGPyM9PURKpaU6tTAhISE3GMhkMgQHByMtLQ2VKlWCs7Nz7tRC69atYWVlBQlXLRDpLIYBojKwMSEBY6Ojy+7zbGwwukGDMvs8AFAoFLhx40ZuOAgMDMStW7cAALVr10arVq1yRw9atWoFExOTMr0+EakvhgGiMpCamgq7+fNxv1u3Un/WAnNzzG7atAyqKlpSUhKuXLmiMoKQ9PoURhsbG5XRA0dHR+jr8wBTIm3EMEBUSllZWejbty/+/vtvTDt9GkuysqBQKkvWQ6BQwFBfH6vLYUSgJPI2J+aMHuQ0J1apUgVubm4qqxfYnEikHRgGiEpBEASMHDkSO3fuxLFjx9C1a1fEyeUYHx2N00lJ0AcKDQU5rxtHRMDpzBkEHDigdnP3eZsTc74ePHgAAGjUqJHK6AGbE4k0E8MAUSl888038PX1xc6dO+Ht7a3yWmRqKtYlJOBEYiJup6erHGokAWBhZARPU1NMNDPDvUuX0L17d/z+++8YNGhQhf4e3kV8fHzu1EJgYCCCgoIgl8uhr68PJycnldEDNicSqT+GAaJ3tHz5ckyfPh1Lly7F9OnTC31vikKBWLkcGYIAQ4kElsbGqPbG/Hv//v3h7++PW7duadzfH4VCgevXr6v0HkRFRQF41Zzo4eGRO3rA5kQi9cMwQPQOdu3aBW9vb3z99dfw9fUtk8+8f/8+bG1tMX78eCxdurRMPlNMOc2Jefc+eLM5Me/OiWxOJBIPwwBRCZ0+fRo9evSAt7c3tmzZUqZD4L6+vvj2228RFhYGR0fHMvtcdSAIAmJiYlRGD8LDw3ObE93d3VX6D8zMzMQumUhnMAwQlUBISAg6duyIDz74AIcOHSrzcwAyMzPh5OSEevXq4Z9//tH6ufa0tLR8OyfmNCc2btw4Nxh4eHjAzc0NxqXYhImI3o5hgKiYYmJi8P7776N58+Y4e/Ysqr5xZkBZOXv2LLp06YLt27dj6NCh5XINdZa3OTFn58Sc5kRnZ2eVcxcsLS21PjARVQSGAaJiePjwIdq2bYvKlSvj0qVLqFOnTrleb+DAgTh//jyioqJQq1atcr2WusvKysrdOTEnJLzZnJh350Rd//MiehcMA0RFePnyJTp06IDHjx/D398fTStgd8D4+HjY2Nhg9OjRWLFiRblfT9PkbU7MCQk5zYm2trYqvQctWrRgcyJRERgGiAqRkZEBT09PhIaG4uLFixXa1Ld48WL83//9H0JCQuDi4lJh19VEOc2Jbx7rnJ2drdKcmBMS2JxIpIphgOgtsrOzMWjQIBw+fBinT59G+/btK/T6WVlZcHFxQa1atXDx4kXo6elV6PU1Xd7mxJyQkLc58c2dE9mcSLqMYYCoAIIgYPLkyVi7di3++OMP9OnTR5Q6/v77b3Tq1AlbtmzBiBEjRKlBmzx48ACBgYG5owdvNifmHT1gcyLpEoYBogIsWLAAc+bMwfr16zFu3DhRaxk8eDBOnz6NqKgo7txXxvI2J+aMHuQ0J5qamubbOZHNiaStGAaI3rBx40aMHTsWP/74I+bOnSt2Ofjvv/9gY2ODoUOHYvXq1WKXo/WePXumcqxzQc2JOaMHbE4kbcEwQJTH4cOH0bdvX0yYMAGrVq1Sm2Hi5cuX48svv0RQUBDc3NzELken5G1OzHusc05zolQqVVne2EDEI6iJ3hXDANFrly9fRpcuXdCjRw/s2bMHlSpVErukXAqFIvd4YH9/fzYTiiwtLQ0hISEqmyPFx8cD+F9zYs7oAZsTSRMwDBABiIiIQLt27eDs7IyTJ0/CyMhI7JLyuXjxIj744ANs2LABY8aMEbscekNOc2LO6EHe5kQXFxeV1QsWFhZqM+pEBDAMEOHevXto27Yt6tSpg3/++Qc1a9YUu6S3Gj58OI4dO4aoqCiYmpqKXQ4VIisrK9+xztHR0QD+15yYM4IglUrZnEiiYhggnZaYmIj27dtDLpfD399f7ed7Hz16BBsbGwwcOBDr1q0TuxwqoZzmxLybIz1//hwAYGdnpzJ64ODgwOZEqjAMA6SzUlNT0aVLF8TGxuLy5cuwtrYWu6RiWbVqFaZMmYLAwEBIpVKxy6FSUCqVBR7rnJ2djapVq+bbOVHdwyppLoYB0kl
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"CG = nx.Graph()\n",
"CG.add_edges_from([('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('B', 'E'),('C','D'), ('D', 'E')])\n",
"nx.draw_networkx(CG, node_color='c')"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[['D', 'B', 'A', 'C'], ['D', 'B', 'E']]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(nx.find_cliques(CG))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[4, 0, 1, 2, 3], [4, 5], [6, 5], [6, 7], [7, 8, 9, 10, 11]]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB44ElEQVR4nO3dd3RUxd8G8GfTe0hCgCTU0ISEUEJHKaLwQ0WU0IJgewFBivQmhCZIB7sg2CgCARQiIEgCFkAwoYZepGUTCCEJqbvJ7r5/rBtTttzdezf1+ZzjQfbeO3eIIE9m5jsj02g0GhARERERWcimrDtARERERBUbAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCQKAyURERERicJASURERESiMFASERERkSgMlEREREQkCgMlEREREYnCQElEREREojBQEhEREZEoDJREREREJAoDJRERERGJwkBJRERERKIwUBIRERGRKAyURERERCSKXVl3gIiIiKhcUamAHAWgVgM2NoCzI2BrW9a9KtcYKImIiIiycoDEZCAlHchVlLzu5Aj4eAJ+voCrc+n3r5yTaTQaTVl3goiIiKhM5CiA67eB1Azhz3i5A43ra0cuCQADJREREVVVicnAjbuA2oIoZCMDGtXVjlgSAyURERFVQXfkwG25+Hbq+wP1/MW3U8GxypuIiIiqlsRkacIkoG0nMVmatiowFuUQERFR1ZGj0E5z63Hxn5uY/+1XiLt2GUmPU+Di6ITm9QMxbcgw9O3c1XCbN+4C1Tyq9JpKjlASERFR1XH9tsE1k3ceJCEjOwtv9H4JH42fgrmv/x8A4OXZU7A+arfhNtUabbtVGNdQEhERUdWQlQPEXjTrEZVKhdBRw5GrVOLKpp3Gb24bVGW3FOIIJREREZU9lQrIzAaeZGp/VKmkf4cFax1tbW1Rp0ZNpGUK2FaoCq+l5BpKIiIiKhulvZl4SrrAbuUgR6FAelYm9h7/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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Another example\n",
"BG = nx.barbell_graph(m1=5, m2=2)\n",
"gl = list(nx.find_cliques(BG))\n",
"print(gl)\n",
"nx.draw(BG, node_color='pink', with_labels=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Community detection"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Helper functions"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"# from Network Science with Python and NetworkX \n",
"def set_node_community(G, communities):\n",
" '''Add community to node attributes'''\n",
" for c, v_c in enumerate(communities):\n",
" for v in v_c:\n",
" # Add 1 to save 0 for external edges\n",
" G.nodes[v]['community'] = c + 1\n",
" \n",
"def set_edge_community(G):\n",
" '''Find internal edges and add their community to their attributes'''\n",
" for v, w, in G.edges:\n",
" if G.nodes[v]['community'] == G.nodes[w]['community']:\n",
" # Internal edge, mark with community\n",
" G.edges[v, w]['community'] = G.nodes[v]['community']\n",
" else:\n",
" # External edge, mark as 0\n",
" G.edges[v, w]['community'] = 0\n",
"def get_color(i, r_off=1, g_off=1, b_off=1):\n",
" r0, g0, b0 = 0, 0, 0\n",
" n = 16\n",
" low, high = 0.1, 0.9\n",
" span = high - low\n",
" r = low + span * (((i + r_off) * 3) % n) / (n - 1)\n",
" g = low + span * (((i + g_off) * 5) % n) / (n - 1)\n",
" b = low + span * (((i + b_off) * 7) % n) / (n - 1)\n",
" return (r, g, b)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Let's calculate the communities"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import networkx.algorithms.community as nxcom\n",
"\n",
"\n",
"result = nxcom.girvan_newman(KCG)\n",
"communities = next(result)\n",
"len(communities)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"# Set node and edge communities\n",
"set_node_community(KCG, communities)\n",
"set_edge_community(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"# Set community color for nodes\n",
"node_color = [get_color(KCG.nodes[v]['community']) for v in KCG.nodes]\n",
"\n",
"# Set community color for internal edges\n",
"external = [(v, w) for v, w in KCG.edges if KCG.edges[v, w]['community'] == 0]\n",
"internal = [(v, w) for v, w in KCG.edges if KCG.edges[v, w]['community'] > 0]\n",
"internal_color = [get_color(KCG.edges[e]['community']) for e in internal]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Let's see the result"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Draw external edges\n",
"nx.draw_networkx(\n",
" KCG, pos=pos, node_size=0,\n",
" edgelist=external, edge_color=\"#333333\", with_labels=False)\n",
"# Draw nodes and internal edges\n",
"nx.draw_networkx(\n",
" KCG, pos=pos, node_color=node_color,\n",
" edgelist=internal, edge_color=internal_color)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"it classifies well most of the nodes (except for 8 and 2)."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"colors = ['yellow' if not node in mr_hi_nodes else 'pink' for node in KCG.nodes()]\n",
"nx.draw_networkx(KCG, pos, node_color=colors)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Alternatively, we can draw with the library *nx_altair* if installed. "
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"communities = list(nx.community.label_propagation_communities(KCG))\n",
"centralities = nx.eigenvector_centrality(KCG)\n",
"\n",
"for f in KCG.nodes():\n",
" for i, c in enumerate(communities):\n",
" if f in c:\n",
" attrs = {f: {\"community\" : str(i),\n",
" \"centrality\" : centralities[f],\n",
" \"name\" : f\n",
" }}\n",
" nx.set_node_attributes(KCG, attrs)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<style>\n",
" #altair-viz-b41c24c09eb8466f801b9980b5335fca.vega-embed {\n",
" width: 100%;\n",
" display: flex;\n",
" }\n",
"\n",
" #altair-viz-b41c24c09eb8466f801b9980b5335fca.vega-embed details,\n",
" #altair-viz-b41c24c09eb8466f801b9980b5335fca.vega-embed details summary {\n",
" position: relative;\n",
" }\n",
"</style>\n",
"<div id=\"altair-viz-b41c24c09eb8466f801b9980b5335fca\"></div>\n",
"<script type=\"text/javascript\">\n",
" var VEGA_DEBUG = (typeof VEGA_DEBUG == \"undefined\") ? {} : VEGA_DEBUG;\n",
" (function(spec, embedOpt){\n",
" let outputDiv = document.currentScript.previousElementSibling;\n",
" if (outputDiv.id !== \"altair-viz-b41c24c09eb8466f801b9980b5335fca\") {\n",
" outputDiv = document.getElementById(\"altair-viz-b41c24c09eb8466f801b9980b5335fca\");\n",
" }\n",
" const paths = {\n",
" \"vega\": \"https://cdn.jsdelivr.net/npm/vega@5?noext\",\n",
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm/vega-lib?noext\",\n",
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm/vega-lite@5.17.0?noext\",\n",
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm/vega-embed@6?noext\",\n",
" };\n",
"\n",
" function maybeLoadScript(lib, version) {\n",
" var key = `${lib.replace(\"-\", \"\")}_version`;\n",
" return (VEGA_DEBUG[key] == version) ?\n",
" Promise.resolve(paths[lib]) :\n",
" new Promise(function(resolve, reject) {\n",
" var s = document.createElement('script');\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" s.async = true;\n",
" s.onload = () => {\n",
" VEGA_DEBUG[key] = version;\n",
" return resolve(paths[lib]);\n",
" };\n",
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
" s.src = paths[lib];\n",
" });\n",
" }\n",
"\n",
" function showError(err) {\n",
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
" throw err;\n",
" }\n",
"\n",
" function displayChart(vegaEmbed) {\n",
" vegaEmbed(outputDiv, spec, embedOpt)\n",
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
" }\n",
"\n",
" if(typeof define === \"function\" && define.amd) {\n",
" requirejs.config({paths});\n",
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
" } else {\n",
" maybeLoadScript(\"vega\", \"5\")\n",
" .then(() => maybeLoadScript(\"vega-lite\", \"5.17.0\"))\n",
" .then(() => maybeLoadScript(\"vega-embed\", \"6\"))\n",
" .catch(showError)\n",
" .then(() => displayChart(vegaEmbed));\n",
" }\n",
" })({\"config\": {\"view\": {\"continuousWidth\": 300, \"continuousHeight\": 300}}, \"layer\": [{\"data\": {\"name\": \"data-796e8487f401da08203543097a1d3975\"}, \"mark\": {\"type\": \"line\", \"color\": \"black\", \"opacity\": 1, \"strokeWidth\": 1}, \"encoding\": {\"detail\": {\"field\": \"edge\", \"type\": \"quantitative\"}, \"x\": {\"axis\": {\"grid\": false, \"labels\": false, \"ticks\": false, \"title\": \"\"}, \"field\": \"x\", \"type\": \"quantitative\"}, \"y\": {\"axis\": {\"grid\": false, \"labels\": false, \"ticks\": false, \"title\": \"\"}, \"field\": \"y\", \"type\": \"quantitative\"}}}, {\"data\": {\"name\": \"data-dd61032c40862ff1bf0ec28f2e9815c3\"}, \"mark\": {\"type\": \"point\", \"opacity\": 1, \"strokeWidth\": 1.0}, \"encoding\": {\"fill\": {\"field\": \"community\", \"scale\": {\"scheme\": \"accent\"}, \"type\": \"nominal\"}, \"size\": {\"field\": \"centrality\", \"legend\": null, \"type\": \"quantitative\"}, \"tooltip\": [{\"field\": \"name\", \"type\": \"quantitative\"}, {\"field\": \"centrality\", \"type\": \"quantitative\"}, {\"field\": \"community\", \"type\": \"nominal\"}], \"x\": {\"axis\": {\"grid\": false, \"labels\": false, \"ticks\": false}, \"field\": \"x\", \"type\": \"quantitative\"}, \"y\": {\"axis\": {\"grid\": false, \"labels\": false, \"ticks\": false}, \"field\": \"y\", \"type\": \"quantitative\"}}}], \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.17.0.json\", \"datasets\": {\"data-796e8487f401da08203543097a1d3975\": [{\"pair\": [0, 1], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 4, \"community\": 1, \"target\": 1, \"edge\": 0}, {\"pair\": [0, 1], \"source\": 0, \"y\": -0.10333340467694771, \"x\": 0.22157555692712255, \"weight\": 4, \"community\": 1, \"target\": 1, \"edge\": 0}, {\"pair\": [0, 2], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 5, \"community\": 0, \"target\": 2, \"edge\": 1}, {\"pair\": [0, 2], \"source\": 0, \"y\": -0.04889377094377533, \"x\": 0.02665036665852286, \"weight\": 5, \"community\": 0, \"target\": 2, \"edge\": 1}, {\"pair\": [0, 3], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 3, \"community\": 1, \"target\": 3, \"edge\": 2}, {\"pair\": [0, 3], \"source\": 0, \"y\": -0.35099864408790443, \"x\": 0.13737656718587196, \"weight\": 3, \"community\": 1, \"target\": 3, \"edge\": 2}, {\"pair\": [0, 4], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 3, \"community\": 1, \"target\": 4, \"edge\": 3}, {\"pair\": [0, 4], \"source\": 0, \"y\": -0.28606246472555474, \"x\": 0.6925676154518609, \"weight\": 3, \"community\": 1, \"target\": 4, \"edge\": 3}, {\"pair\": [0, 5], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 3, \"community\": 1, \"target\": 5, \"edge\": 4}, {\"pair\": [0, 5], \"source\": 0, \"y\": -0.42069004334136134, \"x\": 0.7905284165415447, \"weight\": 3, \"community\": 1, \"target\": 5, \"edge\": 4}, {\"pair\": [0, 6], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 3, \"community\": 1, \"target\": 6, \"edge\": 5}, {\"pair\": [0, 6], \"source\": 0, \"y\": -0.5015268559996672, \"x\": 0.7260729889733195, \"weight\": 3, \"community\": 1, \"target\": 6, \"edge\": 5}, {\"pair\": [0, 7], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 2, \"community\": 1, \"target\": 7, \"edge\": 6}, {\"pair\": [0, 7], \"source\": 0, \"y\": -0.24720557271361956, \"x\": 0.1839750134271702, \"weight\": 2, \"community\": 1, \"target\": 7, \"edge\": 6}, {\"pair\": [0, 8], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 2, \"community\": 0, \"target\": 8, \"edge\": 7}, {\"pair\": [0, 8], \"source\": 0, \"y\": 0.11686676861815107, \"x\": -0.052697367481038815, \"weight\": 2, \"community\": 0, \"target\": 8, \"edge\": 7}, {\"pair\": [0, 10], \"source\": 0, \"y\": -0.2302323693491078, \"x\": 0.3513651685988333, \"weight\": 2, \"community\": 1, \"target\": 10, \"edge\": 8}, {\"pair\": [0
"</script>"
],
"text/plain": [
"alt.LayerChart(...)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import nx_altair as nxa\n",
"\n",
"nxa.draw_networkx(\n",
" G=KCG,\n",
" pos=pos,\n",
" node_size=\"centrality\",\n",
" node_color='community',\n",
" cmap='accent',\n",
" node_tooltip=['name', 'centrality', \"community\"]\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Macro analysis. Global metrics"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Number of nodes"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"34"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"34"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(KCG.nodes)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"34"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(KCG.nodes())"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"34"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.number_of_nodes(KCG)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Number of edges"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"78"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(KCG.edges())"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Graph named \"Zachary's Karate Club\" with 34 nodes and 78 edges\n"
]
}
],
"source": [
"print(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"78"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.number_of_edges(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"483"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(list(nx.non_edges(KCG))) ## Number of non-existing edges"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DiGraph with 3 nodes and 2 edges\n"
]
}
],
"source": [
"print(D)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Shortest path"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[[0, 8, 33], [0, 13, 33], [0, 19, 33], [0, 31, 33]]"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(nx.all_shortest_paths(KCG, 0, 33)) # All shortest paths"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[0, 8, 33]"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.shortest_path(KCG, 0, 33) #Just one"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.shortest_path_length(KCG, 0, 33) # Minimum distance"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"2.408199643493761"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.average_shortest_path_length(KCG) #Average shortest path "
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.diameter(KCG) # Diameter (largest shortest path between 2 nodes)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Transitivity"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.2556818181818182"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.transitivity(KCG)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Average local clustering"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.5706384782076823"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.average_clustering(KCG)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Density"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.13903743315508021"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.density(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.13903743315508021"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 2 * m / n * (n - 1)\n",
"\n",
"2 * nx.number_of_edges(KCG) / ( nx.number_of_nodes(KCG) * (nx.number_of_nodes(KCG) - 1))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Minimal cut"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{0}"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import networkx.algorithms.connectivity as nxcon\n",
"nxcon.minimum_node_cut(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{(11, 0)}"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nxcon.minimum_edge_cut(KCG)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{2, 8, 13, 19, 30, 31}"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nxcon.minimum_st_node_cut(KCG, 0, 33) #Nodes we should remove to separate nodes 0 and 33 into disconnected halves"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Connectivity"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.node_connectivity(KCG) # it is size of the mininum_node_cut()"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.edge_connectivity(KCG) # it is the size of mininum_edge_cut()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"2.2174688057040997"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nx.average_node_connectivity(KCG)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"# References\n",
"* Networkx tutorial https://networkx.github.io/documentation/stable/tutorial.html\n",
"* Network Centrality Measures and Their Visualization, Can Güney Aksakalli, 2017, https://aksakalli.github.io/2017/07/17/network-centrality-measures-and-their-visualization.html"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"## Licence"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"The notebook is freely licensed under under the [Creative Commons Attribution Share-Alike license](https://creativecommons.org/licenses/by/2.0/). \n",
"\n",
"© Carlos A. Iglesias, Universidad Politécnica de Madrid."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"datacleaner": {
"position": {
"top": "50px"
},
"python": {
"varRefreshCmd": "try:\n print(_datacleaner.dataframe_metadata())\nexcept:\n print([])"
},
"window_display": false
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.11.7"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,
"autocomplete": true,
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 1,
"hotkeys": {
"equation": "Ctrl-E",
"itemize": "Ctrl-I"
},
"labels_anchors": false,
"latex_user_defs": false,
"report_style_numbering": false,
"user_envs_cfg": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}