Skip to content

Instantly share code, notes, and snippets.

@mikk-c
Created August 6, 2024 11:38
Show Gist options
  • Select an option

  • Save mikk-c/8dc41b7669333994cf0e177a57cc8919 to your computer and use it in GitHub Desktop.

Select an option

Save mikk-c/8dc41b7669333994cf0e177a57cc8919 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "74f21a97-6852-46b7-bffd-86ca45a4aa8e",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import networkx as nx\n",
"import seaborn as sns\n",
"from numpy.linalg import svd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6a62d47c-a15a-4259-af8f-378dd7580ad2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"NodeView((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15))"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H = nx.read_edgelist(\"1/data.txt\", delimiter = \"\\t\", nodetype = int)\n",
"# Making sure the nodes are sorted properly in ascending order\n",
"G = nx.Graph()\n",
"G.add_nodes_from(sorted(H.nodes))\n",
"G.add_edges_from(H.edges)\n",
"\n",
"G.nodes"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "147c8a9e-c5c7-4939-bf74-1532c07070bc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0. , 0.25 , 0. , 0.16666667, 0.14285714,\n",
" 0.16666667, 0.16666667, 0. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. , 0. ],\n",
" [0.2 , 0. , 0.14285714, 0. , 0.14285714,\n",
" 0. , 0.16666667, 0. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. , 0. ],\n",
" [0. , 0.25 , 0. , 0.16666667, 0.14285714,\n",
" 0.16666667, 0.16666667, 0.2 , 0. , 0.16666667,\n",
" 0. , 0. , 0. , 0. , 0. ],\n",
" [0.2 , 0. , 0.14285714, 0. , 0.14285714,\n",
" 0.16666667, 0. , 0.2 , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. , 0.16666667],\n",
" [0.2 , 0.25 , 0.14285714, 0.16666667, 0. ,\n",
" 0.16666667, 0.16666667, 0. , 0.14285714, 0. ,\n",
" 0. , 0. , 0. , 0. , 0. ],\n",
" [0.2 , 0. , 0.14285714, 0.16666667, 0.14285714,\n",
" 0. , 0.16666667, 0.2 , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. , 0. ],\n",
" [0.2 , 0.25 , 0.14285714, 0. , 0.14285714,\n",
" 0.16666667, 0. , 0.2 , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. , 0. ],\n",
" [0. , 0. , 0.14285714, 0.16666667, 0. ,\n",
" 0.16666667, 0.16666667, 0. , 0. , 0. ,\n",
" 0.16666667, 0. , 0. , 0. , 0. ],\n",
" [0. , 0. , 0. , 0. , 0.14285714,\n",
" 0. , 0. , 0. , 0. , 0.16666667,\n",
" 0.16666667, 0.2 , 0.2 , 0.33333333, 0.16666667],\n",
" [0. , 0. , 0.14285714, 0. , 0. ,\n",
" 0. , 0. , 0. , 0.14285714, 0. ,\n",
" 0.16666667, 0.2 , 0.2 , 0. , 0.16666667],\n",
" [0. , 0. , 0. , 0. , 0. ,\n",
" 0. , 0. , 0.2 , 0.14285714, 0.16666667,\n",
" 0. , 0.2 , 0.2 , 0.33333333, 0. ],\n",
" [0. , 0. , 0. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0.14285714, 0.16666667,\n",
" 0.16666667, 0. , 0.2 , 0. , 0.16666667],\n",
" [0. , 0. , 0. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0.14285714, 0.16666667,\n",
" 0.16666667, 0.2 , 0. , 0. , 0.16666667],\n",
" [0. , 0. , 0. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0.14285714, 0. ,\n",
" 0.16666667, 0. , 0. , 0. , 0.16666667],\n",
" [0. , 0. , 0. , 0.16666667, 0. ,\n",
" 0. , 0. , 0. , 0.14285714, 0.16666667,\n",
" 0. , 0.2 , 0.2 , 0.33333333, 0. ]])"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"D = np.array(list(dict(G.degree).values())) ** (-1/2)\n",
"A = nx.adjacency_matrix(G).todense()\n",
"L = D * A * D\n",
"\n",
"L"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "421bd96c-50d7-4a07-ad5f-2e9457f11d27",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.20831658, -0.28388127],\n",
" [-0.14119158, -0.19244675],\n",
" [-0.30732743, -0.28644885],\n",
" [-0.23195072, -0.20727592],\n",
" [-0.28108414, -0.32997234],\n",
" [-0.23352491, -0.27090093],\n",
" [-0.25762119, -0.33830885],\n",
" [-0.17767727, -0.15268286],\n",
" [-0.37952009, 0.3508772 ],\n",
" [-0.24939078, 0.19509741],\n",
" [-0.36128451, 0.30608578],\n",
" [-0.20868972, 0.19763654],\n",
" [-0.20868972, 0.19763654],\n",
" [-0.10382218, 0.08737961],\n",
" [-0.34971158, 0.31097189]])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"U, s, Vt = svd(L)\n",
"embeddings = U[:,:2]\n",
"\n",
"embeddings"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a4ebd6ab-e0d1-43aa-9efc-65edaf758519",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAIVUlEQVR4nO3Zr++kVxmH4Xm/MwkE0aZAN6RtUjAgGn6YEgzNrkE0+K4hwYFBFQWCIECBwoAjwWx9U4HZTTGEGgqpAANNWtJsgYaKBsTsw58wGfHmiPu69CM+8s4528zMAQDIulk9AABYSwwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAg7nTN8fnBvb12AAsdb989zN/fXD0D2MH22S9fvPEyAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABA3DYzs3oEALDO6Zrj829+utcOYKHjt35wOP/216tnADs4fuPbF298EwBAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAELfNzKweAQCsc7rmeP7xl712AAttT33hMG//efUMYAfbs1+8eOObAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAEDcNjOzegQAsM7pmuNHb7y21w5goZvnXzycH9xbPQPYwfH23Ys3vgkAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIjbZmZWjwAA1jldczx/++NOM4CVts995TDvv716BrCD7clnL974JgCAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIG6bmVk9AgBY53TN8aM3XttrB7DQzfMvHuavf1g9A9jB9vmvXrzxTQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgbpuZWT0CAFjndM3xo7d+t9cOYKGb575+OPzrndUzgD186pmLJ74JACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCI22ZmVo8AANY5XXN8fvVXe+0AFjp+8zuH872frZ4B7OB49/sXb3wTAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQt83MrB4BAKxzuur6o//sNANY6hOPH767PbZ6BbCDX86HF298EwBAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCI22ZmVo8AANY5XXP86E/399oBLHTzpTuHB7eeWT0D2MHth+9cvPFNAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABAnBgAgDgxAABxYgAA4sQAAMSJAQCIEwMAECcGACBODABA3DYzs3oEALDO6arrD9/faQaw1GNPHn7y8U+uXgHs4If//ffFG98EABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOK2mZnVIwCAdU7XHJ9ff2WvHcBCxxdeOty/9fTqGcAO7jx89+KNbwIAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOK2mZnVIwCAdU7XHJ9ff2WvHcBCxxdeOty/9fTqGcAO7jx89+KNbwIAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOK2mZnVIwCAdU7XHJ9/8fJeO4CFjt/7+eGfX3tu9QxgB5/+/VsXb3wTAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIjbZmZWjwAA1jlddf3BezvNAJZ64jOHH3/sidUrgB386H8fXLzxTQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQJwYAIA4MQAAcWIAAOLEAADEiQEAiBMDABAnBgAgTgwAQNw2M7N6BACwjpcBAIgTAwAQJwYAIE4MAECcGACAODEAAHFiAADixAAAxIkBAIj7P9p5mNlpAarDAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = sns.heatmap(embeddings, annot = False, cbar = False, linewidths = .5, cmap = \"Reds\", square = False)\n",
"plt.tick_params(which = 'both', bottom = False, top = False, left = False, labelleft = False, labelbottom = False) \n",
"plt.show()"
]
}
],
"metadata": {
"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.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment