{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial for exact ECT computation \n", "\n", "*Warning: This is a work in progress. Proceed at your own risk.*\n", "\n", "The goal of this section is so show available tools for exact computation of the ECT. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from ect import ECT, EmbeddedGraph, EmbeddedCW,create_example_graph\n", "\n", "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Circle\n", "import numpy as np\n", "import networkx as nx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the `EmbeddedGraph` class to find the angle normal to any pair of vertices in the graph, whether or not there is a connecting edge. Setting `angle_labels_circle=True` in the plotting command will try to draw these on the circle. Note that this doesn't tend to do well for large inputs, but can be helpful for small examples. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Super simple graph \n", "G = EmbeddedGraph()\n", "G.add_node('A', 0,0)\n", "G.add_node('B', 1,0)\n", "G.add_node('C', 2,1)\n", "G.add_node('D', 1,2)\n", "G.add_edge('A', 'B')\n", "G.add_edge('B', 'D')\n", "G.add_edge('D', 'C')\n", "\n", "fig, ax = plt.subplots()\n", "G.plot(ax = ax)\n", "G.plot_angle_circle(ax = ax)\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "G = create_example_graph(centered=True)\n", "G.rescale_to_unit_disk()\n", "\n", "\n", "fig, ax = plt.subplots()\n", "G.plot(ax = ax)\n", "G.plot_angle_circle(ax = ax)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can extract the information directly for use in computation. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ nan 5.49778714 5.60844436 5.8195377 5.03413953 5.49778714]\n", " [2.35619449 nan 5.6951827 0. 3.92699082 5.49778714]\n", " [2.46685171 2.55359005 nan 2.03444394 2.89661399 2.67794504]\n", " [2.67794504 3.14159265 5.17603659 nan 3.46334321 3.92699082]\n", " [1.89254688 0.78539816 6.03820664 0.32175055 nan 0. ]\n", " [2.35619449 2.35619449 5.8195377 0.78539816 3.14159265 nan]]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# If return type is `matrix`, the function returns the matrix of angles and the labels of the angles in the order of the rows/columns in the matrix \n", "M,Labels = G.get_all_normals_matrix()\n", "print(M)\n", "\n", "plt.matshow(M)\n", "plt.xticks(range(len(Labels)), Labels)\n", "plt.yticks(range(len(Labels)), Labels)\n", "plt.colorbar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This can also be returned as a dictionary, with keys given by angles (note the negative angle is not repeated), and value a list of the pairs of vertices associated. Note that in the case of more than one pair of vertices having the same normal angle, it is given as a list of all pairs. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{5.497787143782138: [('A', 'B'), ('A', 'F'), ('B', 'F')],\n", " 5.608444364956034: [('A', 'C')],\n", " 5.81953769817878: [('A', 'D'), ('F', 'C')],\n", " 5.034139534781332: [('A', 'E')],\n", " 5.695182703632018: [('B', 'C')],\n", " 0.0: [('B', 'D'), ('E', 'F')],\n", " 3.9269908169872414: [('B', 'E'), ('D', 'F')],\n", " 2.0344439357957027: [('C', 'D')],\n", " 2.896613990462929: [('C', 'E')],\n", " 3.4633432079864352: [('D', 'E')]}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "angles_dict = G.get_normals_dict()\n", "angles_dict" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also get it to return the dictionary with rounded values, as well as to have it include all the opposite angles. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{5.5: [('A', 'B'), ('A', 'F'), ('B', 'F')],\n", " 5.61: [('A', 'C')],\n", " 5.82: [('A', 'D'), ('F', 'C')],\n", " 5.03: [('A', 'E')],\n", " 5.7: [('B', 'C')],\n", " 0.0: [('B', 'D'), ('E', 'F')],\n", " 3.93: [('B', 'E'), ('D', 'F')],\n", " 2.03: [('C', 'D')],\n", " 2.9: [('C', 'E')],\n", " 3.46: [('D', 'E')],\n", " 2.36: [('A', 'B'), ('A', 'F'), ('B', 'F')],\n", " 2.47: [('A', 'C')],\n", " 2.68: [('A', 'D'), ('F', 'C')],\n", " 1.89: [('A', 'E')],\n", " 2.56: [('B', 'C')],\n", " 3.14: [('B', 'D'), ('E', 'F')],\n", " 0.79: [('B', 'E'), ('D', 'F')],\n", " 5.17: [('C', 'D')],\n", " 6.04: [('C', 'E')],\n", " 0.32: [('D', 'E')]}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G.get_normals_dict(opposites = True, \n", " num_rounding_digits=2)" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.11.7" } }, "nbformat": 4, "nbformat_minor": 2 }