From ee7e0212dc557f0f1961708b0b82aa8aa0a6b271 Mon Sep 17 00:00:00 2001 From: LouieMH <98885515+LouieMH@users.noreply.github.com> Date: Sun, 24 Nov 2024 17:17:16 +0100 Subject: [PATCH 1/6] add remove node function --- .../notebooks/Latent_var_notebook.ipynb | 1389 +++++++++++++++++ pyhgf/updates/structure.py | 82 + pyhgf/utils/__init__.py | 2 + pyhgf/utils/remove_node.py | 263 ++++ 4 files changed, 1736 insertions(+) create mode 100644 docs/source/notebooks/Latent_var_notebook.ipynb create mode 100644 pyhgf/updates/structure.py create mode 100644 pyhgf/utils/remove_node.py diff --git a/docs/source/notebooks/Latent_var_notebook.ipynb b/docs/source/notebooks/Latent_var_notebook.ipynb new file mode 100644 index 000000000..934ba3701 --- /dev/null +++ b/docs/source/notebooks/Latent_var_notebook.ipynb @@ -0,0 +1,1389 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Latent HGF: BA Project" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup: Import packages/modules, disable Jax" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "from IPython.utils import io" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [], + "source": [ + "# if 'google.colab' in sys.modules:\n", + "\n", + "# with io.capture_output() as captured:\n", + "# ! pip install pyhgf watermark" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [], + "source": [ + "import arviz as az\n", + "import jax.numpy as jnp\n", + "import matplotlib.pyplot as plt\n", + "import pymc as pm\n", + "import numpy as np\n", + "import jax\n", + "import pandas as pd\n", + "import networkx as nx\n", + "\n", + "from pyhgf import load_data\n", + "from pyhgf.distribution import HGFDistribution\n", + "from pyhgf.model import HGF, Network\n", + "from pyhgf.response import first_level_gaussian_surprise\n", + "from pyhgf.utils import beliefs_propagation\n", + "from pyhgf.math import gaussian_surprise\n", + "from copy import deepcopy\n", + "# from pyhgf.updates.structure import add_parent\n", + "\n", + "\n", + "plt.rcParams[\"figure.constrained_layout.use\"] = True" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [], + "source": [ + "# Disable JIT compilation globally\n", + "jax.config.update(\"jax_disable_jit\", False) # True - If I want the compiler disabled." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define Functions, simulate data" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, Tuple\n", + "\n", + "from pyhgf.typing import AdjacencyLists, Edges\n", + "from pyhgf.utils import add_edges\n", + "\n", + "\n", + "def add_parent(\n", + " attributes: Dict, edges: Edges, index: int, coupling_type: str, mean: float\n", + ") -> Tuple[Dict, Edges]:\n", + " r\"\"\"Add a new continuous-state parent node to the attributes and edges of an\n", + " existing network.\n", + "\n", + " Parameters\n", + " ----------\n", + " attributes :\n", + " The attributes of the existing network.\n", + " edges :\n", + " The edges of the existing network.\n", + " index :\n", + " The index of the node you want to connect a new parent node to.\n", + " coupling_type :\n", + " The type of coupling you want between the existing node and it's new parent.\n", + " Can be either \"value\" or \"volatility\".\n", + " mean :\n", + " The mean value of the new parent node.\n", + "\n", + " Returns\n", + " -------\n", + " attributes :\n", + " The updated attributes of the existing network.\n", + " edges :\n", + " The updated edges of the existing network.\n", + "\n", + " \"\"\"\n", + " # Get index for node to be added\n", + " new_node_idx = len(edges)\n", + "\n", + " # Add new node to attributes\n", + " attributes[new_node_idx] = {\n", + " \"mean\": mean,\n", + " \"expected_mean\": mean,\n", + " \"precision\": 1.0,\n", + " \"expected_precision\": 1.0,\n", + " \"volatility_coupling_children\": None,\n", + " \"volatility_coupling_parents\": None,\n", + " \"value_coupling_children\": None,\n", + " \"value_coupling_parents\": None,\n", + " \"tonic_volatility\": -4.0,\n", + " \"tonic_drift\": 0.0,\n", + " \"autoconnection_strength\": 1.0,\n", + " \"observed\": 1,\n", + " \"temp\": {\n", + " \"effective_precision\": 0.0,\n", + " \"value_prediction_error\": 0.0,\n", + " \"volatility_prediction_error\": 0.0,\n", + " },\n", + " }\n", + "\n", + " # Add new AdjacencyList with empty values, to Edges tuple\n", + " new_adj_list = AdjacencyLists(\n", + " node_type=2,\n", + " value_parents=None,\n", + " volatility_parents=None,\n", + " value_children=None,\n", + " volatility_children=None,\n", + " coupling_fn=(None,),\n", + " )\n", + " edges = edges + (new_adj_list,)\n", + "\n", + " # Use add_edges to integrate the altered attributes and edges\n", + " attributes, edges = add_edges(\n", + " attributes=attributes,\n", + " edges=edges,\n", + " kind=coupling_type,\n", + " parent_idxs=new_node_idx,\n", + " children_idxs=index,\n", + " )\n", + "\n", + " # Return new attributes and edges\n", + " return attributes, edges\n" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, Tuple, Union, List\n", + "from pyhgf.typing import AdjacencyLists, Edges\n", + "\n", + "def _remove_edges(\n", + " attributes: Dict,\n", + " edges: Edges,\n", + " kind: str = \"value\",\n", + " parent_idxs: Union[int, List[int]] = None,\n", + " children_idxs: Union[int, List[int]] = None,\n", + ") -> Tuple[Dict, Edges]:\n", + " \"\"\"Remove a value or volatility coupling link between a set of nodes.\n", + "\n", + " Parameters\n", + " ----------\n", + " attributes :\n", + " Attributes of the neural network.\n", + " edges :\n", + " Edges of the neural network.\n", + " kind :\n", + " The kind of coupling to remove, can be `\"value\"` or `\"volatility\"`.\n", + " parent_idxs :\n", + " The index(es) of the parent node(s) to disconnect.\n", + " children_idxs :\n", + " The index(es) of the children node(s) to disconnect.\n", + "\n", + " Returns\n", + " -------\n", + " Tuple[Dict, Edges]\n", + " Updated attributes and edges with removed connections.\n", + " \"\"\"\n", + " if kind not in [\"value\", \"volatility\"]:\n", + " raise ValueError(\n", + " f\"The kind of coupling should be value or volatility, got {kind}\"\n", + " )\n", + " \n", + " if isinstance(children_idxs, int):\n", + " children_idxs = [children_idxs]\n", + " if isinstance(parent_idxs, int):\n", + " parent_idxs = [parent_idxs]\n", + "\n", + " edges_as_list = list(edges)\n", + " \n", + " # Update parent nodes\n", + " for parent_idx in parent_idxs:\n", + " if parent_idx >= len(edges_as_list):\n", + " continue\n", + " \n", + " node = edges_as_list[parent_idx]\n", + " children = node.value_children if kind == \"value\" else node.volatility_children\n", + " coupling_key = f\"{kind}_coupling_children\"\n", + " \n", + " if children is not None and children:\n", + " # Get indices of children to keep\n", + " keep_indices = [i for i, child in enumerate(children) if child not in children_idxs]\n", + " new_children = tuple(children[i] for i in keep_indices)\n", + " \n", + " # Update coupling strengths if they exist\n", + " if coupling_key in attributes[parent_idx] and attributes[parent_idx][coupling_key]:\n", + " new_strengths = tuple(attributes[parent_idx][coupling_key][i] for i in keep_indices)\n", + " attributes[parent_idx][coupling_key] = new_strengths if new_strengths else None\n", + " \n", + " # Update node edges\n", + " if kind == \"value\":\n", + " edges_as_list[parent_idx] = AdjacencyLists(\n", + " node.node_type,\n", + " node.value_parents,\n", + " node.volatility_parents,\n", + " new_children if new_children else None,\n", + " node.volatility_children,\n", + " node.coupling_fn\n", + " )\n", + " else:\n", + " edges_as_list[parent_idx] = AdjacencyLists(\n", + " node.node_type,\n", + " node.value_parents,\n", + " node.volatility_parents,\n", + " node.value_children,\n", + " new_children if new_children else None,\n", + " node.coupling_fn\n", + " )\n", + "\n", + " # Update children nodes\n", + " for child_idx in children_idxs:\n", + " if child_idx >= len(edges_as_list):\n", + " continue\n", + " \n", + " node = edges_as_list[child_idx]\n", + " parents = node.value_parents if kind == \"value\" else node.volatility_parents\n", + " coupling_key = f\"{kind}_coupling_parents\"\n", + " \n", + " if parents is not None and parents:\n", + " # Get indices of parents to keep\n", + " keep_indices = [i for i, parent in enumerate(parents) if parent not in parent_idxs]\n", + " new_parents = tuple(parents[i] for i in keep_indices)\n", + " \n", + " # Update coupling strengths if they exist\n", + " if coupling_key in attributes[child_idx] and attributes[child_idx][coupling_key]:\n", + " new_strengths = tuple(attributes[child_idx][coupling_key][i] for i in keep_indices)\n", + " attributes[child_idx][coupling_key] = new_strengths if new_strengths else None\n", + " \n", + " # Update node edges\n", + " if kind == \"value\":\n", + " edges_as_list[child_idx] = AdjacencyLists(\n", + " node.node_type,\n", + " new_parents if new_parents else None,\n", + " node.volatility_parents,\n", + " node.value_children,\n", + " node.volatility_children,\n", + " node.coupling_fn\n", + " )\n", + " else:\n", + " edges_as_list[child_idx] = AdjacencyLists(\n", + " node.node_type,\n", + " node.value_parents,\n", + " new_parents if new_parents else None,\n", + " node.value_children,\n", + " node.volatility_children,\n", + " node.coupling_fn\n", + " )\n", + "\n", + " return attributes, tuple(edges_as_list)\n", + "\n", + "def remove_node(\n", + " attributes: Dict,\n", + " edges: Edges,\n", + " index: int\n", + ") -> Tuple[Dict, Edges]:\n", + " \"\"\"Remove a node from the HGF network and adjust remaining indices.\n", + " \n", + " Parameters\n", + " ----------\n", + " attributes :\n", + " The attributes of the existing network.\n", + " edges :\n", + " The edges of the existing network.\n", + " index :\n", + " The index of the node to remove.\n", + " \n", + " Returns\n", + " -------\n", + " Tuple[Dict, Edges]\n", + " Updated attributes and edges with the node removed and indices adjusted.\n", + " \"\"\"\n", + " if index not in attributes or index >= len(edges):\n", + " raise ValueError(f\"Node with index {index} does not exist in the network\")\n", + " \n", + " edges_as_list = list(edges)\n", + " node = edges_as_list[index]\n", + "\n", + " # First remove all connections to/from this node\n", + " if node.value_parents:\n", + " attributes, edges = _remove_edges(\n", + " attributes, \n", + " edges,\n", + " \"value\",\n", + " parent_idxs=node.value_parents,\n", + " children_idxs=index\n", + " )\n", + " edges_as_list = list(edges)\n", + " \n", + " if node.volatility_parents:\n", + " attributes, edges = _remove_edges(\n", + " attributes, \n", + " edges,\n", + " \"volatility\",\n", + " parent_idxs=node.volatility_parents,\n", + " children_idxs=index\n", + " )\n", + " edges_as_list = list(edges)\n", + " \n", + " if node.value_children:\n", + " attributes, edges = _remove_edges(\n", + " attributes, \n", + " edges,\n", + " \"value\",\n", + " parent_idxs=index,\n", + " children_idxs=node.value_children\n", + " )\n", + " edges_as_list = list(edges)\n", + " \n", + " if node.volatility_children:\n", + " attributes, edges = _remove_edges(\n", + " attributes, \n", + " edges,\n", + " \"volatility\",\n", + " parent_idxs=index,\n", + " children_idxs=node.volatility_children\n", + " )\n", + " edges_as_list = list(edges)\n", + "\n", + " # Now remove the node\n", + " edges_as_list.pop(index)\n", + " attributes.pop(index)\n", + " \n", + " # Create new edges list with adjusted indices\n", + " new_edges = []\n", + " for i, node in enumerate(edges_as_list):\n", + " new_value_parents = None\n", + " new_volatility_parents = None\n", + " new_value_children = None\n", + " new_volatility_children = None\n", + " \n", + " if node.value_parents:\n", + " new_value_parents = tuple(p if p < index else p - 1 for p in node.value_parents)\n", + " \n", + " if node.volatility_parents:\n", + " new_volatility_parents = tuple(p if p < index else p - 1 for p in node.volatility_parents)\n", + " \n", + " if node.value_children:\n", + " new_value_children = tuple(c if c < index else c - 1 for c in node.value_children)\n", + " \n", + " if node.volatility_children:\n", + " new_volatility_children = tuple(c if c < index else c - 1 for c in node.volatility_children)\n", + " \n", + " new_edges.append(AdjacencyLists(\n", + " node.node_type,\n", + " new_value_parents,\n", + " new_volatility_parents,\n", + " new_value_children,\n", + " new_volatility_children,\n", + " node.coupling_fn\n", + " ))\n", + " \n", + " # Adjust attributes indices\n", + " new_attributes = {-1: attributes[-1]} # Preserve the time_step\n", + " for old_idx, attr in attributes.items():\n", + " if old_idx == -1 or old_idx == index:\n", + " continue\n", + " new_idx = old_idx if old_idx < index else old_idx - 1\n", + " new_attributes[new_idx] = attr\n", + "\n", + " return new_attributes, tuple(new_edges)" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [], + "source": [ + "# from pyhgf.updates.structure import add_parent\n", + "\n", + "def update_structure(\n", + " attributes: Dict, edges: Edges, index: int\n", + ") -> Tuple[Dict, Edges]:\n", + " #Calculate gaussian-surprise\n", + " if index >= 0:\n", + " node_ex_m = (attributes[index]['expected_mean'])\n", + " node_ex_p = (attributes[index]['expected_precision'])\n", + " node_m = (attributes[index]['mean'])\n", + " surprise = gaussian_surprise(x=node_m, \n", + " expected_mean=node_ex_m, \n", + " expected_precision=node_ex_p)\n", + " else:\n", + " return attributes, edges\n", + "\n", + " #Define threshold, and compare against calculated surprise \n", + " # (may need internal storage for accumulated storage)\n", + " if surprise > 400:\n", + " threshold_reached = True\n", + " else:\n", + " threshold_reached = False\n", + " \n", + " #Return attributes and edges\n", + " if threshold_reached is False:\n", + " return attributes, edges\n", + " elif threshold_reached is True:\n", + " print('new node added')\n", + " return add_parent(attributes = attributes, \n", + " edges = edges, \n", + " index = index, \n", + " coupling_type = 'volatility', #Add condition to vary\n", + " mean = 1.0\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": {}, + "outputs": [], + "source": [ + "import networkx as nx\n", + "import matplotlib.pyplot as plt\n", + "import pydot\n", + "\n", + "def plot_network_x(network: \"Network\", figsize=(4, 4), node_size=500):\n", + " \"\"\"Visualization of node network using NetworkX and pydot layout.\n", + " \n", + " Parameters\n", + " ----------\n", + " network : Network\n", + " An instance of main Network class.\n", + " figsize : tuple, optional\n", + " Figure size in inches (width, height), by default (10, 8)\n", + " node_size : int, optional\n", + " Size of the nodes in the visualization, by default 1000\n", + " \n", + " Returns\n", + " -------\n", + " matplotlib.figure.Figure\n", + " The figure containing the network visualization\n", + " \"\"\"\n", + " # Create a directed graph\n", + " G = nx.DiGraph()\n", + " \n", + " # Add nodes\n", + " for idx in range(len(network.edges)):\n", + " # Check if it's an input node\n", + " is_input = idx in network.input_idxs\n", + " # Check if it's a continuous state node\n", + " if network.edges[idx].node_type == 2:\n", + " G.add_node(f\"x_{idx}\", \n", + " is_input=is_input,\n", + " label=str(idx))\n", + " \n", + " # Add value parent edges\n", + " for i, edge in enumerate(network.edges):\n", + " value_parents = edge.value_parents\n", + " if value_parents is not None:\n", + " for value_parents_idx in value_parents:\n", + " # Get the coupling function\n", + " child_idx = network.edges[value_parents_idx].value_children.index(i)\n", + " coupling_fn = network.edges[value_parents_idx].coupling_fn[child_idx]\n", + " \n", + " # Add edge with appropriate style\n", + " G.add_edge(f\"x_{value_parents_idx}\", \n", + " f\"x_{i}\",\n", + " edge_type='value',\n", + " coupling=coupling_fn is not None)\n", + " \n", + " # Add volatility parent edges\n", + " for i, edge in enumerate(network.edges):\n", + " volatility_parents = edge.volatility_parents\n", + " if volatility_parents is not None:\n", + " for volatility_parents_idx in volatility_parents:\n", + " G.add_edge(f\"x_{volatility_parents_idx}\", \n", + " f\"x_{i}\",\n", + " edge_type='volatility')\n", + " \n", + " # Create the plot\n", + " plt.figure(figsize=figsize)\n", + " \n", + " # Use pydot layout for hierarchical arrangement\n", + " pos = nx.nx_pydot.pydot_layout(G, prog='dot', root=None)\n", + " \n", + " # Scale the positions\n", + " scale = 1 # Adjust this value to change the spread of nodes\n", + " pos = {node: (x * scale, y * scale) for node, (x, y) in pos.items()}\n", + " \n", + " # Draw nodes\n", + " node_colors = ['lightblue' if G.nodes[node]['is_input'] else 'white' \n", + " for node in G.nodes()]\n", + " nx.draw_networkx_nodes(G, pos, \n", + " node_color=node_colors,\n", + " node_size=node_size,\n", + " edgecolors='black')\n", + " \n", + " # Draw node labels\n", + " nx.draw_networkx_labels(G, pos, \n", + " labels={node: G.nodes[node]['label'] for node in G.nodes()})\n", + " \n", + " # Draw value parent edges\n", + " value_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", + " if d['edge_type'] == 'value']\n", + " coupling_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", + " if d['edge_type'] == 'value' and d['coupling']]\n", + " normal_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", + " if d['edge_type'] == 'value' and not d['coupling']]\n", + " \n", + " # Draw normal value edges\n", + " nx.draw_networkx_edges(G, pos, \n", + " edgelist=normal_edges,\n", + " edge_color='black')\n", + " \n", + " # Draw coupling edges with a different style\n", + " nx.draw_networkx_edges(G, pos, \n", + " edgelist=coupling_edges,\n", + " edge_color='black',\n", + " style='dashed')\n", + " \n", + " # Draw volatility edges\n", + " volatility_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", + " if d['edge_type'] == 'volatility']\n", + " nx.draw_networkx_edges(G, pos, \n", + " edgelist=volatility_edges,\n", + " edge_color='gray',\n", + " style='dashed',\n", + " arrowstyle='->',\n", + " arrowsize=20)\n", + " \n", + " plt.axis('off')\n", + " return plt.gcf()" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nfig = plot_hgf_evolution(test_hgf, snapshot_list)\\nplt.show()\\n# To save the figure:\\n# fig.savefig('hgf_evolution.png', dpi=300, bbox_inches='tight')\\n\"" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import networkx as nx\n", + "import copy\n", + "import pydot\n", + "\n", + "def plot_hgf_evolution(hgf_model, snapshot_list, n_cols=3, figsize=(15, 3)):\n", + " \"\"\"\n", + " Creates a multi-panel figure showing the evolution of an HGF model over time.\n", + " \n", + " Parameters\n", + " ----------\n", + " hgf_model : HGF model instance\n", + " The base HGF model to use for visualization\n", + " snapshot_list : list of tuples\n", + " List of (attributes, edges) tuples representing model states\n", + " n_cols : int, optional\n", + " Number of columns in the subplot grid, by default 3\n", + " figsize : tuple, optional\n", + " Size of the overall figure in inches, by default (15, 3)\n", + " \n", + " Returns\n", + " -------\n", + " matplotlib.figure.Figure\n", + " The composite figure containing all snapshots\n", + " \"\"\"\n", + " n_snapshots = len(snapshot_list)\n", + " n_rows = (n_snapshots + n_cols - 1) // n_cols # Ceiling division\n", + " \n", + " # Create figure with subplots\n", + " fig, axes = plt.subplots(n_rows, n_cols, figsize=figsize)\n", + " if n_rows == 1:\n", + " axes = axes.reshape(1, -1)\n", + " elif n_cols == 1:\n", + " axes = axes.reshape(-1, 1)\n", + " \n", + " # Create a temporary copy of the model for visualization\n", + " temp_model = copy.deepcopy(hgf_model)\n", + " \n", + " # Function to plot a single network (adapted from previous plot_network function)\n", + " def plot_single_network(model, ax):\n", + " G = nx.DiGraph()\n", + " \n", + " # Add nodes\n", + " for idx in range(len(model.edges)):\n", + " is_input = idx in model.input_idxs\n", + " if model.edges[idx].node_type == 2:\n", + " G.add_node(f\"x_{idx}\", \n", + " is_input=is_input,\n", + " label=str(idx))\n", + " \n", + " # Add value parent edges\n", + " for i, edge in enumerate(model.edges):\n", + " value_parents = edge.value_parents\n", + " if value_parents is not None:\n", + " for value_parents_idx in value_parents:\n", + " child_idx = model.edges[value_parents_idx].value_children.index(i)\n", + " coupling_fn = model.edges[value_parents_idx].coupling_fn[child_idx]\n", + " G.add_edge(f\"x_{value_parents_idx}\", \n", + " f\"x_{i}\",\n", + " edge_type='value',\n", + " coupling=coupling_fn is not None)\n", + " \n", + " # Add volatility parent edges\n", + " for i, edge in enumerate(model.edges):\n", + " volatility_parents = edge.volatility_parents\n", + " if volatility_parents is not None:\n", + " for volatility_parents_idx in volatility_parents:\n", + " G.add_edge(f\"x_{volatility_parents_idx}\", \n", + " f\"x_{i}\",\n", + " edge_type='volatility')\n", + " \n", + " # Use pydot layout\n", + " pos = nx.nx_pydot.pydot_layout(G, prog='dot', root=None)\n", + " scale = 50 # Reduced scale for subplots\n", + " pos = {node: (x * scale, y * scale) for node, (x, y) in pos.items()}\n", + " \n", + " # Draw nodes\n", + " node_colors = ['lightblue' if G.nodes[node]['is_input'] else 'white' \n", + " for node in G.nodes()]\n", + " nx.draw_networkx_nodes(G, pos, \n", + " node_color=node_colors,\n", + " node_size=500, # Reduced size for subplots\n", + " edgecolors='black',\n", + " ax=ax)\n", + " \n", + " # Draw node labels\n", + " nx.draw_networkx_labels(G, pos, \n", + " labels={node: G.nodes[node]['label'] for node in G.nodes()},\n", + " ax=ax)\n", + " \n", + " # Draw edges\n", + " normal_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", + " if d['edge_type'] == 'value' and not d['coupling']]\n", + " coupling_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", + " if d['edge_type'] == 'value' and d['coupling']]\n", + " volatility_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", + " if d['edge_type'] == 'volatility']\n", + " \n", + " nx.draw_networkx_edges(G, pos, edgelist=normal_edges, edge_color='black', ax=ax)\n", + " nx.draw_networkx_edges(G, pos, edgelist=coupling_edges, edge_color='black', \n", + " style='dashed', ax=ax)\n", + " nx.draw_networkx_edges(G, pos, edgelist=volatility_edges, edge_color='gray',\n", + " style='dashed', arrowstyle='->', arrowsize=10, ax=ax)\n", + " \n", + " ax.axis('off')\n", + " return G\n", + " \n", + " # Plot each snapshot\n", + " for idx, (attributes, edges) in enumerate(snapshot_list):\n", + " row = idx // n_cols\n", + " col = idx % n_cols\n", + " \n", + " # Update temporary model with snapshot data\n", + " temp_model.attributes = attributes\n", + " temp_model.edges = edges\n", + " \n", + " # Plot the network\n", + " G = plot_single_network(temp_model, axes[row, col])\n", + " axes[row, col].set_title(f'Snapshot {idx + 1}')\n", + " \n", + " # Remove empty subplots if any\n", + " for idx in range(n_snapshots, n_rows * n_cols):\n", + " row = idx // n_cols\n", + " col = idx % n_cols\n", + " fig.delaxes(axes[row, col])\n", + " \n", + " plt.tight_layout()\n", + " return fig\n", + "\n", + "# Example usage:\n", + "\"\"\"\n", + "fig = plot_hgf_evolution(test_hgf, snapshot_list)\n", + "plt.show()\n", + "# To save the figure:\n", + "# fig.savefig('hgf_evolution.png', dpi=300, bbox_inches='tight')\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(123)\n", + "dist_mean, dist_std = 5, 1\n", + "input_data = np.random.normal(loc=dist_mean, scale=dist_std, size=10000)\n", + "\n", + "# aarhus_weather_df = pd.read_csv(\n", + "# \"https://raw.githubusercontent.com/ilabcode/hgf-data/main/datasets/weather.csv\"\n", + "# )\n", + "# aarhus_weather_df.head()\n", + "# input_data = aarhus_weather_df[\"t2m\"][: 24 * 30].to_numpy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create HGF: Define starting HGF, fit to simulated data" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hgf-nodes\n", + "\n", + "\n", + "\n", + "x_0\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "x_1\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "x_1->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_2\n", + "\n", + "2\n", + "\n", + "\n", + "\n", + "x_2->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_3\n", + "\n", + "3\n", + "\n", + "\n", + "\n", + "x_3->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_4\n", + "\n", + "4\n", + "\n", + "\n", + "\n", + "x_4->x_1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_5\n", + "\n", + "5\n", + "\n", + "\n", + "\n", + "x_5->x_2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_6\n", + "\n", + "6\n", + "\n", + "\n", + "\n", + "x_6->x_3\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "timeserie = load_data(\"continuous\")\n", + "\n", + "test_hgf = (\n", + " Network()\n", + " .add_nodes(precision=1e4)\n", + " .add_nodes(precision=1e4, mean=timeserie[0], tonic_volatility=-13.0, \n", + " value_children=0)\n", + " .add_nodes(precision=1e1, tonic_volatility=-14.0, volatility_children=0)\n", + " .add_nodes(precision=1e4, mean=timeserie[0], tonic_volatility=-13.0, \n", + " value_children=0)\n", + " .add_nodes(precision=1e1, tonic_volatility=-2.0, volatility_children=1)\n", + " .add_nodes(precision=1e4, mean=timeserie[0], tonic_volatility=-13.0, \n", + " value_children=2)\n", + " .add_nodes(precision=1e1, tonic_volatility=-2.0, volatility_children=3)\n", + ").create_belief_propagation_fn()\n", + "\n", + "attributes, edges, update_sequence = (\n", + " test_hgf.get_network()\n", + ")\n", + "\n", + "test_hgf.plot_network()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run functions, plot trajectories and changes" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "new node added\n", + "new node added\n" + ] + } + ], + "source": [ + "snapshot_interval = int((len(input_data))/3)\n", + "snapshot_counter = snapshot_interval # Ensure initial hgf is in snapshot_list\n", + "snapshot_list = []\n", + "\n", + "# for each observation\n", + "for value in input_data:\n", + "\n", + " # interleave observations and masks\n", + " data = (value, 1.0, 1.0)\n", + "\n", + " # update the probabilistic network\n", + " attributes, _ = beliefs_propagation(\n", + " attributes=attributes,\n", + " inputs=data,\n", + " update_sequence=update_sequence,\n", + " edges=edges,\n", + " input_idxs=test_hgf.input_idxs\n", + " )\n", + "\n", + " #Calculate gaussian surprise\n", + " index_vec = []\n", + " nr = 0\n", + " for node in edges:\n", + " index_vec.append(nr)\n", + " nr = nr+1\n", + "\n", + " #Update Attributes and Edges\n", + " for idx in index_vec:\n", + " attributes, edges = update_structure(attributes = attributes, edges = edges, index = idx)\n", + "\n", + " #If snapshot-counter reached interval, store Attributes, Edges\n", + " if (snapshot_counter == snapshot_interval):\n", + " snap_tuple = (attributes, edges)\n", + " snapshot_list.append(snap_tuple)\n", + " snapshot_counter = 0\n", + " \n", + " snapshot_counter = snapshot_counter+1" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hgf-nodes\n", + "\n", + "\n", + "\n", + "x_0\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "x_1\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "x_1->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_2\n", + "\n", + "2\n", + "\n", + "\n", + "\n", + "x_2->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_3\n", + "\n", + "3\n", + "\n", + "\n", + "\n", + "x_3->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_4\n", + "\n", + "4\n", + "\n", + "\n", + "\n", + "x_4->x_1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_5\n", + "\n", + "5\n", + "\n", + "\n", + "\n", + "x_5->x_2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_6\n", + "\n", + "6\n", + "\n", + "\n", + "\n", + "x_6->x_3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_7\n", + "\n", + "7\n", + "\n", + "\n", + "\n", + "x_7->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_8\n", + "\n", + "8\n", + "\n", + "\n", + "\n", + "x_8->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_hgf.attributes = attributes\n", + "test_hgf.edges = edges\n", + "\n", + "test_hgf.plot_network()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot attempts" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 158, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_network_x(test_hgf)\n", + "plt.show" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\hesse\\AppData\\Local\\Temp\\ipykernel_17444\\1221509650.py:127: UserWarning: The figure layout has changed to tight\n", + " plt.tight_layout()\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_hgf_evolution(test_hgf, snapshot_list, n_cols=4, figsize=(15, 3))\n", + "\n", + "# Display the plot\n", + "plt.show()\n", + "\n", + "# Optionally save the figure\n", + "# fig.savefig('hgf_evolution.png', dpi=300, bbox_inches='tight')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove node test" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [], + "source": [ + "new_attributes, new_edges = remove_node(attributes=attributes, edges=edges, index=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(AdjacencyLists(node_type=2, value_parents=(1, 3), volatility_parents=(2, 6, 7), value_children=None, volatility_children=None, coupling_fn=()),\n", + " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=(0,), volatility_children=None, coupling_fn=(None,)),\n", + " AdjacencyLists(node_type=2, value_parents=(4,), volatility_parents=None, value_children=None, volatility_children=(0,), coupling_fn=()),\n", + " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=(5,), value_children=(0,), volatility_children=None, coupling_fn=(None,)),\n", + " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=(2,), volatility_children=None, coupling_fn=(None,)),\n", + " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=None, volatility_children=(3,), coupling_fn=()),\n", + " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=None, volatility_children=(0,), coupling_fn=(None,)),\n", + " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=None, volatility_children=(0,), coupling_fn=(None,)))" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_edges" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hgf-nodes\n", + "\n", + "\n", + "\n", + "x_0\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "x_1\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "x_1->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_2\n", + "\n", + "2\n", + "\n", + "\n", + "\n", + "x_2->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_3\n", + "\n", + "3\n", + "\n", + "\n", + "\n", + "x_3->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_4\n", + "\n", + "4\n", + "\n", + "\n", + "\n", + "x_4->x_2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_5\n", + "\n", + "5\n", + "\n", + "\n", + "\n", + "x_5->x_3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_6\n", + "\n", + "6\n", + "\n", + "\n", + "\n", + "x_6->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "x_7\n", + "\n", + "7\n", + "\n", + "\n", + "\n", + "x_7->x_0\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_hgf.attributes = new_attributes\n", + "test_hgf.edges = new_edges\n", + "\n", + "test_hgf.plot_network()" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_network_x(test_hgf)\n", + "plt.show" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pymc_env", + "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.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pyhgf/updates/structure.py b/pyhgf/updates/structure.py new file mode 100644 index 000000000..73e931dc6 --- /dev/null +++ b/pyhgf/updates/structure.py @@ -0,0 +1,82 @@ +# Author: Louie Mølgaard Hessellund + +from typing import Dict, Tuple + +from pyhgf.typing import AdjacencyLists, Edges +from pyhgf.utils import add_edges + + +def add_parent( + attributes: Dict, edges: Edges, index: int, coupling_type: str, mean: float +) -> Tuple[Dict, Edges]: + r"""Add a new continuous-state parent node to the attributes and edges of an + existing network. + + Parameters + ---------- + attributes : + The attributes of the existing network. + edges : + The edges of the existing network. + index : + The index of the node you want to connect a new parent node to. + coupling_type : + The type of coupling you want between the existing node and it's new parent. + Can be either "value" or "volatility". + mean : + The mean value of the new parent node. + + Returns + ------- + attributes : + The updated attributes of the existing network. + edges : + The updated edges of the existing network. + + """ + # Get index for node to be added + new_node_idx = len(edges) + + # Add new node to attributes + attributes[new_node_idx] = { + "mean": mean, + "expected_mean": mean, + "precision": 1.0, + "expected_precision": 1.0, + "volatility_coupling_children": None, + "volatility_coupling_parents": None, + "value_coupling_children": None, + "value_coupling_parents": None, + "tonic_volatility": -4.0, + "tonic_drift": 0.0, + "autoconnection_strength": 1.0, + "observed": 1, + "temp": { + "effective_precision": 0.0, + "value_prediction_error": 0.0, + "volatility_prediction_error": 0.0, + }, + } + + # Add new AdjacencyList with empty values, to Edges tuple + new_adj_list = AdjacencyLists( + node_type=2, + value_parents=None, + volatility_parents=None, + value_children=None, + volatility_children=None, + coupling_fn=(None,), + ) + edges = edges + (new_adj_list,) + + # Use add_edges to integrate the altered attributes and edges + attributes, edges = add_edges( + attributes=attributes, + edges=edges, + kind=coupling_type, + parent_idxs=new_node_idx, + children_idxs=index, + ) + + # Return new attributes and edges + return attributes, edges diff --git a/pyhgf/utils/__init__.py b/pyhgf/utils/__init__.py index 1b77b75d4..a6f31243f 100644 --- a/pyhgf/utils/__init__.py +++ b/pyhgf/utils/__init__.py @@ -4,6 +4,7 @@ from .get_input_idxs import get_input_idxs from .get_update_sequence import get_update_sequence from .list_branches import list_branches +from .remove_node import remove_node from .to_pandas import to_pandas __all__ = [ @@ -14,4 +15,5 @@ "get_update_sequence", "list_branches", "to_pandas", + "remove_node", ] diff --git a/pyhgf/utils/remove_node.py b/pyhgf/utils/remove_node.py new file mode 100644 index 000000000..4b18cac20 --- /dev/null +++ b/pyhgf/utils/remove_node.py @@ -0,0 +1,263 @@ +# Author: Louie Mølgaard Hessellund + +from typing import Dict, List, Tuple, Union + +from pyhgf.typing import AdjacencyLists, Edges + + +def _remove_edges( + attributes: Dict, + edges: Edges, + kind: str = "value", + parent_idxs=Union[int, List[int]], + children_idxs=Union[int, List[int]], +) -> Tuple[Dict, Edges]: + """Remove a value or volatility coupling link between a set of nodes. + + Parameters + ---------- + attributes : + Attributes of the neural network. + edges : + Edges of the neural network. + kind : + The kind of coupling to remove, can be `"value"` or `"volatility"`. + parent_idxs : + The index(es) of the parent node(s) to disconnect. + children_idxs : + The index(es) of the children node(s) to disconnect. + + Returns + ------- + Tuple[Dict, Edges] + Updated attributes and edges with removed connections. + + """ + if kind not in ["value", "volatility"]: + raise ValueError( + f"The kind of coupling should be value or volatility, got {kind}" + ) + + if isinstance(children_idxs, int): + children_idxs = [children_idxs] + if isinstance(parent_idxs, int): + parent_idxs = [parent_idxs] + + edges_as_list = list(edges) + + # Update parent nodes + for parent_idx in parent_idxs: + if parent_idx >= len(edges_as_list): + continue + + node = edges_as_list[parent_idx] + children = node.value_children if kind == "value" else node.volatility_children + coupling_key = f"{kind}_coupling_children" + + if children is not None and children: + # Get indices of children to keep + keep_indices = [ + i for i, child in enumerate(children) if child not in children_idxs + ] + new_children = tuple(children[i] for i in keep_indices) + + # Update coupling strengths if they exist + if ( + coupling_key in attributes[parent_idx] + and attributes[parent_idx][coupling_key] + ): + new_strengths = tuple( + attributes[parent_idx][coupling_key][i] for i in keep_indices + ) + attributes[parent_idx][coupling_key] = ( + new_strengths if new_strengths else None + ) + + # Update node edges + if kind == "value": + edges_as_list[parent_idx] = AdjacencyLists( + node.node_type, + node.value_parents, + node.volatility_parents, + new_children if new_children else None, + node.volatility_children, + node.coupling_fn, + ) + else: + edges_as_list[parent_idx] = AdjacencyLists( + node.node_type, + node.value_parents, + node.volatility_parents, + node.value_children, + new_children if new_children else None, + node.coupling_fn, + ) + + # Update children nodes + for child_idx in children_idxs: + if child_idx >= len(edges_as_list): + continue + + node = edges_as_list[child_idx] + parents = node.value_parents if kind == "value" else node.volatility_parents + coupling_key = f"{kind}_coupling_parents" + + if parents is not None and parents: + # Get indices of parents to keep + keep_indices = [ + i for i, parent in enumerate(parents) if parent not in parent_idxs + ] + new_parents = tuple(parents[i] for i in keep_indices) + + # Update coupling strengths if they exist + if ( + coupling_key in attributes[child_idx] + and attributes[child_idx][coupling_key] + ): + new_strengths = tuple( + attributes[child_idx][coupling_key][i] for i in keep_indices + ) + attributes[child_idx][coupling_key] = ( + new_strengths if new_strengths else None + ) + + # Update node edges + if kind == "value": + edges_as_list[child_idx] = AdjacencyLists( + node.node_type, + new_parents if new_parents else None, + node.volatility_parents, + node.value_children, + node.volatility_children, + node.coupling_fn, + ) + else: + edges_as_list[child_idx] = AdjacencyLists( + node.node_type, + node.value_parents, + new_parents if new_parents else None, + node.value_children, + node.volatility_children, + node.coupling_fn, + ) + + return attributes, tuple(edges_as_list) + + +def remove_node(attributes: Dict, edges: Edges, index: int) -> Tuple[Dict, Edges]: + """Remove a node from the HGF network and adjust remaining indices. + + Parameters + ---------- + attributes : + The attributes of the existing network. + edges : + The edges of the existing network. + index : + The index of the node to remove. + + Returns + ------- + Tuple[Dict, Edges] + Updated attributes and edges with the node removed and indices adjusted. + + """ + if index not in attributes or index >= len(edges): + raise ValueError(f"Node with index {index} does not exist in the network") + + edges_as_list = list(edges) + node = edges_as_list[index] + + # First remove all connections to/from this node + if node.value_parents: + attributes, edges = _remove_edges( + attributes, + edges, + "value", + parent_idxs=node.value_parents, + children_idxs=index, + ) + edges_as_list = list(edges) + + if node.volatility_parents: + attributes, edges = _remove_edges( + attributes, + edges, + "volatility", + parent_idxs=node.volatility_parents, + children_idxs=index, + ) + edges_as_list = list(edges) + + if node.value_children: + attributes, edges = _remove_edges( + attributes, + edges, + "value", + parent_idxs=index, + children_idxs=node.value_children, + ) + edges_as_list = list(edges) + + if node.volatility_children: + attributes, edges = _remove_edges( + attributes, + edges, + "volatility", + parent_idxs=index, + children_idxs=node.volatility_children, + ) + edges_as_list = list(edges) + + # Now remove the node + edges_as_list.pop(index) + attributes.pop(index) + + # Create new edges list with adjusted indices + new_edges = [] + for i, node in enumerate(edges_as_list): + new_value_parents = None + new_volatility_parents = None + new_value_children = None + new_volatility_children = None + + if node.value_parents: + new_value_parents = tuple( + p if p < index else p - 1 for p in node.value_parents + ) + + if node.volatility_parents: + new_volatility_parents = tuple( + p if p < index else p - 1 for p in node.volatility_parents + ) + + if node.value_children: + new_value_children = tuple( + c if c < index else c - 1 for c in node.value_children + ) + + if node.volatility_children: + new_volatility_children = tuple( + c if c < index else c - 1 for c in node.volatility_children + ) + + new_edges.append( + AdjacencyLists( + node.node_type, + new_value_parents, + new_volatility_parents, + new_value_children, + new_volatility_children, + node.coupling_fn, + ) + ) + + # Adjust attributes indices + new_attributes = {-1: attributes[-1]} # Preserve the time_step + for old_idx, attr in attributes.items(): + if old_idx == -1 or old_idx == index: + continue + new_idx = old_idx if old_idx < index else old_idx - 1 + new_attributes[new_idx] = attr + + return new_attributes, tuple(new_edges) From da8635aee99745a2d62d8824d550f670b4ca94d7 Mon Sep 17 00:00:00 2001 From: LegrandNico Date: Fri, 20 Dec 2024 14:22:03 +0100 Subject: [PATCH 2/6] remove add parent from this PR --- pyhgf/updates/structure.py | 82 -------------------------------------- 1 file changed, 82 deletions(-) delete mode 100644 pyhgf/updates/structure.py diff --git a/pyhgf/updates/structure.py b/pyhgf/updates/structure.py deleted file mode 100644 index 73e931dc6..000000000 --- a/pyhgf/updates/structure.py +++ /dev/null @@ -1,82 +0,0 @@ -# Author: Louie Mølgaard Hessellund - -from typing import Dict, Tuple - -from pyhgf.typing import AdjacencyLists, Edges -from pyhgf.utils import add_edges - - -def add_parent( - attributes: Dict, edges: Edges, index: int, coupling_type: str, mean: float -) -> Tuple[Dict, Edges]: - r"""Add a new continuous-state parent node to the attributes and edges of an - existing network. - - Parameters - ---------- - attributes : - The attributes of the existing network. - edges : - The edges of the existing network. - index : - The index of the node you want to connect a new parent node to. - coupling_type : - The type of coupling you want between the existing node and it's new parent. - Can be either "value" or "volatility". - mean : - The mean value of the new parent node. - - Returns - ------- - attributes : - The updated attributes of the existing network. - edges : - The updated edges of the existing network. - - """ - # Get index for node to be added - new_node_idx = len(edges) - - # Add new node to attributes - attributes[new_node_idx] = { - "mean": mean, - "expected_mean": mean, - "precision": 1.0, - "expected_precision": 1.0, - "volatility_coupling_children": None, - "volatility_coupling_parents": None, - "value_coupling_children": None, - "value_coupling_parents": None, - "tonic_volatility": -4.0, - "tonic_drift": 0.0, - "autoconnection_strength": 1.0, - "observed": 1, - "temp": { - "effective_precision": 0.0, - "value_prediction_error": 0.0, - "volatility_prediction_error": 0.0, - }, - } - - # Add new AdjacencyList with empty values, to Edges tuple - new_adj_list = AdjacencyLists( - node_type=2, - value_parents=None, - volatility_parents=None, - value_children=None, - volatility_children=None, - coupling_fn=(None,), - ) - edges = edges + (new_adj_list,) - - # Use add_edges to integrate the altered attributes and edges - attributes, edges = add_edges( - attributes=attributes, - edges=edges, - kind=coupling_type, - parent_idxs=new_node_idx, - children_idxs=index, - ) - - # Return new attributes and edges - return attributes, edges From 7307df9c3f1cfc42754f3ccf79c306ceb08e0a23 Mon Sep 17 00:00:00 2001 From: LegrandNico Date: Fri, 20 Dec 2024 14:47:15 +0100 Subject: [PATCH 3/6] docs and comments --- pyhgf/utils/remove_node.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pyhgf/utils/remove_node.py b/pyhgf/utils/remove_node.py index 4b18cac20..6a8f85186 100644 --- a/pyhgf/utils/remove_node.py +++ b/pyhgf/utils/remove_node.py @@ -145,14 +145,17 @@ def _remove_edges( def remove_node(attributes: Dict, edges: Edges, index: int) -> Tuple[Dict, Edges]: - """Remove a node from the HGF network and adjust remaining indices. + """Remove a given node from the network. + + This function removes a node from the network by deleting its parameters in the + attributes and edges variables, and adjusts the indices of the remaining nodes. Parameters ---------- attributes : - The attributes of the existing network. + The attributes of the network. edges : - The edges of the existing network. + The edges of the network. index : The index of the node to remove. @@ -162,13 +165,14 @@ def remove_node(attributes: Dict, edges: Edges, index: int) -> Tuple[Dict, Edges Updated attributes and edges with the node removed and indices adjusted. """ + # ensure that the node exists in the network if index not in attributes or index >= len(edges): raise ValueError(f"Node with index {index} does not exist in the network") edges_as_list = list(edges) node = edges_as_list[index] - # First remove all connections to/from this node + # First remove all connections to/from this node using the _remove_edges function if node.value_parents: attributes, edges = _remove_edges( attributes, @@ -215,7 +219,7 @@ def remove_node(attributes: Dict, edges: Edges, index: int) -> Tuple[Dict, Edges # Create new edges list with adjusted indices new_edges = [] - for i, node in enumerate(edges_as_list): + for node in edges_as_list: new_value_parents = None new_volatility_parents = None new_value_children = None From fbcec070ad06bb4378ce3c52822c3e72b53feaf5 Mon Sep 17 00:00:00 2001 From: LegrandNico Date: Fri, 20 Dec 2024 14:47:29 +0100 Subject: [PATCH 4/6] add tests --- tests/test_utils.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 225673b91..377dba569 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -6,7 +6,7 @@ from pyhgf import load_data from pyhgf.model import Network from pyhgf.typing import AdjacencyLists -from pyhgf.utils import list_branches +from pyhgf.utils import list_branches, remove_node def test_imports(): @@ -92,3 +92,20 @@ def test_set_update_sequence(): predictions, updates = network4.update_sequence assert len(predictions) == 1 assert len(updates) == 3 + + +def test_remove_node(): + """Test the remove_node function.""" + # a standard binary HGF + network = ( + Network() + .add_nodes(n_nodes=4) + .add_nodes(value_children=2) + .add_nodes(value_children=3) + ) + + attributes, edges, _ = network.get_network() + new_attributes, new_edges = remove_node(attributes, edges, 1) + + assert len(new_attributes) == 6 + assert len(new_edges) == 5 From 3d414a2104e772f56247077b288017766083776a Mon Sep 17 00:00:00 2001 From: LegrandNico Date: Fri, 20 Dec 2024 14:47:37 +0100 Subject: [PATCH 5/6] add in API docs --- docs/source/api.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/api.rst b/docs/source/api.rst index 6f2c70604..a53c2eef1 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -238,6 +238,7 @@ Utilities for manipulating neural networks. to_pandas add_edges get_input_idxs + remove_node Math **** From a78194183b5eeef6fd9b6e57b3c0f4c1d6ec3ffb Mon Sep 17 00:00:00 2001 From: LegrandNico Date: Fri, 20 Dec 2024 14:59:51 +0100 Subject: [PATCH 6/6] remove tutorial notebook --- .../notebooks/Latent_var_notebook.ipynb | 1389 ----------------- 1 file changed, 1389 deletions(-) delete mode 100644 docs/source/notebooks/Latent_var_notebook.ipynb diff --git a/docs/source/notebooks/Latent_var_notebook.ipynb b/docs/source/notebooks/Latent_var_notebook.ipynb deleted file mode 100644 index 934ba3701..000000000 --- a/docs/source/notebooks/Latent_var_notebook.ipynb +++ /dev/null @@ -1,1389 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Latent HGF: BA Project" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setup: Import packages/modules, disable Jax" - ] - }, - { - "cell_type": "code", - "execution_count": 145, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "from IPython.utils import io" - ] - }, - { - "cell_type": "code", - "execution_count": 146, - "metadata": {}, - "outputs": [], - "source": [ - "# if 'google.colab' in sys.modules:\n", - "\n", - "# with io.capture_output() as captured:\n", - "# ! pip install pyhgf watermark" - ] - }, - { - "cell_type": "code", - "execution_count": 147, - "metadata": {}, - "outputs": [], - "source": [ - "import arviz as az\n", - "import jax.numpy as jnp\n", - "import matplotlib.pyplot as plt\n", - "import pymc as pm\n", - "import numpy as np\n", - "import jax\n", - "import pandas as pd\n", - "import networkx as nx\n", - "\n", - "from pyhgf import load_data\n", - "from pyhgf.distribution import HGFDistribution\n", - "from pyhgf.model import HGF, Network\n", - "from pyhgf.response import first_level_gaussian_surprise\n", - "from pyhgf.utils import beliefs_propagation\n", - "from pyhgf.math import gaussian_surprise\n", - "from copy import deepcopy\n", - "# from pyhgf.updates.structure import add_parent\n", - "\n", - "\n", - "plt.rcParams[\"figure.constrained_layout.use\"] = True" - ] - }, - { - "cell_type": "code", - "execution_count": 148, - "metadata": {}, - "outputs": [], - "source": [ - "# Disable JIT compilation globally\n", - "jax.config.update(\"jax_disable_jit\", False) # True - If I want the compiler disabled." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define Functions, simulate data" - ] - }, - { - "cell_type": "code", - "execution_count": 149, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Dict, Tuple\n", - "\n", - "from pyhgf.typing import AdjacencyLists, Edges\n", - "from pyhgf.utils import add_edges\n", - "\n", - "\n", - "def add_parent(\n", - " attributes: Dict, edges: Edges, index: int, coupling_type: str, mean: float\n", - ") -> Tuple[Dict, Edges]:\n", - " r\"\"\"Add a new continuous-state parent node to the attributes and edges of an\n", - " existing network.\n", - "\n", - " Parameters\n", - " ----------\n", - " attributes :\n", - " The attributes of the existing network.\n", - " edges :\n", - " The edges of the existing network.\n", - " index :\n", - " The index of the node you want to connect a new parent node to.\n", - " coupling_type :\n", - " The type of coupling you want between the existing node and it's new parent.\n", - " Can be either \"value\" or \"volatility\".\n", - " mean :\n", - " The mean value of the new parent node.\n", - "\n", - " Returns\n", - " -------\n", - " attributes :\n", - " The updated attributes of the existing network.\n", - " edges :\n", - " The updated edges of the existing network.\n", - "\n", - " \"\"\"\n", - " # Get index for node to be added\n", - " new_node_idx = len(edges)\n", - "\n", - " # Add new node to attributes\n", - " attributes[new_node_idx] = {\n", - " \"mean\": mean,\n", - " \"expected_mean\": mean,\n", - " \"precision\": 1.0,\n", - " \"expected_precision\": 1.0,\n", - " \"volatility_coupling_children\": None,\n", - " \"volatility_coupling_parents\": None,\n", - " \"value_coupling_children\": None,\n", - " \"value_coupling_parents\": None,\n", - " \"tonic_volatility\": -4.0,\n", - " \"tonic_drift\": 0.0,\n", - " \"autoconnection_strength\": 1.0,\n", - " \"observed\": 1,\n", - " \"temp\": {\n", - " \"effective_precision\": 0.0,\n", - " \"value_prediction_error\": 0.0,\n", - " \"volatility_prediction_error\": 0.0,\n", - " },\n", - " }\n", - "\n", - " # Add new AdjacencyList with empty values, to Edges tuple\n", - " new_adj_list = AdjacencyLists(\n", - " node_type=2,\n", - " value_parents=None,\n", - " volatility_parents=None,\n", - " value_children=None,\n", - " volatility_children=None,\n", - " coupling_fn=(None,),\n", - " )\n", - " edges = edges + (new_adj_list,)\n", - "\n", - " # Use add_edges to integrate the altered attributes and edges\n", - " attributes, edges = add_edges(\n", - " attributes=attributes,\n", - " edges=edges,\n", - " kind=coupling_type,\n", - " parent_idxs=new_node_idx,\n", - " children_idxs=index,\n", - " )\n", - "\n", - " # Return new attributes and edges\n", - " return attributes, edges\n" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Dict, Tuple, Union, List\n", - "from pyhgf.typing import AdjacencyLists, Edges\n", - "\n", - "def _remove_edges(\n", - " attributes: Dict,\n", - " edges: Edges,\n", - " kind: str = \"value\",\n", - " parent_idxs: Union[int, List[int]] = None,\n", - " children_idxs: Union[int, List[int]] = None,\n", - ") -> Tuple[Dict, Edges]:\n", - " \"\"\"Remove a value or volatility coupling link between a set of nodes.\n", - "\n", - " Parameters\n", - " ----------\n", - " attributes :\n", - " Attributes of the neural network.\n", - " edges :\n", - " Edges of the neural network.\n", - " kind :\n", - " The kind of coupling to remove, can be `\"value\"` or `\"volatility\"`.\n", - " parent_idxs :\n", - " The index(es) of the parent node(s) to disconnect.\n", - " children_idxs :\n", - " The index(es) of the children node(s) to disconnect.\n", - "\n", - " Returns\n", - " -------\n", - " Tuple[Dict, Edges]\n", - " Updated attributes and edges with removed connections.\n", - " \"\"\"\n", - " if kind not in [\"value\", \"volatility\"]:\n", - " raise ValueError(\n", - " f\"The kind of coupling should be value or volatility, got {kind}\"\n", - " )\n", - " \n", - " if isinstance(children_idxs, int):\n", - " children_idxs = [children_idxs]\n", - " if isinstance(parent_idxs, int):\n", - " parent_idxs = [parent_idxs]\n", - "\n", - " edges_as_list = list(edges)\n", - " \n", - " # Update parent nodes\n", - " for parent_idx in parent_idxs:\n", - " if parent_idx >= len(edges_as_list):\n", - " continue\n", - " \n", - " node = edges_as_list[parent_idx]\n", - " children = node.value_children if kind == \"value\" else node.volatility_children\n", - " coupling_key = f\"{kind}_coupling_children\"\n", - " \n", - " if children is not None and children:\n", - " # Get indices of children to keep\n", - " keep_indices = [i for i, child in enumerate(children) if child not in children_idxs]\n", - " new_children = tuple(children[i] for i in keep_indices)\n", - " \n", - " # Update coupling strengths if they exist\n", - " if coupling_key in attributes[parent_idx] and attributes[parent_idx][coupling_key]:\n", - " new_strengths = tuple(attributes[parent_idx][coupling_key][i] for i in keep_indices)\n", - " attributes[parent_idx][coupling_key] = new_strengths if new_strengths else None\n", - " \n", - " # Update node edges\n", - " if kind == \"value\":\n", - " edges_as_list[parent_idx] = AdjacencyLists(\n", - " node.node_type,\n", - " node.value_parents,\n", - " node.volatility_parents,\n", - " new_children if new_children else None,\n", - " node.volatility_children,\n", - " node.coupling_fn\n", - " )\n", - " else:\n", - " edges_as_list[parent_idx] = AdjacencyLists(\n", - " node.node_type,\n", - " node.value_parents,\n", - " node.volatility_parents,\n", - " node.value_children,\n", - " new_children if new_children else None,\n", - " node.coupling_fn\n", - " )\n", - "\n", - " # Update children nodes\n", - " for child_idx in children_idxs:\n", - " if child_idx >= len(edges_as_list):\n", - " continue\n", - " \n", - " node = edges_as_list[child_idx]\n", - " parents = node.value_parents if kind == \"value\" else node.volatility_parents\n", - " coupling_key = f\"{kind}_coupling_parents\"\n", - " \n", - " if parents is not None and parents:\n", - " # Get indices of parents to keep\n", - " keep_indices = [i for i, parent in enumerate(parents) if parent not in parent_idxs]\n", - " new_parents = tuple(parents[i] for i in keep_indices)\n", - " \n", - " # Update coupling strengths if they exist\n", - " if coupling_key in attributes[child_idx] and attributes[child_idx][coupling_key]:\n", - " new_strengths = tuple(attributes[child_idx][coupling_key][i] for i in keep_indices)\n", - " attributes[child_idx][coupling_key] = new_strengths if new_strengths else None\n", - " \n", - " # Update node edges\n", - " if kind == \"value\":\n", - " edges_as_list[child_idx] = AdjacencyLists(\n", - " node.node_type,\n", - " new_parents if new_parents else None,\n", - " node.volatility_parents,\n", - " node.value_children,\n", - " node.volatility_children,\n", - " node.coupling_fn\n", - " )\n", - " else:\n", - " edges_as_list[child_idx] = AdjacencyLists(\n", - " node.node_type,\n", - " node.value_parents,\n", - " new_parents if new_parents else None,\n", - " node.value_children,\n", - " node.volatility_children,\n", - " node.coupling_fn\n", - " )\n", - "\n", - " return attributes, tuple(edges_as_list)\n", - "\n", - "def remove_node(\n", - " attributes: Dict,\n", - " edges: Edges,\n", - " index: int\n", - ") -> Tuple[Dict, Edges]:\n", - " \"\"\"Remove a node from the HGF network and adjust remaining indices.\n", - " \n", - " Parameters\n", - " ----------\n", - " attributes :\n", - " The attributes of the existing network.\n", - " edges :\n", - " The edges of the existing network.\n", - " index :\n", - " The index of the node to remove.\n", - " \n", - " Returns\n", - " -------\n", - " Tuple[Dict, Edges]\n", - " Updated attributes and edges with the node removed and indices adjusted.\n", - " \"\"\"\n", - " if index not in attributes or index >= len(edges):\n", - " raise ValueError(f\"Node with index {index} does not exist in the network\")\n", - " \n", - " edges_as_list = list(edges)\n", - " node = edges_as_list[index]\n", - "\n", - " # First remove all connections to/from this node\n", - " if node.value_parents:\n", - " attributes, edges = _remove_edges(\n", - " attributes, \n", - " edges,\n", - " \"value\",\n", - " parent_idxs=node.value_parents,\n", - " children_idxs=index\n", - " )\n", - " edges_as_list = list(edges)\n", - " \n", - " if node.volatility_parents:\n", - " attributes, edges = _remove_edges(\n", - " attributes, \n", - " edges,\n", - " \"volatility\",\n", - " parent_idxs=node.volatility_parents,\n", - " children_idxs=index\n", - " )\n", - " edges_as_list = list(edges)\n", - " \n", - " if node.value_children:\n", - " attributes, edges = _remove_edges(\n", - " attributes, \n", - " edges,\n", - " \"value\",\n", - " parent_idxs=index,\n", - " children_idxs=node.value_children\n", - " )\n", - " edges_as_list = list(edges)\n", - " \n", - " if node.volatility_children:\n", - " attributes, edges = _remove_edges(\n", - " attributes, \n", - " edges,\n", - " \"volatility\",\n", - " parent_idxs=index,\n", - " children_idxs=node.volatility_children\n", - " )\n", - " edges_as_list = list(edges)\n", - "\n", - " # Now remove the node\n", - " edges_as_list.pop(index)\n", - " attributes.pop(index)\n", - " \n", - " # Create new edges list with adjusted indices\n", - " new_edges = []\n", - " for i, node in enumerate(edges_as_list):\n", - " new_value_parents = None\n", - " new_volatility_parents = None\n", - " new_value_children = None\n", - " new_volatility_children = None\n", - " \n", - " if node.value_parents:\n", - " new_value_parents = tuple(p if p < index else p - 1 for p in node.value_parents)\n", - " \n", - " if node.volatility_parents:\n", - " new_volatility_parents = tuple(p if p < index else p - 1 for p in node.volatility_parents)\n", - " \n", - " if node.value_children:\n", - " new_value_children = tuple(c if c < index else c - 1 for c in node.value_children)\n", - " \n", - " if node.volatility_children:\n", - " new_volatility_children = tuple(c if c < index else c - 1 for c in node.volatility_children)\n", - " \n", - " new_edges.append(AdjacencyLists(\n", - " node.node_type,\n", - " new_value_parents,\n", - " new_volatility_parents,\n", - " new_value_children,\n", - " new_volatility_children,\n", - " node.coupling_fn\n", - " ))\n", - " \n", - " # Adjust attributes indices\n", - " new_attributes = {-1: attributes[-1]} # Preserve the time_step\n", - " for old_idx, attr in attributes.items():\n", - " if old_idx == -1 or old_idx == index:\n", - " continue\n", - " new_idx = old_idx if old_idx < index else old_idx - 1\n", - " new_attributes[new_idx] = attr\n", - "\n", - " return new_attributes, tuple(new_edges)" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "metadata": {}, - "outputs": [], - "source": [ - "# from pyhgf.updates.structure import add_parent\n", - "\n", - "def update_structure(\n", - " attributes: Dict, edges: Edges, index: int\n", - ") -> Tuple[Dict, Edges]:\n", - " #Calculate gaussian-surprise\n", - " if index >= 0:\n", - " node_ex_m = (attributes[index]['expected_mean'])\n", - " node_ex_p = (attributes[index]['expected_precision'])\n", - " node_m = (attributes[index]['mean'])\n", - " surprise = gaussian_surprise(x=node_m, \n", - " expected_mean=node_ex_m, \n", - " expected_precision=node_ex_p)\n", - " else:\n", - " return attributes, edges\n", - "\n", - " #Define threshold, and compare against calculated surprise \n", - " # (may need internal storage for accumulated storage)\n", - " if surprise > 400:\n", - " threshold_reached = True\n", - " else:\n", - " threshold_reached = False\n", - " \n", - " #Return attributes and edges\n", - " if threshold_reached is False:\n", - " return attributes, edges\n", - " elif threshold_reached is True:\n", - " print('new node added')\n", - " return add_parent(attributes = attributes, \n", - " edges = edges, \n", - " index = index, \n", - " coupling_type = 'volatility', #Add condition to vary\n", - " mean = 1.0\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 152, - "metadata": {}, - "outputs": [], - "source": [ - "import networkx as nx\n", - "import matplotlib.pyplot as plt\n", - "import pydot\n", - "\n", - "def plot_network_x(network: \"Network\", figsize=(4, 4), node_size=500):\n", - " \"\"\"Visualization of node network using NetworkX and pydot layout.\n", - " \n", - " Parameters\n", - " ----------\n", - " network : Network\n", - " An instance of main Network class.\n", - " figsize : tuple, optional\n", - " Figure size in inches (width, height), by default (10, 8)\n", - " node_size : int, optional\n", - " Size of the nodes in the visualization, by default 1000\n", - " \n", - " Returns\n", - " -------\n", - " matplotlib.figure.Figure\n", - " The figure containing the network visualization\n", - " \"\"\"\n", - " # Create a directed graph\n", - " G = nx.DiGraph()\n", - " \n", - " # Add nodes\n", - " for idx in range(len(network.edges)):\n", - " # Check if it's an input node\n", - " is_input = idx in network.input_idxs\n", - " # Check if it's a continuous state node\n", - " if network.edges[idx].node_type == 2:\n", - " G.add_node(f\"x_{idx}\", \n", - " is_input=is_input,\n", - " label=str(idx))\n", - " \n", - " # Add value parent edges\n", - " for i, edge in enumerate(network.edges):\n", - " value_parents = edge.value_parents\n", - " if value_parents is not None:\n", - " for value_parents_idx in value_parents:\n", - " # Get the coupling function\n", - " child_idx = network.edges[value_parents_idx].value_children.index(i)\n", - " coupling_fn = network.edges[value_parents_idx].coupling_fn[child_idx]\n", - " \n", - " # Add edge with appropriate style\n", - " G.add_edge(f\"x_{value_parents_idx}\", \n", - " f\"x_{i}\",\n", - " edge_type='value',\n", - " coupling=coupling_fn is not None)\n", - " \n", - " # Add volatility parent edges\n", - " for i, edge in enumerate(network.edges):\n", - " volatility_parents = edge.volatility_parents\n", - " if volatility_parents is not None:\n", - " for volatility_parents_idx in volatility_parents:\n", - " G.add_edge(f\"x_{volatility_parents_idx}\", \n", - " f\"x_{i}\",\n", - " edge_type='volatility')\n", - " \n", - " # Create the plot\n", - " plt.figure(figsize=figsize)\n", - " \n", - " # Use pydot layout for hierarchical arrangement\n", - " pos = nx.nx_pydot.pydot_layout(G, prog='dot', root=None)\n", - " \n", - " # Scale the positions\n", - " scale = 1 # Adjust this value to change the spread of nodes\n", - " pos = {node: (x * scale, y * scale) for node, (x, y) in pos.items()}\n", - " \n", - " # Draw nodes\n", - " node_colors = ['lightblue' if G.nodes[node]['is_input'] else 'white' \n", - " for node in G.nodes()]\n", - " nx.draw_networkx_nodes(G, pos, \n", - " node_color=node_colors,\n", - " node_size=node_size,\n", - " edgecolors='black')\n", - " \n", - " # Draw node labels\n", - " nx.draw_networkx_labels(G, pos, \n", - " labels={node: G.nodes[node]['label'] for node in G.nodes()})\n", - " \n", - " # Draw value parent edges\n", - " value_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", - " if d['edge_type'] == 'value']\n", - " coupling_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", - " if d['edge_type'] == 'value' and d['coupling']]\n", - " normal_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", - " if d['edge_type'] == 'value' and not d['coupling']]\n", - " \n", - " # Draw normal value edges\n", - " nx.draw_networkx_edges(G, pos, \n", - " edgelist=normal_edges,\n", - " edge_color='black')\n", - " \n", - " # Draw coupling edges with a different style\n", - " nx.draw_networkx_edges(G, pos, \n", - " edgelist=coupling_edges,\n", - " edge_color='black',\n", - " style='dashed')\n", - " \n", - " # Draw volatility edges\n", - " volatility_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", - " if d['edge_type'] == 'volatility']\n", - " nx.draw_networkx_edges(G, pos, \n", - " edgelist=volatility_edges,\n", - " edge_color='gray',\n", - " style='dashed',\n", - " arrowstyle='->',\n", - " arrowsize=20)\n", - " \n", - " plt.axis('off')\n", - " return plt.gcf()" - ] - }, - { - "cell_type": "code", - "execution_count": 153, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"\\nfig = plot_hgf_evolution(test_hgf, snapshot_list)\\nplt.show()\\n# To save the figure:\\n# fig.savefig('hgf_evolution.png', dpi=300, bbox_inches='tight')\\n\"" - ] - }, - "execution_count": 153, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import networkx as nx\n", - "import copy\n", - "import pydot\n", - "\n", - "def plot_hgf_evolution(hgf_model, snapshot_list, n_cols=3, figsize=(15, 3)):\n", - " \"\"\"\n", - " Creates a multi-panel figure showing the evolution of an HGF model over time.\n", - " \n", - " Parameters\n", - " ----------\n", - " hgf_model : HGF model instance\n", - " The base HGF model to use for visualization\n", - " snapshot_list : list of tuples\n", - " List of (attributes, edges) tuples representing model states\n", - " n_cols : int, optional\n", - " Number of columns in the subplot grid, by default 3\n", - " figsize : tuple, optional\n", - " Size of the overall figure in inches, by default (15, 3)\n", - " \n", - " Returns\n", - " -------\n", - " matplotlib.figure.Figure\n", - " The composite figure containing all snapshots\n", - " \"\"\"\n", - " n_snapshots = len(snapshot_list)\n", - " n_rows = (n_snapshots + n_cols - 1) // n_cols # Ceiling division\n", - " \n", - " # Create figure with subplots\n", - " fig, axes = plt.subplots(n_rows, n_cols, figsize=figsize)\n", - " if n_rows == 1:\n", - " axes = axes.reshape(1, -1)\n", - " elif n_cols == 1:\n", - " axes = axes.reshape(-1, 1)\n", - " \n", - " # Create a temporary copy of the model for visualization\n", - " temp_model = copy.deepcopy(hgf_model)\n", - " \n", - " # Function to plot a single network (adapted from previous plot_network function)\n", - " def plot_single_network(model, ax):\n", - " G = nx.DiGraph()\n", - " \n", - " # Add nodes\n", - " for idx in range(len(model.edges)):\n", - " is_input = idx in model.input_idxs\n", - " if model.edges[idx].node_type == 2:\n", - " G.add_node(f\"x_{idx}\", \n", - " is_input=is_input,\n", - " label=str(idx))\n", - " \n", - " # Add value parent edges\n", - " for i, edge in enumerate(model.edges):\n", - " value_parents = edge.value_parents\n", - " if value_parents is not None:\n", - " for value_parents_idx in value_parents:\n", - " child_idx = model.edges[value_parents_idx].value_children.index(i)\n", - " coupling_fn = model.edges[value_parents_idx].coupling_fn[child_idx]\n", - " G.add_edge(f\"x_{value_parents_idx}\", \n", - " f\"x_{i}\",\n", - " edge_type='value',\n", - " coupling=coupling_fn is not None)\n", - " \n", - " # Add volatility parent edges\n", - " for i, edge in enumerate(model.edges):\n", - " volatility_parents = edge.volatility_parents\n", - " if volatility_parents is not None:\n", - " for volatility_parents_idx in volatility_parents:\n", - " G.add_edge(f\"x_{volatility_parents_idx}\", \n", - " f\"x_{i}\",\n", - " edge_type='volatility')\n", - " \n", - " # Use pydot layout\n", - " pos = nx.nx_pydot.pydot_layout(G, prog='dot', root=None)\n", - " scale = 50 # Reduced scale for subplots\n", - " pos = {node: (x * scale, y * scale) for node, (x, y) in pos.items()}\n", - " \n", - " # Draw nodes\n", - " node_colors = ['lightblue' if G.nodes[node]['is_input'] else 'white' \n", - " for node in G.nodes()]\n", - " nx.draw_networkx_nodes(G, pos, \n", - " node_color=node_colors,\n", - " node_size=500, # Reduced size for subplots\n", - " edgecolors='black',\n", - " ax=ax)\n", - " \n", - " # Draw node labels\n", - " nx.draw_networkx_labels(G, pos, \n", - " labels={node: G.nodes[node]['label'] for node in G.nodes()},\n", - " ax=ax)\n", - " \n", - " # Draw edges\n", - " normal_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", - " if d['edge_type'] == 'value' and not d['coupling']]\n", - " coupling_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", - " if d['edge_type'] == 'value' and d['coupling']]\n", - " volatility_edges = [(u, v) for (u, v, d) in G.edges(data=True) \n", - " if d['edge_type'] == 'volatility']\n", - " \n", - " nx.draw_networkx_edges(G, pos, edgelist=normal_edges, edge_color='black', ax=ax)\n", - " nx.draw_networkx_edges(G, pos, edgelist=coupling_edges, edge_color='black', \n", - " style='dashed', ax=ax)\n", - " nx.draw_networkx_edges(G, pos, edgelist=volatility_edges, edge_color='gray',\n", - " style='dashed', arrowstyle='->', arrowsize=10, ax=ax)\n", - " \n", - " ax.axis('off')\n", - " return G\n", - " \n", - " # Plot each snapshot\n", - " for idx, (attributes, edges) in enumerate(snapshot_list):\n", - " row = idx // n_cols\n", - " col = idx % n_cols\n", - " \n", - " # Update temporary model with snapshot data\n", - " temp_model.attributes = attributes\n", - " temp_model.edges = edges\n", - " \n", - " # Plot the network\n", - " G = plot_single_network(temp_model, axes[row, col])\n", - " axes[row, col].set_title(f'Snapshot {idx + 1}')\n", - " \n", - " # Remove empty subplots if any\n", - " for idx in range(n_snapshots, n_rows * n_cols):\n", - " row = idx // n_cols\n", - " col = idx % n_cols\n", - " fig.delaxes(axes[row, col])\n", - " \n", - " plt.tight_layout()\n", - " return fig\n", - "\n", - "# Example usage:\n", - "\"\"\"\n", - "fig = plot_hgf_evolution(test_hgf, snapshot_list)\n", - "plt.show()\n", - "# To save the figure:\n", - "# fig.savefig('hgf_evolution.png', dpi=300, bbox_inches='tight')\n", - "\"\"\"" - ] - }, - { - "cell_type": "code", - "execution_count": 154, - "metadata": {}, - "outputs": [], - "source": [ - "np.random.seed(123)\n", - "dist_mean, dist_std = 5, 1\n", - "input_data = np.random.normal(loc=dist_mean, scale=dist_std, size=10000)\n", - "\n", - "# aarhus_weather_df = pd.read_csv(\n", - "# \"https://raw.githubusercontent.com/ilabcode/hgf-data/main/datasets/weather.csv\"\n", - "# )\n", - "# aarhus_weather_df.head()\n", - "# input_data = aarhus_weather_df[\"t2m\"][: 24 * 30].to_numpy()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create HGF: Define starting HGF, fit to simulated data" - ] - }, - { - "cell_type": "code", - "execution_count": 155, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "hgf-nodes\n", - "\n", - "\n", - "\n", - "x_0\n", - "\n", - "0\n", - "\n", - "\n", - "\n", - "x_1\n", - "\n", - "1\n", - "\n", - "\n", - "\n", - "x_1->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_2\n", - "\n", - "2\n", - "\n", - "\n", - "\n", - "x_2->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_3\n", - "\n", - "3\n", - "\n", - "\n", - "\n", - "x_3->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_4\n", - "\n", - "4\n", - "\n", - "\n", - "\n", - "x_4->x_1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_5\n", - "\n", - "5\n", - "\n", - "\n", - "\n", - "x_5->x_2\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_6\n", - "\n", - "6\n", - "\n", - "\n", - "\n", - "x_6->x_3\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 155, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "timeserie = load_data(\"continuous\")\n", - "\n", - "test_hgf = (\n", - " Network()\n", - " .add_nodes(precision=1e4)\n", - " .add_nodes(precision=1e4, mean=timeserie[0], tonic_volatility=-13.0, \n", - " value_children=0)\n", - " .add_nodes(precision=1e1, tonic_volatility=-14.0, volatility_children=0)\n", - " .add_nodes(precision=1e4, mean=timeserie[0], tonic_volatility=-13.0, \n", - " value_children=0)\n", - " .add_nodes(precision=1e1, tonic_volatility=-2.0, volatility_children=1)\n", - " .add_nodes(precision=1e4, mean=timeserie[0], tonic_volatility=-13.0, \n", - " value_children=2)\n", - " .add_nodes(precision=1e1, tonic_volatility=-2.0, volatility_children=3)\n", - ").create_belief_propagation_fn()\n", - "\n", - "attributes, edges, update_sequence = (\n", - " test_hgf.get_network()\n", - ")\n", - "\n", - "test_hgf.plot_network()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run functions, plot trajectories and changes" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "new node added\n", - "new node added\n" - ] - } - ], - "source": [ - "snapshot_interval = int((len(input_data))/3)\n", - "snapshot_counter = snapshot_interval # Ensure initial hgf is in snapshot_list\n", - "snapshot_list = []\n", - "\n", - "# for each observation\n", - "for value in input_data:\n", - "\n", - " # interleave observations and masks\n", - " data = (value, 1.0, 1.0)\n", - "\n", - " # update the probabilistic network\n", - " attributes, _ = beliefs_propagation(\n", - " attributes=attributes,\n", - " inputs=data,\n", - " update_sequence=update_sequence,\n", - " edges=edges,\n", - " input_idxs=test_hgf.input_idxs\n", - " )\n", - "\n", - " #Calculate gaussian surprise\n", - " index_vec = []\n", - " nr = 0\n", - " for node in edges:\n", - " index_vec.append(nr)\n", - " nr = nr+1\n", - "\n", - " #Update Attributes and Edges\n", - " for idx in index_vec:\n", - " attributes, edges = update_structure(attributes = attributes, edges = edges, index = idx)\n", - "\n", - " #If snapshot-counter reached interval, store Attributes, Edges\n", - " if (snapshot_counter == snapshot_interval):\n", - " snap_tuple = (attributes, edges)\n", - " snapshot_list.append(snap_tuple)\n", - " snapshot_counter = 0\n", - " \n", - " snapshot_counter = snapshot_counter+1" - ] - }, - { - "cell_type": "code", - "execution_count": 157, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "hgf-nodes\n", - "\n", - "\n", - "\n", - "x_0\n", - "\n", - "0\n", - "\n", - "\n", - "\n", - "x_1\n", - "\n", - "1\n", - "\n", - "\n", - "\n", - "x_1->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_2\n", - "\n", - "2\n", - "\n", - "\n", - "\n", - "x_2->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_3\n", - "\n", - "3\n", - "\n", - "\n", - "\n", - "x_3->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_4\n", - "\n", - "4\n", - "\n", - "\n", - "\n", - "x_4->x_1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_5\n", - "\n", - "5\n", - "\n", - "\n", - "\n", - "x_5->x_2\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_6\n", - "\n", - "6\n", - "\n", - "\n", - "\n", - "x_6->x_3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_7\n", - "\n", - "7\n", - "\n", - "\n", - "\n", - "x_7->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_8\n", - "\n", - "8\n", - "\n", - "\n", - "\n", - "x_8->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 157, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test_hgf.attributes = attributes\n", - "test_hgf.edges = edges\n", - "\n", - "test_hgf.plot_network()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot attempts" - ] - }, - { - "cell_type": "code", - "execution_count": 158, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 158, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = plot_network_x(test_hgf)\n", - "plt.show" - ] - }, - { - "cell_type": "code", - "execution_count": 159, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\hesse\\AppData\\Local\\Temp\\ipykernel_17444\\1221509650.py:127: UserWarning: The figure layout has changed to tight\n", - " plt.tight_layout()\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = plot_hgf_evolution(test_hgf, snapshot_list, n_cols=4, figsize=(15, 3))\n", - "\n", - "# Display the plot\n", - "plt.show()\n", - "\n", - "# Optionally save the figure\n", - "# fig.savefig('hgf_evolution.png', dpi=300, bbox_inches='tight')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remove node test" - ] - }, - { - "cell_type": "code", - "execution_count": 160, - "metadata": {}, - "outputs": [], - "source": [ - "new_attributes, new_edges = remove_node(attributes=attributes, edges=edges, index=4)" - ] - }, - { - "cell_type": "code", - "execution_count": 161, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(AdjacencyLists(node_type=2, value_parents=(1, 3), volatility_parents=(2, 6, 7), value_children=None, volatility_children=None, coupling_fn=()),\n", - " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=(0,), volatility_children=None, coupling_fn=(None,)),\n", - " AdjacencyLists(node_type=2, value_parents=(4,), volatility_parents=None, value_children=None, volatility_children=(0,), coupling_fn=()),\n", - " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=(5,), value_children=(0,), volatility_children=None, coupling_fn=(None,)),\n", - " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=(2,), volatility_children=None, coupling_fn=(None,)),\n", - " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=None, volatility_children=(3,), coupling_fn=()),\n", - " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=None, volatility_children=(0,), coupling_fn=(None,)),\n", - " AdjacencyLists(node_type=2, value_parents=None, volatility_parents=None, value_children=None, volatility_children=(0,), coupling_fn=(None,)))" - ] - }, - "execution_count": 161, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_edges" - ] - }, - { - "cell_type": "code", - "execution_count": 162, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "hgf-nodes\n", - "\n", - "\n", - "\n", - "x_0\n", - "\n", - "0\n", - "\n", - "\n", - "\n", - "x_1\n", - "\n", - "1\n", - "\n", - "\n", - "\n", - "x_1->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_2\n", - "\n", - "2\n", - "\n", - "\n", - "\n", - "x_2->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_3\n", - "\n", - "3\n", - "\n", - "\n", - "\n", - "x_3->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_4\n", - "\n", - "4\n", - "\n", - "\n", - "\n", - "x_4->x_2\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_5\n", - "\n", - "5\n", - "\n", - "\n", - "\n", - "x_5->x_3\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_6\n", - "\n", - "6\n", - "\n", - "\n", - "\n", - "x_6->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "x_7\n", - "\n", - "7\n", - "\n", - "\n", - "\n", - "x_7->x_0\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 162, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test_hgf.attributes = new_attributes\n", - "test_hgf.edges = new_edges\n", - "\n", - "test_hgf.plot_network()" - ] - }, - { - "cell_type": "code", - "execution_count": 163, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 163, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = plot_network_x(test_hgf)\n", - "plt.show" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pymc_env", - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}