Created
August 6, 2024 11:38
-
-
Save mikk-c/8dc41b7669333994cf0e177a57cc8919 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "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