{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "f565c3e9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Netowrks\n",
"import networkx as nx\n",
"import pylab as plt\n",
"import seaborn as sns\n",
"#%matplotlib notebook\n",
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib as mpl\n",
"\n",
"import sys\n",
"sys.path.append(\"../Practicals/\")\n",
"from common_functions import *\n",
"\n",
"#Change the default options of visualization\n",
"custom_params = {\"axes.spines.right\": False, \"axes.spines.top\": False, \"axes.spines.left\": False, \"axes.spines.bottom\":\n",
"False,\"lines.linewidth\": 2, \"grid.color\": \"lightgray\", \"legend.frameon\": False, \"xtick.labelcolor\": \"#484848\", \"ytick.labelcolor\":\n",
"\"#484848\", \"xtick.color\": \"#484848\", \"ytick.color\": \"#484848\",\"text.color\": \"#484848\", \"axes.labelcolor\": \"#484848\",\n",
"\"axes.titlecolor\":\"#484848\",\"figure.figsize\": [5,3],\n",
"\"axes.titlelocation\":\"left\",\"xaxis.labellocation\":\"left\",\"yaxis.labellocation\":\"bottom\"}\n",
"palette = [\"#3d348b\",\"#e6af2e\",\"#191716\",\"#e0e2db\"] #use your favourite colours\n",
"sns.set_theme(context='paper', style='white', palette=palette, font='Verdana', font_scale=1.3, color_codes=True,\n",
"rc=custom_params)\n",
"\n",
"\n",
"from IPython.display import display, HTML\n",
"display(HTML(\"\"))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1abcf5e7",
"metadata": {},
"outputs": [],
"source": [
"# Use the following function to plot the CDF of the degree distributions\n",
"def plot_cdf(values, scale = \"log\", ax = None, cum = True, compl = False, marker = 'o-', xlabel = \"Degree (d)\", ylabel = \"p(Degree < d)\"):\n",
" from collections import Counter\n",
"\n",
" # count the number of instance per each degree, sort it\n",
" C = Counter(values)\n",
" deg, cnt = zip(*sorted(C.items()))\n",
" \n",
" # calcualte the cumulative distribution, normalize to be a probability instead of a count\n",
" if cum:\n",
" cs = np.cumsum(cnt)/np.sum(cnt)\n",
" else:\n",
" cs = cnt/np.sum(cnt)\n",
" \n",
" if compl:\n",
" cs = 1 - cs\n",
" \n",
" if ax is None:\n",
" ax = plt.subplot()\n",
" # plot\n",
" ax.plot(deg, cs, marker)\n",
" ax.set_ylabel(ylabel)\n",
" ax.set_xlabel(xlabel)\n",
" plt.tight_layout()\n",
" sns.despine(left=True, bottom=True)\n",
" plt.xscale(scale)\n",
" plt.yscale(scale)"
]
},
{
"cell_type": "markdown",
"id": "ce5d335a",
"metadata": {},
"source": [
"# Connectedness"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e2f74e33",
"metadata": {},
"outputs": [],
"source": [
"def create_random_netw(average_degree, n = 100, plot = True, type_ = \"ER\"):\n",
" \"\"\"\n",
" Input:\n",
" average_degree: average degree in network\n",
" n: number of nodes\n",
" plot: create plot\n",
" Returns:\n",
" size of largest component (%)\n",
" \n",
" \"\"\"\n",
" if type_ == \"ER\":\n",
" G = nx.random_graphs.fast_gnp_random_graph(n = n, p = average_degree/((n-1)))\n",
" elif type_ == \"BA\":\n",
" G = nx.random_graphs.barabasi_albert_graph(n = n, m = int(average_degree+0.9999))\n",
" to_remove = int((n-1)*int(average_degree+0.9999) - (n-1)*average_degree) - 1\n",
" if to_remove > 0:\n",
" edges = list(G.edges())\n",
" G.remove_edges_from(np.random.permutation(edges)[:to_remove])\n",
"\n",
"\n",
"\n",
" lg = max([len(_) for _ in nx.connected_components(G)])/n\n",
" if plot:\n",
" nx.draw(G, node_size = 30, edge_color = \"gray\", node_color=\"#3d348b\")\n",
" plt.title(f\"Largest component {lg:2.0%}\")\n",
" return lg\n",
"\n",
"\n",
"def create_many_random_net(average_degree, n = 100, plot = False, iters = 10, type_ = \"ER\"):\n",
" \"\"\"\n",
" Average several runs of the create_random_netw function\n",
" \"\"\"\n",
" return np.mean([create_random_netw(average_degree, n=n, plot=plot, type_ = type_) for _ in range(iters)])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "a6f116b8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.475"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"