diff --git a/cadCAD/diagram/__init__.py b/cadCAD/diagram/__init__.py index e402494c..a7996403 100644 --- a/cadCAD/diagram/__init__.py +++ b/cadCAD/diagram/__init__.py @@ -1 +1 @@ -from cadCAD_diagram.config_diagram import diagram, diagram_from_config \ No newline at end of file +from cadCAD.diagram.config_diagram import diagram, diagram_from_config \ No newline at end of file diff --git a/documentation/examples/cadCAD_diagram.ipynb b/documentation/examples/cadCAD_diagram.ipynb new file mode 100644 index 00000000..041fd331 --- /dev/null +++ b/documentation/examples/cadCAD_diagram.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def policy_1(p, s, h, v):\n", + " return {\"pi_1\": v[\"var_1\"]}\n", + "\n", + "\n", + "def policy_2(p, s, h, v):\n", + " return {\"pi_1\": v[\"var_1\"], \"pi_2\": v[\"var_1\"] * v[\"var_2\"]}\n", + "\n", + "\n", + "def suf_1(p, s, h, v, pi):\n", + " return (\"var_1\", pi[\"pi_1\"])\n", + "\n", + "\n", + "def suf_2(p, s, h, v, pi):\n", + " return (\"var_2\", pi[\"pi_2\"])\n", + "\n", + "\n", + "psubs = [\n", + " {\n", + " \"label\": \"Test\",\n", + " \"policies\": {\"policy_1\": policy_1, \"policy_2\": policy_2},\n", + " \"variables\": {\"var_1\": suf_1, \"var_2\": suf_2},\n", + " }\n", + "]\n", + "\n", + "initial_state = {\"var_1\": 0, \"var_2\": 1}\n", + "\n", + "params = {\"param_1\": 0, \"param_2\": 1}" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('..')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "cluster_timestep\n", + "\n", + "\n", + "cluster_psub_0\n", + "\n", + "Partial State Update Block\n", + "\n", + "\n", + "cluster_variables_0\n", + "\n", + "State\n", + "\n", + "\n", + "cluster_policy_0\n", + "\n", + "Policies\n", + "\n", + "\n", + "cluster_suf_0\n", + "\n", + "State Update Functions\n", + "\n", + "\n", + "\n", + "state_0\n", + "\n", + "\n", + "State 1\n", + "\n", + "\n", + "\n", + "policy_policy_1_0\n", + "\n", + "policy_1 (policy_1)\n", + "\n", + "\n", + "\n", + "state_0->policy_policy_1_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "policy_policy_2_0\n", + "\n", + "policy_2 (policy_2)\n", + "\n", + "\n", + "\n", + "state_0->policy_policy_2_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "variable_var_2_0\n", + "\n", + "\n", + "var_2 (int)\n", + "\n", + "\n", + "\n", + "variable_var_2_0->policy_policy_2_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "variable_var_1_0\n", + "\n", + "\n", + "var_1 (int)\n", + "\n", + "\n", + "\n", + "variable_var_1_0->policy_policy_1_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "variable_var_1_0->policy_policy_2_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "agg_0\n", + "\n", + "Aggregation\n", + "\n", + "\n", + "\n", + "suf_var_1_0\n", + "\n", + "var_1 (suf_1)\n", + "\n", + "\n", + "\n", + "agg_0->suf_var_1_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "suf_var_2_0\n", + "\n", + "var_2 (suf_2)\n", + "\n", + "\n", + "\n", + "agg_0->suf_var_2_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "policy_policy_1_0->agg_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "policy_policy_2_0->agg_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "state_1\n", + "\n", + "state_1\n", + "\n", + "\n", + "\n", + "suf_var_1_0->state_1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "suf_var_2_0->state_1\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from cadCAD_diagram.config_diagram import diagram\n", + "\n", + "diagram(initial_state, params, psubs)" + ] + }, + { + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/requirements.txt b/requirements.txt index a951734a..e4aa76e1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,3 +11,4 @@ pathos>=0.2.8 numpy>=1.22.0 pytz>=2021.1 setuptools>=69.0.2 +graphviz>=0.20.1 \ No newline at end of file