{ "metadata": { "name": "", "signature": "sha256:0f2644bf9c98ff91e4c0e932f18d1b0890bbe42744e0359439a5366f5f5bcf9d" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "##todo\n", "\n", "- Is this form of code the most recent one?\n", "- How can I make this more educational?\n", "- Write something about setup\n", "- Write more about conclusions\n", "- Divide code into smaller snippets and comment it a lot" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "\n", "import numpy as np\n", "import networkx as nx\n", "from collections import Counter\n", "from matplotlib import pyplot as plt\n", "from numpy.random import random_sample\n", "from hypergraph.generators import uniform_hypergraph\n", "from hypergraph import converters\n", "from hypergraph import utils\n", "\n", "\n", "def create_markov_matrix(edges):\n", " a_matrix = np.zeros((len(edges), len(edges)))\n", "\n", " for i, edge_1 in enumerate(edges):\n", " for j, edge_2 in enumerate(edges):\n", " if i != j:\n", " a_matrix[i][j] = len(set(edge_1) & set(edge_2))\n", "\n", " for i, edge_1 in enumerate(edges):\n", " a_matrix[i] = a_matrix[i] / float(sum(a_matrix[i]))\n", "\n", " return a_matrix\n", "\n", "\n", "def weighted_values(values, probabilities, size):\n", " bins = np.add.accumulate(probabilities)\n", " bins[-1] = max(1, bins[-1])\n", " index = np.digitize(random_sample(size), bins)\n", " return values[index]\n", "\n", "\n", "def step_diffusion(current_state, markov_matrix):\n", " values_size = len(markov_matrix)\n", " values = range(values_size)\n", " probs = markov_matrix[current_state]\n", " next_state = weighted_values(values, probs, 1)\n", " return next_state\n", "\n", "\n", "def simulate(current_state, markov_matrix, t_max):\n", " c = Counter()\n", " states = []\n", " for _ in range(t_max):\n", " current_state = step_diffusion(current_state, markov_matrix)\n", " visited_hyperedge = current_state\n", " c[visited_hyperedge] += 1\n", " states.append(visited_hyperedge)\n", " return c.most_common(), states\n", "\n", "\n", "def count_nodes(nodes, edges, occurences):\n", " c = Counter()\n", " for index, count in occurences:\n", " for edge in edges[index]:\n", " c[edge] += count\n", " for node in nodes:\n", " if node not in c:\n", " c[node] = 0\n", " return c\n", "\n", "def plot_nodes_frequencies(most_common_nodes, title):\n", " plt.bar(list(most_common_nodes.keys()),\n", " list(most_common_nodes.values()),\n", " alpha=0.7, color='magenta')\n", "\n", " plt.title(title)\n", " plt.show()\n", "\n", "\n", "def plot_different_representations(nodes, hyperedges):\n", " print(\"Drawing different representations of hypergraph\")\n", "\n", " print(\"Bipartite graph\")\n", " nx_bipartite = converters.convert_to_nx_bipartite_graph(nodes, hyperedges)\n", " utils.draw_bipartite_graph(nx_bipartite,\n", " *utils.hypergraph_to_bipartite_parts(nx_bipartite))\n", "\n", " print(\"Graph of hypereges as nodes\")\n", " custom_hyper_g = converters.convert_to_custom_hyper_G(nodes, hyperedges)\n", " plt.figure()\n", " nx.draw(custom_hyper_g)\n", "\n", " print(\"Clique graph\")\n", "\n", " clique_graph = converters.convert_to_clique_graph(nodes, hyperedges)\n", " plt.figure()\n", " nx.draw(clique_graph)\n", "\n", "def plot_hyperedges_frequencies(most_common, hyperedges, title):\n", " hyperedges_indexes, occurences = zip(*most_common)\n", " plt.bar(hyperedges_indexes, occurences)\n", " plt.title(title)\n", " plt.xticks(range(len(hyperedges)), hyperedges)\n", "\n", "\n", "def compare_hypergraph_with_cliques(number_of_nodes,\n", " cardinality, fraction, t_max, plot_representations=False):\n", " HG = uniform_hypergraph(\n", " n=number_of_nodes,\n", " k=cardinality,\n", " number_of_edges=int(\n", " number_of_nodes *\n", " fraction))\n", "\n", " nodes = HG.nodes()\n", " hyperedges = HG.hyper_edges()\n", "\n", " all_nodes = []\n", " for hyperedge in hyperedges:\n", " all_nodes += hyperedge\n", " c = Counter(all_nodes)\n", " xs, ys = zip(*c.items())\n", " #plt.bar(xs, ys)\n", "\n", " if plot_representations:\n", " plot_different_representations(nodes, hyperedges)\n", "\n", " markov_matrix = create_markov_matrix(hyperedges)\n", " print(markov_matrix)\n", " current_state = 1\n", " most_common, states = simulate(current_state, markov_matrix, t_max)\n", "\n", " plt.figure(figsize=(8, 4))\n", " plot_hyperedges_frequencies(most_common, hyperedges,\n", " 'Ocurrences of hyperedges in a hypergraph')\n", "\n", " most_common_nodes = count_nodes(nodes, hyperedges, most_common)\n", "\n", " plt.figure(figsize=(8, 4))\n", " plot_nodes_frequencies(most_common_nodes, 'Nodes in a hypergraph')\n", "\n", " clique_graph = converters.convert_to_clique_graph(nodes, hyperedges)\n", " clique_markov_matrix = create_markov_matrix(clique_graph.edges())\n", "\n", " print(\"clique markov matrix\")\n", " print(clique_markov_matrix)\n", " most_common, states = simulate(current_state, clique_markov_matrix, t_max)\n", "\n", " plt.figure(figsize=(8, 4))\n", " plot_hyperedges_frequencies(most_common, clique_graph.edges(),\n", " 'Ocurrences of edges in a graph')\n", "\n", " most_common_nodes = count_nodes(clique_graph.nodes(), clique_graph.edges(),\n", " most_common)\n", " plt.figure(figsize=(12, 10))\n", " plot_nodes_frequencies(most_common_nodes, 'Nodes in a graph')\n", "\n", "\n", "def demo():\n", " n = 10\n", " k = 3\n", " fraction = 2.0 / 3\n", "\n", " for simulation_time in [100]:\n", " compare_hypergraph_with_cliques(n, k, fraction, simulation_time)\n", "\n", "\n", "if __name__ == '__main__':\n", " demo()\n", "\n", "\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 0. 0.14285714 0.28571429 0.28571429 0.28571429]\n", " [ 0.2 0. 0.4 0. 0.4 ]\n", " [ 0.28571429 0.28571429 0. 0.14285714 0.28571429]\n", " [ 0.5 0. 0.25 0. 0.25 ]\n", " [ 0.28571429 0.28571429 0.28571429 0.14285714 0. ]]\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nkUEsSVJGBrEkSRkZxJIkZWQQS5KUkUEsSVJGBrEkSRkZxJIkZWQQS5KUkUEsSVJGBrEkSRkZxJIk\nZWQQS5KUkUEsSVJGBrEkSRkZxJIkZWQQS5KUUTdBvBC4CrgZuAk4IQ2fD1wJ3ApcAcztZgUlSRpl\nlS7eu1N6/ByYBfwUeClwHHA3cBpwEjAPeG/De2tQ62LRo6xCrWZthkGlUsHtuB235WHhttxOb7bj\nqHHzzO3mjPgOIoQB7gd+AewCvBhYloYvI8JZkiQ10atrxIuAA4HrgB2BdWn4uvRakiQ1Mb0H85gF\nfA14B7CxYVyNlu0dSwvPx9JDkqThV61WqVarHU3bzTVigBnAN4HLgDPSsBVEqt4B7Ex06Nq74X1e\nI27J62rDwutqk3FbHhZuy+0M9jXiCnAOcAvjIQxwCXBsen4scHEXy5AkaaR1c0b8bOAHwI2MH0qd\nDPwYuAjYDVgFHAX8oeG9nhG35FnEsPAsYjJuy8PCbbmd8s+Iu22a3loGcUvuvIaFO6/JuC0PC7fl\ndga7aVqSJHXJIJYkKSODWJKkjAxiSZIyMoglScrIIJYkKSODWJKkjAxiSZIyMoglScrIIJYkKSOD\nWJKkjAxiSZIyMoglScrIIJYkKSODWJKkjAxiSZIyMoglScrIIJYkKSODWJKkjAxiSZIyMoglScrI\nIJYkKSODWJKkjAxiSZIyMoglScrIIJYkKSODWJKkjAxiSZIyMoglScrIIJYkKSODWJKkjKbnXgGV\nY86c+WzceG/u1RhYs2fPY8OG9blXQ5KoZFpuDWqZFj3oKtRq3demUqlgjdvpvs7WeDK92ZZVPrfl\ndnq5T26euTZNS5KUkUEsSVJG3QTxucA6YHlh2FLgd8D16bG4i/lLkjTyugni89g8aGvA6cCB6XF5\nF/OXJGnkdRPEVwPNuuXm6gAmSdLQKeMa8fHADcA5wNwS5i9J0sjodRCfBTwOOABYC3yix/OXJGmk\n9PoHPe4sPD8buLT1pEsLz8fSQ5Kk4VetVqlWqx1N2+313EVE2O6XXu9MnAkDvAt4GnBMk/f5gx4t\n+YMe/eEPepTPH/QYFm7L7ZT/gx7dnBFfCBwK7ACsAU4hTmsPIL7R24C3dDF/SZJGnj9xOXA8I+4P\nz4jL5xnxsHBbbsefuJQkaaQZxJIkZWQQS5KUkUEsSVJGBrEkSRn1+gc9JKmn5syZz8aNzX7WXrNn\n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\nSPw/uPHp4R/w0DEAAAAASUVORK5CYII=\n", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "clique markov matrix\n", "[[ 0. 0.14285714 0.14285714 0.14285714 0.14285714 0.\n", " 0.14285714 0. 0.14285714 0.14285714]\n", " [ 0.2 0. 0.2 0.2 0. 0. 0.2\n", " 0.2 0. 0. ]\n", " [ 0.2 0.2 0. 0.2 0. 0.2 0.\n", " 0. 0.2 0. ]\n", " [ 0.2 0.2 0.2 0. 0. 0. 0.\n", " 0.2 0. 0.2 ]\n", " [ 0.2 0. 0. 0. 0. 0.2 0.2\n", " 0. 0.2 0.2 ]\n", " [ 0. 0. 0.33333333 0. 0.33333333 0. 0.\n", " 0. 0.33333333 0. ]\n", " [ 0.16666667 0.16666667 0. 0. 0.16666667 0. 0.\n", " 0.16666667 0.16666667 0.16666667]\n", " [ 0. 0.25 0. 0.25 0. 0. 0.25\n", " 0. 0. 0.25 ]\n", " [ 0.16666667 0. 0.16666667 0. 0.16666667 0.16666667\n", " 0.16666667 0. 0. 0.16666667]\n", " [ 0.16666667 0. 0. 0.16666667 0.16666667 0.\n", " 0.16666667 0.16666667 0.16666667 0. ]]\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nut5xznnPaXku37w6f697QvVlCd/tcHH1pavze1qWllhLfWYuWH3cXf1W9fg1znI++GfVS6pXrnuQ\n88A7q4vWPcR55NrqO1bnd1cPWuMs55P7VO9r2THDqbus+uPujN2XVlevbZpz3xe29Ob9W3bE3Ng9\nHFjhTN+y+ER+s/rQWXrsaW5t2TtZdahlz8VnrW+c88LHVh/v1/Kf5PY1znKu++zq66uf6syOEsOd\nPI/b40EtO2FetNr+RMteSs7cFS0vbn/PyW7IcX205Y2/Lmj5heyC6pa1TnRue1TLX3L/svrr6jXV\nN5/oxmcrfDk7LmvZk/76Nc9xrrtPyy8TB1uWkbx1veOc036s+v6WQxly5g5Xv1H9bvXsNc9yrnt4\n9YHqp6s3VD/ZnX/t4cx8a8uf5zk9t1f/vnp39afVh1v+33N63tzyS+5FLf/Hv6Flp8y97rIsddhO\ne1p+GD593YOcRx7UstRhY81znKu+sfovq/MbWeO7HS5ZfXxoyy9nT1jjLOe6r2jZq/aVq+0fr354\nfeOcN+7X8gvFQ9c9yDnsES07XB7cssf3l6tvX+tE577vaGmk11Q/0bJT5rjs8T03fEr1i9XPVa9Y\n8yznk49Uv9ryA5JT99XV01rWpV5XPan62bVOdO573+rjB1p+GD52jbOc6967Ov3Oavvl1WPWN855\n48rq91q+Rjk9X1G9rrqtZQnOL7V8P+X0vajleX1iyx70t69jiMuyx3c77GqJiRP+9sIpeUjLK72r\nHlC9tvq69Y1z3nhi9vieqQuqT1udf2D1v6unrG+c88Jrq8tX5/d313cW5fT8Ql6Idaa+pOXP8w9o\n+Rl/bfVda53o3PeZq4+f0/JaqE+/twe4rmXdyl+1LH5/5r09wHnk8S3rJ2/qzsPIPPUe78E9+aKW\n9X43tRw26vvXO85544k5qsOZenjL1+VNLT8UvSnQmfuSlj2+v9+yV81RHc7MA6sPducvaJy+H+jO\nw5ld2/KXXU7fa1uez5uqr13zLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOxk/x96+R6rEjGbOwAA\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#How can we represent hypergraphs in code?\n", "\n", "A very good representation is bipartite graph of nodes and hyperedges.\n", "Another representation is a graph with hyperedges as nodes connected if hyperedges have common nodes.\n", "Is it a good representation for our diffusion problem? Can we use it as a reference model?\n", "\n", "#How different are hypergraphs from graphs with cliques?\n", "\n", "Cliques are sets of nodes in which every node is connected to every other node.\n", "They are a bit similar to hypergraphs, but how the nodes are connected is conceptually different from\n", "hypergraphs.\n", "\n", "How is it different in diffusion simulation with markov chain?" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }