diff --git a/notebooks/experimental/graphcat-etree.ipynb b/notebooks/experimental/graphcat-etree.ipynb new file mode 100644 index 00000000..452b65fa --- /dev/null +++ b/notebooks/experimental/graphcat-etree.ipynb @@ -0,0 +1,348 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "cc4e651b", + "metadata": {}, + "outputs": [], + "source": [ + "import copy\n", + "import xml.etree.ElementTree as xml\n", + "\n", + "import graphcat.notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f0261a32", + "metadata": {}, + "outputs": [], + "source": [ + "def append_element(graph, name, inputs):\n", + " parent = copy.copy(inputs.getone(\"parent\"))\n", + " child = inputs.getone(\"child\")\n", + " parent.append(child)\n", + " return parent\n", + "\n", + "\n", + "def create_element(tag, attrib={}, **extra):\n", + " def implementation(graph, name, inputs):\n", + " return xml.Element(tag, attrib=attrib, **extra)\n", + " return implementation" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "aec611fb", + "metadata": {}, + "outputs": [], + "source": [ + "graph = graphcat.StaticGraph()\n", + "graph.add_task(\"canvas\", create_element(\"canvas\"))\n", + "graph.add_task(\"axes1\", create_element(\"cartesian\"))\n", + "graph.add_task(\"append1\", append_element)\n", + "graph.add_links(\"canvas\", (\"append1\", \"parent\"))\n", + "graph.add_links(\"axes1\", (\"append1\", \"child\"))\n", + "graph.add_task(\"axes2\", create_element(\"radial\"))\n", + "graph.add_task(\"append2\", append_element)\n", + "graph.add_links(\"append1\", (\"append2\", \"parent\"))\n", + "graph.add_links(\"axes2\", (\"append2\", \"child\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "829dff2f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "canvas\n", + "\n", + "canvas\n", + "\n", + "\n", + "\n", + "append1\n", + "\n", + "append1\n", + "\n", + "\n", + "\n", + "canvas->append1\n", + "\n", + "\n", + "  parent  \n", + "\n", + "\n", + "\n", + "append2\n", + "\n", + "append2\n", + "\n", + "\n", + "\n", + "append1->append2\n", + "\n", + "\n", + "  parent  \n", + "\n", + "\n", + "\n", + "axes1\n", + "\n", + "axes1\n", + "\n", + "\n", + "\n", + "axes1->append1\n", + "\n", + "\n", + "  child  \n", + "\n", + "\n", + "\n", + "axes2\n", + "\n", + "axes2\n", + "\n", + "\n", + "\n", + "axes2->append2\n", + "\n", + "\n", + "  child  \n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "graphcat.notebook.display(graph)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "85047669", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "xml.dump(graph.output(\"append2\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1c168856", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"canvas\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "43b70ff2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"append1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ac3fb8fc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"append2\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "19bfccf5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"axes1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "53b6eaad", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"append1\")[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "de4c208e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"append2\")[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "58b101aa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"axes2\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "84afef9d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.output(\"append2\")[1]" + ] + } + ], + "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.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}