{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAaCElEQVR4nO3df3Dcd33n8ecL2SkiDlHTEE0iu2fDGOVSQjAWMcVcK4fm5NBSu2kyTTAppMl5Mo0NPYqLddDSm3YatS4cpE1wPcEJHD3UAzzCJJ4oGRyFUkiwjZIIOwiMgcTrHCGAnMgIYov3/bGrZCWv5LWk7652P6/HjEe73+/nu5/3hw372u+P/XwVEZiZWbpeUu0CzMysuhwEZmaJcxCYmSXOQWBmljgHgZlZ4uZVu4DTde6558bixYunte2xY8c488wzZ7egOc5jToPHnIaZjHnfvn3PRMQrSq2ruSBYvHgxe/funda2fX19tLe3z25Bc5zHnAaPOQ0zGbOkH0y2zoeGzMwS5yAwM0ucg8DMLHEOAjOzxDkIzMwSl1kQSNou6WlJ35xkvSTdKumgpMckvT6rWi7/SB+LN9/DQO4oizffw+Uf6cuqq5N8sGeAV3XuYvHme3hV5y4+2DNQ0X4Hckcr2i9AT3+OlV27WbL5HlZ27aanP1fRfgdyRyvab3HfKY3ZKifr9znLPYK7gNVTrL8CWFr4tx74eBZFXP6RPr7z9LFxy77z9LGKhMEHewb49ENPMFqY4XU0gk8/9ETmH8rV6hfy/8F27hggNzRCALmhETp3DGT+AVXcLxXsd2LfqYzZKqcS73NmQRARXwZ+MkWTNcCnIu8hoEnS+bNdx8QQONXy2fSZh588reW13i/Alt5BRo6Pjls2cnyULb2DddlvNfuu5pitcirxPivL+xFIWgzcHRGvKbHubqArIr5SeP4l4P0RcdKvxSStJ7/XQHNz8/Lu7u6yaxjIHX3hcXMj/HDkxXUXt5xd9utMR3HfE2XZt8fsMWc95rlgeHiYBQsWVLuMzM3W+7xq1ap9EdFWal01f1msEstKplJEbAO2AbS1tcXp/LLuXZvveeHxn198gg8PvDjk768r/3Wm44bOXS8cninWIPHdDPsu7rd4zFn3C/CBrt0v7MIWa2lqZGOGfRf3WzzmrPud2Hexeh7zXJDKL4sr8T5X86qhw8CioucLgSOz3cnS80rPyzHZ8tl07YpFp7W81vsF2NTRSuP8hnHLGuc3sKmjtS77rWbf1RyzVU4l3udq7hHsBDZI6gZWAEcj4qnZ7uT+97afdMJ46Xlncv9722e7q5P87dqLgfyx+dEIGiSuXbHoheWV6BeoWL8Aa5e1APnjmkeGRrigqZFNHa0vLK9Ev/AcLRXqd2LfqYzZKqci73NEZPIP+AzwFHCc/Lf/G4CbgJsK6wXcBnwXGADaynnd5cuXx3Q98MAD0962VnnMafCY0zCTMQN7Y5LP1cz2CCLi2lOsD+DmrPo3M7Py+JfFZmaJcxCYmSXOQWBmljgHgZlZ4hwEZmaJcxCYmSXOQWBmljgHgZlZ4hwEZmaJcxCYmSXOQWBmljgHgZlZ4hwEZmaJcxCYmSXOQWBmljgHgZlZ4hwEVjd6+nOs7NrNQO4oK7t209Ofq3ZJZjWhmvcsNps1Pf05OncMMHJ8FBZBbmiEzh0DAL6Hr9kpeI/A6sKW3sF8CBQZOT5auOG3mU3FQWB14cjQyGktN7MXOQisLlzQ1Hhay83sRQ4CqwubOlppnN8wblnj/AY2dbRWqSKz2uGTxVYXxk4I588JPEdLUyObOlp9otisDA4Cqxtrl7WwdlkLfX19bFzXXu1yzGqGDw2ZmSXOQWBmljgHgZlZ4nyOwMysDD39Obb0DnJkaIQL6uxiBAeBmdkpjJvChPqbwsRBYGanrZ6/HZcy1RQm9TBuB4GZnZZ6/3ZcSr1PYZLpyWJJqyUNSjooaXOJ9WdL+qKkRyXtl3R9lvWY2cylOMFfvU9hklkQSGoAbgOuAC4CrpV00YRmNwMHIuISoB34sKQzsqrJzGau3r8dl1LvU5hkuUdwKXAwIg5FxPNAN7BmQpsAzpIkYAHwE+BEhjWZ2QzV+7fjUtYua+GWKy+mpakRAS1Njdxy5cV1cyhMEZHNC0tXAasj4sbC8+uAFRGxoajNWcBO4ELgLOCPIuKeEq+1HlgP0NzcvLy7u3taNQ0PD7NgwYJpbVurPOY0VHLMQyPHyf10hF8WfXa8RKLlVxtpapxfkRrA7/PpWrVq1b6IaCu1LsuTxSqxbGLqdACPAJcBrwLul/TvEfHsuI0itgHbANra2qK9vX1aBfX19THdbWuVx5yGSo95Llw15Pd59mQZBIeBRUXPFwJHJrS5HuiK/G7JQUnfI7938PUM6zKzGRqb4M/qQ5bnCPYASyUtKZwAvob8YaBiTwBvAZDUDLQChzKsyczMJshsjyAiTkjaAPQCDcD2iNgv6abC+q3A3wB3SRogfyjp/RHxTFY1mZnZyTL9QVlE7AJ2TVi2tejxEeC/ZlmDmZlNzbOPmpklzkFgZpY4B4GZWeIcBGZmiXMQmJklzkFgZpY4B4GZWeIcBGZmiXMQmJklzkFgZpY4B4GZWeIcBGZmiXMQmJklzkFgZpY4B4GZWeIcBGZmiXMQmJklzkFgZpY4B4GZWeIcBGZmiXMQmJklzkFgZpY4B4GZWeIcBGZmiXMQmJklzkFgZpY4B4GZWeLKCgJJ52RdiJmZVUe5ewQPS/qspLdKUqYVmZlZRZUbBK8GtgHXAQcl/Z2kV2dXlpmZVUpZQRB590fEtcCNwDuBr0t6UNJvTradpNWSBiUdlLR5kjbtkh6RtF/Sg9MahZmZTdu8chpJ+jXgHeT3CH4IbAR2Aq8DPgssKbFNA3AbcDlwGNgjaWdEHChq0wTcDqyOiCcknTeTwZiZ2ekrKwiArwH/G1gbEYeLlu+VtHWSbS4FDkbEIQBJ3cAa4EBRm7cDOyLiCYCIePp0ijczs5lTREzdIP/NfktEvPe0Xli6ivw3/RsLz68DVkTEhqI2HwXmA78BnAV8LCI+VeK11gPrAZqbm5d3d3efTikvGB4eZsGCBdPatlZ5zGnwmNMwkzGvWrVqX0S0lVp3yj2CiBiVdMk0+i11ddHE1JkHLAfeAjQCX5P0UER8e0IN28ifrKatrS3a29unUQ709fUx3W1rlcecBo85DVmNudxDQ49I2kn+fMCxsYURsWOKbQ4Di4qeLwSOlGjzTEQcA45J+jJwCfBtzMysIsoNgnOAHwOXFS0LYKog2AMslbQEyAHXkD8nUOwLwD9LmgecAawA/leZNZmZ2SwoNwjuiIj/KF4gaeVUG0TECUkbgF6gAdgeEfsl3VRYvzUiHpd0L/AY8MtCP9887VGYmdm0lRsE/wS8voxl40TELmDXhGVbJzzfAmwpsw4zM5tlUwZB4cdibwJeIan4qqGXk/+Wb2ZmNe5UewRnAAsK7c4qWv4scFVWRZmZWeVMGQQR8SDwoKS7IuIHks4sXOFjZmZ1otxJ5y6QdAB4HEDSJZJuz64sMzOrlHKD4KNAB/lLSImIR4HfyqgmMzOroLLvUBYRT05YNDrLtZiZWRWUe/nok5LeBISkM4B3UzhMZGZmta3cPYKbgJuBFvLTQryu8NzMzGpcuTemeSYi1kVEc0ScFxHviIgfZ12cmdlEPf05VnbtZiB3lJVdu+npz1W7pJpX7o1plpC/Gc3i4m0i4vezKcvM7GQ9/Tk6dwwwcnwUFkFuaITOHQMArF3WUuXqale55wh6gE8AXyQ/J5CZWcVt6R3Mh0CRkeOjbOkddBDMQLlB8POIuDXTSszMTuHI0MhpLbfylBsEH5P0IeA+4BdjCyPiG5lUZWZWwgVNjeRKfOhf0NRYhWrqR7lBcDH5G9dfxouHhoLx9ycwM8vUpo7WF88RFDTOb2BTR2sVq6p95QbBHwCvjIjnsyzGzGwqY+cBtvQOAs/R0tTIpo5Wnx+YoXKD4FGgCXg6u1LMzE5t7bIW1i5roa+vj43r2qtdTl0oNwiagW9J2sP4cwS+fNTMrMaVGwQfyrQKMzOrmrKCoHBfAiS9vNxtzMysNpT7y+L1wN8AI+SvGhL5q4ZemV1pZmZWCeV+u98E/EZEPJNlMWZmVnnlzj76XeBnWRZiZmbVUe4eQSfwVUkPM/6qoXdnUpWZmVVMuUHwL8BuYABPOmdmVlfKDYITEfHeTCsxM7OqKPccwQOS1ks6X9I5Y/8yrczMzCqi3D2Ctxf+dhYt8+WjZmZ1oNwflC3JuhAzM6uOsg4NSdor6U8lNWVcj5mZVVi55wiuAVqAvZK6JXVIUoZ1mZlZhZQVBBFxMCI+ALwa+D/AduAJSf/TJ43NzGpbuXsESHot8GFgC/B54CrgWfK/L5hsm9WSBiUdlLR5inZvkDQq6arySzczs9lQ7qRz+4Ah4BPA5ogY+3Xxw5JWTrJNA3AbcDlwGNgjaWdEHCjR7u+B3mmNwMzMZqTcy0evjohDpVZExJWTbHMpcHBsO0ndwBrgwIR2G8nvYbyhzFrMzGwWlRsEb5N0J/AccAewjPyewX1TbNMCPFn0/DCworiBpBby90O+jCmCoDAN9nqA5uZm+vr6yix7vOHh4WlvW6s85jR4zGnIaszlBsGfRMTHJHUArwCuB+4EpgqCUlcVxYTnHwXeHxGjU12EFBHbgG0AbW1t0d7eXmbZ4/X19THdbWuVx5wGjzkNWY253CAY+5R+K3BnRDxaxuWjh4FFRc8XAkcmtGkDugsvdS7wVkknIqKnzLrMzGyGyg2CfZLuA5YAnZLO4tSzkO4BlkpaAuTI/xbh7cUNin+xLOku4G6HgJlZZZUbBDcArwPmk/8Wfy5w11QbRMQJSRvIXw3UAGyPiP2Sbiqs3zrNms3MbBaVfY4AeA/5wzuPAG8Evgb801QbRcQuYNeEZSUDICLeVWYtZmY2i8r9Qdl7yF/V84OIWEX+qqEfZVaVmZlVTLlB8POI+DmApF+JiG8BrdmVZWZmlVLuoaHDhZlHe4D7Jf2Uk68AMjOzGlTu/Qj+oPDwryU9AJwN3JtZVWZmVjFlTzo3JiIejIidEfF8FgXZ7Ojpz7GyazcDuaOs7NpNT3+u2iWZ2RxV7qEhqyE9/Tk6dwwwcnwUFkFuaITOHQMArF3WUuXqzGyuOe09Apv7tvQO5kOgyMjxUbb0DlapIjObyxwEdejI0MhpLTeztDkI6tAFTY2ntdzM0uYgqEObOlppnN8wblnj/AY2dfinH2Z2Mp8srkNjJ4Tz5wSeo6WpkU0drT5RbGYlOQjq1NplLaxd1kJfXx8b17VXuxwzm8N8aMjMLHEOAjOzxDkIzMwS5yAwM0ucg8DMLHEOAjOzxDkIzMwS5yAwM0ucg8DMLHEOAjOzxDkIzMwS5yAwM0ucg8DMLHEOAjOzxDkIzMwS5yAwM0ucg8DMLHEOAjOzxGUaBJJWSxqUdFDS5hLr10l6rPDvq5IuybKeaujpz7GyazdLNt/Dyq7d9PTnql2Smdk4md2zWFIDcBtwOXAY2CNpZ0QcKGr2PeC3I+Knkq4AtgErsqqp0nr6c3TuGGDk+CgAuaEROncMAPhG8mY2Z2S5R3ApcDAiDkXE80A3sKa4QUR8NSJ+Wnj6ELAww3oqbkvv4AshMGbk+ChbegerVJGZ2ckUEdm8sHQVsDoibiw8vw5YEREbJmn/PuDCsfYT1q0H1gM0Nzcv7+7unlZNw8PDLFiwYFrbTsdA7uik6y5uObsiNVR6zHOBx5wGj/n0rFq1al9EtJVal9mhIUAllpVMHUmrgBuAN5daHxHbyB82oq2tLdrb26dVUF9fH9Pddjo+0LWb3NDISctbmhrZuK4ydVR6zHOBx5wGj3n2ZHlo6DCwqOj5QuDIxEaSXgvcAayJiB9nWE/FbepopXF+w7hljfMb2NTRWqWKzMxOluUewR5gqaQlQA64Bnh7cQNJvw7sAK6LiG9nWEtVjJ0Q3tI7yJGhES5oamRTR6tPFJvZnJJZEETECUkbgF6gAdgeEfsl3VRYvxX4K+DXgNslAZyY7BhWrVq7rMUf/GY2p2W5R0BE7AJ2TVi2tejxjcBJJ4fNzKxy/MtiM7PEOQjMzBLnIDAzS5yDwMwscQ4CM7PEOQjMzBLnIDAzS5yDwMwscQ4CM7PEOQjMzBLnIDAzS5yDwMwscQ4CM7PEOQjMzBLnIDAzS5yDwMwscQ4CM7PEOQjMzBLnIDAzS5yDwMwscQ4CM7PEOQjMzBLnIDAzS5yDwMwscQ4CM7PEOQjMzBLnIDAzS5yDwMwscQ4CM7PEOQjMzBLnIDAzS1ymQSBptaRBSQclbS6xXpJuLax/TNLrs6zHKqOnP8fKrt0s2XwPK7t209Ofq3ZJZjaFeVm9sKQG4DbgcuAwsEfSzog4UNTsCmBp4d8K4OOFv1ajevpzdO4YYOT4KAC5oRE6dwwAsHZZSzVLM7NJZLlHcClwMCIORcTzQDewZkKbNcCnIu8hoEnS+RnWZBnb0jv4QgiMGTk+ypbewSpVZGanktkeAdACPFn0/DAnf9sv1aYFeKq4kaT1wHqA5uZm+vr6plXQ8PDwtLetVZUe8zWLnoNFpdY8V7E6/D6nwWOePVkGgUosi2m0ISK2AdsA2traor29fVoF9fX1Md1ta1Wlx/yBrt3khkZOWt7S1MjGdZWpw+9zGjzm2ZPloaHDjP9uuBA4Mo02VkM2dbTSOL9h3LLG+Q1s6mitUkVmdipZBsEeYKmkJZLOAK4Bdk5osxP448LVQ28EjkbEUxNfyGrH2mUt3HLlxbQ0NSLyewK3XHmxTxSbzWGZHRqKiBOSNgC9QAOwPSL2S7qpsH4rsAt4K3AQ+BlwfVb1WOWsXdbiD36zGpLlOQIiYhf5D/viZVuLHgdwc5Y1mJnZ1PzLYjOzxDkIzMwS5yAwM0ucg8DMLHHKn6+tHZJ+BPxgmpufCzwzi+XUAo85DR5zGmYy5v8UEa8otaLmgmAmJO2NiLZq11FJHnMaPOY0ZDVmHxoyM0ucg8DMLHGpBcG2ahdQBR5zGjzmNGQy5qTOEZiZ2clS2yMwM7MJHARmZolLJggkrZY0KOmgpM3VridrkhZJekDS45L2S3pPtWuqBEkNkvol3V3tWipFUpOkz0n6VuH9/s1q15QlSf+98N/0NyV9RtJLq11TFiRtl/S0pG8WLTtH0v2SvlP4+6uz0VcSQSCpAbgNuAK4CLhW0kXVrSpzJ4A/j4j/DLwRuDmBMQO8B3i82kVU2MeAeyPiQuAS6nj8klqAdwNtEfEa8lPcX1PdqjJzF7B6wrLNwJciYinwpcLzGUsiCIBLgYMRcSginge6gTVVrilTEfFURHyj8Pg58h8OdX2TAEkLgd8F7qh2LZUi6eXAbwGfAIiI5yNiqKpFZW8e0ChpHvAy6vSuhhHxZeAnExavAT5ZePxJYO1s9JVKELQATxY9P0ydfygWk7QYWAY8XOVSsvZR4C+AX1a5jkp6JfAj4M7CIbE7JJ1Z7aKyEhE54B+BJ4CnyN/V8L7qVlVRzWN3cSz8PW82XjSVIFCJZUlcNytpAfB54M8i4tlq15MVSb8HPB0R+6pdS4XNA14PfDwilgHHmKXDBXNR4Zj4GmAJcAFwpqR3VLeq2pdKEBwGFhU9X0id7k4WkzSffAj8a0TsqHY9GVsJ/L6k75M/9HeZpE9Xt6SKOAwcjoixvb3PkQ+GevU7wPci4kcRcRzYAbypyjVV0g8lnQ9Q+Pv0bLxoKkGwB1gqaYmkM8ifXNpZ5ZoyJUnkjxs/HhEfqXY9WYuIzohYGBGLyb+/uyOi7r8pRsT/A56U1FpY9BbgQBVLytoTwBslvazw3/hbqOOT4yXsBN5ZePxO4Auz8aKZ3rN4roiIE5I2AL3krzLYHhH7q1xW1lYC1wEDkh4pLPsfhftIW33ZCPxr4UvOIeD6KteTmYh4WNLngG+QvzKunzqdakLSZ4B24FxJh4EPAV3A/5V0A/lQvHpW+vIUE2ZmaUvl0JCZmU3CQWBmljgHgZlZ4hwEZmaJcxCYmSXOQWA1R9Li4hkZK9Rnn6STbhouqU3SrbPUx19Let9svFaWr2n1J4nfEViaJDVExGiWfUTEXmBvln2YZc17BFar5kn6pKTHCnPxvwxA0vcl/ZWkrwBXS/pvkvZIelTS54va3SXpVklflXRI0lVjLyzpLyQNFLbpKurzaklfl/RtSf+l0LZ97N4HhW/f2wt7D4ckvbvoNf+ycL+A+wtz6E/5LV3SqyTdK2mfpH+XdKGkswvje0mhzcskPSlpfqn2s/U/tNU/B4HVqlZgW0S8FngW+NOidT+PiDdHRDewIyLeEBFj8/TfUNTufODNwO+R/8Umkq4gP7XvisI2/1DUfl5EXAr8GflfeZZyIdBBfurzDxU+pNuAPyQ/A+yVwEmHmErYBmyMiOXA+4DbI+Io8Cjw24U2bwN6C3PunNS+jD7MAB8astr1ZET8R+Hxp8nfrOQfC8//rajdayT9LdAELCA/zciYnoj4JXBAUnNh2e8Ad0bEzwAiong++LGJ+/YBiyep656I+AXwC0lPA83kw+YLETECIOmLUw2sMGPsm4DP5qfTAeBXisb2R8AD5OdUuv0U7c1OyUFgtWri3CjFz48VPb4LWBsRj0p6F/m5W8b8ouixiv5ONu/KWPtRJv//TvFrjrUrNQ36VF4CDEXE60qs2wncIukcYDmwGzhzivZmp+RDQ1arfl0v3pv3WuArk7Q7C3iqMCX3ujJe9z7gT4rOJZwz40rztb1N0ksL395/d6rGhftGfE/S1YUaJOmSwrph4Ovkb095d0SMTtXerBwOAqtVjwPvlPQYcA7w8Una/SX5O7PdD3zrVC8aEfeS/9a9tzBr64wvvYyIPYXXfJT84aW9wNFTbLYOuEHSo8B+xt9a9d+AdzD+ENhU7c2m5NlHzSpA0oKIGC7saXwZWD92T2mzavM5ArPK2CbpIuClwCcdAjaXeI/AzCxxPkdgZpY4B4GZWeIcBGZmiXMQmJklzkFgZpa4/w8VewwwMdqd6QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import test as cat\n", "import networkx as nx\n", "import matplotlib.pyplot as plt\n", "import cycle_analysis.cycle_tools_coalescence as ctc\n", "import cycle_analysis.test as cat\n", "\n", "# generate a dummy graph for testing\n", "# put an edge weight distribution on the system, available are random/gradient/bigradient/nested_square\n", "n=7\n", "G=nx.grid_graph(( n,n,1))\n", "G=cat.generate_pattern(G,'random')\n", "\n", "weights=[G.edges[e]['weight'] for e in G.edges()]\n", "pos=nx.get_node_attributes(G,'pos')\n", "\n", "# merge all shortest cycles and create merging tree, then calc asymmetry of the tree's branches\n", "T=ctc.coalescence()\n", "minimum_basis=T.construct_networkx_basis(G)\n", "cycle_tree=T.calc_cycle_coalescence(G,minimum_basis)\n", "dict_asymmetry=T.calc_tree_asymmetry()\n", "\n", "# plot branching asymmetry in dependence of branching level\n", "x,y=[],[]\n", "for n in dict_asymmetry:\n", " x.append((cycle_tree.nodes[n]['pos'][1]-6)/2.)\n", " y.append(dict_asymmetry[n])\n", "plt.scatter(x,y)\n", "plt.ylabel('asymmetry')\n", "plt.xlabel('branching level')\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.9" } }, "nbformat": 4, "nbformat_minor": 4 }