From 5e6ac19d669f748f99dc466acac17f0c3ea66d8c Mon Sep 17 00:00:00 2001 From: s434732 Date: Fri, 25 Jun 2021 17:23:06 +0200 Subject: [PATCH] lol --- main.ipynb | 322 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 295 insertions(+), 27 deletions(-) diff --git a/main.ipynb b/main.ipynb index 23f9933..a42da2d 100644 --- a/main.ipynb +++ b/main.ipynb @@ -3,7 +3,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "49367614", + "id": "39f3e87c", "metadata": {}, "outputs": [], "source": [ @@ -55,18 +55,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "944acee9", - "metadata": {}, - "outputs": [], - "source": [ - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "5d76103d", + "execution_count": 23, + "id": "21b5c3db", "metadata": {}, "outputs": [], "source": [ @@ -306,7 +296,7 @@ " if i % convergence_check_frequency == convergence_check_frequency - 1:\n", " print(\"Checking for convergence\")\n", " if converged(matrix, last_mat):\n", - " printer.print(\"Converged after {} iteration{}\".format(i + 1, \"s\" if i > 0 else \"\"))\n", + " print(\"Converged after {} iteration{}\".format(i + 1, \"s\" if i > 0 else \"\"))\n", " break\n", "\n", " print(\"-\" * 50)\n", @@ -316,8 +306,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "id": "fa29f711", + "execution_count": 25, + "id": "d9a19c8a", "metadata": {}, "outputs": [ { @@ -334,20 +324,55 @@ "Dense matrix mode\n", "--------------------------------------------------\n", "Iteration 1\n", - "Pruning\n" + "Pruning\n", + "Checking for convergence\n", + "Iteration 2\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 3\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 4\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 5\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 6\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 7\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 8\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 9\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 10\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 11\n", + "Pruning\n", + "Checking for convergence\n", + "Iteration 12\n", + "Pruning\n", + "Checking for convergence\n", + "Converged after 12 iterations\n", + "--------------------------------------------------\n", + "[(0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 16, 17, 19, 21), (2, 8, 9, 14, 15, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)]\n" ] }, { - "ename": "NameError", - "evalue": "name 'printer' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;31m# Run MCL algorithm\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrun_mcl\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mA\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[0mclusters\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_clusters\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mclusters\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mrun_mcl\u001b[1;34m(matrix, expansion, inflation, loop_value, iterations, pruning_threshold, pruning_frequency, convergence_check_frequency)\u001b[0m\n\u001b[0;32m 233\u001b[0m \u001b[1;31m# Check for convergence\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 234\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mi\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mconvergence_check_frequency\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mconvergence_check_frequency\u001b[0m \u001b[1;33m-\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 235\u001b[1;33m \u001b[0mprinter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Checking for convergence\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 236\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mconverged\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmatrix\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlast_mat\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 237\u001b[0m \u001b[0mprinter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Converged after {} iteration{}\"\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"s\"\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mi\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;34m\"\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mNameError\u001b[0m: name 'printer' is not defined" - ] + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -363,6 +388,249 @@ "print(clusters)\n", "draw_graph(A, clusters, node_size=50, with_labels=True, edge_color=\"silver\")" ] + }, + { + "cell_type": "markdown", + "id": "c081c0fd", + "metadata": {}, + "source": [ + "DRUGI ALGORYTM" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "3580fb47", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " number of nodes: 34\n", + "\n", + "1624634511.5432043: evaluating clusters...\n", + "1624634511.5461967: done\n", + "\n", + "{0: [0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 16, 17, 19, 21], 1: [2, 8, 9, 14, 15, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]}\n", + "1624634511.5471902: drawing...\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1624634511.8171916: done\n" + ] + } + ], + "source": [ + "import sys\n", + "import numpy as np\n", + "import time\n", + "from optparse import OptionParser\n", + "import logging\n", + "\n", + "def normalize(A):\n", + " column_sums = A.sum(axis=0)\n", + " new_matrix = A / column_sums[np.newaxis, :]\n", + " return new_matrix\n", + "\n", + "def inflate(A, inflate_factor):\n", + " return normalize(np.power(A, inflate_factor))\n", + "\n", + "def expand(A, expand_factor):\n", + " return np.linalg.matrix_power(A, expand_factor)\n", + "\n", + "def add_diag(A, mult_factor):\n", + " return A + mult_factor * np.identity(A.shape[0])\n", + "\n", + "def get_clusters(A):\n", + " clusters = []\n", + " for i, r in enumerate((A>0).tolist()):\n", + " if r[i]:\n", + " clusters.append(A[i,:]>0)\n", + "\n", + " clust_map ={}\n", + " for cn , c in enumerate(clusters):\n", + " for x in [ i for i, x in enumerate(c) if x ]:\n", + " clust_map[cn] = clust_map.get(cn, []) + [x]\n", + " return clust_map\n", + "\n", + "def draw(G, A, cluster_map):\n", + " import networkx as nx\n", + " import matplotlib.pyplot as plt\n", + "\n", + " clust_map = {}\n", + " for k, vals in cluster_map.items():\n", + " for v in vals:\n", + " clust_map[v] = k\n", + "\n", + " colors = []\n", + " for i in range(len(G.nodes())):\n", + " colors.append(clust_map.get(i, 100))\n", + "\n", + " pos = nx.spring_layout(G)\n", + "\n", + " from matplotlib.pylab import matshow, show, cm\n", + " plt.figure(2)\n", + " nx.draw_networkx_nodes(G, pos,node_size = 200, node_color =colors , cmap=plt.cm.Blues )\n", + " nx.draw_networkx_edges(G,pos, alpha=0.5)\n", + " matshow(A, fignum=1, cmap=cm.gray)\n", + " plt.show()\n", + " show()\n", + "\n", + "\n", + "def stop(M, i):\n", + "\n", + " if i%5==4:\n", + " m = np.max( M**2 - M) - np.min( M**2 - M)\n", + " if m==0:\n", + " logging.info(\"Stop at iteration %s\" % i)\n", + " return True\n", + "\n", + " return False\n", + "\n", + "\n", + "def mcl(M, expand_factor = 2, inflate_factor = 2, max_loop = 10 , mult_factor = 1):\n", + " M = add_diag(M, mult_factor)\n", + " M = normalize(M)\n", + "\n", + " for i in range(max_loop):\n", + " logging.info(\"loop %s\" % i)\n", + " M = inflate(M, inflate_factor)\n", + " M = expand(M, expand_factor)\n", + " if stop(M, i): break\n", + "\n", + " clusters = get_clusters(M)\n", + " return M, clusters\n", + "\n", + "def networkx_mcl(G, expand_factor = 2, inflate_factor = 2, max_loop = 50 , mult_factor = 1):\n", + " import networkx as nx\n", + " A = nx.adjacency_matrix(G)\n", + " return mcl(np.array(A.todense()), expand_factor, inflate_factor, max_loop, mult_factor)\n", + "\n", + "def print_info(options):\n", + " print(\"-\" * 60)\n", + " print(\"MARKOV CLUSTERING:\")\n", + " print(\"-\" * 60)\n", + " print(\" expand_factor: %s\" % options.expand_factor)\n", + " print(\" inflate_factor: %s\" % options.inflate_factor)\n", + " print(\" mult factor: %s\" % options.mult_factor)\n", + " print(\" max loops: %s\\n\" % options.max_loop)\n", + "\n", + "def get_options():\n", + " usage = \"usage: %prog [options] \"\n", + " parser = OptionParser(usage)\n", + " parser.add_option(\"-e\", \"--expand_factor\",\n", + " dest=\"expand_factor\",\n", + " default=2,\n", + " type=int,\n", + " help=\"expand factor (default: %default)\")\n", + " parser.add_option(\"-i\", \"--inflate_factor\",\n", + " dest=\"inflate_factor\",\n", + " default=2,\n", + " type=float,\n", + " help=\"inflate factor (default: %default)\")\n", + " parser.add_option(\"-m\", \"--mult_factor\",\n", + " dest=\"mult_factor\",\n", + " default=2,\n", + " type=float,\n", + " help=\"multiply factor (default: %default)\")\n", + " parser.add_option(\"-l\", \"--max_loops\",\n", + " dest=\"max_loop\",\n", + " default=60,\n", + " type=int,\n", + " help=\"max loops (default: %default)\")\n", + " parser.add_option(\"-o\", \"--output\", metavar=\"FILE\", \n", + " help=\"output (default: stdout)\")\n", + "\n", + " parser.add_option(\"-v\", \"--verbose\",\n", + " action=\"store_true\", dest=\"verbose\", default=True,\n", + " help=\"verbose (default: %default)\")\n", + " parser.add_option(\"-d\", \"--draw-graph\",\n", + " action=\"store_true\", dest=\"draw\", default=False,\n", + " help=\"show graph with networkx (default: %default)\")\n", + " \n", + "\n", + " (options, args) = parser.parse_args()\n", + "\n", + " try:\n", + " filename = args[0]\n", + " except:\n", + " raise Exception('input', 'missing input filename')\n", + "\n", + "\n", + " return options, filename\n", + "\n", + "def get_graph(csv_filename):\n", + " import networkx as nx\n", + "\n", + " M = []\n", + " for r in open(csv_filename):\n", + " r = r.strip().split(\",\")\n", + " M.append(list(map(lambda x: float(x.strip()), r)))\n", + "\n", + " G = nx.from_numpy_matrix(np.matrix(M))\n", + " return np.array(M), G\n", + "\n", + "def clusters_to_output(clusters, options):\n", + " if options.output and len(options.output)>0:\n", + " f = open(options.output, 'w')\n", + " for k, v in clusters.items():\n", + " f.write(\"%s|%s\\n\" % (k, \", \".join(map(str, v)) ))\n", + " f.close()\n", + " else:\n", + " print(\"Clusters:\")\n", + " for k, v in clusters.items():\n", + " print('{}, {}'.format(k, v))\n", + "\n", + "if __name__ == '__main__':\n", + "\n", + " #options, filename = get_options()\n", + " #print_info(options)\n", + " # Load network data\n", + " G = nx.karate_club_graph()\n", + "\n", + "# Build adjacency to_numpy_matrix\n", + " M = nx.to_numpy_matrix(G)\n", + " #M, G = get_graph(filename)\n", + "\n", + " print(\" number of nodes: %s\\n\" % M.shape[0])\n", + "\n", + " print(\"{}: {}\".format(time.time(), \"evaluating clusters...\"))\n", + " M, clusters = networkx_mcl(G)\n", + " print(\"{}: {}\".format(time.time(), \"done\\n\"))\n", + "\n", + " print(clusters)\n", + "\n", + " \n", + " print(\"{}: {}\".format(time.time(), \"drawing...\"))\n", + " draw(G, M, clusters)\n", + " print(\"{}: {}\".format(time.time(), \"done\"))\n" + ] } ], "metadata": {