{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">> EVOLUTION OF NEWICK MORPHO-TREES.  \n",
    ">>>>\n",
    ">>> José Rodríguez\n",
    ">>>>\n",
    ">>> jose@ejristos.com\n",
    ">>>>\n",
    ">>> 10 Octuber 2026.\n",
    ">>>>\n",
    ">>> Bogotá, Colombia.\n",
    "\n",
    "**Abstract**\n",
    "\n",
    "The Lighting Network Model of Morphogenesis says that the biological form is attained by modulation of the process of reproduction by means of messenger molecules. Its functioning is modelled by a tree that is similar to a lighting network, whose lamps illuminate the immediate surrounding. We already have seen that the natural encoding of the morphological trees as tree classes is extremely CPU-expensive. So, the purpose for this contribution is to explore the encoding of trees as strings, according to the Newick Notation.\n",
    "\n",
    "# INTRODUCTION\n",
    "\n",
    "Two simple facts of Nature might serve as test for our modelling of morphogenesis. \n",
    "\n",
    "1. Morphogenesis is plainly compatible with Evolution. In fact, all individuals in a human family are different, as predicted by mutation, and the characteristics of the clan are distributed diversely among their members. For instance, Patrick has the nose of the paternal grandfather and Mary the lips of the grandmother of the maternal line. Recombination and gene regulation by epigenetic markers are the candidates to explain this. In general, we see no monsters.\n",
    "2. Domestic flies are the same all over the Earth. \n",
    "\n",
    "The two conditions conform a **squared circle puzzle** that can be expressed by a simple question: How can we explain the tremendous evolutionary stability of the form of flies all over the world in the face of living Evolution?\n",
    "\n",
    "**Contest.** Propose a model of morphogenesis that solves the squared-circle puzzle: it must be evolvable, i.e., plainly compatible with Evolution, but also must explain the evolutionary stability of the form of flies that are the same all over the world.\n",
    ">\n",
    "> *Answer.* We have inaugurated this concourse in [the previous contribution](https://drive.google.com/file/d/1RxHqtlZGUFg7FAWQ0HLso5ZFZRi2O7nm/view?usp=sharing), in which we proposed the Lighting Model of Morphogenesis. In this model, biological form naturally results from reproduction, which is described by a tree. Specialized cells, conforming a subtree, expel a messenger that modulates the differentiation process wherever its concentration surpasses a given threshold.  So, a node or cell of that subtree is similar to a lamp that satisfactorily illuminates its surroundings up to a certain radius.  In the same way and to fix ideas, to generate a region with specific form, we need a subtree whose nodes irradiate messengers. If the concentration of the messenger is below a certain threshold, cells stop their division and/or differentiation.\n",
    ">\n",
    "> Does the lighting model of morphogenesis has any hope of solving the squared-circle puzzle?\n",
    ">\n",
    "> Yes. Evolution can continuously work over the leaves, the terminal nodes of branches, but cannot touch inner nodes, near the root of zygote, because everything would be damaged. This claiming is equivalent to demanding pleiotropy in the tree: changes in inner nodes that have many effects are lethal, but those in the leaves that have no side effects are welcome.\n",
    "\n",
    "A tree is a special graph, composed of nodes and links. So, it is natural to encode our trees using the Node class. Although we are looking for new options, we cannot lose contact with the Node class because maybe a mix approach could do it better. Besides, the concepts behind our morpho-trees are independent of its encoding. Or, fundamentals concepts appear everywhere, inclusively in the graphic representations.\n",
    "\n",
    "**Example.** The following program uses the Node class to depict a morpho-tree as understood in the lighting network model. The Node class is here represented by the `SpatialTreeNode_Diffusion` class. \n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "executionInfo": {
     "elapsed": 439,
     "status": "ok",
     "timestamp": 1788795761296,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "3kFfZOHFu1YZ",
    "outputId": "a7bc3ead-a49e-4efe-aa9e-6b23bf09799f"
   },
   "source": [
    "# Program lighting_network.py\n",
    "# The program generates a lighting network based on a tree\n",
    "# and with lamps of different power.\n",
    "# This is a simulation of the generation of form in morphogenesis.\n",
    "# The lamps represent the nodes of the tree that can expel chemical messengers.\n",
    "# The circles represent the regions in which\n",
    "# the density of the messengers is high enough to affect reached cells.\n",
    "# An affected cell can have a license to divide,\n",
    "# or, if a previous cellular matrix exists,\n",
    "# it can acquire specific characteristics proper of cell differentiation.\n",
    "# Trees are encoding along the Node class in the direction of graphs, nodes and links. \n",
    "# By Gemini.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "\n",
    "# Global set to store all occupied coordinates for unique cell placement\n",
    "# (No longer directly used for overlap check within tree generation, but might be useful for plotting limits)\n",
    "occupied_coords_diffusion = set()\n",
    "\n",
    "class SpatialTreeNode_Diffusion:\n",
    "    def __init__(self, value, x, y, radius, occupied_squares_set, diffusion_nodes_info):\n",
    "        self.value = value\n",
    "        self.x = x\n",
    "        self.y = y\n",
    "        self.radius = radius\n",
    "        self.children = []\n",
    "\n",
    "        self.occupied_squares_set = occupied_squares_set\n",
    "        self.diffusion_nodes_info = diffusion_nodes_info # List of (x, y, radius) for all nodes in the tree\n",
    "\n",
    "        self.occupied_squares_set.add((x, y)) # Add current node's (x,y) square to the set\n",
    "        self.diffusion_nodes_info.append((x, y, radius)) # Add current node's (x,y,radius) to the list\n",
    "\n",
    "    def add_child(self, child_node):\n",
    "        if not isinstance(child_node, SpatialTreeNode_Diffusion):\n",
    "            raise TypeError(\"Child must be an instance of SpatialTreeNode_Diffusion\")\n",
    "        self.children.append(child_node)\n",
    "\n",
    "    def get_neighboring_coordinates(self):\n",
    "        neighbors = []\n",
    "        for dx in [-1, 0, 1]:\n",
    "            for dy in [-1, 0, 1]:\n",
    "                if dx == 0 and dy == 0:\n",
    "                    continue  # Exclude the current square itself\n",
    "                neighbors.append((self.x + dx, self.y + dy))\n",
    "        return neighbors\n",
    "\n",
    "    def _is_diffusion_overlapping(self, potential_nx, potential_ny, potential_radius, overlap_factor):\n",
    "        \"\"\"\n",
    "        Checks if a potential new node's diffusion circle overlaps \"too much\" with existing nodes.\n",
    "        \"Too much overlap\" is defined by the overlap_factor.\n",
    "        \"\"\"\n",
    "        potential_center_x, potential_center_y = potential_nx + 0.5, potential_ny + 0.5\n",
    "\n",
    "        for ex, ey, er in self.diffusion_nodes_info:\n",
    "            # Skip checking against self if self is already in diffusion_nodes_info\n",
    "            if (ex, ey) == (self.x, self.y):\n",
    "                continue\n",
    "\n",
    "            existing_center_x, existing_center_y = ex + 0.5, ey + 0.5\n",
    "\n",
    "            # Calculate distance between centers\n",
    "            distance = np.sqrt((potential_center_x - existing_center_x)**2 + (potential_center_y - existing_center_y)**2)\n",
    "\n",
    "            # Check for significant overlap\n",
    "            # If distance is less than a fraction of the sum of radii, it's too much overlap.\n",
    "            if distance < overlap_factor * (potential_radius + er):\n",
    "                return True # Significant overlap detected\n",
    "        return False\n",
    "\n",
    "    def add_child_in_random_neighbor(self, child_value_prefix, max_node_radius, overlap_factor):\n",
    "        coordinates_neighbors = self.get_neighboring_coordinates()\n",
    "\n",
    "        # First, filter for unoccupied grid squares\n",
    "        available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in self.occupied_squares_set]\n",
    "\n",
    "        valid_child_candidates = [] # Store (nx, ny, child_radius) for candidates that pass overlap check\n",
    "\n",
    "        for nx, ny in available_square_neighbors:\n",
    "            child_radius = random.uniform(0.5, max_node_radius) # Generate potential radius for this child\n",
    "            if not self._is_diffusion_overlapping(nx, ny, child_radius, overlap_factor):\n",
    "                valid_child_candidates.append((nx, ny, child_radius))\n",
    "\n",
    "        if not valid_child_candidates:\n",
    "            return None # No available neighbors that satisfy both square and diffusion overlap conditions\n",
    "\n",
    "        # Choose a random valid candidate\n",
    "        chosen_nx, chosen_ny, chosen_child_radius = random.choice(valid_child_candidates)\n",
    "\n",
    "        child_value = f\"{child_value_prefix}_{len(self.children) + 1}\"\n",
    "        child_node = SpatialTreeNode_Diffusion(child_value, chosen_nx, chosen_ny, chosen_child_radius, self.occupied_squares_set, self.diffusion_nodes_info)\n",
    "        self.add_child(child_node)\n",
    "        return child_node\n",
    "\n",
    "    def __repr__(self):\n",
    "        return f\"SpatialTreeNode_Diffusion(value={self.value}, a={self.x}, b={self.y}, R={self.radius:.2f}, children={[child.value for child in self.children]})\"\n",
    "\n",
    "\n",
    "def generate_random_diffusion_tree(\n",
    "    max_depth, max_children, max_node_radius, current_depth=0, parent_node=None, node_prefix=\"Node\",\n",
    "    occupied_squares_set=None, diffusion_nodes_info=None, overlap_factor=0.7\n",
    "):\n",
    "    if occupied_squares_set is None:\n",
    "        occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "    if diffusion_nodes_info is None:\n",
    "        diffusion_nodes_info = [] # Initialize a new list for this tree's node (x,y,radius) information\n",
    "\n",
    "    if parent_node is None:\n",
    "        # Root node at (0,0) with a random initial radius\n",
    "        node_value = f\"{node_prefix}_Root_{random.randint(0, 99)}\"\n",
    "        initial_radius = random.uniform(0.5, max_node_radius)\n",
    "        current_node = SpatialTreeNode_Diffusion(node_value, 0, 0, initial_radius, occupied_squares_set, diffusion_nodes_info)\n",
    "    else:\n",
    "        # Children are added by the parent's method, which handles their coordinates and radius\n",
    "        current_node = parent_node.add_child_in_random_neighbor(f\"{node_prefix}_{current_depth}\", max_node_radius, overlap_factor)\n",
    "        if current_node is None:\n",
    "            return None # Branch terminated if no available neighbor\n",
    "\n",
    "    if current_depth < max_depth:\n",
    "        # Ensure at least two children if max_children >= 2, else at least one if max_children = 1, else 0\n",
    "        num_children = random.randint(min(max_children, 2) if max_children > 0 else 0, max_children)\n",
    "        for _ in range(num_children):\n",
    "            generate_random_diffusion_tree(\n",
    "                max_depth, max_children, max_node_radius, current_depth + 1, current_node,\n",
    "                node_prefix, occupied_squares_set, diffusion_nodes_info, overlap_factor\n",
    "            )\n",
    "    return current_node\n",
    "\n",
    "# --- Plotting functions for Diffusion Trees ---\n",
    "def plot_diffusion_tree_nodes(node, ax):\n",
    "    if node is None:\n",
    "        return\n",
    "\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((node.x, node.y), 1, 1, facecolor='lightblue', edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    ax.text(node.x + 0.5, node.y + 0.5, node.value.split('_')[-1], ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((node.x + 0.5, node.y + 0.5), node.radius, color='red', alpha=0.2, zorder=0) # Zorder 0 to be behind squares\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "    # Draw lines connecting parent to children\n",
    "    for child in node.children:\n",
    "        ax.plot([node.x + 0.5, child.x + 0.5], [node.y + 0.5, child.y + 0.5], 'k--', linewidth=0.8, zorder=3)\n",
    "        plot_diffusion_tree_nodes(child, ax)\n",
    "\n",
    "def print_diffusion_tree(node, level=0):\n",
    "    if node is None:\n",
    "        return\n",
    "    indent = \"  \" * level\n",
    "    print(f\"{indent}- {node.value} (a={node.x}, b={node.y}, R={node.radius:.2f})\")\n",
    "    for child in node.children:\n",
    "        print_diffusion_tree(child, level + 1)\n",
    "\n",
    "# --- Example Usage ---\n",
    "if __name__ == \"__main__\":\n",
    "    # Clear the global occupied_coords for each run (still useful for total count but tree logic manages its own)\n",
    "\n",
    "    # Parameters to modify\n",
    "    occupied_coords_diffusion.clear()\n",
    "    my_seed = 175\n",
    "    my_sees = 1275\n",
    "    random.seed(my_seed) # For reproducibility\n",
    "    MAX_DEPTH = 5 # Increased for a denser tree\n",
    "    MAX_CHILDREN_PER_NODE = 3\n",
    "    MAX_NODE_RADIUS = 5.0 # Max radius of influence for nodes\n",
    "    OVERLAP_FACTOR = 0.5 # Increased to allow more overlap for a denser tree\n",
    "\n",
    "    print(f\"Generating a random diffusion tree with max_depth={MAX_DEPTH}, max_children={MAX_CHILDREN_PER_NODE}, max_node_radius={MAX_NODE_RADIUS}, overlap_factor={OVERLAP_FACTOR}\")\n",
    "    root_diffusion_tree = generate_random_diffusion_tree(\n",
    "        max_depth=MAX_DEPTH,\n",
    "        max_children=MAX_CHILDREN_PER_NODE,\n",
    "        max_node_radius=MAX_NODE_RADIUS,\n",
    "        overlap_factor=OVERLAP_FACTOR\n",
    "        # occupied_squares_set and diffusion_nodes_info are initialized within the function if None\n",
    "    )\n",
    "\n",
    "    if root_diffusion_tree:\n",
    "        print(\"\\nGenerated Diffusion Tree Structure:\")\n",
    "        print_diffusion_tree(root_diffusion_tree)\n",
    "\n",
    "        # Access the diffusion_nodes_info from the root node to get all (x,y,radius) for plotting limits\n",
    "        all_node_coords_radii = root_diffusion_tree.diffusion_nodes_info\n",
    "        all_x = [info[0] for info in all_node_coords_radii]\n",
    "        all_y = [info[1] for info in all_node_coords_radii]\n",
    "        all_radii_values = [info[2] for info in all_node_coords_radii]\n",
    "\n",
    "        # Plotting the tree with diffusion circles\n",
    "        fig, ax = plt.subplots(figsize=(10, 10))\n",
    "        ax.set_aspect('equal', adjustable='box')\n",
    "\n",
    "        plot_diffusion_tree_nodes(root_diffusion_tree, ax)\n",
    "\n",
    "        # Set plot limits based on occupied cells and radii\n",
    "        if all_x and all_y:\n",
    "            min_x_val = min(all_x) - 1\n",
    "            max_x_val = max(all_x) + 2\n",
    "            min_y_val = min(all_y) - 1\n",
    "            max_y_val = max(all_y) + 2\n",
    "\n",
    "            # Adjust limits to include max radius if it extends beyond cell coords\n",
    "            if all_radii_values:\n",
    "                # Consider the maximum extent of any circle: center + radius\n",
    "                max_extent_x = max([x + 0.5 + r for x, y, r in all_node_coords_radii])\n",
    "                min_extent_x = min([x + 0.5 - r for x, y, r in all_node_coords_radii])\n",
    "                max_extent_y = max([y + 0.5 + r for x, y, r in all_node_coords_radii])\n",
    "                min_extent_y = min([y + 0.5 - r for x, y, r in all_node_coords_radii])\n",
    "\n",
    "                min_x_val = min(min_x_val, min_extent_x - 0.5) # Add some padding\n",
    "                max_x_val = max(max_x_val, max_extent_x + 0.5)\n",
    "                min_y_val = min(min_y_val, min_extent_y - 0.5)\n",
    "                max_y_val = max(max_y_val, max_extent_y + 0.5)\n",
    "\n",
    "            ax.set_xlim(min_x_val, max_x_val)\n",
    "            ax.set_ylim(min_y_val, max_y_val)\n",
    "\n",
    "            # Set sensible ticks\n",
    "            ax.set_xticks(range(int(min_x_val) - 1, int(max_x_val) + 1))\n",
    "            ax.set_yticks(range(int(min_y_val) - 1, int(max_y_val) + 1))\n",
    "\n",
    "        ax.grid(True)\n",
    "        ax.set_title(\"Random Spatial Tree with Diffusion Circles (Overlap Restricted)\")\n",
    "        plt.xlabel(\"X Coordinate\")\n",
    "        plt.ylabel(\"Y Coordinate\")\n",
    "        plt.show()\n",
    "    else:\n",
    "        print(\"Could not generate a diffusion tree.\")"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Dj08ZIOl7m2C"
   },
   "source": [
    "**Exercise.** Run the program and observe the drawing. The graphic shows how a lighting network is depicted and understood in our works. This must be independent of the encoding format. Notice the blue squares where a node or lamp resides, the links among nodes that form a tree, the circles of illumination that are centered at the nodes or lamps. Each circle is the region of illumination of a lamp that represents the region of influence of a center that expels messengers that control reproduction or differentiation of surrounding cells wherever its concentration is higher than a certain threshold. The overall red region is the form dictated by this morpho-tree.\n",
    "\n",
    "**Detailed interpretation.** Let us understand the output of the previous program:\n",
    "1. All squares are of width one and represent a real or potential cell. Each blue square denotes a cell of the morpho-tree.  These expel a messenger that induces specific cell differentiation in surrounding cells wherever its concentration is above a given threshold. The area of influence is marked by red circles that are centered at the center of the square.\n",
    "2. Every cell has its own position, determined by a couple $(x,y)$. The zygote, or primordial cell from which the organism results by various generations of cellular reproduction, is at the square $(0,0)$.  The couple $(x,y)$ represents a square that extends to the right and upwards. Thus, the square corresponding to $(0,0)$ extends from 0 to 1 in the horizontal direction, and from 0 to 1 in the vertical direction.\n",
    "3. Reproduction of a cell produces a daughter that occupies one of the eight circumventing squares. Because the position of cells are kept in their corresponding genomes, Evolution through recombination breaks the rule that a child and father must be neighbors. This rule is natural because every organism is a connected unit.\n",
    "4. Each square is occupied by only one cell. Evolution breaks this rule, and we tolerated this because we invoked apoptosis, or cellular suicide, as a mechanism that operates in silence to control overcrowding.\n",
    "5. To follow the morpho-tree, we need to keep in mind that the descendant is marked by linear strokes from center of the father to center of the child. The root of the tree is at $(0,0)$. Complex trees conform very intricate labyrinths.\n",
    "\n",
    "The incompatibility of the Lightning Model with Evolution forces us to react somehow. Some options are:\n",
    "\n",
    "1. To abandon the Lighting Model.\n",
    "2. Try to make it evolvable, i.e., compatible with Evolution, as much as possible.\n",
    "3. To reformulate Evolution. \n",
    "\n",
    "We like the Lighting Model so, we keep it for further study. We used the Node class (nodes and links) in the previous contribution for the encoding of our morpho-trees. The Node class is natural but tremendously expensive: tiny exercises in Evolution demand half an hour of computing by Colab. Thus, it is mandatory to research other options. That is why, we study here the possibility to encode trees as strings or sequences of chars or letters that lack every explicit connection with the node class.\n",
    "\n",
    "## Newick Notation  \n",
    "\n",
    "The challenge of encoding trees, in a format that is suitable for the study of Evolution, as strings without any appeal to the node class has been successfully solved, and the solution is known as the [Newick format or Newick Notation](https://en.wikipedia.org/w/index.php?title=Newick_format&oldid=1375769084). \n",
    "\n",
    "**Remark** In the notation used in the Node class, the genome or information associated to a Node or controlling cell is denoted in the image of $Node123[x = x_o, y = y_o, r = r_o]$, where the couple $(x_o,y_o)$ denotes the position of the lower left corner of the occupied square, and $r=r_o$ is the radius of illumination or influence of the messenger center. Additionally to this information, we will also use a redundant couple $(a,b)$, which instead of position denotes movement. For the moment, let us think just of movement.\n",
    "\n",
    "The notation is very intuitive. Some examples will suffice to understand it. Let us consider three instances:\n",
    "\n",
    "1. The string\n",
    "  >$father[a = 0, b=0, r = 2.1]$\n",
    "\n",
    "  >  denotes the root with name $father$. Its genome consists of $[a = 0, b=0, r = 2.1]$. The interpretation is: beginning from the origin of coordinates $(0,0)$, one adds the step $(a=0, b=0)$ to acquire the position $(0,0)$. From there, a lamp will irradiate light up to a circle of radius $2.1$. We see that the genomes contain not the position but the steps to recover it beginning with the position of the father. Thus, the genomes do not contain data, they content instructions to do things, i.e., software that must be properly decoded and run.\n",
    "\n",
    "2. The string\n",
    "\n",
    "  > $(child[a = -1, b = 1, r = 0.5])father[a = 0, b=0, r = 2.1]$\n",
    "\n",
    "  denotes a father and its child. The string must be read from right to left. The father is located at $(0,0)$ with radius of action $2.1$, while the child is at $(0-1,0+1) = (-1,1)$ and its radius of action is $0.5$.\n",
    "\n",
    "3. The string\n",
    "\n",
    "  > $(child1[a = 1, b=0, r = 1.3], child0[a = -1, b = 1, r = 0.5])father[a = 0, b=0, r = 2.1]$\n",
    "\n",
    "  denotes a father with two children. The father is located at $(0,0)$ with radius of action $2.1$. The first child is at $ (-1,1)$ and its radius of action is $0.5$. A second child is located at $(0+1,0+0) = (1,0)$ and its radius of action is $1.3$.\n",
    "\n",
    "**Exercise.** Add a child to child1 from the third example. It must be moved upwards east and with radius of action $0.9$. Calculate its position.\n",
    "> *Answer.* The direction upwards east is denoted $(1,1)$. If we add a child to child1 from the third example, we get:\n",
    "\n",
    "> $((grandchild0[a = 1, b = 1, r = 0.9]) child1[a= 1, b=0, r = 1.3], child0[a = -1, b = 1, r = 0.5])father[a = 0, b=0, r = 2.1]$\n",
    "\n",
    "The position of the grandchild is obtained by beginning with $(0,0)$, the position of the root, and adding the steps given by its ancestors, child1 and granchild0: $(0,0) + (1,0) + (1,1) = (2,1)$.\n",
    "\n",
    "\n",
    "\n",
    "**Warnings.** We have two invitations to be humble and to work hard: \n",
    "\n",
    "1. Gemini has explicitly expressed that the Newick Notation might result extremely cumbersome for the study of the Evolution of trees.\n",
    "2. On our part, we expect a fierce battle of Evolution with complexity because the Evolution of morpho-trees encloses a very cumbersome type of Evolution: the Evolution of software! Let us see this in some detail.\n",
    ">\n",
    "> Software is composed of verbal instructions to make things, say, to cook. In general, products are highly dependent on the type and order of the instructions to be applied. For instance, we cannot cook the flour first to then add water. We must first add water to the flour to then cook a carefully mixed ensemble. Therefore, the Evolution of software to be useful must burn immense quantities of CPU-time and memory. \n",
    ">\n",
    "> Where are concretely the instructions to build a morpho-tree?\n",
    ">\n",
    "> When a cell divides, the child must occupy one the other eight neighboring squares. The eight possibilities are denoted by $(a,b)$, where $a$ and $b$ can be $-1,  0, 1$. The case $(0,0)$ is excluded because it corresponds with the father. Thus, if $(a,b) = (-1,1)$, the child must occupy the neighboring cell that is located left upwards from the father, or, northwest. Hence, we can encode cellular division by given directly the final position of children or by expressing the instruction that contains the step that each child must give away from its father to occupy its corresponding square.  For a while we will use the movement information $(a,b)$, while $(x,y)$ will be reserved to denote position. Below, we include these two options in the encoding, but we will be attentive to detect and use the best alternative.\n",
    "\n",
    "From these considerations, it is not at all clear that the Newick Notation will make programs to run faster.  Nevertheless, our creativity and resilience must be tested with experiment to know what they give of themselves.\n",
    "\n",
    "Our path to arrive to the simulation of Evolution of morpho-trees using Newick strings alone is very long and difficult. So, let us go step by step. Our first task is to abstract the pattern, architecture, or topology of a tree in Newick Notation.\n",
    "\n",
    "\n",
    "### Schemes and grammars\n",
    "\n",
    "\n",
    "So, let us consider the following Newick string that encodes for a morpho-tree:\n",
    "\n",
    "> I = ((Target_4[a=-2,b=2,r=0.86])Target_3[a=-1,b=1,r=0.81], (Target_2[a=1,b=-2,r=2.45])Target_1[a=0,b=-1,r=2.04])Target_Root_0[a=0,b=0,r=0.85]\n",
    "\n",
    "All nodes have the same structure, which is modelled on the following *movement info of a node*\n",
    ">\n",
    "> Target_Root_0[a=0,b=0,r=0.85].\n",
    "\n",
    "Let us replace each node of I by the dummy variable n. We get\n",
    "\n",
    "> I = ((n)n,(n)n)n\n",
    "\n",
    "This is the **scheme or pattern** of the tree. We see that the root of the tree is in the right extreme\n",
    ">\n",
    "> I = ( )n and his family is (n)n,(n)n\n",
    ">\n",
    "> The root has two children,\n",
    ">\n",
    "> I = ( n, n)n\n",
    ">\n",
    "> Each child apports a grandchild\n",
    ">\n",
    "> I = ((n)n,(n)n)n\n",
    ">\n",
    "> In conclusion: This is a family with a father, two children and one grandchild from each child.\n",
    "\n",
    "**Exercise.** Specify the family composition of the following tree:\n",
    ">\n",
    "> tree_2: (((Node57[a=16,b=13,r=9],Node50[a=11,b=19,r=18])Node73[a=17,b=5,r=7],(Node86[a=19,b=2,r=18],Node46[a=16,b=10,r=18])Node58[a=4,b=4,r=15],(Node10[a=9,b=0,r=12],Node42[a=7,b=14,r=12])Node86[a=2,b=19,r=7])Node4[a=19,b=3,r=8])Node83[a=13,b=17,r=18]\n",
    ">\n",
    "> *Answer.* The corresponding pattern is\n",
    ">\n",
    "> tree_2: (((n,n)n,(n,n)n,(n,n)n)n)n\n",
    ">\n",
    "> The father is in the right extreme  ()n, and his family is (((n,n)n,(n,n)n,(n,n)n)n) with only one son, whose grand-family is (n,n)n,(n,n)n,(n,n)n. In the grand-family there are three children, each of which has two children.\n",
    ">\n",
    "> Family composition: a father, one son with three children, each one with two children. Or, a father with one son, who has three children, each one with two sons.\n",
    "\n",
    "+\n",
    "Let us show that the strings that represent a morpho-tree in Newick Notation can be generated automatically following a set of substitution rules that work over an initial string that eventually could be void. Let us notice that all nodes follow exactly the same construction: `tag_index[a_value, b_value, r_radius]`. So, we will refer to it generically as `n`. The proposed rules are:\n",
    "\n",
    "\n",
    "1. Initial string or seed: `s = ()n`\n",
    "2. Generate a random digit: x, which is the number of children\n",
    "3. Replace in `s`, `()` by x copies of `()n ` separated by a comma, we get a number of children x.\n",
    "4. Iterate.\n",
    "5. Replace each `n` by the info of a node whose values are generated at random, but the index of the tag is a counter that advances with the iterative process.\n",
    "6. Delete the tag \"()\" that appears in the last appended children and that was used for recursion.\n",
    "\n",
    "An ordered set of rules like this is an algorithm that is called a **Generative grammar**.\n",
    "\n",
    "**Challenge.** Research the web over grammars in Computing Science.\n",
    "\n",
    "**Exercise.** Implement in Python the aforementioned grammar to build random Newick strings.\n",
    ">\n",
    "> *Answer.* The following program in Python implements the aforementioned grammar and produces random Newick strings.\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 53,
     "status": "ok",
     "timestamp": 1788800163369,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "HjhM-ycjy9xw",
    "outputId": "97b27772-99d1-4ad3-a329-cae8c3243162"
   },
   "source": [
    "# Program grammar_generator_of_Newick_morpho_trees.py\n",
    "# This program uses a grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# With the assitance of Colab.\n",
    "\n",
    "import random\n",
    "import numpy as np\n",
    "import math\n",
    "import re # Required for newick parsing if needed, though not directly used in this generator\n",
    "import itertools # Required for sequential replacement\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence(original_str, start_idx, end_idx, new_subsequence):\n",
    "    ''' Replace a subsequence of a string with another string.\n",
    "        By Google'''\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "\n",
    "def generate_children(numb_children):\n",
    "  ''' Generate children in the pattern form of a Newick Tree'''\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == numb_children-1:\n",
    "      s = s + \"()n\"\n",
    "    else:\n",
    "      s = s + \"()n,\"\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s\n",
    "\n",
    "\n",
    "def newick_pattern_generator(max_depth, max_numb_children):\n",
    "  ''' Generates the pattern of a tree in Newick Notation\n",
    "      Outputs strings of the form\n",
    "      ((()n)n)n\n",
    "      '''\n",
    "  #print(\"newick_pattern_generator(max_depth, max_numb_children)\")\n",
    "  actual_depth = random.randint(0, max_depth)\n",
    "  print(f\"Depth: {actual_depth}\")\n",
    "  if actual_depth == 0:\n",
    "    return \"()n\"\n",
    "  s = \"()n\"\n",
    "  for i in range(actual_depth):\n",
    "    l = len(s)\n",
    "    #print(f\"i : {i} l: {l}\")\n",
    "    # String s is scanned starting from the end\n",
    "    for j in range(l-1, 0, -1):\n",
    "      #print(f\"s: {s}\")\n",
    "      #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "      if s[j-1] == \"(\" and s[j] == \")\":\n",
    "        numb_children = random.randint(0, max_numb_children)\n",
    "        if numb_children == 0:\n",
    "          continue\n",
    "        else:\n",
    "          # Replace () by a list of children\n",
    "          s = replace_str_subsequence(s, j-1, j+1, generate_children(numb_children))\n",
    "        #print(f\"{i} {j} Tree: {s}\")\n",
    "  return \"(\" + s + \")n\"\n",
    "\n",
    "\n",
    "def node_info_generator(counter):\n",
    "  '''For each node, info is generated on the model\n",
    "     Node_26[x=0,y=0,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      '''\n",
    "  x = random.randint(0, 20)\n",
    "  y = random.randint(0, 20)\n",
    "  r = random.randint(0, 20)\n",
    "  s = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(x) + \",\" + \"b=\" + str(y) + \",\" + \"r=\" + str(r) + \"]\"\n",
    "  return s\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings\n",
    "if __name__ == \"__main__\":\n",
    "    print(\"Generated Well-Formed trees in Newick Notation:\\n\" + \"=\"*47)\n",
    "    max_depth = 4\n",
    "    max_numb_children = 4\n",
    "    print(f\"max_depth: {max_depth}\")\n",
    "    print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 6):\n",
    "        counter = 0\n",
    "        s = newick_pattern_generator(max_depth, max_numb_children)\n",
    "        print(f\"tree {i}: {s}\")\n",
    "\n",
    "        l = len(s)\n",
    "        # String s is scanned starting from the end\n",
    "        for j in range(l-1, 0, -1):\n",
    "            if s[j] == \"n\":\n",
    "              # In s replace each n by a different info\n",
    "              s = replace_str_subsequence(s, j, j+1, node_info_generator(counter))\n",
    "              counter = counter + 1\n",
    "        s = s.replace(\"()\", \"\")\n",
    "        print(f\"tree {i}: {s}\")\n"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "LA8Iq4-mzOWq"
   },
   "source": [
    "**Exercise.** Run the previous program and study the code to see how it works.  The working of the generator grammar must be understood to follow programs below.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0QFnicBGy0b4"
   },
   "source": [
    "\n",
    "**Task.** Develop the code for an interpreter of the Newick Notation. It must accept a correct formula and draw the corresponding tree.\n",
    "\n",
    "The task is difficult. So, we divide it in various subtasks. Divide and conquer is a usual strategy in Computing Science.\n",
    "\n",
    "To efficiently interpret a formula, one needs to understand it. In programming, this is done with **tokenizers** that form the machinery to recognize patterns. The first pattern recognizes  substrings of the type $[a = 0, b=0, r = 2.1]$ that convey the information to position a node or cell in the morpho-tree.\n",
    "\n",
    "### Tokenizers\n",
    "\n",
    "Let us get acquainted with tokenizers, a powerful machinery for the recognizing of patterns in strings.\n",
    "\n",
    "**Exercise.** Let your AI assistant develop a program that shows how a tokenizer functions for Newick strings. The program must not use the Node class.\n",
    ">\n",
    "> *Answer.* Gemini answered:\n",
    ">\n",
    ">> Sure, I can create a tokenizer for Newick strings that doesn't use the Node class. This approach focuses purely on the syntactic structure of the string, making it efficient for validation.\n",
    ">>\n",
    ">> The tokenizer will break down the Newick string into its fundamental components (like parentheses, commas, node labels, and metadata elements). In a future, a validator function will analyze this sequence of tokens to ensure it conforms to the expected Newick grammar, without building any tree objects in memory.\n",
    ">\n",
    "> Gemini proposed the following program that divides the genome or info or information associated to a node into predefined tokens, or sub-strings that are sub-patterns:  \n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 52,
     "status": "ok",
     "timestamp": 1788798880204,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "TNSLVV_xmjdE",
    "outputId": "d19342f9-432f-42ea-a9ab-c36990c2dc23",
    "ExecuteTime": {
     "end_time": "2026-10-08T13:06:12.028084Z",
     "start_time": "2026-10-08T13:06:11.930605Z"
    }
   },
   "source": [
    "# Program newick_tokenizer.py\n",
    "# Adaptation of an example by Gemini 2.5 Flash\n",
    "\n",
    "import re\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- info = NodeB_3_x_2[x=2,y=2,r=3]\n",
    "\n",
    "# WARNING: the order of items in a tokenizer is important\n",
    "# # because the list is processed from top to botton!\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis\n",
    "    ('COMMA',     r','),           # Comma separator for children\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative)\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (a, b, r)\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character\n",
    "]\n",
    "\n",
    "def tokenize_newick(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\n",
    "        Adapted from a code by Gemini\"\"\"\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    try:\n",
    "        for mo in re.finditer(tok_regex, newick_str):\n",
    "            kind = mo.lastgroup\n",
    "            value = mo.group()\n",
    "            if kind == 'SKIP':\n",
    "                continue\n",
    "            elif kind == 'MISMATCH':\n",
    "                raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "            tokens.append((kind, value))\n",
    "    except SyntaxError as e:\n",
    "        return str(e)\n",
    "    if not tokens:\n",
    "        return \"Empty Newick string.\"\n",
    "    else:\n",
    "        return tokens\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    #Correct Newick string\n",
    "    newick_str_m = \"Target_1_1[a=-2,b=2,r=0.86]\"\n",
    "    tokens_m = tokenize_newick(newick_str_m)\n",
    "    print(f\"\\nnewick_str: {newick_str_m}\")\n",
    "    print(f\"Tokens: {tokens_m}\")\n",
    "    # Correct Newick string\n",
    "    newick_str_m = \"Node8[a=0.1,b=-7.3,r=15.143]\"\n",
    "    tokens_m = tokenize_newick(newick_str_m)\n",
    "    print(f\"\\nnewick_str: {newick_str_m}\")\n",
    "    print(f\"Tokens: {tokens_m}\")\n",
    "    # Incorrect Newick string+\n",
    "    newick_str_m = \"Node8[a=0,,1,b=-7.3,r=15.143$\"\n",
    "    tokens_m = tokenize_newick(newick_str_m)\n",
    "    print(f\"\\nnewick_str: {newick_str_m}\")\n",
    "    print(f\"Tokens: {tokens_m}\")\n",
    "    # Incorrect Newick string\n",
    "    newick_str_m = \"Node8[a=0,,1,b=-7.3,r=15.143))))))\"\n",
    "    tokens_m = tokenize_newick(newick_str_m)\n",
    "    print(f\"\\nnewick_str: {newick_str_m}\")\n",
    "    print(f\"Tokens: {tokens_m}\")\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "newick_str: Target_1_1[a=-2,b=2,r=0.86]\n",
      "Tokens: [('LETTERS', 'Target_1_1'), ('LBRACKET', '['), ('LETTERS', 'a'), ('EQUALS', '='), ('NUMBER', '-2'), ('COMMA', ','), ('LETTERS', 'b'), ('EQUALS', '='), ('NUMBER', '2'), ('COMMA', ','), ('LETTERS', 'r'), ('EQUALS', '='), ('NUMBER', '0.86'), ('RBRACKET', ']')]\n",
      "\n",
      "newick_str: Node8[a=0.1,b=-7.3,r=15.143]\n",
      "Tokens: [('LETTERS', 'Node8'), ('LBRACKET', '['), ('LETTERS', 'a'), ('EQUALS', '='), ('NUMBER', '0.1'), ('COMMA', ','), ('LETTERS', 'b'), ('EQUALS', '='), ('NUMBER', '-7.3'), ('COMMA', ','), ('LETTERS', 'r'), ('EQUALS', '='), ('NUMBER', '15.143'), ('RBRACKET', ']')]\n",
      "\n",
      "newick_str: Node8[a=0,,1,b=-7.3,r=15.143$\n",
      "Tokens: Newick Grammar Violation: Illegal character '$' in 'Node8[a=0,,1,b=-7.3,r=15.143$'\n",
      "\n",
      "newick_str: Node8[a=0,,1,b=-7.3,r=15.143))))))\n",
      "Tokens: [('LETTERS', 'Node8'), ('LBRACKET', '['), ('LETTERS', 'a'), ('EQUALS', '='), ('NUMBER', '0'), ('COMMA', ','), ('COMMA', ','), ('NUMBER', '1'), ('COMMA', ','), ('LETTERS', 'b'), ('EQUALS', '='), ('NUMBER', '-7.3'), ('COMMA', ','), ('LETTERS', 'r'), ('EQUALS', '='), ('NUMBER', '15.143'), ('RPAREN', ')'), ('RPAREN', ')'), ('RPAREN', ')'), ('RPAREN', ')'), ('RPAREN', ')'), ('RPAREN', ')')]\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "TY_lPYpQqN3v"
   },
   "source": [
    "**Exercise.** Play with the program to understand how it works.\n",
    "\n",
    "**Exercise.** Use a tokenizer to develop a validator of Newick strings. It must discriminate valid expression from invalid ones. A formula contains the info of various cells. A substring with the info of a single cell is called a *group of letters with the information of a node* or simply, a *group*.\n",
    ">\n",
    "> *Answer.* With the help of Gemini and Google, we propose the following code for the validator if Newick strings:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 52,
     "status": "ok",
     "timestamp": 1788798494011,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "Fcx2NfgcrDhS",
    "outputId": "04d1d2ca-13d8-4110-9e13-723d0025734b"
   },
   "source": [
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string is divided in tokens, substrings of predefined content,\n",
    "# and all groups or substrings that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# This is done so:\n",
    "# Each specification couple has an index,\n",
    "# shown to the end of the comments at the right.\n",
    "# A correct group has a very precise sequences of indexes:\n",
    "# 73756275627564\n",
    "# So, a test for correctness reduces to the comparison of two numbers.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each group or info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this simplifying algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "\n",
    "\n",
    "\n",
    "# With the help of Gemini and Google.\n",
    "\n",
    "import re\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- info = NodeB_3_x_2[a=2,b=2,r=3]\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "('LPAREN', r'\\('), # Left Parenthesis, 0\n",
    "('RPAREN', r'\\)'), # Right Parenthesis, 1\n",
    "('COMMA', r','), # Comma separator for children, 2\n",
    "('LBRACKET', r'\\['), # Left Bracket for metadata, 3\n",
    "('RBRACKET', r'\\]'), # Right Bracket for metadata, 4\n",
    "('EQUALS', r'='), # Equals sign in metadata, 5\n",
    "('NUMBER', r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "('LETTERS', r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "('SEMICOLON', r';'), # Optional semicolon at end of Newick string, 8\n",
    "('SKIP', r'[ \\t\\n]+'), # Skip spaces, tabs, newlines, 9\n",
    "('MISMATCH', r'.'), # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick2(newick_str):\n",
    "  \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "  print(\"\\ntokenize_newick\")\n",
    "  tokens = []\n",
    "  tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "  tokens = []\n",
    "  for mo in re.finditer(tok_regex, newick_str):\n",
    "    kind = mo.lastgroup\n",
    "    value = mo.group()\n",
    "    if kind == 'SKIP':\n",
    "      continue\n",
    "    elif kind == 'MISMATCH':\n",
    "      raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "    tokens.append((kind, value))\n",
    "  return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=2,b=2,r=3]\n",
    "def examine_subsequence2(tokens, j):\n",
    "  print(\"\\nexamine_subsequence2\")\n",
    "  # Every info must begin with a letter, whose index is 7.\n",
    "  tracker = [\"LETTERS\"]\n",
    "  tracker2 = \"7\"\n",
    "  if tokens[j + 1][0] == 'LBRACKET':\n",
    "    tracker.append('LBRACKET')\n",
    "    tracker2 += \"3\"\n",
    "  if tokens[j + 2][0] == 'LETTERS':\n",
    "    tracker.append('LETTERS')\n",
    "    tracker2 += \"7\"\n",
    "  if tokens[j + 3][0] == 'EQUALS':\n",
    "    tracker.append('EQUALS')\n",
    "    tracker2 += \"5\"\n",
    "  if tokens[j + 4][0] == 'NUMBER':\n",
    "    tracker.append('NUMBER')\n",
    "    tracker2 += \"6\"\n",
    "  if tokens[j + 5][0] == 'COMMA':\n",
    "    tracker.append('COMMA')\n",
    "    tracker2 += \"2\"\n",
    "  if tokens[j + 6][0] == 'LETTERS':\n",
    "    tracker.append('LETTERS')\n",
    "    tracker2 += \"7\"\n",
    "  if tokens[j + 7][0] == 'EQUALS':\n",
    "    tracker.append('EQUALS')\n",
    "    tracker2 += \"5\"\n",
    "  if tokens[j + 8][0] == 'NUMBER':\n",
    "    tracker.append('NUMBER')\n",
    "    tracker2 += \"6\"\n",
    "  if tokens[j + 9][0] == 'COMMA':\n",
    "    tracker.append('COMMA')\n",
    "    tracker2 += \"2\"\n",
    "  if tokens[j + 10][0] == 'LETTERS':\n",
    "    tracker.append('LETTERS')\n",
    "    tracker2 += \"7\"\n",
    "  if tokens[j + 11][0] == 'EQUALS':\n",
    "    tracker.append('EQUALS')\n",
    "    tracker2 += \"5\"\n",
    "  if tokens[j + 12][0] == 'NUMBER':\n",
    "    tracker.append('NUMBER')\n",
    "    tracker2 += \"6\"\n",
    "  if tokens[j + 13][0] == 'RBRACKET':\n",
    "    tracker.append('RBRACKET')\n",
    "    tracker2 += \"4\"\n",
    "  print(f\"tracker: {tracker}\")\n",
    "  print(f\"Encoding of info: {tracker2}\")\n",
    "  if tracker2 == \"73756275627564\":\n",
    "    print(\"Pattern : 73756275627564\")\n",
    "    print(\"Valid Newick sub-string at examine_subsequence2(tokens, j)\")\n",
    "    return True, \"Valid Newick sub-string at examine_subsequence2(tokens, j).\"\n",
    "  else:\n",
    "    print(\"Invalid Newick sub-string at examine_subsequence2(tokens, j)\")\n",
    "    return False, \"Invalid Newick sub-string at examine_subsequence2(tokens, j).\"\n",
    "\n",
    "def replace_at_position2(original_str, replacement, position, length_to_replace):\n",
    "  \"\"\"\n",
    "  Replaces a subsequence at a given position.\n",
    "  :param original_str: The main text string\n",
    "  :param replacement: The new text you want to insert\n",
    "  :param position: The starting index of the old subsequence\n",
    "  :param length_to_replace: The length of the old subsequence being removed\n",
    "  \"\"\"\n",
    "  before = original_str[:position]\n",
    "  after = original_str[position + length_to_replace:]\n",
    "  return before + replacement + after\n",
    "\n",
    "\n",
    "def simplify2(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    print(\"\\nsimplify(text)\")\n",
    "    print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[x=2,y=2,r=3]\n",
    "    info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    info_words = r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    print(f\"number_of_infos = {number_of_infos}\")\n",
    "    print(f\"starts of infos: {starts}\")\n",
    "    print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "    print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    new_s = new_s.replace(\"(n)n,\", \"\")\n",
    "    new_s = new_s.replace(\"(n)n\", \"\")\n",
    "    new_s = new_s.replace(\"(n),\", \"\")\n",
    "    new_s = new_s.replace(\"(n)\", \"\")\n",
    "\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "def validate_newick_syntax2(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    print(\"\\nValidating Newick syntax\")\n",
    "    try:\n",
    "        tokens = tokenize_newick2(newick_str)\n",
    "        print(f\"newick_str: {newick_str}\")\n",
    "        print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    # Stack to track parentheses and tree structure\n",
    "    paren_stack = [] # Stores 'LPAREN'\n",
    "    bracket_stack = [] # Stores 'LBRACKET'\n",
    "    node_count_in_group = 0 # Counts nodes/subtrees within a (...,...,...) group\n",
    "    expect_node_label_or_lparen = True\n",
    "    expect_metadata_key = False\n",
    "    expect_equals_after_key = False\n",
    "    expect_value_after_equals = False\n",
    "    expect_comma_or_rbracket_after_value = False\n",
    "    is_valid2 = False\n",
    "    l = len(tokens)\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 14: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 14:\n",
    "        print(f\"Length of string: {l}\")\n",
    "        for j in range(l-12):\n",
    "            # print(f\"{j} tokens[j]: {tokens[j]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid2, message2 = examine_subsequence2(tokens, j)\n",
    "                if is_valid2:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid3, message3 = simplify2(newick_str)\n",
    "    if is_valid3:\n",
    "        return True, \"Valid Newick info-substrings at validate_newick_syntax2(newick_str).\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick string validate_newick_syntax2(newick_str).\"\n",
    "\n",
    "# --- TEST SUITE (copied from previous cell and adapted) ---\n",
    "if __name__ == \"__main__\":\n",
    "  print(\"--- Newick Grammar Validator Results ---\")\n",
    "  # Re-use the examples from the previous `newick_expression_validator.py`\n",
    "  # and ensure they work with this tokenizer-based validator.\n",
    "  # Valid Newick Strings (from previous notebook state)\n",
    "  valid_newick_1 = \"((Target_1_1[a=-2,b=2,r=0.86])Target_0_1[a=-1,b=1,r=0.81],(Target_2_1[a=1,b=-2,r=2.45])Target_0_2[a=0,b=-1,r=2.04])Target_Root_26[a=0,b=0,r=0.85]\"\n",
    "  valid_newick_2 = \"((Node4[a=1,b=0,r=9],Node3[a=5,b=20,r=11],Node2[a=15,b=11,r=15])Node1[a=4,b=8,r=0])Node0[a=20,b=8,r=17]\"\n",
    "  valid_newick_3 = \"(((Node9[a=11,b=19,r=12],Node8[a=0,b=7,r=15],Node7[a=6,b=16,r=9])Node6[a=17,b=9,r=20],Node5[a=19,b=15,r=10],(Node4[a=15,b=14,r=1])Node3[a=11,b=13,r=19],Node2[a=18,b=17,r=11])Node1[a=16,b=1,r=12])Node0[a=10,b=4,r=1]\"\n",
    "  valid_newick_4 = \"NodeA[a=1,b=1,r=5]\" # Single node with metadata\n",
    "  valid_newick_5 = \"(NodeB[a=2,b=2,r=3])NodeA[a=1,b=1,r=5]\" # Simple tree\n",
    "  valid_newick_6 = \"NodeC;\" # Single node with semicolon\n",
    "  valid_newick_7 = \"(NodeD,NodeE)NodeF;\" # Tree with semicolon\n",
    "  valid_newick_8 = \"NodeA\" # Single node without metadata\n",
    "  valid_newick_9 = \"((A,B)C,(D,E)F)G;\" # Classic Newick, no metadata\n",
    "  # Invalid Newick Strings\n",
    "  invalid_newick_1 = \"(NodeA,NodeB\" # Missing closing parenthesis\n",
    "  invalid_newick_2 = \"NodeA[a=1,b=1]\" # Missing r-metadata, or malformed if r is optional\n",
    "  invalid_newick_3 = \"(NodeA,NodeB)[a=1,b=1,r=1]\" # Node label after children missing\n",
    "  invalid_newick_4 = \"((NodeX[a=1,b=1,r=1])NodeY[a=2,b=2,r=2])\" # Missing root label\n",
    "  invalid_newick_5 = \"(NodeA[a=1,b=1,r=1],)NodeC[a=3,b=3,r=3]\" # Trailing comma\n",
    "  invalid_newick_6 = \"(NodeA,NodeB)C D\" # Extra token after valid tree\n",
    "  invalid_newick_7 = \"[a=1]NodeA\" # Metadata before node label\n",
    "  invalid_newick_8 = \"NodeA[a=1,b=1r=1]\" # Missing comma in metadata\n",
    "  invalid_newick_9 = \"(\" # Unclosed parenthesis\n",
    "  invalid_newick_10 = \"NodeA(NodeB)\" # Parentheses in wrong place\n",
    "\n",
    "  test_cases_newick = {\n",
    "  \"Valid Newick Strings\": [\n",
    "  valid_newick_1,\n",
    "  valid_newick_2,\n",
    "  valid_newick_3,\n",
    "  valid_newick_4,\n",
    "  valid_newick_5,\n",
    "  valid_newick_6,\n",
    "  valid_newick_7,\n",
    "  valid_newick_8,\n",
    "  valid_newick_9\n",
    "  ],\n",
    "  \"Invalid Newick Strings\": [\n",
    "  invalid_newick_1,\n",
    "  invalid_newick_2,\n",
    "  invalid_newick_3,\n",
    "  invalid_newick_4,\n",
    "  invalid_newick_5,\n",
    "  invalid_newick_6,\n",
    "  invalid_newick_7,\n",
    "  invalid_newick_8,\n",
    "  invalid_newick_9,\n",
    "  invalid_newick_10\n",
    "  ]\n",
    "  }\n",
    "\n",
    "  for category, newick_strings in test_cases_newick.items():\n",
    "        print(f\"\\n--- {category} ---\")\n",
    "        for i, nw_str in enumerate(newick_strings):\n",
    "            print(\"\\nString \", i+1)\n",
    "            is_valid, message = validate_newick_syntax2(nw_str)\n",
    "            print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "            status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "            print(f\"  String {i+1}: {status} - {message}\")\n",
    "            #print(f\"    '{nw_str}'\") # Uncomment to see the string itself\n",
    "\n"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "HzAWJOovJrXe"
   },
   "source": [
    "**Exercise.** Run the program and test it with formulas of your own invention.\n",
    "\n",
    "**Protest.** A test of some few formulas is not enough to inspire confidence.\n",
    "\n",
    "**Exercise.** Carry out a massive test to verify that each formula is indeed correct.\n",
    ">\n",
    ">*Answer.* In the following program we have a generator of Newick formulas, each one of which is immediately tested by a validator."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 166,
     "status": "ok",
     "timestamp": 1788893545141,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "pWVlMuydLPg8",
    "outputId": "82068ccc-451d-47e8-e320-10524de06d2e"
   },
   "source": [
    "# Program massive_test_of_Newick_morpho_trees.py\n",
    "# This program uses a grammar to generate Newick expressions that encode for morphological trees.\n",
    "# Each generated formula is tested with a validator to verify its correctness.\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random,\n",
    "#    but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# With the assitance of Colab.\n",
    "\n",
    "import random\n",
    "import numpy as np\n",
    "import math\n",
    "import re # Regular expressions package. Required for newick parsing\n",
    "import itertools # Required for sequential replacement\n",
    "\n",
    "\n",
    "# === Generator===\n",
    "\n",
    "def replace_str_subsequence3(original_str, start_idx, end_idx, new_subsequence):\n",
    "    ''' Replace a subsequence of a string with another string.\n",
    "        By Google'''\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "\n",
    "def generate_children3(numb_children):\n",
    "  ''' Generate children in the pattern form of a Newick Tree'''\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == numb_children-1:\n",
    "      s = s + \"()n\"\n",
    "    else:\n",
    "      s = s + \"()n,\"\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s\n",
    "\n",
    "\n",
    "def newick_pattern_generator3(max_depth, max_numb_children):\n",
    "  ''' Generates the pattern of a tree in Newick Notation\n",
    "      Outputs strings of the form\n",
    "      ((()n)n)n\n",
    "      '''\n",
    "  #print(\"newick_pattern_generator(max_depth, max_numb_children)\")\n",
    "  actual_depth = random.randint(0, max_depth)\n",
    "  #print(f\"Depth: {actual_depth}\")\n",
    "  if actual_depth == 0:\n",
    "    return \"()n\"\n",
    "  s = \"()n\"\n",
    "  for i in range(actual_depth):\n",
    "    l = len(s)\n",
    "    #print(f\"i : {i} l: {l}\")\n",
    "    # String s is scanned starting from the end\n",
    "    for j in range(l-1, 0, -1):\n",
    "      #print(f\"s: {s}\")\n",
    "      #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "      if s[j-1] == \"(\" and s[j] == \")\":\n",
    "        numb_children = random.randint(0, max_numb_children)\n",
    "        if numb_children == 0:\n",
    "          continue\n",
    "        else:\n",
    "          # Replace () by a list of children\n",
    "          s = replace_str_subsequence3(s, j-1, j+1, generate_children3(numb_children))\n",
    "        #print(f\"{i} {j} Tree: {s}\")\n",
    "  return \"(\" + s + \")n\"\n",
    "\n",
    "\n",
    "def node_info_generator3(counter):\n",
    "  '''For each node, info is generated on the model\n",
    "     Node_26[x=0,y=0,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      '''\n",
    "  x = random.randint(0, 20)\n",
    "  y = random.randint(0, 20)\n",
    "  r = random.randint(0, 20)\n",
    "  s = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(x) + \",\" + \"b=\" + str(y) + \",\" + \"r=\" + str(r) + \"]\"\n",
    "  return s\n",
    "\n",
    "def morpho_tree_generator3(max_depth, max_numb_children):\n",
    "      ''' Generates a Newcick formula that repreents a morpho-tree.\n",
    "          '''\n",
    "      counter = 0\n",
    "      s = newick_pattern_generator3(max_depth, max_numb_children)\n",
    "      #print(f\"tree  {i} at line 341: {s}\")\n",
    "\n",
    "      l = len(s)\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "          if s[j] == \"n\":\n",
    "            # In s replace each n by a different info\n",
    "            s = replace_str_subsequence3(s, j, j+1, node_info_generator3(counter))\n",
    "            counter = counter + 1\n",
    "      s = s.replace(\"()\", \"\")\n",
    "      return s\n",
    "\n",
    "# === VAlidator ===\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# With the help of Gemini and Google.\n",
    "\n",
    "import re\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- info = NodeB_3_x_2[a=2,b=2,r=3]\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick3(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=2,b=2,r=3]\n",
    "def examine_subsequence3(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"tracker: {tracker}\")\n",
    "    #print(f\"Encoding of info: {tracker2}\")\n",
    "    if tracker2 == \"73756275627564\":\n",
    "        #print(\"Pattern         : 73756275627564\")\n",
    "        return True, \"Valid Newick sub-string.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string.\"\n",
    "\n",
    "\n",
    "def replace_at_position3(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence at a given position.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def simplify3(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    #print(\"\\nsimplify(text)\")\n",
    "    #print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words = r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position3(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    #print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        #print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        #print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "def validate_newick_syntax3(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    print(\"Validating Newick syntax\")\n",
    "    try:\n",
    "        tokens = tokenize_newick3(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    # Stack to track parentheses and tree structure\n",
    "    paren_stack = [] # Stores 'LPAREN'\n",
    "    bracket_stack = [] # Stores 'LBRACKET'\n",
    "    node_count_in_group = 0 # Counts nodes/subtrees within a (...,...,...) group\n",
    "    expect_node_label_or_lparen = True\n",
    "    expect_metadata_key = False\n",
    "    expect_equals_after_key = False\n",
    "    expect_value_after_equals = False\n",
    "    expect_comma_or_rbracket_after_value = False\n",
    "    is_valid2 = False\n",
    "    l = len(tokens)\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 14: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 14:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-12):\n",
    "            # print(f\"{j} tokens[j]: {tokens[j]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid2, message2 = examine_subsequence3(tokens, j)\n",
    "                if is_valid2:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid3, message3 = simplify3(newick_str)\n",
    "    if is_valid3:\n",
    "        return True, \"Valid Newick morpho-tree.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick morpho-tree.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "#=== Main ===\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "if __name__ == \"__main__\":\n",
    "    print(\"Program massive_test_of_Newick_morpho_trees.py\")\n",
    "    print(\"Generated Well-Formed Newick formulas of morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 3\n",
    "    print(f\"max_depth: {max_depth}\")\n",
    "    print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        s = morpho_tree_generator3(max_depth, max_numb_children)\n",
    "        print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax3(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        print(f\"Morpho-tree {i}:: {status} - {message}\")\n"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "qQxn9O6DfRQi"
   },
   "source": [
    "**Exercise.** Run the program and express your conclusion: Does our generator produce correct Newick formulas that represent morpho-trees?\n",
    ">\n",
    "> *Answer.* Generated formulas pass the massive test offered by the validator.\n",
    "\n",
    "**Complaints.** Two complaints might arise:\n",
    "1. The validator does not include a test for the rule that to be a morpho-tree, the father and the child must be neighbors one to another.\n",
    "2. The validator successfully can reverse the work of the generator. But, this does not prove that the generated formulas encode for a morpho-tree.\n",
    ">\n",
    "> *Answer.* The first protest is right but not the second because everything is thoroughly tested. Anyway, the best that we can do to help in the perception of the formulas is to draw them. So, the drawing transfers the responsibility for validation to the Beholder.\n",
    "\n",
    "## Drawing a Newick morpho-tree.\n",
    "\n",
    "It happens that the drawing task is hard. It could be eased at least a bit if we include in the genomes of each cell its position, besides its step from the father. Because of bugs committed by the developer at development time, we need the help of a validator for this new pattern of genome that is built on the image of `NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]`. In this nomenclature, we include the step given by the child away from the father, which is denoted by $(a,b)$, and the resultant position of the child, that is denoted by $(x,y)$.\n",
    "\n",
    "**Exercise.** Develop a validator for Newick formulas that work over morpho-trees whose genomes or groups are built on the image of `NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]`, where the step that is given by the child from its father is denoted by $(a,b)$ and the acquired position of the child by $(x,y)$.\n",
    ">\n",
    ">*Answer.* The code for a validator of Newick strings whose groups or infos of each cell are built on the image of `NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3.1]` is included in the program that is the answer to the next exercise. Our validator accepts every correct formula but is fault-tolerant because it also accepts some ill formulas of the style of `NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3.1],,`\n",
    "\n",
    "**Exercise.** Develop the code for the generator of Newick formulas to include the rule that the father and its child must be neighbors. Test your code and allow the Beholder to see the tree. So, the Beholder is the final judge for correctness.\n",
    ">\n",
    "> *Answer.* The following program contains:\n",
    "1. Generated trees observe the rule that the child and father shall be neighbors.\n",
    "2. A syntactic validator is used mainly to detect bugs that give rise to invalid strings.  \n",
    "3. The supposed tree is drawn to give to the Beholder the capacity to test the correctness of the generated formulas. Each child is joint to its father by a linear stroke that goes from center to center. So, the Beholder can see what is generated and whether the drawing corresponds to a morpho-tree. The tree can have self intersecting strokes without being ill because a void can be filled by the child of a more distant node. This causes trees to be entangled. Entanglement seems to be the universal signature of Evolution. To understand the tree, begin with the root, marked by a red cross, and follow a path defined by the strokes that connect center to center.\n",
    "3. As before, we include in the genome of each cell or node of the tree the step that separates the child from the father. It is denoted by $(a,b)$. New: We also include the position of the left-bottom corner of each cell, denoted by $(x,y)$. To keep track of the position allows drawing the tree more easily.  Nevertheless, we know that the position is not compatible with Evolution.\n",
    "4. The radius of action of each lamp is represented by a red circle.\n",
    "5. A cell or square is illuminated if at least a pixel is illuminated. Illuminated cells are refilled in a pale purpure color.\n",
    "6. We imagine that in morphogenesis, cells do not go to occupied space. Otherwise, we shall invoke apoptosis, or cellular suicide, to resolve conflicts. Else, we must keep an accounting of the occupied cells and command children to go to void space only. The accounting is done by means of a set that keeps the coordinates of the occupied squares.\n",
    "\n",
    "The code is the following:\n",
    "\n",
    "jjjjjjjj jose"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "executionInfo": {
     "elapsed": 722,
     "status": "ok",
     "timestamp": 1789393355379,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "mNH4C_kkk6ZB",
    "outputId": "afbabae8-dcf7-4181-9e68-320620d05c02"
   },
   "source": [
    "# Program morpho_tree_generator_and_drawer.py\n",
    "# This program generates a morpho tree and drwas it.\n",
    "# It builds morpho trees of predefined number of trees.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "#from datetime import datetime, timedelta\n",
    "\n",
    "# trace memory allocation \n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc \n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False \n",
    "recombination_of_leaves = False\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start() \n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 10,\n",
    "  'max_number_children': 2,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "   #'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 70,\n",
    "  'generations': 100,\n",
    "  'max_depth': target_tree_params['max_depth'],\n",
    "  'max_number_children': target_tree_params['max_number_children'],\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001, \n",
    "  'crossover_rate': 0.001  \n",
    "}\n",
    "\n",
    " \n",
    "def print_parameters4(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    #print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"INITIAL TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"INITIAL GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_generator_and_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=14.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence4(original_str, start_idx, end_idx, new_subsequence):\n",
    "    \"\"\" Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google\"\"\"\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length4(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups4(newick_string):\n",
    "    \"\"\"Al substrings that encodes for the info of a node, step from father, center and radius are detected.\"\"\"\n",
    "\n",
    "    #print(\"detect_all_groups13(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    \"\"\"\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        \"\"\"\n",
    "    return groups\n",
    "\n",
    "def count_groups4(newick_string):\n",
    "    \"\"\"The number of groups is counted.\"\"\"\n",
    "    groups = detect_all_groups4(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info4(group):\n",
    "  \"\"\"The info of each group is extracted by tokenizers from the string.\"\"\"\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos4(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups4(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info4(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates4(cell):\n",
    "  \"\"\"Immediate neighboring coordinates of a cell are generated\"\"\"\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "def find_father_center4(newick_string, j):\n",
    "  \"\"\" Finds the address of the father of a node at j\"\"\"\n",
    "  #print(\"find_father_center13(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups4(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info4(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator4(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  \"\"\"For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      \"\"\"\n",
    "  #print(\"node_info_generator13(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates4(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children4(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  \"\"\" Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n \"\"\"\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator4(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator4(max_depth, max_numb_children, max_node_radius):\n",
    "  \"\"\" A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.\"\"\"\n",
    "  #print(\"complete_tree_generator13(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = max_depth - random.randint(0,5) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion of children. \n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center4(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children4(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence4(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# =================================================================================\n",
    "# ==== Drawer ===\n",
    "# =================================================================================\n",
    "\n",
    "def get_neighboring_coordinates4(cell):\n",
    "  '''Immediate neighboring coordinates of a cell are generated'''\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def detect_all_groups4(newick_string):\n",
    "    '''Al substrings that encodes for the info of a node, step from father, center and radius are detected.'''\n",
    "\n",
    "    #print(\"detect_all_groups11b(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    '''\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        '''\n",
    "    return groups\n",
    "\n",
    "def extract_info11b(group):\n",
    "  '''The info of each group is extracted by tokenizers from the string.'''\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos4(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups4(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info4(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "def find_father_center4(newick_string, j):\n",
    "  ''' Finds the address of the father of a node at j'''\n",
    "  #print(\"find_father_center11(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups4(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info4(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def get_illuminated_area4(x,y,r):\n",
    "    '''\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    '''\n",
    "    #print(\"get_illuminated_area11\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick4(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles4(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves_newick4(newick_string):\n",
    "    '''Detect leaves in a Newick string.'''\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups4(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father4(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    '''Draw lines connecting leaves to fathers'''\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves_newick4(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info4(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=4],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups4(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info4(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    groups = detect_all_groups4(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")    \n",
    "     \n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links4(newick_string, ax,   diff_color='red' ):\n",
    "    '''Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       '''\n",
    "\n",
    "    #print(\"draw_tree_links11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups4(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links11\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father4(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups4(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info4(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick4(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos4(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 4))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles4(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "     \n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area4(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick4(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links4(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    # Example Newick string\n",
    "    # newick_string = \"((((((()Node63[a=1.0,b=-1.0,x=5.0,y=-3.0,r=1.26])Node52[a=1.0,b=-1.0,x=4.0,y=-2.0,r=0.7])Node21[a=1.0,b=1.0,x=3.0,y=-1.0,r=1.9613197090647045],((()Node219[a=0.0,b=1.0,x=-2.0,y=3.0,r=1.06])((((Node46[a=-1.0,b=-1.0,x=-2.0,y=2.0,r=0.71])Node125[a=0.0,b=1.0,x=-1.0,y=3.0,r=1.37])Node103[a=-1.0,b=1.0,x=-1.0,y=2.0,r=1.36],(((Node198[a=-1.0,b=1.0,x=-4.0,y=1.0,r=0.75])Node45[a=-1.0,b=0.0,x=-3.0,y=0.0,r=0.58])Node124[a=-1.0,b=-1.0,x=-2.0,y=0.0,r=1.6749306080259698],((((()Node913[a=-1.0,b=0.0,x=-4.0,y=3.0,r=0.59]))Node698[a=0.0,b=1.0,x=-3.0,y=3.0,r=0.84])()Node600[a=-1.0,b=1.0,x=-3.0,y=2.0,r=1.25])()Node123[a=0.0,b=-1.0,x=-1.0,y=0.0,r=1.33])Node102[a=-1.0,b=0.0,x=-1.0,y=1.0,r=1.33])Node51[a=-1.0,b=1.0,x=0.0,y=1.0,r=0.54],(((()Node122[a=-1.0,b=0.0,x=0.0,y=3.0,r=1.17])Node81[a=-1.0,b=1.0,x=1.0,y=3.0,r=0.85])Node62[a=0.0,b=1.0,x=2.0,y=2.0,r=1.07],(((()Node43[a=-1.0,b=1.0,x=3.0,y=5.0,r=0.54683679559608],Node42[a=0.0,b=-1.0,x=4.0,y=3.0,r=1.03])Node101[a=1.0,b=1.0,x=4.0,y=4.0,r=0.5748403340449614])Node80[a=0.0,b=1.0,x=3.0,y=3.0,r=1.22],()Node79[a=1.0,b=0.0,x=4.0,y=2.0,r=1.36])Node61[a=1.0,b=1.0,x=3.0,y=2.0,r=0.5295884877970901])Node50[a=1.0,b=1.0,x=2.0,y=1.0,r=1.21])Node29[a=0.0,b=1.0,x=1.0,y=0.0,r=1.43])Node20[a=-1.0,b=1.0,x=1.0,y=-1.0,r=1.1])Node8[a=1.0,b=0.0,x=2.0,y=-2.0,r=0.64])Node3[a=1.0,b=-1.0,x=1.0,y=-2.0,r=1.37],((((((()Node100[a=0.0,b=1.0,x=-2.0,y=-2.0,r=1.05],((Node40[a=0.0,b=1.0,x=-4.0,y=-1.0,r=0.733489119496699],(Node193[a=-1.0,b=1.0,x=-6.0,y=0.0,r=0.5820889162363478])Node149[a=-1.0,b=1.0,x=-5.0,y=-1.0,r=0.81])Node120[a=-1.0,b=0.0,x=-4.0,y=-2.0,r=1.36],()Node119[a=0.0,b=1.0,x=-3.0,y=-1.0,r=1.16])Node99[a=-1.0,b=1.0,x=-3.0,y=-2.0,r=1.47])Node49[a=-1.0,b=1.0,x=-2.0,y=-3.0,r=1.26],()((()Node118[a=0.0,b=-1.0,x=-3.0,y=-4.0,r=1.0],((()Node367[a=-1.0,b=-1.0,x=-7.0,y=-3.0,r=1.8764650499221425])()Node147[a=-1.0,b=0.0,x=-5.0,y=-3.0,r=0.82],Node146[a=-1.0,b=1.0,x=-5.0,y=-2.0,r=1.13])Node117[a=-1.0,b=0.0,x=-4.0,y=-3.0,r=1.13])Node78[a=-1.0,b=1.0,x=-3.0,y=-3.0,r=1.0329473493338008])Node48[a=-1.0,b=0.0,x=-2.0,y=-4.0,r=0.76])Node28[a=-1.0,b=0.0,x=-1.0,y=-4.0,r=1.46])Node14[a=1.0,b=-1.0,x=0.0,y=-4.0,r=1.06])Node7[a=0.0,b=-1.0,x=-1.0,y=-3.0,r=0.89])Node5[a=0.0,b=-1.0,x=-1.0,y=-2.0,r=0.71],(((((((()Node47[a=-1.0,b=1.0,x=4.0,y=-4.0,r=0.6058398421466735],((()Node441[a=0.0,b=-1.0,x=8.0,y=0.0,r=1.2970045651723827])((((()Node145[a=1.0,b=1.0,x=8.0,y=1.0,r=0.52],()Node144[a=0.0,b=1.0,x=7.0,y=1.0,r=0.96])Node116[a=1.0,b=1.0,x=7.0,y=0.0,r=1.23571244728331],()Node14[a=1.0,b=0.0,x=7.0,y=-1.0,r=0.95])Node98[a=1.0,b=1.0,x=6.0,y=-1.0,r=1.37],(()Node114[a=1.0,b=0.0,x=7.0,y=-2.0,r=0.62])Node97[a=1.0,b=0.0,x=6.0,y=-2.0,r=1.04])Node77[a=1.0,b=1.0,x=5.0,y=-2.0,r=1.01])Node59[a=-1.0,b=1.0,x=4.0,y=-3.0,r=0.62],(((Node185[a=1.0,b=0.0,x=9.0,y=-5.0,r=1.25],()Node476[a=1.0,b=-1.0,x=9.0,y=-6.0,r=0.87])Node142[a=1.0,b=-1.0,x=8.0,y=-5.0,r=1.7146586553405185])Node96[a=1.0,b=1.0,x=7.0,y=-4.0,r=1.49],((Node183[a=1.0,b=-1.0,x=8.0,y=-6.0,r=0.54])Node141[a=1.0,b=-1.0,x=7.0,y=-5.0,r=0.518535704237459],(()Node303[a=1.0,b=-1.0,x=9.0,y=-4.0,r=0.69])(Node181[a=1.0,b=0.0,x=8.0,y=-3.0,r=1.16])Node140[a=1.0,b=1.0,x=7.0,y=-3.0,r=1.44])Node95[a=0.0,b=1.0,x=6.0,y=-4.0,r=1.1])Node58[a=1.0,b=-1.0,x=6.0,y=-5.0,r=0.72])Node46[a=0.0,b=1.0,x=5.0,y=-4.0,r=0.79])Node36[a=1.0,b=0.0,x=5.0,y=-5.0,r=1.02])Node27[a=1.0,b=-1.0,x=4.0,y=-5.0,r=0.71])Node19[a=1.0,b=0.0,x=3.0,y=-4.0,r=0.83],(Node57[a=0.0,b=-1.0,x=3.0,y=-6.0,r=0.83])Node18[a=1.0,b=-1.0,x=3.0,y=-5.0,r=1.36])Node13[a=0.0,b=-1.0,x=2.0,y=-4.0,r=1.956337326453025],((((((()Node94[a=1.0,b=1.0,x=2.0,y=3.0,r=1.5714886013535794])Node76[a=1.0,b=0.0,x=1.0,y=2.0,r=1.760704619465394])Node56[a=-1.0,b=1.0,x=0.0,y=2.0,r=1.43])Node45[a=-1.0,b=1.0,x=1.0,y=1.0,r=0.71])Node26[a=0.0,b=1.0,x=2.0,y=0.0,r=0.81],(((()Node55[a=1.0,b=0.0,x=5.0,y=-1.0,r=0.68])Node44[a=0.0,b=-1.0,x=4.0,y=-1.0,r=1.39])Node35[a=1.0,b=0.0,x=4.0,y=0.0,r=1.5450652146942652])Node25[a=1.0,b=1.0,x=3.0,y=0.0,r=0.8])Node17[a=-1.0,b=1.0,x=2.0,y=-1.0,r=0.84])Node12[a=1.0,b=1.0,x=3.0,y=-2.0,r=0.59])Node10[a=1.0,b=0.0,x=2.0,y=-3.0,r=1.31],((((((()Node74[a=0.0,b=1.0,x=-3.0,y=-5.0,r=0.97],(((()Node139[a=0.0,b=1.0,x=-5.0,y=-4.0,r=0.85])Node113[a=0.0,b=1.0,x=-5.0,y=-5.0,r=1.29],(Node138[a=-1.0,b=1.0,x=-7.0,y=-4.0,r=1.09])Node112[a=-1.0,b=1.0,x=-6.0,y=-5.0,r=0.69])Node92[a=-1.0,b=0.0,x=-5.0,y=-6.0,r=1.9891193529247717])Node73[a=-1.0,b=0.0,x=-4.0,y=-6.0,r=0.9])Node43[a=-1.0,b=-1.0,x=-3.0,y=-6.0,r=0.93])Node34[a=-1.0,b=0.0,x=-2.0,y=-5.0,r=1.7667232954270577],(()Node707[a=0.0,b=-1.0,x=-8.0,y=-11.0,r=1.2418125160543307])((((((Node176[a=-1.0,b=1.0,x=-8.0,y=-8.0,r=0.73])Node137[a=-1.0,b=-1.0,x=-7.0,y=-9.0,r=1.3],Node136[a=-1.0,b=0.0,x=-7.0,y=-8.0,r=0.59])Node111[a=-1.0,b=-1.0,x=-6.0,y=-8.0,r=0.53],(Node175[a=-1.0,b=1.0,x=-7.0,y=-6.0,r=1.8710079054235957])Node110[a=-1.0,b=0.0,x=-6.0,y=-7.0,r=0.81])Node91[a=-1.0,b=0.0,x=-5.0,y=-7.0,r=0.64])Node72[a=-1.0,b=0.0,x=-4.0,y=-7.0,r=1.35],(Node90[a=-1.0,b=0.0,x=-5.0,y=-8.0,r=1.48],(()Node109[a=-1.0,b=0.0,x=-6.0,y=-9.0,r=1.8236264836746388])Node89[a=-1.0,b=-1.0,x=-5.0,y=-9.0,r=0.94])Node71[a=-1.0,b=-1.0,x=-4.0,y=-8.0,r=0.91])Node42[a=-1.0,b=-1.0,x=-3.0,y=-7.0,r=0.58],(()Node46[a=-1.0,b=-1.0,x=-2.0,y=-7.0,r=0.93])()Node41[a=1.0,b=0.0,x=-1.0,y=-6.0,r=1.39])Node33[a=-1.0,b=-1.0,x=-2.0,y=-6.0,r=1.12])Node24[a=-1.0,b=0.0,x=-1.0,y=-5.0,r=1.47])Node16[a=-1.0,b=-1.0,x=0.0,y=-5.0,r=0.67],((Node32[a=0.0,b=-1.0,x=1.0,y=-6.0,r=1.9638918299741654],(((()Node841[a=-1.0,b=-1.0,x=-7.0,y=-11.0,r=0.58])((((()Node135[a=-1.0,b=-1.0,x=-5.0,y=-11.0,r=0.85])Node108[a=0.0,b=-1.0,x=-4.0,y=-10.0,r=1.0],(()Node630[a=-1.0,b=-1.0,x=-6.0,y=-13.0,r=0.77])(()Node134[a=-1.0,b=-1.0,x=-6.0,y=-11.0,r=1.0])Node107[a=-1.0,b=-1.0,x=-5.0,y=-10.0,r=1.14])Node88[a=-1.0,b=-1.0,x=-4.0,y=-9.0,r=0.65])Node69[a=-1.0,b=0.0,x=-3.0,y=-8.0,r=0.87],(((Node170[a=1.0,b=-1.0,x=-3.0,y=-12.0,r=1.951238469851274],(()Node686[a=-1.0,b=-1.0,x=-4.0,y=-12.0,r=1.5])Node169[a=1.0,b=0.0,x=-3.0,y=-11.0,r=0.91])Node133[a=-1.0,b=-1.0,x=-4.0,y=-11.0,r=1.33])Node87[a=-1.0,b=-1.0,x=-3.0,y=-10.0,r=1.08],Node86[a=-1.0,b=0.0,x=-3.0,y=-9.0,r=1.33])Node68[a=0.0,b=-1.0,x=-2.0,y=-9.0,r=0.99])Node54[a=-1.0,b=-1.0,x=-2.0,y=-8.0,r=0.72])Node40[a=-1.0,b=-1.0,x=-1.0,y=-7.0,r=1.45],(()Node951[a=-1.0,b=-1.0,x=0.0,y=-11.0,r=1.7392926307253513])((()Node132[a=1.0,b=-1.0,x=2.0,y=-9.0,r=1.25],()Node131[a=1.0,b=0.0,x=2.0,y=-8.0,r=1.45])Node67[a=1.0,b=-1.0,x=1.0,y=-8.0,r=1.41],((()Node193[a=-1.0,b=0.0,x=-4.0,y=-14.0,r=1.22])()Node370[a=-1.0,b=-1.0,x=-3.0,y=-14.0,r=0.94])((()Node139[a=0.0,b=-1.0,x=-2.0,y=-13.0,r=1.33])(((Node166[a=0.0,b=-1.0,x=-2.0,y=-12.0,r=0.65],((()Node192[a=-1.0,b=0.0,x=0.0,y=-14.0,r=0.88])((()Node527[a=1.0,b=-1.0,x=1.0,y=-14.0,r=0.85])((()Node591[a=1.0,b=-1.0,x=0.0,y=-13.0,r=1.04])()Node169[a=0.0,b=-1.0,x=-1.0,y=-12.0,r=1.0099492850296317]))Node421[a=1.0,b=-1.0,x=-1.0,y=-11.0,r=1.29])Node165[a=0.0,b=1.0,x=-2.0,y=-10.0,r=1.23])Node130[a=-1.0,b=-1.0,x=-2.0,y=-11.0,r=1.45])Node106[a=0.0,b=-1.0,x=-1.0,y=-10.0,r=1.2592804255064793],Node105[a=1.0,b=0.0,x=0.0,y=-9.0,r=1.23])Node85[a=0.0,b=-1.0,x=-1.0,y=-9.0,r=1.49])Node66[a=-1.0,b=-1.0,x=-1.0,y=-8.0,r=1.38])Node39[a=0.0,b=-1.0,x=0.0,y=-7.0,r=1.13])Node31[a=-1.0,b=-1.0,x=0.0,y=-6.0,r=1.07])Node23[a=-1.0,b=0.0,x=1.0,y=-5.0,r=0.73],(((()Node952[a=1.0,b=-1.0,x=2.0,y=-10.0,r=1.18])(()Node84[a=-1.0,b=-1.0,x=0.0,y=-8.0,r=0.91])Node38[a=-1.0,b=0.0,x=1.0,y=-7.0,r=1.38],(((Node129[a=-1.0,b=-1.0,x=3.0,y=-8.0,r=1.27],()Node128[a=0.0,b=-1.0,x=4.0,y=-8.0,r=1.35])Node65[a=0.0,b=-1.0,x=4.0,y=-7.0,r=0.98],((((Node162[a=1.0,b=0.0,x=8.0,y=-7.0,r=1.2685669416870335],()Node283[a=1.0,b=-1.0,x=8.0,y=-8.0,r=0.9586343616711437])Node127[a=1.0,b=-1.0,x=7.0,y=-7.0,r=0.81],(()Node189[a=0.0,b=-1.0,x=6.0,y=-12.0,r=0.94])((()Node78[a=-1.0,b=-1.0,x=6.0,y=-11.0,r=0.66])((()Node537[a=0.0,b=-1.0,x=7.0,y=-11.0,r=1.22])()Node887[a=0.0,b=-1.0,x=7.0,y=-10.0,r=0.94])()Node473[a=0.0,b=-1.0,x=7.0,y=-9.0,r=0.81])()Node126[a=0.0,b=-1.0,x=6.0,y=-7.0,r=1.19],()Node93[a=1.0,b=0.0,x=7.0,y=-6.0,r=0.74])Node104[a=1.0,b=0.0,x=6.0,y=-6.0,r=1.4108167024543916])Node83[a=0.0,b=1.0,x=5.0,y=-6.0,r=1.32],((((()Node745[a=-1.0,b=-1.0,x=3.0,y=-14.0,r=0.62]))Node919[a=-1.0,b=-1.0,x=4.0,y=-13.0,r=1.4])()Node772[a=0.0,b=-1.0,x=5.0,y=-12.0,r=1.28])(()Node798[a=1.0,b=0.0,x=5.0,y=-11.0,r=0.8])(((()Node41[a=-1.0,b=-1.0,x=4.0,y=-11.0,r=0.96]))Node4[a=0.0,b=-1.0,x=5.0,y=-10.0,r=1.03])()Node82[a=1.0,b=-1.0,x=6.0,y=-8.0,r=0.96])Node64[a=1.0,b=-1.0,x=5.0,y=-7.0,r=1.37])Node53[a=1.0,b=1.0,x=4.0,y=-6.0,r=0.5])Node37[a=1.0,b=0.0,x=3.0,y=-7.0,r=1.28])Node30[a=0.0,b=-1.0,x=2.0,y=-7.0,r=0.75])Node22[a=0.0,b=-1.0,x=2.0,y=-6.0,r=0.83])Node4[a=1.0,b=-1.0,x=2.0,y=-5.0,r=1.41])Node11[a=1.0,b=-1.0,x=1.0,y=-4.0,r=0.68])Node9[a=-1.0,b=0.0,x=0.0,y=-3.0,r=1.224188604200087])Node6[a=1.0,b=-1.0,x=1.0,y=-3.0,r=0.95])Node4[a=1.0,b=-1.0,x=0.0,y=-2.0,r=0.82])Node2[a=-1.0,b=0.0,x=-1.0,y=-1.0,r=0.53])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.62])Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "    # Draw the tree and get the illuminated coordinates\n",
    "    newick_string = complete_tree_generator4(max_depth = 40, max_numb_children = 2, max_node_radius = 1.2)\n",
    "    number_of_groups = count_groups4(newick_string)\n",
    "    illuminated_coords = draw_tree_newick4(newick_string, title=f\"Morpho-tree with {number_of_groups} nodes\")\n",
    "    print(f\"Illuminated coordinates: {illuminated_coords}\")"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "76buB0jj5n0Q"
   },
   "source": [
    "**Exercise.** Run the previous program, contemplate the output and try to assess whether the depicted tree passes as morpho-tree.\n",
    ">\n",
    "> *Answer.* To the best of our censuring power, the tree passes as a morpho-tree. It is astonishing that the number of intersection lines is low. This is due to the rule of `one cell in its square`. This creates a sensation of order amidst the disorder proper of randomness.\n",
    "\n",
    "Let us implement now the prerequisites of Evolution.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rKMAK5d9oUyf"
   },
   "source": [
    "# BUILDING BLOCKS OF EVOLUTION.\n",
    "\n",
    "Let us implement mutation. The first task is to change the radius of illumination of a given node.\n",
    "\n",
    "**Exercise.** Implement mutation of the radius of cells for Newick strings.\n",
    ">\n",
    "> *Answer.* In a Newick string that encodes for a morpho-tree we select a node and change its radius. The code follows.\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 22,
     "status": "ok",
     "timestamp": 1789401206525,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "UW1JcW9HKlWt",
    "outputId": "4191e0db-ca8e-471c-9f6d-4d84d2199447"
   },
   "source": [
    " # Program radius_mutation_newick_strings.py\n",
    " # This program finds  a random node in a Newick string that encodes for a morpho-tree and change its radius.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "from numpy import array as Array\n",
    "import copy # For deep copying trees during reproduction and mutation\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "import re # Required for newick parsing\n",
    "import itertools # Required for sequential replacement\n",
    "# With the  assistance of Colab\n",
    "\n",
    "def replace_str_subsequence6(original_str, start_idx, end_idx, new_subsequence):\n",
    "    ''' Replace a subsequence of a string with another string.\n",
    "        By Google'''\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "\n",
    "\n",
    "def newick_mutation_of_radius6(newick_string):\n",
    "  # The pattern of the radius of illumination\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  print(f\"number_of_infos = {number_of_infos}\")\n",
    "  print(f\"starts: {starts}\")\n",
    "  print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence6(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "  newick_string = \"(Node3[a=-1.0,b=0.0,x=-1.0,y=0.0,r=0.5],Node2[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.67],(Node5[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95])Node_0[a=0,b=0,x=0,y=0,r=1] \"\n",
    "  print(f\"Newick_string: {newick_string}\")\n",
    "  mutated_newick_string =  newick_mutation_of_radius6(newick_string)\n",
    "  # Comparison\n",
    "  print(f\"Original Newick string: {newick_string}\")\n",
    "  print(f\"Mutated  Newick_string: {mutated_newick_string}\")"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ehgNhGwyhklc"
   },
   "source": [
    "**Observation.** The mutation procedure that changes the radius of illumination works well.\n",
    "\n",
    "**Criticism.** To enable Evolution with a mutation that only changes the radius of illumination converts it in a lame process. The reason is the following: mutation to be perfect must connect every state with every possible state, here every string with every possible string. But the mutation of radius cannot change the architecture of a tree, so trees with other architectures are inaccessible, and Evolution would fail to chase a random target. One might think that recombination could heal this deficiency. That is false because recombination can only mix what is already at hand. Recombination creates nothing new, and hence, very large population sizes would be needed to get acceptable outputs.\n",
    ">\n",
    "> *Answer.* The criticism is right.\n",
    "\n",
    "**Exercise.** Implement mutation of architecture of Newick morpho-trees.Is this type of mutation evolvable? In this case, evolvability means to make the mutation of architecture compatible with the occupation rule that says that one square must be occupied by only one cell, and that the tree remains as a whole.\n",
    ">\n",
    "> *Answer.* To have a full-fledged Evolution, it is enough to enable mutation with change of radius, insertion of a node and deletion of a node.  Our expectancy is that random mutation of architecture will produce most surely unviable products because the occupation rule would be violated. Or, to see that Evolution walks, very large populations must be used. This would trigger high cost in memory and computing time. Deletion of a node is always evolvable. But insertion is not. To avoid problems, we execute a proposed insertion of a node in the only case when the target square is void.\n",
    ">\n",
    "> Our code to delete a node follows:\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 51,
     "status": "ok",
     "timestamp": 1789490802735,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "V9I5Ayz8BsJe",
    "outputId": "da307a12-7a81-41ed-8e5c-b2a4a58fa350"
   },
   "source": [
    " # Program group_deletion_newick_strings.py\n",
    " # To include the insertion and deletion of nodes as part of mutation\n",
    " # is enough to change the architecture.\n",
    " # The problem is that if a node with children is deleted,\n",
    " # the children would get orphan, and the form tore apart.\n",
    " # So, the deletion of a father is accompanied by that of the children,\n",
    "\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "from numpy import array as Array\n",
    "import copy # For deep copying trees during reproduction and mutation\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "import re # Required for newick parsing\n",
    "import itertools # Required for sequential replacement\n",
    "# With the  assistance of Colab\n",
    "\n",
    "def replace_str_subsequence7(original_str, start_idx, end_idx, new_subsequence):\n",
    "    ''' Replace a subsequence of a string with another string.\n",
    "        By Google'''\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "\n",
    "def newick_find_all_groups7(newick_string):\n",
    "  ''' All groups are found and one is chosen at random'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def find_branch7(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "def deletion_of_branch7(newick_string ):\n",
    "  group, start =  newick_find_all_groups7(original_newick_string)\n",
    "  print(f\"Group (main): {group}\")\n",
    "  print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = original_newick_string[start-1]\n",
    "  print(f\"char_before: {char_before}\")\n",
    "  newick_string = original_newick_string\n",
    "  if char_before ==  \")\":\n",
    "    print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch7(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  print(f\"Original Newick string: {original_newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  # print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "  original_newick_string = \"(Node3[a=-1.0,b=0.0,x=-1.0,y=0.0,r=0.5],Node2[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.67],(Node5[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95])Node_0[a=0,b=0,x=0,y=0,r=1] \"\n",
    "  print(f\"Original Newick_string: {original_newick_string}\")\n",
    "  group, start =  newick_find_all_groups7(original_newick_string)\n",
    "  final_newick_string = deletion_of_branch7(original_newick_string )\n",
    "  print(f\"Final Newick_string: {final_newick_string}\")\n",
    "\n"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "YVAEvLyFPtdZ"
   },
   "source": [
    "**Observation.** The deletion of a node works well. If a father is deleted, its children also.\n",
    "\n",
    "**Exercise.** Develop the code for the insertion of a leaf into a Newick string.\n",
    ">\n",
    "> *Answer.* The following program detects all possible places that are appropriate for the insertion of leaves inside a Newick string, chooses one of those positions and inserts a leaf. Three modalities are offered. The code follows:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "# Program insertion_of_leaves.py\n",
    "# Three modalities of insertion of leaves.\n",
    "# The code also includes functions for extracting information from the Newick string, \n",
    "# detecting groups, finding neighboring coordinates.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "\n",
    "\n",
    "def extract_info110(group):\n",
    "  '''The info of each group is extracted by tokenizers from the string.'''\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def detect_all_groups110(newick_string):\n",
    "    '''Al substrings that encodes for the info of a node, step from father, center and radius are detected.'''\n",
    "\n",
    "    #print(\"detect_all_groups11(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "    return groups\n",
    "\n",
    "def get_neighboring_coordinates110(cell):\n",
    "  '''Immediate neighboring coordinates of a cell are generated'''\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    "\n",
    "\n",
    "def find_occupied_squares110(newick_string):\n",
    "    '''Detects all the occupied squares in a tree'''\n",
    "    occupied_squares_set = set()\n",
    "    groups = detect_all_groups110(newick_string)\n",
    "    for group in groups:\n",
    "        [a,b,x,y,r] = extract_info110(group)\n",
    "        occupied_squares_set.add((x, y))\n",
    "    return occupied_squares_set\n",
    "\n",
    "def find_father_center110(newick_string, j):\n",
    "  ''' Finds the address of the father of a node at j'''\n",
    "  #print(\"find_father_center11(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups110(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info110(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator110(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  '''For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     The node and father must be neighbors, \n",
    "     and the node must be in an unoccupied square. \n",
    "     The occupied squares are stored in a set.\n",
    "      '''\n",
    "  #print(\"node_info_generator11(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates110(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    #info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "def select_one_insertion_pattern_left_parenthesis_110(newick_string, counter, max_illumination_radius):\n",
    "  ''' All insertion patterns (  are found and one is chosen at random\n",
    "      The new info will be inserted to the right of the parenthesis'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group110: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center110(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares110(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator110(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \"(\" + child_string +  \")\" + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "def select_one_insertion_pattern_comma_110(newick_string, counter, max_illumination_radius):\n",
    "  ''' All  commas are found and one is chosen at random,\n",
    "  the child will be inserted after the comma'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][,]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group110: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center110(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares110(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator110(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+2] + \"(\" + child_string + \")\" + newick_string[start+2:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_parentheses_110(newick_string, counter, max_illumination_radius):\n",
    "  ''' All insertion patterns ]) are found and one is chosen at random\n",
    "      The new info will be inserted between ] and ) as a brother'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][)]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group110: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center110(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares110(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator110(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  child_string = info \n",
    "  print(f\"Child string: {child_string}\")\n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      \n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \",\" + child_string + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def insertion_of_leaf110(newick_string, counter, max_illumination_radius):    #original_newick_string = newick_string\n",
    "    ''' All insertion patterns ]) are found and one is chosen at random\n",
    "        The new info will be inserted between ] and )'''\n",
    "    case = random.choice([1, 2, 3])  # Randomly choose between three insertion methods\n",
    "    match case:\n",
    "        case 1:\n",
    "            newick_string = select_one_insertion_pattern_comma_110(newick_string, counter, max_illumination_radius)\n",
    "        case 2:\n",
    "            newick_string = select_one_insertion_pattern_parentheses_110(newick_string, counter, max_illumination_radius)\n",
    "        case 3:\n",
    "            newick_string = select_one_insertion_pattern_left_parenthesis_110(newick_string, counter, max_illumination_radius)\n",
    "     \n",
    "    return newick_string\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    # Example usage of the functions\n",
    "    #newick_string = \"Node1[a=0.0,b=0.0,x=0.0,y=0.0,r=1.4]\"\n",
    "    #newick_string = \"(Node2[a=-1.0,b=1.0,x=-1.0,y=1.0,r=0.68])Node1[a=0.0,b=0.0,x=0.0,y=0.0,r=1.4]\"\n",
    "    #newick_string = \"(Node2[a=-1.0,b=1.0,x=-1.0,y=1.0,r=0.68],Node3[a=1.0,b=1.0,x=1.0,y=1.0,r=0.68])Node1[a=0.0,b=0.0,x=0.0,y=0.0,r=1.4]\"\n",
    "    original_newick_string = \"(Node2[a=-1.0,b=1.0,x=-1.0,y=1.0,r=0.68],Node3[a=1.0,b=1.0,x=1.0,y=1.0,r=0.68],Node4[a=1.0,b=-1.0,x=1.0,y=-1.0,r=2.18])Node1[a=0.0,b=0.0,x=0.0,y=0.0,r=1.0]\"\n",
    "    #newick_string = \"((((Node31[a=-1.0,b=-1.0,x=-4.0,y=-1.0,r=1.11],Node23[a=-1.0,b=1.0,x=1.0,y=3.0,r=1.0])Node13[a=1.0,b=0.0,x=2.0,y=2.0,r=1.05],Node12[a=-1.0,b=1.0,x=0.0,y=3.0,r=0.77])Node7[a=1.0,b=1.0,x=1.0,y=2.0,r=1.23],((Node22[a=-1.0,b=1.<Paste> x=-3.<Paste> y=3.\n",
    "    #newick_string = \"((((Node3１[a=-１．０,b=-１．０,x=-４．０,y=-１．０,r=１．１１],Node2３[a=-１．０,b=１．０,x=１．０,y=３．０,r=１．０])Node１３[a=１．０,b=０．０,x=２．０,y=２．０,r=１．０５],Node１２[a=-１．０,b=\"\n",
    "   \n",
    "    newick_string = insertion_of_leaf110(original_newick_string, counter=6, max_illumination_radius=3.0)\n",
    "    print(f\"Original Newick string: {original_newick_string}\")\n",
    "    print(f\"After inserting a leaf: {newick_string}\")\n",
    " "
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2026-10-02T13:55:44.075850Z",
     "start_time": "2026-10-02T13:55:44.034434Z"
    }
   },
   "source": [],
   "outputs": [],
   "execution_count": 9
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise.** Develop the code for the insertion of a branch into a Newick string.\n",
    ">\n",
    "> *Answer.* The following program detects all  appropriate places for the insertion of a branch inside a Newick string, chooses one, and inserts a branch. The code follows:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 40,
     "status": "ok",
     "timestamp": 1789491134200,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "xVo5NrGrQR9W",
    "outputId": "f0dc6f5e-9f58-402a-c19d-5cb7a8eaa3ad",
    "ExecuteTime": {
     "end_time": "2026-10-08T16:04:25.200397Z",
     "start_time": "2026-10-08T16:04:25.105828Z"
    }
   },
   "source": [
    " # Program branch_insertion_newick_strings.py\n",
    " # The following program detects all possible places\n",
    " # that are appropriate for the insertion of a branch inside a Newick string,\n",
    " # chooses one of those positions and inserts a branch.\n",
    " # Criterion: all insertion places are marked by the right pair ]).\n",
    " # If no such a marker exists, the string has only one node, the root.\n",
    " # In that case, synthezise a tree and give it as child to the root.\n",
    "\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "from numpy import array as Array\n",
    "import copy # For deep copying trees during reproduction and mutation\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "import re # Required for newick parsing\n",
    "import itertools # Required for sequential replacement\n",
    "# With the  assistance of Colab\n",
    "\n",
    "def replace_str_subsequence8(original_str, start_idx, end_idx, new_subsequence):\n",
    "    ''' Replace a subsequence of a string with another string.\n",
    "        By Google'''\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "\n",
    "def newick_find_all_groups8(newick_string):\n",
    "  ''' All groups are found and one is chosen at random'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  #info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    print(f\"group: {group}\")\n",
    "    print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    "\n",
    "def insertion_of_branch8(newick_string, child_string):\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_all_groups8(original_newick_string)\n",
    "  newick_string = original_newick_string\n",
    "  # String to be inserted\n",
    "  child_string = \"(Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  if group:\n",
    "    print(f\"Group (main): {group}\")\n",
    "    print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    char_before = original_newick_string[start-1]\n",
    "    print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  print(f\"Original Newick string: {original_newick_string}\")\n",
    "  print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "  #original_newick_string = \"(Node3[a=-1.0,b=0.0,x=-1.0,y=0.0,r=0.5],Node2[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.67],(Node5[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95])Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  original_newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Original Newick_string: {original_newick_string}\")\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_all_groups8(original_newick_string)\n",
    "  newick_string = original_newick_string\n",
    "  # String to be inserted\n",
    "  child_string = \"(Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  newick_string = insertion_of_branch8(newick_string, child_string)\n",
    "  print(f\"Final Newick_string: {newick_string}\")\n",
    "\n",
    "\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original Newick string: Node_0[a=0,b=0,x=0,y=0,r=1]\n",
      "Final Newick_string: ((Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95])Node_0[a=0,b=0,x=0,y=0,r=1]\n",
      "Final Newick_string: ((Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95])Node_0[a=0,b=0,x=0,y=0,r=1]\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "exboT3lV1d2H"
   },
   "source": [
    "**Observation.** The program inserts a complex item into a former tree.\n",
    "\n",
    "**Protest.** The double occupation problem was not revised.\n",
    ">\n",
    "> *Answer.* Right, we will do that when programming Evolution.\n",
    "\n",
    "**Exercise.** Develop the code for recombination. Do you see a future for this operation?\n",
    ">\n",
    "> *Answer.* Recombination is expected to be very traumatic because of multiple instances of the double occupation problem, and of fragmentation of recombinants. So, we see no future for this operation. Anyway, to program the interchange of branches in Newick Strings is rather simple. The code follows:\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 14,
     "status": "ok",
     "timestamp": 1789477137068,
     "user": {
      "displayName": "jose rodriguez",
      "userId": "08454562216435392883"
     },
     "user_tz": 300
    },
    "id": "G3LMAooCBEyf",
    "outputId": "350112eb-954e-4147-d5cb-413c315eca41"
   },
   "source": [
    "# Program newick_strings_recombination.py\n",
    "# We hint recombination with the capability of\n",
    "# recombining full-functional branches and\n",
    "# use small to moderate population sizes.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "from numpy import array as Array\n",
    "import copy # For deep copying trees during reproduction and mutation\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "import re # Required for newick parsing\n",
    "import itertools # Required for sequential replacement\n",
    "# With the  assistance of Colab\n",
    "\n",
    "\n",
    "def find_branch9(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  print(\"\\nfind_branch\")\n",
    "  print(f\"newick_string: {newick_string}\")\n",
    "  pattern_right_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_right_par, newick_string):\n",
    "      print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  print(f\"number_of_infos = {number_of_infos}\")\n",
    "  print(f\"starts: {starts}\")\n",
    "  print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "def newick_position_recombination9(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  print(\"\\nnewick_recombination14\")\n",
    "  print(f\"newick_string1: {newick_string1}\")\n",
    "  print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_branch9(newick_string1)\n",
    "  branch2 = find_branch9(newick_string2)\n",
    "  print(f\"\\nbranch1: {branch1}\")\n",
    "  print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "\n",
    "  newick_string1 = \"(Node3[a=-1.0,b=0.0,x=-1.0,y=0.0,r=0.5],Node2[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.67],(Node5[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95])Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  newick_string2  = \"(Node12[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node11[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node10[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "\n",
    "  #newick_string1 = \"(((Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20],Node5[x=19,y=15,r=10],(Node4[x=15,y=14,r=1])Node3[x=11,y=13,r=19],Node2[x=18,y=17,r=11])Node1[x=16,y=1,r=12])Node0[x=10,y=4,r=1]\"\n",
    "  #print(f\"Initial newick_string1: {newick_string1}\")\n",
    "  #newick_string2 = \"((Node2[x=18,y=17,r=11])Node1[x=16,y=1,r=12])Node0[x=10,y=4,r=1]\"\n",
    "  #print(f\"Initial newick_string2: {newick_string2}\")\n",
    "  #draw_newick_string14(newick_string1)\n",
    "  #draw_newick_string14(newick_string2)\n",
    "  print(\"Recombination\")\n",
    "  newick_recombinant1, newick_recombinant2 = newick_position_recombination9(newick_string1, newick_string2)\n",
    "  print(f\"newick_recombinant1: {newick_recombinant1}\")\n",
    "  print(f\"newick_recombinant2: {newick_recombinant2}\")\n",
    "  print(\"Done\")\n",
    "\n",
    "  #print(f\"\\nfinal newick_string1: {newick_string1}\")\n",
    "  #print(f\"final newick_string2: {newick_string2}\")\n",
    "  #draw_newick_string14(newick_string1)\n",
    "  #draw_newick_string14(newick_string2)\n",
    "  #print(\"Done\")\n"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8G-hK8OGKNXM"
   },
   "source": [
    "*Observation.* The code is simpler than expected.\n",
    "\n",
    "It might be good to burn another option for recombination.\n",
    "\n",
    "**Challenge.** With the hope of diminishing the damage caused by cross-over, recombine not position but the instructions for children to step from the father associated to each node. Accept only those moves that are not problematic."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "d7AK_dHGPU4B",
    "ExecuteTime": {
     "end_time": "2026-10-02T13:55:44.254732Z",
     "start_time": "2026-10-02T13:55:44.242910Z"
    }
   },
   "source": [],
   "outputs": [],
   "execution_count": 11
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lSbwgatTPVrp"
   },
   "source": [
    "## Fitness evaluation\n",
    "\n",
    "**Exercise.** Develop the code to assess the fitness or performance of a Newick morpho-tree. The procedure is the following: a target tree is defined and its illuminated area determined and marked, it is the target illuminated area. To assess the fitness of a morpho-tree, the corresponding illuminated area is determined and then compared with the target illuminated area. The number of cells in the symmetric difference of those areas is the error, from which the fitness is calculated. When the error is zero, that means perfection, the fitness is one, and when the error is infinite, the fitness is zero.\n",
    ">\n",
    "> *Answer.* The code to assess the fitness of a Newick morpho-tree follows is the same that we used in the previous contribution with the Node class. Thus, we paste it directly over the programs below that simulate Evolution.\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "XPlyvyUjPn-9",
    "ExecuteTime": {
     "end_time": "2026-10-02T13:55:44.265018Z",
     "start_time": "2026-10-02T13:55:44.258820Z"
    }
   },
   "source": [],
   "outputs": [],
   "execution_count": 11
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FK2lcAAPPolV"
   },
   "source": [
    "# EVOLUTION OF NEWICK MORPHO-TREES\n",
    "\n",
    "We go step by step. Our purpose for the first attempt is just to see that Evolution works, that the fitness functions grows with time. Thus, we do not care for the rule that father and children must be neighbors, nor that two cells cannot occupy the same square, nor that trees end in dispersed pieces.\n",
    "\n",
    "**Exercise.** Develop the code for the Evolution of Newick morpho-trees.\n",
    ">\n",
    "> *Answer.* The following is the code for our first attempt of simulating the Evolution of morpho-trees in Newick Notation. "
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2026-10-02T18:50:46.628942Z",
     "start_time": "2026-10-02T18:46:32.752350Z"
    }
   },
   "source": [
    "# Program evolution_of_newick_morphological_trees_basic.py\n",
    "# Morphological trees considered here are like lighting trees:\n",
    "# an electrical thread in the form of tree covers an area\n",
    "# and there is lamp at each node.\n",
    "# Each lamp has a given power and a circle of illumination,\n",
    "# whose radius is determined by a threshold intensity.\n",
    "# In morphology, this corresponds with a threshold concentration of a messenger.\n",
    "# Evolution is given the task of illuminating\n",
    "# the area determined by a random target tree.\n",
    "# Trees are encoded in Newick Notation and\n",
    "# everything is done over the correspond strings\n",
    "# without resorting to the Node class.\n",
    "# Thus, it is possible to use the Newick strings as a genotype and\n",
    "# the corresponding trees as a phenotype.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "# trace memory allocation \n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc \n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False \n",
    "\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start() \n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 7,\n",
    "  'max_number_children': 3,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "  'seed': 12345,  \n",
    "  'pop_size': 200,\n",
    "  'generations': 30,\n",
    "  'max_depth': 8,\n",
    "  'max_number_children': 3,\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001,#size of trees overgrows\n",
    "  'crossover_rate': 0.001 #size of trees overgrows\n",
    "}\n",
    "\n",
    "# This is an upper bound to the number of nodes in a tree, \n",
    "# which is used to limit the size of the trees during Evolution.\n",
    "max_number_of_groups =  ga_params['max_depth'] * ga_params['max_number_children']/2 # This is an upper bound to the number of nodes in a tree, which is used to limit the size of the trees during Evolution.\n",
    "inhibit_insertion_of_branches = False # If True, the insertion of branches is inhibited during mutation\n",
    "\n",
    "\n",
    "def print_parameters10(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES-BASIC\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=14.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence10(original_str, start_idx, end_idx, new_subsequence):\n",
    "    ''' Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google'''\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length10(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups10(newick_string):\n",
    "    '''Al substrings that encodes for the info of a node, step from father, center and radius are detected.'''\n",
    "\n",
    "    #print(\"detect_all_groups10(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    '''\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        '''\n",
    "    return groups\n",
    "\n",
    "def extract_info10(group):\n",
    "  '''The info of each group is extracted by tokenizers from the string.'''\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates10(cell):\n",
    "  '''Immediate neighboring coordinates of a cell are generated'''\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def find_father_center10(newick_string, j):\n",
    "  ''' Finds the address of the father of a node at j'''\n",
    "  #print(\"find_father_center10(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups10(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info10(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator10(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  '''For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      '''\n",
    "  #print(\"node_info_generator10(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates10(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children10(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  ''' Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n '''\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator10(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator10(max_depth, max_numb_children, max_node_radius):\n",
    "  ''' A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.'''\n",
    "  #print(\"complete_tree_generator10(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = random.randint(0, max_depth) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion. \n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center10(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children10(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence10(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# === VALIDATOR ====\n",
    "\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# With the help of Gemini and Google.\n",
    "\n",
    "\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- NodeB_3_x_2[a=1,b=0,x=4,y=5,r=1.2]\n",
    "# --- where a nad b are -1,0,1 except (0,0)\n",
    "# --- because they represent a step awya from the father.\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick10(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=1,b=-1,x=2,y=4,r=3.2], 22 tokens\n",
    "def examine_subsequence10(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 14][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 15][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 16][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 17][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 18][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 19][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 20][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 21][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"Tokens: {tracker}\")\n",
    "    print(f\"tracker2: {tracker2}\")\n",
    "    master_pattern = \"7375627562756275627564\"\n",
    "                    # 7375627562756275627564\n",
    "    #print(f\"master pattern:  {master_pattern}\")\n",
    "    if tracker2 == master_pattern:\n",
    "        return True, \"Valid Newick sub-string.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string.\"\n",
    "\n",
    "\n",
    "def simplify10(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    # print(\"\\nsimplify(text)\")\n",
    "    # print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,x=3,y=7,r=2.3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_strig_of_length10(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    # print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        #print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        #print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "\n",
    "def validate_newick_syntax10(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    #print(\"Validating Newick syntax\")\n",
    "    tokens = []\n",
    "    try:\n",
    "        tokens = tokenize_newick10(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    l = len(tokens)\n",
    "    #print(f\"Length of tokens: {l}\")\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 22: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 22:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-20):\n",
    "            #print(f\"tokens[{j}]: {tokens[j]}\")\n",
    "            #print(f\"tokens[{j+1}]: {tokens[j+1]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid10, message10 = examine_subsequence10(tokens, j)\n",
    "                if is_valid10:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid10, message10 = simplify10(newick_str)\n",
    "    if is_valid10:\n",
    "        return True, \"Valid morpho-tree.\"\n",
    "    else:\n",
    "        return False, \"Invalid morpho-tree.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "def test_validator10(max_depth, max_numb_children, max_node_radius):\n",
    "    # Specific test\n",
    "    model = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]\"\n",
    "    #print(\"Simple test\")\n",
    "    #print(f\"Model of Newick String: {model}\")\n",
    "    is_valid, message = validate_newick_syntax10(model)\n",
    "    #print(f\"message: {message}\")\n",
    "    invalid_string = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]]\"\n",
    "    #print(f\"\\nInvalid_string: {invalid_string}\")\n",
    "    is_valid, message = validate_newick_syntax10(invalid_string)\n",
    "    #print(f\"message: {message}\")\n",
    "    #print(\"\\n\")\n",
    "\n",
    "\n",
    "    #print(\"\\nMassive test of Newick formulas encoding for morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 3\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        p, s = complete_tree_generator10(max_depth, max_numb_children, max_node_radius)\n",
    "        #print(f\"pattern {p}\")\n",
    "        #print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax10(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        #print(f\"Morpho-tree {i}:: {status} - {message}\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# ======== DRAWING ================\n",
    "\n",
    "def get_illuminated_area10(x,y,r):\n",
    "    '''\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    '''\n",
    "    #print(\"get_illuminated_area10\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick10(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles10(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "\n",
    "def connect_leaves_to_father10(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    '''Draw lines connecting leaves to father'''\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father10\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    #number_of_bouquets = len(bouquets_of_leaves)\n",
    "    #print(f\"number_of_bouquets = {number_of_bouquets}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        #print(f\"\\nbouquet_of_leaves1: {bouquet_of_leaves}\")\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        #print(f\"\\nbouquet_of_leaves2: {bouquet_of_leaves}\")\n",
    "        #Bouquet could be composed of various leaves.\n",
    "        leaves = detect_all_groups10(bouquet_of_leaves)\n",
    "\n",
    "        #print(f\"\\nLeaves: {leaves}\")\n",
    "        #number_of_leaves = len(leaves)\n",
    "        #print(f\"number_of_leaves = {number_of_leaves}\")\n",
    "        centers_leaves = []\n",
    "        father_group = []\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          #print(f\"\\nloaf: {loaf}\")\n",
    "          all_leaves.append(loaf)\n",
    "          [al,bl,xl,yl,rl] = extract_info10(loaf)\n",
    "          #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "          centers_leaves.append((xl,yl))\n",
    "\n",
    "          # Find the father of the bouquet of leaves.\n",
    "          # It is the node after the last leaf\n",
    "          # Example:\n",
    "          # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "          # The father of Node9, Node8, and Node7 is Node 6:\n",
    "\n",
    "          # We find the index of the last leaf in newick_string\n",
    "          # Find the last loaf in bouquet\n",
    "          last_leaf = leaves[-1]\n",
    "          # last_leaf = last_leaf.replace(\" \", \"\")\n",
    "          #print(f\"\\nlast_leaf: {last_leaf}\")\n",
    "          index_last_leaf = newick_string.find(last_leaf)\n",
    "          #print(f\"index_last_leaf: {index_last_leaf}\")\n",
    "          length_of_last_leaf = len(last_leaf)\n",
    "          #print(f\"length_of_last_leaf: {length_of_last_leaf}\")\n",
    "          #Find the father of the leaves. It is the node after the last brother\n",
    "          father_with_tail = newick_string[index_last_leaf+ length_of_last_leaf:]\n",
    "          #print(f\"Father with tail: {father_with_tail}\")\n",
    "          father_group = detect_all_groups10(father_with_tail)\n",
    "        if father_group:\n",
    "          #print(f\"Father_group: {father_group}\")\n",
    "          [al,bl,xl,yl,rl]  = extract_info10(father_group[0])\n",
    "          #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "          father_center = (xl,yl)\n",
    "          #print(f\"father_center: {father_center}\")\n",
    "          # Draw a line from each center in centers_leaves to father_center\n",
    "          for center_leaf in centers_leaves:\n",
    "            ax.plot([center_leaf[0] + 0.5, father_center[0] + 0.5], [center_leaf[1] + 0.5, father_center[1] + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    is_valid, message = validate_newick_syntax10(newick_string)\n",
    "    #print(f\"is valid at connect_leaves_to_father10(...) : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    groups = detect_all_groups10(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "def connect_children_to_father10(newick_string, ax,   diff_color='red' ):\n",
    "    '''Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       '''\n",
    "\n",
    "    #print(\"connect_children_to_father10\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups10(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\nconnect_children_to_father10\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father10(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups10(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info10(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "def extract_all_infos10(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups10(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info10(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick10(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos10(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 15))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles10(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "\n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area10(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick10(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    connect_children_to_father10(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree, test and draw it\n",
    "# def generate_test_and_draw_morpho_tree(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] ):\n",
    "def generate_and_test_morpho_tree10(target_tree_params, ga_params):\n",
    "    #tree_info_generator10(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "    # Parameters for the target tree generation\n",
    "\n",
    "\n",
    "    max_depth = max_depth=ga_params['max_depth'] #20 # MAximal number of cell divisions along each branch\n",
    "    max_numb_children = ga_params['max_number_children']\n",
    "    max_node_radius = ga_params['max_node_radius']  # MAximal radius of illuminated circle\n",
    "\n",
    "    # test_validator(max_depth, max_numb_children, max_node_radius)\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children}\")\n",
    "    #print(f\"max_node_radius: {max_node_radius} \\n\"+ \"=\"*20)\n",
    "\n",
    "    my_seed = 243 # For reproducibility\n",
    "    #print(f\"Seed: {my_seed}\")\n",
    "    random.seed(my_seed)\n",
    "    newick_tree = complete_tree_generator10(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    is_valid, message = validate_newick_syntax10(newick_tree)\n",
    "    illuminated_coords = set()\n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos10(newick_tree)\n",
    "        illuminated_coords = get_illuminated_area10(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "    #is_valid, message = validate_newick_syntax10(newick_tree)\n",
    "    #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    return newick_tree, illuminated_coords\n",
    "\n",
    "\n",
    "# --- Evolutionary functions ---\n",
    "\n",
    "def create_initial_population_newick10(pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],  max_node_radius=ga_params['max_node_radius'] ):\n",
    "    population = []\n",
    "    for _ in range(pop_size):\n",
    "        new_tree = complete_tree_generator10(max_depth, max_children, max_node_radius)\n",
    "        population.append(new_tree)\n",
    "    return population\n",
    "\n",
    "\n",
    "def get_illuminated_coordinates10(newick_string):\n",
    "  '''Coordinates of illuminated cells are extracted from the Newick string'''\n",
    "  a,b,x,y,r = extract_all_infos10(newick_string)\n",
    "  # Illuminated area is calculated\n",
    "  illuminated_coords = get_illuminated_area10(x,y,r)\n",
    "  ##print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "  ##print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "  return illuminated_coords\n",
    "\n",
    "\n",
    "\n",
    "def calculate_fitness_illumination10(candidate_tree_root, target_illuminated_area):\n",
    "    \"\"\"\n",
    "    Calculates fitness based on the symmetric difference between illuminated areas.\n",
    "    Fitness is 1.0 for a perfect match, and decreases as symmetric difference increases.\n",
    "    Reuse of a previous code by Gemini 2.5 Flash\n",
    "    \"\"\"\n",
    "    if candidate_tree_root is None:\n",
    "        # If the tree generation failed, assign a very low fitness\n",
    "        return 0.0001 # A small non-zero value to avoid division by zero issues later\n",
    "\n",
    "    candidate_illuminated_area = get_illuminated_coordinates10(candidate_tree_root)\n",
    "\n",
    "    # Symmetric difference: (A U B) - (A intersect B)\n",
    "    # Or, the elements in A but not B, plus elements in B but not A.\n",
    "    symmetric_difference = candidate_illuminated_area.symmetric_difference(target_illuminated_area)\n",
    "\n",
    "    # Union size: used for normalization\n",
    "    union_size = len(candidate_illuminated_area.union(target_illuminated_area))\n",
    "\n",
    "    if union_size == 0:\n",
    "        if not target_illuminated_area and not candidate_illuminated_area:\n",
    "            return 1.0 # Perfect match if both are empty\n",
    "        else:\n",
    "            return 0.0001 # Should not happen if target is non-empty, but handles cases where both are empty but expected non-empty\n",
    "\n",
    "    # Fitness is 1.0 - (len(symmetric_difference) / union_size)\n",
    "    # This gives 1.0 for a perfect match (symmetric_difference_area = 0)\n",
    "    # and approaches 0.0 for large differences.\n",
    "    fitness = 1.0 - (len(symmetric_difference) / union_size)\n",
    "    return max(0.0001, fitness) # Ensure fitness is always positive\n",
    "\n",
    "\n",
    "def select_parents_newick(population, fitness_scores, num_parents):\n",
    "    parents = []\n",
    "    # Use roulette wheel selection or tournament selection. Tournament is generally robust.\n",
    "    for _ in range(num_parents):\n",
    "        tournament_size = min(5, len(population))\n",
    "        if tournament_size == 0:\n",
    "            break\n",
    "        tournament_candidates = random.sample(list(zip(population, fitness_scores)), tournament_size)\n",
    "        winner = max(tournament_candidates, key=lambda x: x[1])[0]\n",
    "        parents.append(winner)\n",
    "    return parents\n",
    "\n",
    "def find_recombinant_branch10(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  #print(\"\\nfind_branch\")\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  pattern_right_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_right_par, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  #print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  #print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      #print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "def newick_position_recombination10(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_recombination14\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_recombinant_branch10(newick_string1)\n",
    "  branch2 = find_recombinant_branch10(newick_string2)\n",
    "  #print(f\"\\nbranch1: {branch1}\")\n",
    "  #print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "def newick_mutation_of_radius10(newick_string):\n",
    "  # The pattern of the radius of illumination, r = 0.2\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  #print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  #print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  #print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence10(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    "\n",
    "def newick_find_insertion_patterns10(newick_string):\n",
    "  ''' All insertion patterns are found and one is chosen at random'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    "\n",
    "def insertion_of_branch10(newick_string, child_string):\n",
    "  #original_newick_string = newick_string\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_insertion_patterns10(newick_string)\n",
    "  # String to be inserted\n",
    "  # child_string = \"(Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  child_string = complete_tree_generator10(max_depth = 2, max_numb_children = 2, max_node_radius= 1.5)\n",
    "  if group:\n",
    "    #print(f\"Group (main): {group}\")\n",
    "    #print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    #char_before = newick_string[start-1]\n",
    "    #print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {original_newick_string}\")\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def newick_find_all_groups10(newick_string):\n",
    "  ''' All groups are found and one is chosen at random and returned'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  number_of_groups = len(groups)\n",
    "  if number_of_groups > max_number_of_groups:\n",
    "    inhibit_insertion_of_branches = True\n",
    "  else:\n",
    "    inhibit_insertion_of_branches = False\n",
    "  \n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "  \n",
    "\n",
    "\n",
    "def find_branch10(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "def deletion_of_branch10(newick_string ):\n",
    "  group, start =  newick_find_all_groups10(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch10(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "\n",
    "def newick_mutation10(newick_string):\n",
    "  # Mutation of radius of illumination\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    newick_string = newick_mutation_of_radius10(newick_string)\n",
    "    if inhibit_insertion_of_branches == False:\n",
    "        newick_string = insertion_of_branch10(newick_string, newick_string)\n",
    "    newick_string = deletion_of_branch10(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "def plot_illuminated_area10(ax, illuminated_coords, title, color='blue', alpha=0.5):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "# --- MAIN EVOLUTIONARY SIMULATION LOOP ---\n",
    "\n",
    "def run_evolution_newick_morpho_trees10(target_tree_params, ga_params):\n",
    "    # A previous code by Gemini was reused.\n",
    "\n",
    "    # 1. Generate Target Tree and its Illuminated Area\n",
    "    #print(\"\\n--- Generating Target Tree ---\")\n",
    "    random.seed(ga_params['seed'] + 1) # Use a different seed for target generation\n",
    "    target_tree, target_illuminated_area =  generate_and_test_morpho_tree10(target_tree_params, ga_params)\n",
    "    #print(f\"target_tree: {target_tree} \\n\\n\")\n",
    "    #draw_newick_string10(target_tree, \"Target Tree\")\n",
    "    # target_area = get_illuminated_coordinates10(target_tree)\n",
    "    #print(f\"Target illuminated area: {target_illuminated_area}\")\n",
    "\n",
    "    # 2. Initialize Population\n",
    "    random.seed(ga_params['seed']) # Reset seed for GA population generation\n",
    "    #print(f\"\\n--- Initializing Population of {ga_params['pop_size']} Trees ---\")\n",
    "    population = create_initial_population_newick10(\n",
    "        pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],\n",
    "        max_node_radius=ga_params['max_node_radius']  )\n",
    "    #print(f\"Population initialized with {len(population)} individuals.\")\n",
    "    #print(f\"Population: {population}\")\n",
    "\n",
    "\n",
    "\n",
    "    best_tree_overall = None\n",
    "    best_fitness_overall = -1.0\n",
    "    history = []\n",
    "\n",
    "    # 3. Evolutionary Loop\n",
    "    #print(f\"\\n--- Starting Evolutionary Loop for {ga_params['generations']} Generations ---\")\n",
    "    for generation in range(ga_params['generations']):\n",
    "        print(f\"\\n--- Generation {generation+1}/{ga_params['generations']}, Best fitness {round(best_fitness_overall, 5)} ---\")\n",
    "        fitness_scores = [calculate_fitness_illumination10(tree, target_illuminated_area)for tree in population]\n",
    "\n",
    "        current_best_fitness = max(fitness_scores)\n",
    "        current_best_tree = population[np.argmax(fitness_scores)]\n",
    "\n",
    "        if current_best_fitness > best_fitness_overall:\n",
    "            best_fitness_overall = current_best_fitness\n",
    "            best_tree_overall = copy.deepcopy(current_best_tree) # Deepcopy to save the best tree\n",
    "\n",
    "        history.append(current_best_fitness)\n",
    "\n",
    "        #print(f\"Generation {generation+1}/{ga_params['generations']}: Best Fitness = {current_best_fitness:.4f} (Overall Best: {best_fitness_overall:.4f})\")\n",
    "\n",
    "        if best_fitness_overall >= 0.999: # Almost perfect match\n",
    "            #print(\"Target illumination achieved (or very close)! Stopping evolution.\")\n",
    "            return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history\n",
    "\n",
    "        # Selection\n",
    "        parents = select_parents_newick(population, fitness_scores, ga_params['pop_size'] // 2)\n",
    "\n",
    "        # Create next generation\n",
    "        next_population = []\n",
    "        # Elitism: Keep the best individual from the current generation\n",
    "        if best_tree_overall and current_best_fitness == best_fitness_overall: # Only if it's the current best in this generation\n",
    "            next_population.append(copy.deepcopy(current_best_tree))\n",
    "\n",
    "        while len(next_population) < ga_params['pop_size']:\n",
    "            if len(parents) < 2: # Not enough parents for crossover, fill with new random trees\n",
    "                new_tree =  complete_tree_generator10(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "                if new_tree:\n",
    "                    next_population.append(new_tree)\n",
    "                continue\n",
    "\n",
    "            # Randomly pick two parents (can be the same parent multiple times with replacement for simplicity)\n",
    "            p1 = random.choice(parents)\n",
    "            p2 = random.choice(parents)\n",
    "\n",
    "            # Crossover newick_position_recombination10\n",
    "            child1, child2 = newick_position_recombination10(p1, p2)\n",
    "\n",
    "            # Mutation: Apply mutation to both children\n",
    "            mutated_child1 = newick_mutation10(child1)\n",
    "            mutated_child2 = newick_mutation10(child2)\n",
    "\n",
    "            next_population.append(mutated_child1)\n",
    "            if len(next_population) < ga_params['pop_size']:\n",
    "                next_population.append(mutated_child2)\n",
    "\n",
    "        population = next_population[:ga_params['pop_size']]\n",
    "\n",
    "    #print(\"\\n--- Evolution Finished ---\")\n",
    "    #print(f\"Final Best Fitness: {best_fitness_overall:.4f}\")\n",
    "\n",
    "    return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree and draw it\n",
    "if __name__ == \"__main__\":\n",
    "    #generate_test_and_draw_morpho_tree()\n",
    "    print_parameters10(target_tree_params, ga_params)\n",
    "    # Run the evolution loop\n",
    "    target_tree, target_illuminated_area, evolved_best_tree, evolved_best_fitness, history = run_evolution_newick_morpho_trees10(target_tree_params, ga_params)\n",
    "    \n",
    "    title = \"Target Tree\"\n",
    "    draw_tree_newick10(target_tree, title)\n",
    "    title = \"Evolved Best Tree\"\n",
    "    draw_tree_newick10(evolved_best_tree, title)\n",
    "\n",
    "    # Plot Symmetric Difference Area\n",
    "    evolved_best_area = get_illuminated_coordinates10(evolved_best_tree)\n",
    "    symmetric_diff_area = target_illuminated_area.symmetric_difference(evolved_best_area )\n",
    "    ##print(f\"Symmetric Difference Area: {symmetric_diff_area}\")\n",
    "    ##print(f\"Number of cells in symmetric difference area: {len(symmetric_diff_area)}\")\n",
    "\n",
    "\n",
    "    fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "\n",
    "    plot_illuminated_area10(axes[0], target_illuminated_area, title=f\"Target Area (number of cells: {len(target_illuminated_area)})\")\n",
    "    plot_illuminated_area10(axes[1], evolved_best_area, title=f\"Evolved Best Area (number of cells: {len(evolved_best_area)})\")\n",
    "    plot_illuminated_area10(axes[2], symmetric_diff_area, title=f\"Symmetric Difference (Error Area: {len(symmetric_diff_area)})\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "    # Plot Fitness History\n",
    "    plt.figure(figsize=(10, 6))\n",
    "    plt.plot(history, marker='o', linestyle='-', color='blue')\n",
    "    plt.title('Best Fitness Progression Over Generations')\n",
    "    plt.xlabel('Generation')\n",
    "    plt.ylabel('Fitness')\n",
    "    plt.grid(True)\n",
    "    plt.show()\n",
    "\n",
    "    print(f\"Evolved best tree: {evolved_best_tree}\")\n",
    "    print(f\"Evolved best fitness: {evolved_best_fitness:.2}\")\n",
    "\n",
    "    end_time = time.time()\n",
    "    Execution_time = end_time - start_time\n",
    "    # print(f\"Execution time: {Execution_time:.2f} seconds\")\n",
    "    # Execution time in hours, minutes and seconds:\n",
    "    hours = int(Execution_time // 3600)\n",
    "    minutes = int((Execution_time % 3600) // 60)\n",
    "    seconds = int(Execution_time % 60)\n",
    "    print(f\"Execution time: {hours} hours, {minutes} minutes, {seconds} seconds\")\n",
    "    if memory_monitoring:\n",
    "        # displaying the allocated memory\n",
    "        print(tracemalloc.get_traced_memory())\n",
    "        # stopping the memory allocation library\n",
    "        tracemalloc.stop()\n",
    "    \n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LAB: EVOLUTION OF NEWICK MORPHO-TREES-BASIC\n",
      "PURPOSE: \n",
      " A random morpho-tree T is generated.\n",
      " Evolution tries to restore the tree T\n",
      " beginning from a population of random trees.\n",
      "EXPERIMENT 1790966792.834267\n",
      "TARGET TREE PARAMETERS: {'max_depth': 7, 'max_number_children': 3, 'max_node_radius': 1.5}\n",
      "GENETIC ALGORITHM PARAMETERS: {'seed': 12345, 'pop_size': 200, 'generations': 30, 'max_depth': 8, 'max_number_children': 3, 'max_node_radius': 1.5, 'mutation_rate': 0.001, 'crossover_rate': 0.001}\n",
      "\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "\n",
      "--- Generation 1/30, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 2/30, Best fitness 0.78632 ---\n",
      "\n",
      "--- Generation 3/30, Best fitness 0.81731 ---\n",
      "\n",
      "--- Generation 4/30, Best fitness 0.83962 ---\n",
      "\n",
      "--- Generation 5/30, Best fitness 0.86667 ---\n",
      "\n",
      "--- Generation 6/30, Best fitness 0.89623 ---\n",
      "\n",
      "--- Generation 7/30, Best fitness 0.91509 ---\n",
      "\n",
      "--- Generation 8/30, Best fitness 0.93458 ---\n",
      "\n",
      "--- Generation 9/30, Best fitness 0.95192 ---\n",
      "\n",
      "--- Generation 10/30, Best fitness 0.95192 ---\n",
      "\n",
      "--- Generation 11/30, Best fitness 0.96154 ---\n",
      "\n",
      "--- Generation 12/30, Best fitness 0.96154 ---\n",
      "\n",
      "--- Generation 13/30, Best fitness 0.96154 ---\n",
      "\n",
      "--- Generation 14/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 15/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 16/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 17/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 18/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 19/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 20/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 21/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 22/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 23/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 24/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 25/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 26/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 27/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 28/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 29/30, Best fitness 0.97087 ---\n",
      "\n",
      "--- Generation 30/30, Best fitness 0.97087 ---\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 700x1500 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n",
      "tracker2: 7375627562756275627564\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 700x1500 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1500x500 with 3 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAICCAYAAAAgWIQFAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAooZJREFUeJzs3Qd0FFUXwPFLC4SEEnpVCQSpSuioSBEBKdKkKwhI74QiIiBFKdKkSJfeQXrvRZoLAUIAqSLSOwQCIcB33sPdL5tkQwLszib7/50zh+xkdt6btzMbvXPnvngZM2V5LgAAAAAAAAAAIIL4EVcBAAAAAAAAAACC6AAAAAAAAAAARIFMdAAAAAAAAAAAbCCIDgAAAAAAAACADQTRAQAAAAAAAACwgSA6AAAAAAAAAAA2EEQHAAAAAAAAAMAGgugAAAAAAAAAANhAEB0AAMCJ5cmTW7Jle8eQtnPkyCHvvvuuIW3D2nvvvSepU6eOFcPi6ekpBQv66n9jiwQJEsg777wjvr4FJGPGDHZvz93dXY9RihQpolwXF6nzWJ3PAAAAsQlBdAAAgJfImTOnDm7ZWuLFi2e3MZww/lfp2fNbQz6jHwf2l1EjR8R4fFSALH369A7pY768eXXw81W8/fbbur9eXinFmZUuXVqWLV0ibm6JJDZQgehVK1fof2ODvHnzyB+7dsiihfOlf/9+UqZ0abu36ePjo8eoRPHiUa6zp+TJk+vPKHt275duq64Rda1lyJDhtfebOLGbPp/VeQ0AABBbJDS6AwAAAM5u+PCfdQDpaGBgpL+vXbuuPHr0SFxV+PFJlDChDlDfuXNHhg4dJkuXLbNb21OnTpaDB/2ldZu2MX7v/HlzdD9nzpol3377nTgjdYPmh769Ze7ceXL58hWjuxMnfd+rl9y8eUuqVP1cnj9/LnFdjerVpXr1z6VAgQI6K3zzli3SuHGTSLdNmjSpDPt5qFSoUF7Onj0rWbNmlaNHA6VDx45y6dLlV9qvet/8+Qukb5/vZfv27S4x5gAAIPYjEx0AACAabt66JVWrVot0ceUAemTjU/GzylLAt5AcOnRYxoz5xSlLN3xcsqQOoJsOHJDq1arpUhrOqGzZMjrTf/acuUZ3JU6XTDoaeNRlgrlFihaRWbPnSOEixSQkJCTKbUeNGiEfffShfFKuvHxavqIULVZCPD09ZNbMmboEzqvud87cubpUVJkyZKMDAIDYgSA6AADAG5I/f36bJQwyZ84caekXVf9YZXFHt+75q7SROHFiyZUrl14SJbJdEiRzpkySO3cuvf3revz4sUyfMVPix48vJUpEXp4iOv1S23h7Z9PHnDCh9UOU6ljd3Nx0qQlzKRm1r+ho0LC+nD59Wjp06KRrd39etWqk2+XPl08H2xX3JEl0wDVTpoxW26isW/UZqizd8NRxhS11o7aLSc3rhg0ayPHjJ+TEiRNR1h1Ply6dLksS2c2AVKlS6W3Df67mvqVJk8bmflX5DhXEDz/2qlyPGgs1/i+jaoyrbZMkSRLldlGNY/h+qT6///77L92nkiVLFr3f8DXl1T7UPlX5kZQp/38OhT/WyKhzTo132LGLyfHElOqfujbV5xwZdd5H92bVd9/1kk2bNsuTJ0+i3E7ts0rlyjJ+/AT5+++/9bp79+7Jjz8N0n0Jf81Ed79KYOAxOXXqlHzZsGG0+gwAAGA0yrkAAAC8IR3at5PixYtJwUJFIgSSJk+aKIkSJdTZnOag2JAhg6RihQryzz//6GDcgwcPpE/fH2TNmrVvpA0V4FT11L/6sqHcunVLnj17ptsdNnyETJky1fI+1favv46V4sWKyblz53Rgsm/ffq89HunTvwj4Xbt6zWp9dPvVuVNHad26ldy4cVNn+2fIkF5mz54jQ4b+LE+fPpV+/X7Q78uXL5/+WVElJzp27Bxlv1J5eUmF8uVl4I8/6eDg9u07pGHD+rJg4cII286aNUO2btsue/fsFT+/F/tdtmy5/DRosOTInl2GDBms6z+fP39eB5xVqYpOnTpLwNGjettkyZJZ+qao/r6VNats27ZNOnTsLHfv3rXZT3UD4sMPP5Alvy+N8DvV5oL58+TLrxpJ1apVpWiRIuLhkVQ8PDyk53e9ZPHiJZZty5X7RNe2//jj0nL6zBnL+jRpUusa3L16fS/Tps+w2m+jxl/LF7VqSd58eSWVVyrdzy+/+kofn8pOVmOeMkUK/Tk0bfaNHDhwMEIf1Xk0ceJ4yZ8vv85eVkH8AQN/1J9hWNEZR3O/Gn/dRD85oILd6ubA59VqyF9//RXp+BUvXlyGDP5J31z6999/de38ffv2SZcuXeXipUtSrFhRadWqpb6ZUKxoUcmUKZN+31dfNdaliCKj+jpo8E96vNV1q4L6Fy5ckG7dv7X0IzrHE13qXB07dowU++/aTJ48mTwOCZF+/frrgLXZmNGj9M2C3HnyyZtS9r8s8R07d1qt37Nnr74e1VMSr1Oqae++fboEjMpoV+cRAACAMyOIDgAAEA1u/2XthvfgwUNL8GzuvHlSuXIlXT941arVVhmdBQq8L99/39uy7repU3R2deXKVXUtcRUwHTToR5k4YbzUrVdfdu/eE2k/YtLGL6NG6nIJXzVqrANfSsWKFWXypAk6KLpo0eL/+jJZMmbMKKXLlJWzZ8/pYOeI4cN0UDEo6EGMxydhwkTi45NDunTurNtdvWaN1bbR6VfJkh9Jt25dpWmz5rJu3boXbbi5SbOmTXSd5vv37+vSMfv27o5xTfTadWrroJ35+GfMmCnTp/+mM65PnjwZYft8+fJK8MOHUrzEhzrgr54GUJnYv/++WP46eVKKFC0uN2/e1MHYkSOGy7x5c6R0mU/kxo0b+iaB6mdYKpg7b+5s6d//hygD/u++m1MH4QNt1OJX2rZpI6N++UU6d+6in0AYO2a0DPrpR9myeYvcun072mMS2X4HDxmqg84qA//335foYwsIOCozZ87S56cKki9ZvEgGD/rJcuMmrPbt28nwYSNk+47W+rX6PIcOGSxXrlyxBICjO46WfbZrK8NHjJK27dpL2rRpJWFC65IiZiqQPWf2TNm1a5dUrFhJgh890sF0VQd//oJ5Uq5ceVm9eo1ezp45pf/tFebasZVRv3TpEn2jpljxD/RxKOq8f+ftt/X3QEyP52V69+mtvyeKFC2mzyVFZbZ/Uras1XbHjh/Xbb1J2bNn1/+eP/+P1frQ0FBdnz9HjhyvtX91Ln315ZeSO1cum/NNAAAAOAvKuQAAAESDOaM4/NKqZQvLNtu2bZeLFy9Kvbp1rd5bv/6LiUd/X/oia7No0aI6m3zM2HGW4JEKzvbp84MOhKlsc1ui24YqNVGt2ufyyy+jLYFqRQWk165bJ+3attGvVYZr4cKFZcSIkTqAbi7F8kO//jqz9VXGp2+f3tKtq588fRoqk6dMtaqPHN1+Zfd+EcA7fPiQZRu1n/ETJuoA+utoUL+eLF26TJemUDZu2qSziRs0qB/p9hkzZJD+Awbqz0gJCAiQli2ai5eXl3To0NESvFRPBnzX63txd08aYV8qkKqCjmrSxVSpvGTvvv3yablyUfYzffoM+l816aUtqpb3zp279M+qpvfYceN0Nnrp16w1ffjIER1AV1QAevacOVKkSBHdhvkGjzrfZs+eLXnz5tU3BiIr2bF9xw7L62HDhsvZc+csn7ES03E8ceIvPRmlcv36dZuTrTZv8Y2+MdW9R0/df0VdN+pzzO7tLZ9/Hnn5nqi0btVKl35p36GTJYCuqJs46zdseKXjeRkVQL9w4V9LAF1R5+r0GS+eHDBTN2Pq1X+zpVGSJU+m/1VPyIT34EGQ5fevyjw+6TOkf639AAAAOAKZ6AAAADGYODMqKsC4cOEi6dChvc5aVQE+FTytVbOmrF27zlIioqDvi4ztPXuss81V8Nrf/5Au4fG6bZQoUUL/e/3GDV0rWWUpm2ulq6Csj4+Prp/tW6CAXrf/zz+t2lEBynPn/n6t8fnmm2Y6y12Vz5i/YEGM+rVz184XNwWWLJZ58xfI7t279di8btkHdQNDtaGC+2GfLNi9Z698Uaum/PTToAiTIh45EhBh8lh1HJcvX5a0adPpxXwc6lCuX78m7+XPr7dT9bV79+6la5ur4P/Vq1flSWioZEifXpd2UeVAgoKCIu2rud7348e2J64NX0bFnDWssq5fx8GD1vv999+LL9b7+1uvv/hifebMmSx1s832798f4dz980+T1KheLcbjaLYv3D5tUdeYOn/VeIdlvgFQsGBBy5MI0aXKv6hjVGVcbInp8byMytj/tkd3mT1rpn7yZM/evbpEjCOEPgnV/6pyKyr7PKwECRJKaDRqn0fFfE0566S+AAAAYRFEBwAAeINUwLdjxw5Sp04dnW2tyq6o2s3z5s+3bOPu/iI4eu9exIzqu/fuvjSoFJ02kv03AeM3zZrqoG14Bw4e1GVbkiZ1t9mX+/fviZvbq08yquqbq0z9tu3aWILo0e3XmTNnpULFStK0aROpXfsLHUhUQehZs2breuTmrPCYatCgnly5clXq1q0TadD6s4oVZfmKFVbrr9+4HmFbz2SeOiv5xx8HRPidukGgAqlKmzat5evGjaVJ02ayZctWyzY9enSXjh3a62xpW27/V44lZYqUL90m7I0YJew5pILXkVGB0OjuNyTkxX5v37auFf74UcT2zCJ7YuD+PXVOuekbPypDO7rjaHbjevRKoSRxd5dbkZQ3UVnVql3zeR8TST085HaYjPDIxPR4Xmb06DE6cK9qh3/fu5euka4mxFVPioQ9n+zh2vXrlglSw9+MUE9TnDp9+rX2r24iKWGz7AEAAJwVQXQAAIA3SE1gqOow16v7IsBdv149nbm6a9cflm3MpSCyZMmsSzOE9VbWt14aaItOG2riRKV3777yp8lkc1/mtlRfVPZ5WJmzZJHr1yIGkGNCBcjC1k6Obr+UU6dOSc+e3+mfVf1rVSpDBaVVSZC5c+dFGSC2VXKmapUqeuJNlc0f3pjRv0iDhvUjBNGfPYvYxqWLFyVRwoQvfTqhdKlScuzY8QgBT1Wz+2XURJLmLO83UTYjpZd1MD5r1uiX63kVWTJH3L8qEaRqgpsnxY3uOJo9ex69myfqGsuWLVuE9ZkzZdIBfDXRZ0xd/PdfPfdAVGJ6PNGxYsVKvSiqHr+qeT950iQpVLiIzQlQ34TDhw/rf3Pnzm0VRFcTEava72Enr30V5nJR5jJSAAAAzoya6AAAAG/Y3Hnz5e2339YZ1B9/XFLmL1ho9fstW7fpjOEG9a3rI6tgc5EihWX9+g2v3cbGjRt1zW+VyR0ZVTfb3BdVvkRltYdV6uOPJV3atPI6VNast7e3zpyNab/M/5qpAP8vo8fon9UkjmZqX9HNKlYlb1TGtKorH5ktW7fKhx98oMf1ZZb8vlTeeustKVfuk0h/ryY/VdREqSlSpLD6nXpf2bJlXtrGtWvX5MzZs7qO+us4deq0ztwvXKiw1fraX3wh9lSjhnUgWQVeS5UqZXV+R3ccY0q1kUlNllvaujZ8g4YNLL+PqaVLl0u6dOmkRo3qEX6nJl+1x/GEvw5UPX4VvFZPs6jxNFPBfVUe6U1SpWRUkL5undpW69XNO3U+qWN9HYULFdTnd9j68gAAAM6KTHQAAIBocEuUyKqGdljHj5+Q4OBgy+t169brDGyVMaosXGgd4FZZnQMGDJSBAwfoYPqq1Wt0jexu3brKmTNnZNjwES/tz8vaUGU32nfoKON/HSezZs7QgTdVlkRlf6oAuSqp0bxFS92Xn38eJr16fSdPQkJk8+Yt8k62d/Skl6r+tKeHZ4zHR5UoUVnILVu2kHjx4uvJHGParyZNvtZZ3CtWrpSzZ8/qEi/qpsPDhw9l2fLllv3t3/+n1KpVU6pUqSyXLl2Shw+D5cSJEzZLuQQGBurgdGS2b9uuM9vr168ngwcPifJ4VSZ7saJFZeKE8TJ16m96rJ4+fSY5cmSX2l/UkrHjfpWVK1fpCTnVcY4YPkyWLlsmWbNk0ce2YMFC+frrxi8d19Wr10ijr77Ux28u1RJT6mmHVatXS6dOHeR+0H25ePGSVK70mZyPorb3m2AyHZApkyfpUj7JPJNJly6d5NatmzL052ExHseYmjFjplT67DOZMH6cPr9Pnz4jH330obRq1VImTJgohw79f8La6FqwcKGULPmRjBwxXHLnyqXr6CdL5qlLAKla8ap80Zs+nsWLFsrhI4dl3979cunyZXnrrazSunVLMZlMcvLkSct2Y0aP0tdQ7jz5ojVZqfnGjqrXniJ5csu1qyYxNT+RosrxfN+7j/wyaqRcuXpVNmzYoDPhO3furI8j/HUW3f2aSycVL15cfps2PdpjAQAAYCSC6AAAAC/x14m/9L/9+v0Q6e87d+oip8+csbxWmd0TJk7StcqPHg2MtHSECh4FHjuuszrbt2urg8NTp06VGTNn6brNZoGBxyINdkanjY0bN0npMp9Igwb1pU6d2pLILZFc+OeCrFu/Xgdnzcb9Ol7XIFdZ7ap++SH/Q9K6TVvp3q2rnvgypuPz/NkzuXbtumzdtk2+btI0Qj3l6PRr7Nhxsn/ffqlW7XMd8H30+LGcOH5C14IOWwJn8JCheuy++upLnWWuSqB07Ng5Qh9VgPFxSIgsX25dqiWsW7dv60C3T5jyM0cCAmxO5OjXtZusWLlKqlaprIOzqh9nTp+RTp276BsriropUa9eAx2YV5PBnjp5Spo2ay5FixaR/O/ljzBhY3izZs6SNq1bSfnyn1oFX1UNe1U/Pnwte3UTQK1XNxTC6tzZT9q2aS3Vq1eToPtBMm/efDEdOKAzps21r6Par3rPi/V3rdaroLxaf/fO3Qj7UGPj6ekhjRs3klReqWTjps0yfvyECGWDojOOtvpliyoXU7defT3uZUqXlsqVK+uM52bNmsuGjRuttlUT1v4TrqySLe3ad5DVa9ZI5UqV9HWryiGtWbtWT/oZk+N5+OCBPp7bYcqxRLaueo2aUrNGdf3kQsaMGeXGzRv6iYwlS363KmV07PhxS9mel1GT3BYpWkT/fDQwUBIkTGi5didPnmIpHaP8/vtSXSrqyy8bSreuXXX77dq315MYv85+K5Qvr7PyZ8+eE60+AwAAGC1exkxZol9IEgAAAIBDDRkySPLlzSeVq1Rl5BEnrFm9So4ePSrde3xrdFcAAACihZroAAAAgBMbOnSYPHkSIvnzvbxUB+Ds1HkcEvJYhgz92eiuAAAARBuZ6IDB1CRyqjarmhjN2anJrdTj8P+cPy/Bjx5JbKEmAUuZMqXcuH5dP6pvT2pisbfefluXGlCPb9taFxd5eaWUVKlS6ZIQAAAAAAAAcQWZ6HFcKi8veffdd6O1OBs1OVGGDBle6b2ZMmXUx6SCvs5M1bdcv26trgkZG5QoUVy2btmkJ5WKDfLkyS07d26XTRvXy4Txv+q6wfamxkaNUdGiRaNcZ0+qJrA6/9V18DLq3MuW7R1JlizZS7dNmzatviFhiwqgb9m8SQoXLhTjPgMAAAAAADgrJhaN41TQsHnz5pbXCRLEFx8fH7l9+06ESb7KfVpenj17Js5iyeJFsnXbduncuUuM3hcvXjxZtvR3nTGtJq8aMPBHcUbx48eXPr2/lzlz5uiJrvDm/fBDX7l9+7aULl1Wnj59GueH+LPPKuoJ+D4oUULSpEkjq1avlhYtWtkMtP/040D5/POqcuXKVcmQIb1s375DunbrLrdu3bJs984770izpk2kRo3qegzVJGZJkiSRqVN/k9Fjxsrjx48t26oM9GXLl8sPfftKlaqfO+SYAQAAAAAA7I1M9Dhu3vwFUvaTcpalRo1aev3atWut1qvFmQLor6NUqVI6gB4QECC1a38hCRM6572icp98Ijlz5pSZs2Yb3ZU4XXPz8KHDLhFAVypXqiSrV6+RYsVKvHTbUaNGyCeflJUKFSvJhx+VlBIffCQ5cmSX6dOmWm1Xp05tKVfuE2nXvqO8X6CgFPAtJG3btZc2bVrLL6NGRtjvnNlzpWBBX4dl3QMAAAAAANgbQXToEgzmki4qqGurBETGjBl0iRUzVWrl7bffjlA+JmvWrDrLWlE/qyXSky9+fP07FfAOT/VFBb9TJE9u6dtbb70VrU+rYYP68tdff0nnLn46G9dWCQ9Vizx9+vT6Z9WWOpbUqVNbbaPKwXh7Z9PHFV6iRImsyuGojF03N7do9VH388sGOtB/+vTpCG2q/ak62kry5Mn1vhMkSBBhHylSpLCMVWR9U7+3tV9VIzxzpkwR9qnaU2OhMvpfRu1DbWv+vG2JahzD90uVFVGfjTqG6Jy7ar/hy+Go2tzm4/f09LR8RtE5JpWhrcZb/fsqxxNTKqtbndu2Sg+pUithr7uotGvfQVauXPXSevV58+aRqlWqyNhxv1rOP1WX/6dBQ6Rw4cLy6aflLNse8j8kn1WqItu2bbOs27x5iyxZ8rvOYlfXWFj7//xT/v33X/nyywbR6jMAAAAAAICzc84UXTi8BESzpk0t5V5UYPnRo0cybPgImT17jmW773r2lBIflJD69RvKr+PGSKpUqXVJmEqVq+hA2uhfRsnHH5eUy5cvS2hoqPh17Sbdu3XV763+Xwa8ogK+3br6SePGjeTJkyd6ndr+x58GyeLFS3TwdPyv43QwtXjxYvpn5dixYzpIGBUVBFcBwH79+suxY8flzz//lIYNGujs3PBWrlgmy1eskD//NEnPb3voYOa0adNl+IiROoj648AB8uGHH+hjVLWgDx8+In5du8rZs+f0+9OmTWPpm6ICtqlSecnKVaukR4+eEhwcbLOfagw+/OADmTN3bqR1x2fOmC5f1K4j1atVk08++UQ8PT30WHXp0lU2bNxo2VYFMYcMHiRFi5XQgUuzzJkz6xrcXbt2k7nz5lvtt269+jpD/4MPPhCvlF5y9uwZadT4a7l167YM+3moXp8yZQodVG3S9Bs5ceJEhD4mTpJYxo4ZrbdNlsxTT5b5fe8+OoAbVnTGMWy/ataooZ8kUEHwMmXLyd9//x3p+Kma26oUibrpc+PGDb3f9Rs2yLfffqdLkXz66afSqmVLva06H95//339c9XPq8mDBw9sBqv79+unz+HrN26Ip4eHPjd6fd9b/vnnn2gfT3SpAPzw4cOkdOlScvnyFUmeIrlc+OeC/NCvv+zbt8+y3Yzp0/SNDZUB/qaoc0rZtm271frt27frrP1Py5WTjRs36XVhz7ewzBPhqmtOfQZh7du3X8qULv3G+ovYSf0tsXW9AQAQl6nkiPClMwEAQOxGEB0yZ85cvZiprOKvGzeSwYN+klOnTlsF9BK7uUmP7t100FUF/ooWKaLXT5s2VdKnSyely3yiM1tV9q8KyKoA282bN61GWQXb1YSaLVu10UE7pUH9enp90P0gWbd+vS4vc8j/QIxrotetU1tCQkJk0eIl+vX0GTP1flW2e9ggs9l7+d/T/6pSFip4WKDA+zrws3zZ77q+c7HiL4KlKtN5/K9jZeHCBVKmzCdy//59uXTpsu5n+PIhM2dOl+97faeDr7bkyZNH7/Po0UCb27Rv104mT5ki3Xt8q28sTJkySUaMHK5LdbxOYKpd2zYyZuw46dChkw78r1i+VH4eOlQHrNVNjPYdOuobGMuXLZVBP/0oNWr+/waIWaeOHWX8hAn6pobKkB/Qv5/8Om6sXLt23XK+RHcczTp26CATJ03STxCo7HZbNyFyZM8u8+fNlT179krNWrUlKChIZ5nPnjVD5s2dLZUqV5WFCxfp5dLFC/rf/gMGRjkm6ikLdbx/nz8vH5UsJRcuXNDrS5cuLXly59ZB9Jgez8v80K+v5M6dS+9L3bAwZ4iXKFHC6ppTwXl1Pb1JPjly6H/Pnz9vtV6NufoM1bwJUUmcOLFUrlxJ7t69K+fORbx5cCQgQGrVqqkz6NV4wfWo68X/oMnobgAAYBjfgoUJpAMAEIcQRIeFysRWJVpUSZI/du/REzJWrFjBKqCnguJTpv6mA+jm0g0fffShFCpYUDp07GQpDaECmwMGDJQ9e/6wCqK/9957Ur16NenXf4AlgK6obOnKlStLhw7tdRD9VdVvUF9+X7pUt6+sWrVa+v3QV+rXqys/DxseYfssWTLrILE5I/7gQX/p16+vLlPSpm07y3/4qkzrrt16yAHTfl0jWk2qaKZKhGTKmFE8PD0l5MkT2bFzp3z22WdRBtEzZsig/w1/gyGs4ydOyJYtW/XPqn+jR4+RlSuW60zptWvXvfIYBQYek127/tA/qyDonLnz5Ie+fWTipMmyfccOvV4Fg9WEpwMG9NfnRPiJT1V2+qZNm/XP6uZD3x/6SfkK5aVD+3bS8L/zpU2bVjEax1OnT1uyn8MHd8Nq3bqVvtHTxa+r5XNW5Xt+GjRYxo0do8v3rFmzNkZj0q5tW53t3bZte0sAXQlbwiSmx/Myud59V06eOmUJoJs/G7WE9XWTF0+JvEnJkyfTN5vCTgpqFhR0X49FVNSEuKoUk7qO1X7CM2emq3OHILprMt/oUwEEo7PRfX0LiL//IXEGztIXZ+mHQl8YE84Trp249n2istDVjWSj//4BAIA3iyA6dD1mVRpDl7G4fkPu3bsrz5+Lzn7NGq5euSq7sn//fqt1BQsW1P/u3fv/YLty8dIl+fffi1brSn70of7373N/64xiiRfPUqf634v/6j6oAOmrTHKqyoJk9/aW4cNG6Mxks23bt0vdenV1mZbw+/X3948QSPzow4/knwsXdDmPsH1Uixof3wIF9HYqA/vbHt2lYcMG//3uuoSGPpU0aVLr8jYqe9wcnA/PXMM7qpIv+/dZj/O5cy9Km0RWQz4m9u//0+r1P/+8CBqbTNZZo2oMlMyZM0UIou/es8fqtTpO9f6wJTyiO45me8Lt0xZVyuXUqVN6vMPauXPXf78vHOMgusr+VvsMG0APL6bH8zI7duzUk3OqDP7Va9bo6yeqmypv0tOnzyKtsa/ET5BAQqOoqf7NN82kSZOv9RhPnDgp0m2Cg1+8P3ytergeFUAw3+wyivqeNboPztYXZ+mHQl8YE84Trp24+H0CAADiHoLokOnTfpP48ePpkiYXL/4/6G0y7Y8wYaQK8oUPRHv8FyhTWc3hhV9nznDt2bOHPHv2PML2qnyMyohXGb4x1aB+fZ0Bq7LZw0udKpWUKVNaT4gYlipdEV6KFMl1PydNmhjp8ZiPqX37dtKiRXNp2bK1Vfa8ytJt1apllJNt3rp9+7+2Utre5tYtq9eqTn34wORzdbcjEgltBEij2m902gtfDzusO3fuWE2OGd1xjOqziIxqI3xQ39y+ooLcMaXqup+NpCxJWDE9npdRmfOqfEy1ap/L6F9+kcSJ3eTQocO69Ez4G1Vv2vUb13UQXR1P+M9SXSvn/478SYAGDerrpxY2btokrdu0tbn/lP9NaKueZgEAAAAAAIjtCKK7OJXVnCvXu9K7dx+rALoKnKoa5+E9jSRD3FyOImPGjBFqQqta02EnhzSXgWnXroMcDbRdDzymVG3vSpUqSddu3WTp0mURfj91ymQ9wWj4IPrTZ08jbHvp8mV9HOHrnYf3ySdl5fDhwxHKz2TLlu2l/TWPSeZMGeV1mIOUKmgZtuZ7pkyZxJ7UZx1e5kyZ5UqYCZSiO45mz55G/Cwic+XKVcmUOXPE9v9bF1mA/WUuXbokb7/1VtTbxPB4XkbdjFIT96pFPbVQtGgRGdC/v8ycMU18fQtJcBTZ4K/ryJEA/W/u3LmtyjWp61WVrAk4ejTCe774opYMHTJYtm7dJs2bt7T5lIX56YWwT08AAAAAAADEZrZTZeESzI88qnreYTVu9FW097Fl61YdEKxZs4bV+g8//EDXUA9LBZxVqYcvv2poc8JCMxWwdE+SJFp9+KJWTZ3Ju337Dpt9VEHvdJHcGAhv+bLlemLFokWLRtnHB0FB4uHhGaE0TqlSH7+0DVXzW91QKBDDEiCRZe4rvgV9rdbXCPdZvGnVq1WLMImg+rw3bXpR0zwm4xhTmzZv1mV7ChV6UUbIrG7dOvrfjf/Vao+JFStX6c9OnSPhqQC3PY4n7PYqIP3HH7tl/oIFOjs8Q8YXNfOVbNne0RN0vknr1qnrMFhq1qxutb5WrVq6xn34G1Gff15VRgwfJtu2bZdm3zSPtA56+BJPJ0+edFh5GgAAAAAAAHsiE93FqRIYGzdulJYtWuhMdBXcLfXxx5InTx4595LyFmYq23T8+AnSpnUrefzokZ5Y09vbW6pUriT+hw7p+upmKku4e48eMnzYz+Lp4SlLly2TGzduyltvZZXSpUrpDHhzmQjTgYNStkxpKVWqlH6fCvr9888/kfahfv36Ors2fEkSs61bt+pgqJr8cezYcVEez/QZM+WDDz6Q6dOmyq/jJ8iff5p02RQfnxw6UDthwkRdD3rBwkV6Iss+fXrLypUr5Z2335HWrVvqAGT9+vVeOm5r1qyRqlWrvHINeEUFKlVgs6tfF11ORGVpV/u8qmXiS3s5c+aMjBw5QhYsWKiz4Hv06KZL1AwfPjLG4xhTqg535Uqf6acLfvxpkD5PVS329u3ayqTJUyQg4EWWdUxMnz5Dn38Txv8qv/wyWteNT54iuVSuVEkOHz4i02fMeOPHs3rVSn1eqsl51ef29ttvSZOvG4vpwAGrDO4Z06fpwHoB30LRerIkbEmdZJ7JLPMDqGvIXHJGBbcHDvxR+vfvp2/mqAls1WRcnTt10teyOq/MVBmk0b+M0p/5kKE/R3jSQl2TYWv7u7u766z6SZMmR3ssAAAAAAAAnBlBdBcT+vSpnDjxl1XJi9Zt2knbtm3ky4YvssO379ihA9mTJk6wKhGiSl6cOf0i8zk8Fcw8c+as1KhZXcqVKyd/mkzSvkMnWbxogdx6YB3YXrLkdwkIOCqNvvpSBz4TJkykJ3TcvGWLLF++wrLdgAEDdV3ubl39dGDu+PHj0q59hwhte3tn04FoFZC35dKly7qOc6H/JkFV1ESSKngZnsrEVdm2KsBduXIlHUgNehCks7579+6rS7goKliuMohVYH7ggAHy119/SctWreXjjz8WX1/flwbGZ8ycJc2aNdWZ66pEhtn9+0H6MwpfF17tT61Xdd/DUp9Vly6dpFXLlnL//j2ZOWu2njC1/Kefyu3/6oRHtV+VUf9ifXCECQHVevVv+H2o4HmWrFmlY4f2uvzHnr37ZPToMVaTfUZ3HG31yxYVsK1WvaY0bdpEj33yZMn059umbTtZuXKV1bZqv1f/KzcUFdXXxl83kdpffCGVKlWUKlUq632qCT/V+RqT41HHocctzMRWka2rWesLqVevrq7lnyFDBl2nfMqUqTJ33nyrvp09e05P8hsd6vMoVOhFsF21p54QGP/ri5tGI0eNshqfadNn6Jrs6rr/rGIFXZO+a9duEa6j999/X/dB+WXU/2+SmKkSSgcP+ltef/ZZRZ1lP2fu3Gj1GQAAAAAAwNnFy5gpS+QzEwJvwNGjR2T9uvXi17Ub4xkJFeBMlcpL6tZrwPggTli3drUcOnxYvv32O6O7AgOpGz8n/zouOd/NbSkbZpTChQuJyXRAnIGz9MVZ+qHQF8aE84RrJ659nzjT30AAAPDmUBMdb0TChBEfaqhYoYKk8vKSbdu3M8o2DPzxJ0mdOo2l5AYQm6k69fHixZOffx5udFcAAAAAAADeGMq54I2o/UUtPZng+g0b5Pbt27qkhF+XzrLrjz9k9eo1jLINqg59uU/LMz6IEw4cOCgVKlYyuhsAAAAAAABvFEF0vBHzFyyUZ8+eS726dSVLlsx6wtLhI0bKjBkzX3nSTAAAAAAAAAAwGkF0vBHPnz+XBQsX6gUAAAAAAAAA4gpqogMAAAAAAAAAYANBdAAAAAAAAAAAYnM5l/Tp08uDBw+M7gYAAA7n4eEhV69eZeQBAAAAADBIwtgQQPc/aDK6GwAAGMa3YGEC6QAAAAAAGMTpg+jmDHQVQDAqG93Xt4D4+x8ypG3aZ/w5/4y9/rgGuQaNvAZVFrq6kczTWAAAAAAAGMfpg+hmKoAQFBRkSNvBwcGGtU37jD/nn7HXH9cg16DR1yAAAAAAADAWE4sCAAAAAAAAAGADQXQAAAAAAAAAAGwgiA4AAAAAAAAAgA0E0QEAAAAAAAAAsIEgOgAAAAAAAAAABNEBAAAAAAAAAIgZMtEBAAAAAAAAALCBIDoAAAAAAAAAADYQRAcAAAAAAAAAwAaC6AAAAAAAAAAA2EAQHQAA2BQ/Pv+pAAAAAABwbfyfMQAAsJI1a1aZMnmSnDl9SgKPHpHhw36WZMmSMUoAAAAAAJdEEB0AAFikTp1ali39XUJCQqRIkaKSN997snvPHilWrCijBAAAAABwSQmN7gAAAHAe7du3k+fPn0mnzl10IF1ZsuR3o7sFAAAAAIBhyEQHAAAWn5YrJ+vWrdcB9AQJEjAyAAAAAACXRxAdAABYZM2aRYKDg+X3JYvl7JlTcvToERkyZJB4enraHCU3Nzf9e/Pi4eHBiAIAAAAA4gzKuQAAACvffNNMmn3TXLZu3SbZs2eXmTOmy08/DZQOHTpFOlLt27UVP78uEdb7+hbQAXkjeXtnE2eRNUtOCQ72MrobkjlTegnOa3w/nK0vWbOkFWfgTOess/TFWfrhTH1xln44U1+cpR/u7u5GdwEAANgBQXQAAGBx7do1OXz4iGzZslW/Pn36tEz97Tfp1tXP5iiNGTtOJk6abHmtMtH9D5rE3/+QBAUFGT66JtMBcQYqgL53T36juyGhT06JyWR8P5ytLyIBEhjoHOeKs5yzztQXZ+mHM/XFWfrhTH1xhn5E9eQWAACIvQiiAwAAi71790nyFMmtRiSxm5uEhobaHCVVP908CSkAAAAAAHENNdEBAIDFr+PHy4cffCD16taV1KlTywcflJBvvvlGFi5azCgBAAAAAFwSmegAAMDi2LHj8lWjxtKjezf5/vvv5OrVazJt+nQZP34CowQAAAAAcEkE0QEAgJXdu/dIteo1GRUAAAAAACjnAgAAAAAAAACAbdREBwAAAAAAAADAyHIumTNnllIfl5Tnz5/Lps1b5Pr1645oFgAAAAAAAAAA585Eb9myhWzftkVKliwpefPmlfnz5kqBAgXs3SwAAAAAAAAAAM6dif5xyZLS+/te0vDLRrJ9+3a9ztPTU9KmTWPPZgEAAAAAAAAAcP4gevPm38gfu3dbAuhKUFCQXgAAAAAAAAAAcOkgeqFCBWXS5CmSL29eKVa8mNy8cVN27Nwpt27dsvkeNzc3vZh5eHjYs4sAAAAAAAAAABgTRE+ZMqWUKV1KqlapInv27JHy5T+VQYN+lCZNv5G9e/dG+p727dqKn1+XCOt9fQtIcHCwGMHbO5sh7TpL+1mz5JTgYC/D2s+cKb0E53Xd9rNmSSuufP4Z3b4z9IH2XXf83d3dDWsbAAAAAAA4IIj+8OFDSZs2nZQp+4k8fvxYrxs7ZrQMHNBfyn1aPtL3jBk7TiZOmmyVie5/0CT+/ocMLQNjMh0wrG2j21cB9L178hvWfuiTU2IyuW77IgESGOi6558ztO8MfaB91xx/NY8IAAAAAACIw0H0M2fOyOnTZywBdGXP3r1SpUplm+8JCQnRCwAAAAAAAAAARotvz52vWr1G8ufPJwkSJLCsK+jrK2fPnrNnswAAAAAAAAAAOH8m+pTJU3Qd9OXLlsr27dslZ86cUqrUx9KkaTN7NgsAAAAAAAAAgPNnogc/eiQ1atSSKVOmyrNnz2T7jh3yUclS8scfu+3ZLAAAAAAAAAAAzp+JroSGhsqy5cvt3QwAAAAAAAAAALErEx0AAAAAAAAAgNiMIDoAAAAAAAAAAATRAQAAAAAAAACIGTLRAQAAAAAAAACwgSA6AAAAAAAAAAA2EEQHAAAAAAAAAMAGgugAAAAAAAAAANhAEB0AAAAAAAAAABsIogMAAAAAAAAAYENCW78AAACup1ixYvLRhx9YrXv8+LGMHferYX0CAAAAAMBIZKIDAACL4sWLSf0G9RkRAAAAAAD+QyY6AACwcvnyZRk+YiSjAgAAAAAAQXQAABCel5eXtGzZQh4/eiz+hw7J4cOHGSQAAAAAgMuinAsAALAS+uSJZM6USQr4vi+/L1ksI4YPi3KE3NzcxNPT07J4eHgwogAAAACAOINyLgAAwGLlypUyevQYef78uX49bdoMWbF8qWzfvkOWr1gR6Ui1b9dW/Py6RFjv61tAgoODDR3drFlySnCwlzgD72wZJPTJKaO7IT4+ajyM74ez9UV9PiLljO6GZM6UXoLzOsc56yx9yZolrTgLb+9s4gycpR/O1Bdn6Ye7u7vRXQAAAHZAEB0AAFicPXvOajRUKZeAgKPywYclbAbRx4wdJxMnTba8Vpno/gdN4u9/SIKCggwdXRVA37snvzgDFUA3mXyM7oYOWjtHP5yxL/md5Dwxvh/O1ZcACQw8IM7CZHKOvjhLP5ypL87QD/VEFgAAiHsIogMAgCjFixcvysy6kJAQvQAAAAAAEBdREx0AAFi8//77EV7ny5dXdv+xh1ECAAAAALgkMtEBAIBFp44dxMPTQ44eDZRUqbykapUqsmz5clm0eDGjBAAAAABwSQTRAQCARZOmzaRQoYLi6+srZ86ckSmTp8rRwEBGCAAAAADgsuwaRM+bN4+8/957Vuseh4TIkiW/27NZAADwGg4cOKgXAAAAAABg5yB6uXLlpFnTJrJhw0bLuuDgYILoAAAAAAAAAIBYwe7lXM7/84907dbd3s0AAAAAAAAAABD7guieHh7y+edV5fGjxxJwNEAuXbps7yYBAAAAAAAAAIgdQfTUqVNL1SpVJHmK5FK0SBH59dfx8vOw4Ta3d3Nz04uZh4eHvbsIAAAAAAAAAIDjg+hbt26TSRMnSfCjR/p12bJlZOaM6XLQ3182b94S6Xvat2srfn5dIqz39S2g66kbwds7mxgpa5acEhzsZVj73tkySOiTU4a17+Ojjt1121fjL1LOsPYzZ0ovwXm9XLZ9JWuWtIa2b/R3EO0bN/7u7u6GtQ0AAAAAABwQRD9y5IjV6y1btkpgYKCULVPGZhB9zNhxMnHSZKtMdP+DJvH3PyRBQUFiFJPpgGFtqwD63j35DWtfBdBNJh/D2lcBbNo3+vN33fZfCJDAQOO+A4z+DqJ948bf09PTkHYBAAAAAIADy7mE9+jRI0mZMqXN34eEhOgFAAAAAAAAAACjxbfnzrNkyWL1+p133pF8+fLLgQPGZlQCAAAAAAAAAGB4JvroX0bJhX8vyNGjgZIqVSr5smEDMR0wyZy58+zZLAAAAAAAAAAAzp+J/kXtOrJx4ybJmCGDPHv6VDp38ZO6devL48eP7dksAAAAAAAAAADOn4n+7NkzWbVqtV4AAAAAAAAAAIht7JqJDgAAAAAAAABAbEYQHQAAAAAAAAAAGwiiAwAAAAAAAABAEB0AAAAAAAAAgJghEx0AAAAAAAAAABsIogMAAAAAAAAAYANBdAAAAAAAAAAAbCCIDgAAAAAAAACADQTRAQAAAAAAAACwgSA6AAAAAAAAAAA2EEQHAAAAAAAAAMAGgugAAAAAAAAAANhAEB0AAESqbp06cvzYURk1agQjBAAAAABwWQTRAQBABDmyZ5du3fzkn3/+kaRJkzJCAAAAAACXRRAdAABYSZw4sYyf8Kv80K+/XLl6ldEBAAAAALg0gugAAMBK37595OjRQFm1ajUjAwAAAABweQldfgQAAIBFxYoVpXSpUvJp+QrRHhU3Nze9mHl4eDCiAAAAAIA4gyA6AADQMmbMIEOHDJImTZvJgwcPoj0q7du1FT+/LhHW+/oWkODgYENHN3Om9BL65JQ4Ax8fLxExvi/O0g+FvjAm0eGdLYOIlBNnoL5TgvOqa4h+mGXNklacgbd3NnEG7u7uRncBAADYAUF0AACgvf/e++Ll5SWzZ820jIiaVPT58+dy/NhRKVeuvFy8dCnCaI0ZO04mTppslYnuf9Ak/v6HJCgoyNDRVcEukym/OIdTYjL5GN0JJ+qHQl8Yk+ieJ85xHaubcs7QF2fpxwsBEhh4QJyByWR8Pzw9PY3uAgAAsAOC6AAAQNu0ebPkzfee1WiM/3WchISESMdOneX+/fuRjpT6vVoAAAAAAIiLHDaxqMpKK1fuE8mf31kyJgAAQFihoaFy7949qyX0aag8CX2if1YZ6QAAAEB0fPJJWflj107Jlu0dp2o/lZeX/PTjQFm7ZrX+fYXy5fX6vHnzyORJE2XL5k16fYoUKcTVfdfzWxk5coTR3cArGjtmtHTv3o3xi22Z6EMGD5KqVavI+g0bpEWLVo5qFgAAAAAA4JWlTp1avvmmmfgWeF/Spk0nV65ckUOHD8u8efPl33//jfMj+9lnFeX7Xr2kfoOG8s8//0T7fZ4enjqA7eaW+LX7ULRoURk5Yrjl9ZMnIXLv/n05//d52bd/v6xYsVInfUSn/REjhstbb70lXfy6yp07d+TatWu6hOG8uXNky9at0qp1G/2UZfj9uRofHx9p2bKF1KvfwGp9n97fS4UKFWy+r/HXTeT06dPizMznU1DQfalc5XOdTBRbJEyYUCpXqiSfVaoo2b299VxWx0/8JdOmTZeTJ09abbto0WKZMWOaLF68WM6ePWdYn+MKhwTR69WtK2+9lVV27tzliOYAAMAb0qpVGxEy0AEAgIvKnTuX/L5ksQ6Wj/pltJw5c1ayZMksbVq3lg7t20nxEh/KxYsXJS5LlizZi2B0okQxet/GTZvkgw9LvpHxUUFu1YefBg2WVatWS/z48fRcPu+/955806yp9Pz2W+nWvbusWbM2yvbjx48vZcqUlpGjfpFDhw5Z1n/00YeSJk0amTZtRoRApKvq2KG9nDhxQvbs2Wu1Pm3atPqzKFW6rDx58iTC+2LD9dDoqy8ldepU+jgqVCgvq1evkdjixx8HSDyJJ8uWrZC///5b0qdLJ23atpaNG9ZJk6bNZMuWrZZtt+/YIefOnZP27dtL585dDO13XGD3IHqO7NmlR49uUq16TRkwoJ+9mwMAAG9QcHAw4wkAAFxW586ddHnaevUbys2bN/U6FVjcvHmLLnWRKIaBZVfy8OFDHeR7k27dvBlmn+fkwIGDMnvOXJk6ZbL8Om6s1KhZS09ub6t9FShXn1lQUJDV+vTp0+t/H4Rb76pUyZvKlSvJjz8NsrmNeirh8ePHEtuoMj2fffaZ/DJ6tFSsUEEaNmgQq4LovXr1tsqcV99H6mmMI4f99c29sEF0ZcmS36Vz587Sr19//eQFnLQmupubm4wfP05fdNF95Ee9R81obl7UHysAAAAAAABHy5wpsw6emwPoZmquGBXrOH/+vH5dtEgRXUdbzQUXWVkM9btatWrq19WrVdOvM2TIIA0bNpAVy5fKmtWrpHnzbyzv+fLLhrJs6RLZuHG9dOvWVRIkSGC1zzexDyVJkiTSqmVLWbxooWzbulkWLpyv92fWrGkT6fVdT/3z3LmzdZtqKVnyowj9qFunjs7a37Vrhw5U26pJrtps0aK5LJg/V9cfV+UmPv+8qrwqVXrl22976izzTh07WNaHb79Dh/Z6nMxZ1uZjUYsqURL2GAcO6B/tMXrZOCje3tlk0KCfZN3a1fqYx/86Tt577z2rfah1alGxsH79+urM4uXLfo/Qlpk6rh8HDpDVq1bKhvVrZcTwYZI9u7fVNtFpNzLlPi0niRMnlu3bd8jrMB+TClz37/eD7qcaWxXrU+OlzlFVi37ixPF6bFXpIPPNjt7f99LHpvr929QpUrZsGat916xZQ+9DZcY3qF/PMubqPIjKF7VqSoIE8WXu3Hkyc+YsfS5nzpw5wnYv278a68GDX4zt5k0b9U2c/PnyWe1DXTvmc2znzu2ycuVy6du3j6RLl85qu9KlS+ttVJsvE1npmUePHklQ0ANJlChirrT6DN3dk0QYPzhZJvoPffvoR50WL14S7fe0b9dW/PwiPmLg61vAsGy4rFlySnCwlxjFO1sGCX1yyrD2fXzUsdM+4++a55/5GhQpZ1j7mTOll+C8xn0HuXr7WbOkNaxtd3d3w9oGAACAyLFjx3Q8QgXHN23aHGFIzBOv/2kyScKECXRpkfDbfd24kWTOnEm2bduuXydL/qI8Sts2rXXd7V7f95H3339PBxefPX0qyZIn1wmGvfv8IPnz5ZUffxwoT0NDZcTIUZZ9vol9qEDmksULdc33wUOG6ozWfHnzSe8+30uB99+Xbt17yJLfl+pg6vff95Ju3XrI+f8SJK9evWrVDxXLUYG8AQMHSrlPPtGBxshqkqsA8e9LFunM7yFDf5Yjh49IuvTp5ItatXRpkLVr173SaXfx0iU5fvy4fPjhh/pmwdOnTyO0P3vWbNm7Z68sW/a7zJo9RxYuXGR5fyVV9z3MMao609Edo5eNwwcflJCZM6bLH3/8IQN//Enu3w/SgVwVIG/cuIns2LlT7yNjxgwSP0ECGTFimB6HRQsXS5WqVeTnoUPkQdADWbZ8uaW/KvA77bepcuDgQRk+YoT+PPLmzasD1uUrfKa3iW67kSlerJjcv3//tWubq2NKkDChnuBS9V8tBQsW1J+RGq9ChQpJpc8+k4kTJ0mChAkkYYKE+kbEqlUr5OGDBzJg4I9y7dp1qVGjusyeNVP69x8oEyZO1PtOkTy53oe6IaKeOug/YKAuzRIvXrwo+1S/fn1d9ufGjRu6P717f6+D5D8P+3/N/ZftX43/9Gm/yY4dO3UfVQC7bp3asnz5UvmqUWP544/deh8TJk6SOXPnWWqZe2fLJp06dZRyn5SV8uUrSvCjR/p3Hh4vyhWpNmNKnWNqzoa0adPID/0iVgA5dvy4jqeWKF5cfv/9xU0kOFkQvVChglK/fj3p2q275U5smtRp9OQP6vWuXX/oL5bwxowdJxMnTba8Vl9Y/gdN+nGc8I/bOIoKoO/dk1+MogLoJpOPYe2rACbtM/6ue/6Z+2D0dwDtGydAAgMPGNKy+p8MAAAAGEcFelXQTwUjDx06LHv37ZOjR4/q4JkKwoUNpqvA7Lc9uutg2Llzf1uSIlQG+saNmyJks6tgnDlwFxAQoAOXKsC2fPkK+b53H8v6osWKStNmTa0C4G9iH507dZRcuXLJp+UryqlTLxKXAgOPSdCDIJk8aaIO/qm64Tf+67eqdW2rPIs6zl7f99Y/m8upRKZrVz/JnTu3blMFpP9rVJegiCxTPiYuXPhX8ufPr2ulh/1szG7dvi0X/r3w4udbt6yOxdYxRneMbI2DCpyOGjlCBzK/btLMctPl8OHDOvtZ1bcu+XFpy/sL+vpKzZpfyP4//9SvjwYGysclS+ogqTmIrrLbR44cIadOnZa6detb3qv6pUp3KDFtNzw18aoKzJvfF5mtWzZH+L2aqLNCxUpW63wLFNCTk6o4oHLwoL8k/y9YrILJRYuVsEqaVRN+pk6VSqp9Xl3fHDH328srpXz7bXc9DmpyXzN1s8h8rof9LCJTsKCv5MmTW77r9eLJAxWXXLhokdStV1eGjxgpz549i/Ce8Ps3j/+RIwG6BrmZHtssmfXTAaXLvIiDhn+KRd2UOHzkiI5zflbpM0tQW53/qn5/+O+IqCz9fYlkyJBeZ8o/fhwizZo1lw0bN0bYTt1Qunr1mrwT7okQOFE5F3Uhqbta6pGcr776Ui9q8o23335b/2yrTIt6DEcFy82L+e4fAAAAAACAI6lg7KflK0iDhl/J7t275d2cOWXwoJ/kkP8BGTJkkM7SNlPlIVRMo1GjRpZ1KoCuAobz5s+PsO+Vq1ZbvT56NFBnPK9dty7CelWjWi1vch9Vq1bRgV5zcNhMBfxV4K106VISXSpoHx1VKleS/fv//H8APQzV5usIffqizEVkJS1eVUzHKPw4qKB4lixZdNZ7+IDz+vUbJHv27JI1a1bLOhUcNgfQzVTgNmyZFpW9nSljRpk1e7bNMYxpu+GlTJlS7t67J1Fp/HUTafjlV1bLN81bRthOBYbNAfTw1DiGrzqhyvCoyUzNAXQzdSwqoF3q44+t1i9fEb1zT2lQv74cP35C9u/fb1k3c+ZMyZA+vZ5wNjLh91+48IvxX7hwYYRt1djmzJlTMmXKaLmp0qZ1K1mwYJ4uV6NKtqiyMEqOHDks71NjoG7eqOz/6GrfoaN8+VUjafZNC32OjBs3xmbJlnv37urPFE6aia7uLKnHQ8JSda7UpAMtWrSyV7MAAAAAAABvjMpO3bZtm14UFTjv0aO7tGrZQu7euSs/DRpsyW5WExTWqV1bhgwZqrNcGzf6Si5dvmwp5RJW2Gxac6Ar8vUvgpleqbx0NvWb2kemTJl0reod27f+vwRGvHiWn9OljX5ZQ5XBHR2qVMeuPyIPqL6udGnT6SDyrVvWY/Q6YjpG4cfBXGtb1Wpv0fybF+/7770eSV8kl6ZLl1YuXHiRIa/OlfDu3L2r+6DKdqhzUZVIUf698K/Nfse03fAePnwgHh5RPxUb3YlFL12KeEy2xksdo6qHfilcAP3Fti/WqfI/ka1/GZXMqxJ91RiqYHZYap2aYFRNGGyr3fBj26VLZ2ndulWkY5s2bTq5fPmKzJ83R2f1Dx48VAIDA+XBwwd6+x3bt0mSMDfgXsW//774/FUZ7V27dsn6dWtl+LCfxbdg4QjbJk2aVH8/wYlrogMAAAAAAMQlKnDYv/8AqVe3jpQtW9YSRFemz5ihs8+rff65nDl7RtepHvXL6EjLRNjKvH76NOK2SjyJ90b3oZ78N5kOWEpVhGcOvEfHo2gEUxWVaZsqVSp501SQMH/+fLrERnQCu9EV0zEKPw6q7Ivyy+gxsnPnrkj3cTlM4FzVs7fFHLg3ZytHNY4xbTfC765c0aWB3oTHjx9F8Tvr8VLXiao/HlnWdKpUL56iCAqXrR3V/sOqXr2a3v9nlSpL+Co177/3nowePUpP+Hnt2rUo96/qnysjR46S3Xv2RtqWuglQoMD7UqRIEZ0xbi6zo2TOlOmlk5/GlPoeMB0wSaOvvtI3IcKXM0qdOo0cO3b8jbbpihwaRD/kf0hPFAEAAAAAAODsvvyyocybNz9CsFrV71alJZ7+V0LE7MCBg7oGeePGjeTMmTM6aLdgQcSyD85ABVdVaQpV+zp8SY2wHj96EehUE0S+LlXW46OPPtRB0jt37siboiZYVZnGU3/7TYwYI1v+/NMkwcGPJE+ePDJrVsTyK6/CvM/y5T+1mmz0TbarbhxUrVJFPzkQ/qkGezOZTFKkSGFJkiSJ1VyKH/9XxkUd26tQpVzU+WeeryB8RvzPj4dInTq1ZezYcVHuR5WCUf1SYzt3XsQyTWFv7Cg3rlsHtFUtdHtQJXpUWezw15XKhFf15P8MVyYITlQTPTIjR/0iY8f96sgmAQAAAAAAXkndunVk1coV8sEHJSzrVEBq2M9DdZAssiDajBkzdRZqtWqfy569e+X8+fNOOfqq5IwKVE4YP05nx5qpes7dunXVk3Qq5/6baPO99168fh1Dfx6mb0CoNs11o9VEjbVrfyEffvhBjPf3zjvv6IkcO3fuJL/9Ns0yUaOjx8gWFdAcNmyYfNmwgTRv/o2+8aKoMShSuLD89OPAGPfp7t27MnLUKF2aRN08UOOnqAkm+/Xr+0ba3br1RemiN5WNHhMjR43WWfaDB/8k7kmS6HUlS36kyyetW7deT7YaU2oyUV/fArL1v5JM4amEXxVgV4H2l1FlUdQEvepGWbOmTSzjr8a2aNGiMnBAf8s8BOqzatr0a6vjUEtoqPXNt9KlS+sSMzVr1oiybdWWmovB2zubZZ36HurW1U8+/OAD+XX8hAj7LlG8uP7X1rEj+ijnAgAAAAAAEIkffuinA2sTxv+qA5EPHwZLmjSpdZa5n19XmTd/QYT3LF26TL7/vpfOtlZZ7M7q9JkzUrVqNendu5fs2rVDlwlRx6gCsHPmztPHqBw5ckTmzJkrPw8dIt27dZWQkCfybc+eNsuEREVN0Fm9Rk3p27eP7N2zW27fvq2D1KqW/MCBP770/d9+20Patm0r8ePH03XCVab/vn37pX79hrJ9xw4xaoyiMn7CRLly9ap0aN9Ovu/1ndy4cVNSpEguhw4dlomTJr1Sv1S2tBq79u3aSvfu3fTPoU+fyujRY95Iu6dPn5a9e/dJjZrVbWa7b92yOcKkpUqfvn0jrS0eXfv27dOTlvb+vpccPx4oQQ8eSGI3Nz2x6IBonCORUfXOlW3/3RyIzJatW6VixQr6SQlbE6GGHX+Vod+ubRvp06e3ZWz9Dx2SCRMm6m1UAL1V67by89DBcvToEQl+9EgCjgRIx06dxfTnPqv9eXgklWzZ3pEUyZNH2a4K9qunXX4dN1ayZcumS8ukTZtGzp49K127ddeTG4dXo0Y1PQ/B2bPnotw3Xi5exkxZIp7xTsTT01NO/nVccr6bWz+WYIS8ecvJ3j2vf8f1VRUufEpMJh/aZ/w5/zgHOAcMULxEgAQGbnLZv4Gxvd9G/w13pr/nztYPhb4wJpwnsf/aMfLvZFiq3IIqP2A0Z/obCPt8vipwqwKWqm5zVDZt3CCZM2fSk/yFLUlh3o+qW6wmdQxbJsa8Xk0YGDabVJUpUVnGYde/iX2EpQLD6ubA7dt3bJYtUdm0adKm1Rm35vImtvphzpBVNaZVqYzISvu6u7vrrP4rV65GWjM+fNvpM7yYUFNR+1PXmApU2hJZ+6oWtSpvcfPmTUtt8eiMz8vGKKpxCCt58uQ6YHr16rUIx6xKpyjhy6eomzFq+fu/JwLCS506tQ5mRzVxZFTt2lKu3Ccydcpk+ahkKasJSNVxquO1RdUUN18fto5J1Xd/++23dZ+jqr2vzg91nly7dj3C55IsWTJ97GqC05cdk5qMNVEiN72tLWrC4IwZM+rrW51X0d1/dMZWjZmq/24+59Sxq0mA1bmkqGNMnz59hPMyKup8VOesuqGjavdHRgXm1SSmjRp/bXm6AK+OTHQAAAAAAICXUEHb6NwcyZ7dW5ePmD59RoQAelT7sbVeBcjCB8nexD7CCgkJkUuXbE80qahM2rDB1KjaU1Qg1VbgV+8vODjadcZV21HtK7rtqyBnZPt52fi8bIyie26ogLGtoLGt2uMqSBpV/XgVeH2ddm3ZtGmz7N27V7p07iSdu/hZ1qtJK8NPXGmLrWNSQf/ofJ4qyGwONIengs3RDThfvvzyuu4qyB22T9Hdf3TGNvx4hS/xpK6DmJ7f6nxUN4ii0qVzZ/3ECAH0N4MgOgAAAAAAwBvSqmVLnfk8afIUxhSxWrNvWugseMROag4ClVmPN4MgOgAAAAAAwGtS9brr1a2jS11837tPjDNLAWcT3Qx7OKfwT47g9RBEBwAAAAAAeE2TJk3WE3CqmtCqNAQAIO4giA4AAAAAAPCa1CSJUU3uCACIveIb3QEAAAAAAAAAAJwVmegAAAAAALi49OnTy4MHD4zuBgAADufh4SFXr16NchuC6AAAAAAAuHgA3f+gyehuAABgGN+ChaMMpBNEBwAAAADAhZkz0FUAwahsdF/fAuLvf8iQtmmf8ef8M/b64xrkGvQ18BxUWejqRvLL/v4RRAcAAAAAADqAEBQUZMhIBAcHG9Y27TP+nH/GXn9cg1yDwU5wDr4ME4sCAAAAAAAAAGADQXQAAAAAAAAAAGygnAsAALCSJEkSXZMuVapUcvbsWTl+/AQjBAAAAABwWQTRAQCARZUqlaXnt9/KhQv/yP37QVLigxIScCRAmjZtJsGPHjFSAAAAAACXQxAdAABY3L93Xyp+Vknu37+vX6dJk0b27N4l9erVlWnTZzBSAAAAAACXQxAdAABYbN+xw2o0bt26JQ8fPpTEiZMwSgAAAAAAl0QQHQAAWEmePLlUrFhBkronlYoVy8vx48dlzty5NkfJzc1NL2YeHh6MKAAAAAAgziCIDgAArCRNmlRKlCghKZInl3fffVfWrl0nISEhNkepfbu24ufXJcJ6NTlpcHCwoaObOVN6CX1ySpyBj4+XiBjfF2fph0JfGBPOk9h/7XhnyyAi5YzuhmTNklacgbu7u9FdAAAAsTWInsrLS1KlSiUXL15kUjIAAJzclStXpHPnF0Hx1KlTy4b16+TuvXsyZMjQSLcfM3acTJw02SoT3f+gSfz9D0lQUJAYKTivl5hM+cU5nBKTycfoTjhRPxT6wphwnsSNa8cZvmcDJDDwgNGdEE9PT6O7AAAAYlsQvVChgtKn9/eSNetb8uBBkGTKlElmzpot/fsPkOfPn9uzaQAA8AbcvHlT9uzZo/+m26Ky1KPKVAcAAAAAIDazaxA9R/Yc0vO7XnLs2HH9On/+/LJyxTI5evSoLFnyuz2bBgAAryBTpoxy6dJly+tEiRJJvnx5dVY5AAAAAACuyK5B9AULF1q9DggIkBs3bkiWLFns2SwAAHhFEyaMl5N/nZRjx45JkiRJpEqVKvrR9JGjfmFMAQAAAAAuye410RMnTqwnJVOTlFWpXEmePn0qixYtsnezAADgFdSoUUuqVqkivgULSOiTUJk+Y4YsX75CHj9+zHgCAAAAAFyS3YPoGTJkkCGDB0ny5Mklffp0MnjIUKvHxMNzc3PTS9jJyQAAgGOom93Lli/XCwAAAAAAcEAQ/fz58/JZpcr65/fee08WLpinJxWdOvW3SLdv366t+Pl1ibDe17eABAcHG/KZZc2SVs/2bhTvbBn0rPdG8fHxon3G32XPP2foA+0bO/45sqcXd/dChrTt7u5uSLsAAAAAAMCBQfSwjhw5Ilu2bJXyn5azGUQfM3acTJw02SoT3f+gSU9oFhQUJEYJDDxgWNsi5cRkym9g+6fEZPKhfcbfRc8/Z+gD7Rs5/gkTBRj2N0DVIgcAAAAAAHE4iK7qoYevoZolaxa5dOmSzfeEhIToBQAAAAAAAACAOB1E/33JYlm6bJkcO3ZMkiRJIjVr1JC8efLKDz/0s2ezAAAAAAAAAAA4fxD9q0aNpXnzb6Rjh/by5EmonDx5UkqVLiP//vuvPZsFAAAAAAAAAMD5g+i3bt2SIUOG2rMJAAAAAAAAAADsJr79dg0AAAAAAAAAQOxGEB0AAAAAAAAAABsIogMAAAAAAAAAYANBdAAAAAAAAAAAbCCIDgAAAABAHJAgQQLJkT27pE+f3uiuAAAQpxBEBwAAAAAgDuj1XU/ZsWObDBjQz+iuAAAQpxBEBwAAAAAglitdurR88klZ2fXHH0Z3BQCAOIcgOgAAAAAAsVjatGll2LCh0q59RwkODja6OwAAxDkE0QEAAAAAiKXixYsnY8f8ItOnTZeAgACjuwMAQJyU0OgOAAAAAACAV9OuXVtJkCChjPt1fLTf4+bmphczDw8Phh8AgCgQRAcAAAAAIBbKlSuXdOzQXpo1ay7Zvb31uqRJk0qihIkkR/bs8vf58xIaGhrhfe3btRU/vy4R1vv6FjCsHEzWLDklONjLkLZftJ9WjOTtnY32GX+XPf+coQ+u3r4rfwe7u7tHazuC6AAAAAAAxEJp0qSWS5cuyYAB/SzrMmbMKM+ePZPffpsiderWlytXrkR435ix42TipMlWmej+B03i739IgoKCxAgqeLN3T34xToAEBh4wsH0Rk4n2GX/XPf+coQ+u3L4rfwd7enpGazuC6AAAAAAAxEK7dv0hH5cqY7Vuxoxp8vjxY2nRopXN94WEhOgFAABEDxOLAgAAAAAAAABgA5noAAAAAADEEZcuXZYnZJkDAPBGEUQHAAAAACCO6NnzO6O7AABAnEM5FwAAAAAAAAAAbCATHQAAWCRPnlwaNfpKShQvLgkTJZTDhw7LhImT5NatW4wSAAAAAMAlkYkOAAAsFi6YJx4eHjJ5ylQZN/ZXKVSokKxYsUySJUvGKAEAAAAAXBKZ6AAAwKJ6jVry6NEjy+sjAQEScOSQlClTWlasWMlIAQAAAABcjkMy0RMnTizuSZI4oikAAPAawgbQlZCQEHn+/LkkSJCAcQUAAAAAuCS7BtHLlftEli/7XY4GHJaAgMOyZfMm+bhkSXs2CQAA3qCOHdpLcHCw7Nix0+Y2bm5u4unpaVlUORgAAAAAAOIKu5ZzqVC+vPQfMFD8/Q/p135dOsu0aVOl7Cefyvnz5+3ZNAAAeE01qleX1q1bSes2beXmzZs2t2vfrq34+XWJsN7Xt4AOwBspc6b0EvrklDgDHx8vETG+L87SD4W+MCacJ1w7b0qO7OnF3b2QGM3d3d3oLgAAgNgWRO/WvYfV6xEjR0nbtm3kgxLFCaIDAODEqlSpLCNGDJNu3XrI6tVrotx2zNhxMnHSZMtrlYnuf9Ckb6IHBQWJkYLzeonJlF+cwykxmXyM7oQT9UOhL4wJ5wnXzpuRMFGABAYeEKOpJ7IAAEDc49CJRTNnzqwf+b52/bojmwUAADFQqdJnMmb0L/Ldd71kwcKFL91e1U1XCwAAAAAAcZHDgujx48eXoUMGyYkTf8n27TtsbqeC7Goxo64qAACOU7FiRRk3doz07NlL5i9YwNADAAAAAFyew4Low4f9LLly5ZKatb6Q0NDQWFVX1ds7m7hyPVej65XSPuNvdO1ezkHXPgeNrLFqRF3V0b+MlKdPn0qzZk30YjZz1myZNWu2w/sDAAAAAIDRHBJEHzpksJQtW0a+qF1Xzp49FyvrqppMB1y4nqvR9Uppn/E3unYv56Arn4NG1lg1oq5qteo19NNj4V27Rik2AAAAAIBrsnsQfciQQVKhQnmpXaeenDr18kxC6qoCAGCc48dPMPwAAAAAADgqiP7TjwOlRvXq0rxFK7l//55kzJhBr79/P8jQrHIAAAAAAAAAAAwPopcqVUru3b8vw4f/bLV+0qTJegEAAAAAAAAAwGWD6B9+VNKeuwcAAAAAAAAAwK4izhwGAAAAAAAAAAA0gugAAAAAAAAAANhAEB0AAAAAAAAAABsIogMAAAAAAAAAYANBdAAAAAAA4oBEiRIZ3QUAAOIkgugAAAAAAMRSb7/9towaNUKOHj0iJ/86Lnt275LGjRsZ3S0AAOIUgugAAAAAAMRSVatUlg0bNkqxYiXEO7uP/PjTIBk4oL+U//RTo7sGAECcQRAdAAAAAIBYauy4X2XNmrXy4MEDef78uaxatVquXLkiefPmMbprAADEGQmN7gAAAAAAAHh18eLFk2TJkknSpEmlcuVK4unpKWvWrmNIAQB4QwiiAwAAAAAQi2XPnl1Wrlimg+ihoU/l25495a+//rK5vZubm17MPDw8HNRTAABiJ4LoAAAAAADEYqdPn5bcefJJggQJpFKlz2T0L6Mk5HGILF+xItLt27drK35+XSKs9/UtIMHBwWKErFnSikiAGCWnT1pxdy9kWPve3tkMa5v2GX+jzz/OQePPQVf+DnZ3d4/WdgTRAQAAAACIA54+fSorV66SqlWrSJ06tW0G0ceMHScTJ022ykT3P2gSf/9DEhQUJEYJDDxgWNsqeGMyGde+QvuMvyuff87QB1dv31W/gz09PaO1HUF0AAAAAADikGSeyeTx48c2fx8SEqIXAAAQPQTRAQAAAACIpebOmS2/TZsmx44dkyRJkkjNGjXko48+lK+bNDW6awAAxBkE0QEAAAAAiKUGDBwoHTt0EN+BA+RJaKic/OukfFG7ruzbt8/orgEAEGcQRAcAAAAAIJY6fvyEtGrdxuhuAAAQp8U3ugMAAAAAAAAAADgrgugAAAAAAAAAANhAEB0AAAAAAAAAABsIogMAgAhSpUolJUoUlzRp0jA6AAAAAACX5rAgeoIECRzVFAAAeEU5cuSQsWNGy8YN62XJ4kXy8cclGUsAAAAAgEuzaxDdw8NDGjX6SjZt3CAX/vlbatasYc/mAADAa/LOlk22bN0qJT74kLEEAAAAAEBEEtpzFL74opbkzp1LOnbqpDPaAACAc9uwcaPRXQAAAAAAwHWC6DNmzLTn7gEAgBNwc3PTS9gn0QAAAAAAiCvsGkQHAABxX/t2bcXPr0uE9b6+BSQ4OFiMlDlTegl9ckqcgY+Pl4gY3xdn6YdCXxgTzhOunTclR/b04u5eSIzm7u5udBcAAIArBNHJZgMAIHYZM3acTJw02SoT3f+gSfz9D0lQUJChfQvO6yUmU35xDqfEZPIxuhNO1A+FvjAmnCdcO29GwkQBEhh4QIzm6elpdBcAAIArBNGdMZvN2zubuHIWndFZYrTP+BudMck5aOw5mDNnSv0/xoa175PWsMy22JLNFhISohcAAAAAAOIipwuiO2s2m8l0wIWz6IzOEqN9xt/ojEnOQSPPwReZZZsMa18F0I36G0A2GwAAAAAAxnO6IDrZbAAAGCdFihSSJ09uy2sfHx8pUaK4XLt2Tc6cOctHAwAAAABwOXYPoidIkMDyc/z48fXrZ8+eyfPnz+3dNAAAiKG33npL/Lq8KKu2e/ceKVK4sF42b94s489MZDwBAAAAAC7HrkH0Dz/8QObNnaN/Dg0NlRHDh+ll3vz50qNHT3s2DQAAXkFAQIB8UbsOYwcAAAAAgCOC6H/8sVveetvYSTkBAAAAAAAAAHhV8V/5nQAAAAAAAAAAxHEE0QEAAAAAAAAAsIEgOgAAAAAAAAAANhBEBwAAAAAAAADABoLoAAAAAAAAAADYQBAdAAAAAIBYKmfOnDJq1AjZt3e3HDD9Kb9NnSLvvvuu0d0CACBOIYgOAAAAAEAs1b9fX9m5c5fU+qKOVP38c7kfdF+WLF4o6dKlM7prAADEGQmN7gAAAAAAAHg19eo3tHrdvfu3cvKv41Kq1MeyaNFihhUAgDeATHQAAAAAAOIIT09PSZAggTx48MDorgAAEGeQiQ4AAAAAQBzRt29vuXL1qmzbtt3mNm5ubnox8/DwcFDvAACInQiiAwAAAAAQB3Tu1FEqffaZ1KvfQB4+fGhzu/bt2oqfX5cI6319C0hwcLAYwds7myHt0j7jz/ln/PXHZ2D8Z+DK7bu7u0drO4LoAAAAAADEcu3atpG2bdtIo8Zfi8l0IMptx4wdJxMnTbbKRPc/aBJ//0MSFBQkRnlZv2mf8ef8i7vXnzP0gfZdc/w9PT2jtR1BdAAAAAAAYrG2bVpL586dpPHXTWT37j0v3T4kJEQvAAAgegiiAwAAAAAQS7Vs2UIH0FUG+h9/7Da6OwAAxEnxje4AAAAAAAB4Nd27dZPEiRPLrJkz5OyZU5alY8cODCkAAG8ImegAAAAAAMRSufPklXjx4kVYHxoaakh/AACIiwiiAwAAAAAQS1HbHAAA+6OcCwAAAAAAAAAABNEBAAAAAAAAAIgZMtEBAAAAAAAAALCBIDoAAAAAAAAAAEYF0cuV+0RWLF8qB0x/yuJFC6Vo0aL2bhIAAAAAAAAAAOcPoquA+dQpk2XV6jXyRe3aYjpwQObNnSM+Pj72bBYAALyGLFmyyPe9vpMJ43+V7t27SerUqRlPAAAAAIDLsmsQvV27NrJ9xw6ZNGmynDv3twwePETOnjsrrVq2sGezAADgFWXNmlXWrVsjb739lmzduk18CxSQdWtXSyovL8YUAAAAAOCS7BpEL1a0qOzcuctq3Y7tO6RoMUq6AADgjLp07iT/XrggLVu2lgULF0rjr5tIvHjxpAU3wAEAAAAALspuQXQPDw9JliyZ3Lh+w2r99es3JH26dDbf5+bmJp6enpZF7QcAADhGmTKlZe269fL8+XP9OiQkRDZs3CRly5TmIwAAAAAAuKSE9tqxylpTnj57arU+9GmoxI9vO3bfvl1b8fPrEmG9r28BCQ4OFiN4e2cTI2XOlF5Cn5wyrH0fH/UIP+0z/q55/jlDH1y9/RzZ04u7eyHD2jfyb4C7u7tD20uSJImkS5dOLl26ZLVevc5avVqUN8DVYsYNcAAAAABAXGK3IPqDBw8kOPiRpE6Vymq9mpzs5s2bNt83Zuw4mThpstX/iPsfNIm//yEJCgoSo5hMBwxrOzivl5hM+Q1rXwXPTCYjJ4Olfcbf6MmIOQeNPAcTJgqQwEDjvoON/BugnshyJHMgPPxN64cPHkjixIlj1Q1wZ7kR7Uw3pJytHwp9YUw4T2L/tZMzZ0r9t9poOX3SGnrT3agb4AAAIJYH0dVj4IcPH5aiRYvKtOkzLOtLFC+mA+K2qMfG1QIAABxL3QAPDQ2VFClSWK338vKSu3fvxrob4M5xI9qZbsg5Wz8U+sKYcJ7E9mvnxc3uTUZ3QwfQjUx8MuoGOAAAcAy7Tiw69bffpGLFClK2bBldwqVWrZpSsGBB+W3adHs2CwAAXsHTp0/l5MlTkjdPHqv1efPmlePHT9h8n7r5rYLl5kUF4wEAAAAAiCvslomurF69RjJlyiSjR/8inh4ecufOHfHr2k32799vz2YBAMArWrJkibRp01rGjftVLl66JLly5ZJSpUpJt+7dGVMAAAAAgEuyaxBdmTx5il7Uo91kpgEA4NwmT5mqnxrbuHG9zj5/7738OrD+++9Lje4aAAAAAABxM4huRgAdAADnp2qiN2/RUnLmzCmZM2eSv//+W86d+9vobgEAAAAAEPeD6AAAIPY4efKkXgAAAAAAcHV2nVgUAAAAAAAAAIDYjCA6AAAAAAAAAAA2EEQHAAAAAAAAAMAGgugAAAAAAMRiH5csKVMmT5J9e3dLxQoVjO4OAABxDkF0AAAAAABiqebNv5G2bVvL0mXLJGvWrJLUI6nRXQIAIM5JaHQHAAAAAADAq/ntt2kyefIUhg8AADsiEx0AAAAAgFjq6dOnRncBAIA4j0x0AAAAAABciJubm17MPDw8DO0PAADOjiA6AAAAAAAupH27tuLn1yXCel/fAhIcHGxIn7y9sxnSLu0z/px/xl9/fAbGfwZZs+SU4GAvA9tPa1jb7u7u0dqOIDoAAAAAAC5kzNhxMnHSZKtMdP+DJvH3PyRBQUGG9ctkOmBY27TP+HP+GXv9cQ0aew2qAPrePfkNa18kQAIDjTl+T0/PaG1HEB0AAAAAABcSEhKiFwAAED1MLAoAAAAAAAAAgA0E0QEAAAAAiKWKFC4s+/bu1ovS74e++ufven5rdNcAAIgzKOcCAAAAAEAsdSQgQGp9USfC+gcPjKttDgBAXEMQHQAAAACAWOrx48fy77//Gt0NAADiNMq5AAAAAAAAAABgA0F0AAAAAAAAAABsIIgOAAAAAAAAAIANBNEBAAAAAAAAADAqiF60aFEZN3aM7Ni+VT79tJy9mwMAAAAAAAAAIHYE0b/5ppl817OHbN6yRXLkyCHJkiWzZ3MAAAAAAAAAAMSeIPrMmbOkeo1a8vvvS+3ZDAAAAAAAAAAAsS+IHhISYs/dAwAAO3Fzc5N33nlHkiZNyhgDAAAAAFxafGf8n3ZPT0/L4uHhYXSXAABwGRkzZpBe3/WUPbv/kN1/7JSKFSsY3SUAAAAAAAyVMCYbN2vWVBo3+irKbTp07CyHDh165Q61b9dW/Py6RFjv61tAgoODxQje3tnESJkzpZfQJ6cMa9/Hx0tEaJ/xd83zzxn64Ort58ieXtzdCxnWvpF/A9zd3R3eZvHixeXu3btSvkJFCTjy6n/PAQAAAABwySD60t+XyvZt26Pc5uLFi6/VoTFjx8nESZMtr1Umuv9Bk/j7H5KgoCAxisl0wLC2g/N6icmU37D2VfDMZPKhfcbfRc8/Z+iDa7efMFGABAYa9x1s5N8A9USWoy1duszhbQIAAAAAEGeC6Ldu39aLveuoU0sdAAAAAAAAABDrgugAACB2SZkypV6icuXKFXn06NFrzWeiFjPmMwEAAAAAxCV2DaIXKlRQRo4Ybnn9fa9e0qljB1m5arX8/PMwezYNAABEpHbtL+Trxo2jHIt27dvrsmlxaT4TZ5lXxJnmF3C2fij0hTHhPIn9147Rc5c4yzxWRs5nAgAAYnkQ/VjgMWna9JsI6+/eu2fPZgEAwH8mT56iF3ty1vlMnGNeEWea38DZ+qHQF8aE8yS2XzvOMHeJM8xjZeR8JgAAIJYH0YMfPZLTZ87YswkAAGAw5jMBAAAAAMRl1EQHAAAWSZIkkQwZMlhep02bVt555x25d++e3Lp1i5ECAAAAALic+EZ3AAAAOI98+fLKnNmz9HLu3N/S6Kuv9M8tWjQ3umsAAAAAABiCTHQAAGBVT/bDj0oyIgAAAAAA/IdMdAAAAAAAAAAAbCATHQAAAACAWCx//vzSqmULyZIls5w997eMHTtWzpw5a3S3AACIM8hEBwAAAAAglsqVK5csW7pETwA+fPhISZAgvixfvkwyZcpodNcAAIgzCKIDAAAAABBLderUQQ4fPiK9+/SVHTt3SseOneXOnTvSqmVLo7sGAECcQRAdAAAAAIBY6qOPPpLNmzdbXj9//ly2bN6i1wMAgDeDmugAAAAAAMRC7u7uksrLS65cvWq1/urVq5I5cyab73Nzc9OLmYeHh137CQBAbEcQHQAAAACAWChRokT635CQEKv1jx49koQJX/wuMu3btRU/vy4R1vv6FpDg4GAxgrd3NkPapX3Gn/PP+OuPz8D4zyBrlrQiEmBY+zl90oq7eyHDbkhHB0F0AAAAAABioaCgIB1A9/LyslqfKlUquX3nts33jRk7TiZOmmyVie5/0CT+/of0Po1iMh0wrG3aZ/w5/4y9/rgGjb8GAwONa9/dvZBhx+/p6Rmt7aiJDgAAAABALPTs2TM5duy4FHj/fav1vr6+cjTgqM33qcC7CpablwcPHjigtwAAxF4E0QEAAAAAiKXmzpsnlStXkly5cunXxYsXlw8//EDmzp1ndNcAAIgzKOcCAAAAAEAsNXv2HMnp4yNr16ySy5evSIYM6WXUqF9kw8aNRncNAIA4gyA6AAAAAACxWJ++P8iIkaMkQ4YMcvHiRbl//77RXQIAIE4hiA4AAAAAQCx3584dvQAAgDePmugAAAAAAAAAANhAEB0AAAAAAAAAABsIogMAAAAAAAAAYANBdAAAAAAAAAAAjJhYNEmSJFKnTm0pUby4JEyYUA4fPizTps+QBw8e2LNZAAAAAAAAAACcPxN92dIlkuvdd2XduvWyfMUKqVy5sqxYvkzc3d3t2SwAAAAAAAAAAM6fiV6nbn25d++e5fXevfvkkP8BKVu2jKxevcaeTQMAAAAAAAAA4NyZ6GED6EpQUJA8ffqUTHQAAAAAAAAAQKxg10z08Fq0aC6hoaGyc+cum9u4ubnpxczDw8NBvQMAAAAAAAAA4DWC6PXr1ZVatWpFuU3fH36QwMBjEdaX//RT6erXRbp26y5Xr161+f727dqKn1+XCOt9fQtIcHCwGMHbO5sYKXOm9BL65JRh7fv4eIkI7TP+rnn+OUMfXL39HNnTi7t7IcPaN/JvAHOIAAAAAAAQy4Lou/7YLX+fPx/lNhcu/BthXenSpWXChF+lX/8BsnDhoijfP2bsOJk4abJVJrr/QZP4+x/S5WCMYjIdMKzt4LxeYjLlN6x9FTwzmXxon/F30fPPGfrg2u0nTBQggYHGfQcb+TfA09PTkHaLFi0qJUoUl0QJE8qhw4dl06bNhvQDAAAAAIBYF0S/cOGCXmKiVKlSMnXKZBk0eIhMnfrbS7cPCQnRCwAAcLy5c2ZL4sSJZd/+/fLs6VMZOmSIBAQcka+bNJPnz5/zkQAAAAAAXI5da6J/XLKk/DZ1igweMkQmT55iz6YAAMAbMGDgQDl+/ITl9bJly2XHjm1StmwZ2bx5C2MMAAAAAHA5dg2iT5w4Xp49eyoVypfXi9nCRYteWtYFAAA4XtgAunL23Dl5/PixpEublo8DAAAAAOCS7BpEV49+x48fL1p10wEAgPOpVaumJEyYUPb/+afNbdzc3PQSdj4TAAAAAADiCrsG0fft22fP3QMAgJcoV+4TKVO6dJTbTJk6Vc6d+zvC+rx588iPAwfoSb/PnDlr8/3t27UVP78uEdb7+haQ4OBgQz+jzJnSS+iTU+IMfHy89ES9RnOWfij0hTHhPIn9106O7OnF3b2Q0d0Qb+9s4gzc3d2N7gIAAIhtQXQAAGCsmzdvyunTp6PcJjj4UYR1OXPmlHlz5+ia6EOH/hzl+1WQfeKkyVaZ6P4HTeLvf0iCgoLESMF5vcRkyi/O4ZSYTD5Gd8KJ+qHQF8aE8yS2XzsJEwVIYOABcQYmk/H98PT0NLoLAADADgiiAwAQh6lAtlpiwsfHRxYtnC/r12+Q7j2+fen2ISEhegEAAAAAIC6Kb3QHAACA88iRPbsOoG/YsFG6de9hdHcAAAAAADAcmegAAMBi7tzZkjRpUnny5Imuh262ecsW2bJlKyMFAAAAAHA5BNEBAIBVffOECRJEGJFbt24zSgAAOKlMmTJKwwYNJF/+fDJhwkTZs2ev0V0CACBOIYgOAAAsZs2azWgAABCL1K79hXT16yILFy6ST8uVk+XLVxjdJQAA4hxqogMAAAAAEEtt27ZdSnzwkQwfMdLorgAAEGeRiQ4AAAAAQCx1/fp1o7sAAECcRxAdAAAAAAAX4ubmphczDw8Pq3+N4O7uLp6enrTP+HP+ueD15wx9oH3XHX+PaP7tI4gOAAAAAICTqFmzhlSr9nmU2wwaNEROnDjxym20b9dW/Py6RFjvf9D0yvsEACA2U8H0oKAgm78niA4AAAAAgJM4fPiw3Lt3L8ptrl698lptjBk7TiZOmmwVOFABdN+CheXBgwfiaLTP+HP+ue715wx9oH3XHn9zH65evSpRIYgOAAAAAICTOHPmrF7sKSQkRC/hqeBFVFl49kb7jD/nn+tef87QB9p33fEPika78R3SEwAAAAAAAAAAYiEy0QEAAAAAiKXy5MktPXp0t7xu1bKFrqm+fdt2+W3adEP7BgBAXEEQHQAAAACAWOrK5Ssya9Zs/bP5X+XixYvR3ocq7TJ8+IhIS7w4Au0z/px/rnv9OUMfaN+1xz+6CKIDAAAAABBL3bp9WzZt2vz6AYwRI99Yn2if8ef84/rjHOAciC1/g6KLmugAAAAAAAAAANhAEB0AAAAAAAAAABsIogMAAAAAAAAAYAM10QEAAAAAgJWiRYtK9erVJGWKFLJjx06Zv2CBQ0Yoc6ZM8tOgHyOsHzRoiJw4ccKhn1LChAnl56FDJFXqVNK2bXsJCgpySLteXimlfr16ki9fPt3m9h07ZM2atfL8+XOHfQZ16tSWnDlzys2bN2XFipWy/88/xZGKFC4s9evXk9RpUkuzZs0lNDTUbud5ndpfSLLkyeTgQX+ZPn2GPH78WBwlR44c8uWXDSVbtnekf/8BcubMWYe17ebmJjWqV5dixYpKvHjx5MDBg7JgwUJ58uSJw/pQokRx+axiRUmbNq38ff68zJs3X/755x9xtKxZs8qA/v3kwoUL0rtPX4e0mSdPbunRo3uE9d9+21MuX74ijpI/Xz6pXfsLSZcunezbt09mzpotT58+tXu75T/9VBp+2SDS33Xu7Ce3bt0Sl8tEL1y4kHzX81sZ9vNQadO6laROndreTQIAAAAAgFfUrm0bmTN7pty4fl1WrV4t773/nnT16+KQ8fRMlkw+LVdOli9fIbNmzbYsV686Lqhk9m2P7jrIqvrjliiRQ9pMkyaNLFv6ux6HtevWydmz52TwoJ9kUCQ3FuyhWLFismDhfEmQIIFu/+7duzJ//lxp2uRrcZTfpk6R3r176Z/V2Ku+2EPFChVk0cL5cuPmTdm6ZZvUr1dXZs6YJo7i16WzTJ0ySZ6GhurjTJEihTjS+nVrpGjRIrJv3375888/pWWL5rJwwXx988gROnXqKK1bt5IzZ8/KunXr5Z2335bNmzbo4LIjqeP99dex4uPjI8WLF3NYuyo+qj73sN9zarlz567D+lCvbl1ZtmypvnG0YuVKyZw5s76Z4AjHT5yIcOxeXl7ybs6cThlAV+x6ZXTr6ieFChWUrdu26ztKVSpX1hdIlarV5Pz58/ZsGgAAAAAAxFDevHl0dmTLVq119rOi/k2ePLlDx3Lnzl1y/fp1MUqpUqWkQsUKMnTozzJ+/DiHtXv//n2pWLGSBD96ZFn3MPih/NC3j/Ts2cvu2egq27906bIRMr9VwPO3adPFEb7r9b1cuXJFKleuJPXq1bVbO717fy8zZsyUwYOH6Nf7/9wvu3bukHLlPpFNmzaLvc2ZO0+Gjxgp77zzjo6VOVrtOvXkxo0bltd79+3Tx//hBx/opx/sTWX9jxr1i+X18hUrZPcfu6Ta55/LsWPHxZE3y86dOycHDx6UD0qUEEdzxLlm86mfnwZK//4DZfqMGQ7/rr9w4YJezDw9PWXC+F9l9Jix4qzsGkSfMXOW/DxsuOX1/PkLxP+gSapWrSJjxzrujxAAAAAAAHg5VcZDBTDNAXSze/fuOXT4+v3QV5eYOHPmjMyaPUeuXr3qsLZVaYnhw3+W5s1bOPxp+shKiajMTFXiwhHlXFTmeXjXrl+XpEmT6s/DEX1Q55+9qfIpalmzdp1lncr6Dzx2TMqULu2QwKYjjjMqYQPoyrVrL25aeSbzdEj7d+7ciXDdqVJG5879LY68WaZu1nxavqJ06+YnRhg5YrgurfPXyZMyc+asCONiLzVqVNc3y+bOm2fod71ZtWqf63FQJYVcMoh+7do1q9epUqXSX7wXL160Z7MAAAAAAOAV5M6dW/wPHdLZuKpesgrq/rF7t/z++1KH1eQ+fPiILi9xPyhIPv+8quxo/o3UrPWFBAYec0j7Y0aPktmz54i//4txMKqkjiqt8vbbb8nNm7fkq0aOK6cSlgpqNW7USLZt2+6wz98R3sr6lv738uXLVusvXbokWd/KKq5IlXN58OCB7N27z2FtqptUI0YME3d3d8mTO7eMHj3GYfMvqNJJKoDdqlVrh813EN7u3XvEdOCAPA19qm9gNv+mmXxWqYr8+++/DvmuP3bsmBQsWFDq16+rr+8DBw7quvT2moMgKg3q15fNm7c49IZpTNm90FHGjBmkT+/ekjSpu+TP/56MGDFSli5dFuUXtFrMPDw87N1FAAAAAADipPfff1+6dOkU5TYLFy6S1avX6J9VMCunj4+kSZ1GZs2eLV4pU0rv73tJyZIfSadOMa+LrkpV9OsX9UR969dvkLlzX2RD/qNKwVb93DKx3eLFS2ThwvnSt28fqVOnXozbV5mto0aNjHKbfXv3ya/jJ+if27VrK0mSJNHBvDdBZW9Pn/5blNucOH5CBv1XUsRs+46dcurUafHxySEtWjSXRl99KT/+NOiV+jB2zGg9caYtly5dlp49v4u07yrImDJlSvm+dx95VYMG/SSZMmW0+fv79+5Lu/YdxJESub2ocR8cHGy1Xr1Wk+m6mgrly0vHjh2ki19XPZmso6igvaqFncwzmVSoWF6f66oktCMmER4z+hcdsHf0pLlmaiLbL2rXsbxetHixrF+3Vnp+20Patmtv9/bVd723t7f07dNbpv72myROnFjfvFPnwpdfNRJHypUrl/j6FpBGjY25WWiXILoqw1Lps8+i3GbEyFFy6tQpy+ugoAd6goDkKZLrD6RBwwayctVqm3dV2rdrK36RTFiiBjP8l5ujeHtnEyNlzpReQp/8f0wdzcfHS0Ron/F3zfPPGfrg6u3nyJ5e3N0LGda+kX8D1H/YAAAAvA71/94qSBUVFaw1u3vnruR69135qlFjHeBSLl+5IlOnTJbBg4fGuASFCsi9rP3z5/+x/By2FriZKq3RpXPUNwJsefgw+KXtX7n8/2Nq1rSJXLlyVaZNm6pfq5sJytixY2TpsmWyaNHiGLWvsjtf1v7t27cjrAsICNDL+g0bXkzAN3OGLrvwKqUuVJ/NQePImD/n8IYOGSwfffShfFG77muVHlmxYkWUCZJPQp6Io927+6JkhbpBELaKgprY0FHlNJxF6dKldd3/fv0H6JtWjvTo0SNL6ZwX19cC6d6tqzRt9o1d282ZM6eUKvWxPHv2TGb8N5msunmoPn/1esiQoXavyx7+ulM3Drdt2yYVKpQXR1Clm1Q2fvkKn1mu77/++ktWLF8m+fPn198/jlK/fl25dPmybNmyVeJMEF39YV0Xb32U24SfQVVNiqEmB1DU41Dr1q7WQfLOnSO/gz1m7DiZOGmy5bX6olV11NVjVEY9XqGYTAcMazs4r5eYTPkNa18Fz0wmH9pn/F30/HOGPrh2+wkTBUhgoHHfwUb+DVCTqwAAALwOFcSOSX3nwMBAyZEju1WAR9XjVtKkTh3jYKqKCbxufekUKVK8cnkBVY4mJu136NhJJwCaFXj/fZ3UpwLRrxpUet3j//vvF4Hz9OkzvFIQ/VUmiRwyZJCUL/+pnnwybKLkq9izZ684G1V/Wp1TefPkkZMnT+p18ePH1zeQHDWBqjNQNcHVDTL1JMTUqVE/MeEIf5/7W/LmzWv3dlSZ6fBZzw0bNJBcud7VN73C3lhzJPVd9+SJY0qpHA0MlM+DH1l9p5tvaKZJ47i5IBIlSiS1atbUk/yqmxpxJoiuHqd4nUcq1B3Y06fPSJYsmW1uExISohcAAAAAAOBYixYvkZYtW0jRokVl//79el3NGjV0wtyp0//PWLeXihUryoEDB+T69ReTHKrJH7/6smGEiU7tZefOXZGu3759u9yKJGP8TStevLjcuH5dTp85YwnsNm3SRGeNOiozVJVfqVihgg6gmwPMcY0az40bN0nTZk1kzdq1+mZLvbp1dBBz2bLl4go+LllSfps6RQYPGSKTJ09xePv169XV3zfmG2Rvv/22vnGjykvZm7pJGP7mlipZpeKVjphUVqn2+eeybft2y2S+KvtbTfY5ceIkh7S/YsVK+bZHdz2xqrmclwpmP3z4UAICjoqjVKxYQV93c+fNF2dn15ro1atVk2XL///lkzVrVvn445Iy8yWPMgEAAAAAAMc7ffq0ro89a+Z0Xc5ABTdUyYtWrdvoQKMjyjssWbxQB3JUgl3evPlk9ZrVutSEK7h7946u4e7hkVSuXb8uObLnkKCg+/JN8xY2y668SVWqVJbGjb6SEyf+kl69elr9rn37jnLv3osyKPbUuHEjKVu2jKRLm06/njJ5kjx7/kyG/TxcAo6+ueBez+96yZw5s2T3H7t0Nu677+aUb7/9Ts6fPy+OUKZMafn668aWEo59en8vd+/ds5qjwF5UvXtVsujx40e6ZI9azObNWyDr1q0Te0uTNq3s2b1LLlz4V5cbUhOLqsCumkvRVahqHTdu3pR4Ek/y5MmtJ/Uc9ctoh7StblSqa3rkyOF6Uln1BE7mLFmkY6fOcuPGDXGU+vXqyY4dO/XTAS4dRC/gW0C6d+8mp8+c1hNzFPT1lbVr18nYMWPt2SwAAHhFGTJkkA7t2+ksEC+vVHLu3DmZOGlSjOt/AgCA2Gve/AWydt16yZcvr9y7d1/XyXVEAF1RNYHLlN2pyyp4eHjK2bNnHRrQCU+VllVlH+7dv++Q9o4fP6EnVlXz8mTMmFEHd8+ePaef7HcE9RSArcn91A0OR9i3b3+kAbWLly690XZULfTy5SvKe++9J8mTJ5OjR4/K7duOq4d+8q+Tlnr5k8KUNQ47R4G9qPOpZavWkffrpGPmwxozZqwuIaOCx6o/586ec8jTHrbMnj1XVq92zBMviip9vXbdOj2ppptbIjlz5oxDzz9l3fr1srPILnn//ff0PJTq5pmj56OcPGWK/o6LDewaRP/hh376olCPJISGPtGlXF5nMgoAAGBfDerXE/9Dh/RE4WouEvWY4Yjhw/T/vG7duo3hBwDARajJFXft+sOQttUEe4GBxyQ21pR/U1RQyYjA0uXLV/RipNctJRwTKnh7+PBhMYK6KfCmbwzEhBHndXjqiRMj5yAM63Vr/78K9bTNkSNHxEjqCZfdu/cY1v7WWPT/mHYNopv/4Kg7yQAAwPmp4HlYCxYulK5du4hvgQKx6j9wAAAAAACINUF0AAAQ+yRIkECSJk0qVSpX0rVQN2zYaHSXAAAAAAAwBEF0AADiMDVpUPz48V/6yHRYOXPmlE0b10vChAklOPiRdOveXY4GBtp8v5ubm17MPDw83kDPAQAAAABwDgTRAQCIw/y6dJYOHdpHuU2duvVl7969ltcnT56Ut97OpjPRP69aVddEf/jgoZ54JjLt27UVP78uEdb7+hZw+MQ04WXOlF5Cnzi+vmFkfHy8VLVFo7vhNP1Q6AtjwnkS+6+dHNnTi7t7IaO7oSdhdAbu7u5GdwEAANgBQXQAAOKwYcNH6OVVJ/qZv2CBfPppOWnYsIHNIPqYseNk4qTJVpno/gdN4u9/SE9OaqTgvF5iMuUX53BKTCYfozvhRP1Q6AtjwnkS26+dhIkCJDDQOSaFc4bJ6Tw9PY3uAgAAsAOC6AAAIEqqVMuz58+inFVeLQAAAAAAxEVRF0kFAAAuZeqUyVKiRHE9mWj69OmldauWUrp0KZk/f4HRXQMAAAAAwBBkogMAAItfx4+Xjh07SEFfX3ny5Imuj/5Vo69l27ZtjBIAAAAAwCURRAcAABYHDhyURo2+ZkQAAAAAAPgP5VwAAAAAAAAAALCBIDoAAAAAAAAAADYQRAcAAAAAAAAAwAaC6AAAAAAAAAAA2EAQHQAAAAAAAAAAGwiiAwAAAAAAAABgA0F0AAAAAAAAAABsIIgOAAAAAAAAAIANBNEBAAAAAAAAALCBIDoAAAAAAAAAADYQRAcAAAAAAAAAwAaC6AAAAAAAAAAAGB1E9/bOJv369ZU6dWo7qkkAAAAAAAAAAF5Lwtd7e/S4ubnJhPG/SsaMGfWycOEiRzQLAAAAAAAAAIDzB9H79P5e/A8dkstXrjiiOQAAAAAAAAAAYkc5lwrly8vHH5eUH/r2s3dTAAAAAAAAAADEnkz0TJkyypAhg6RR4yYS/OhRtEu/qMXMw8PDjj0EAAAAAAAAAOANBdHLli0jpUp9HOU206bNkL///lvix48vY8eMkSlTf5MjR45Eu4327dqKn1+XCOt9fQtIcHCwGEFNimqkrFnSikiAYe17Z8sgIqcMa9/Hx4v2GX/Dzj/OQZGcOVNKwkTGfQfl9Ekr7u6FDGvfyL8B7u7uhrUNAAAAAABeIYh+9+5duXDh3yi3efz4RcZ56dKldOA7MDBQ+vXrq9fl9PGRp8+e6dcjR/4id+7cifD+MWPHycRJk60y0f0PmsTf/5AEBQWJUUymA2KkwEAj2y8nJlN+A9s/JSaTD+0z/pwDBlEB9MDATYaNvwqgG/0dbFT7np6ehrQLAAAAAABeMYh+4MBBvUTHmTNn5cefBlmte/TokYSGhupAvPo3MiEhIXoBAAAAAAAAACDO1kQ/f/68TJky1WpdyZIfyePHjyOsBwAAAAAAAADAGcU3ugMAAAAAAAAAALhcJnpk5syeK0+fPXVkkwAAAAAAAAAAxI4g+oaNGx3ZHAAAeA3p06eXGtWry5mzZ2TjRuMmlwUAAAAAwGWC6AAAIHaIFy+ejBs7Rt57L79s276dIDoAAAAAwGVREx0AAETQuVNHuX37tuzZu5fRAQAAAAC4NILoAADAStGiRaVevbrSrXsPRgYAAAAA4PIo5wIAACxSpkwpY8f8In5du8mdO3eiNTJubm56MfPw8GBEAQAAAABxBkF0AADisCKFC0uhQoWi3GbFyhVy6dJl/fPIEcNl1eo1snPnrmi30b5dW/Hz6xJhva9vAQkODhYjZc2SVkQCxBl4Z8sgIqeM7ob4+Hg5RT8U+sKYcJ68mpw5U0rCRM7x3ZbTJ624u0f9d8YRvL2ziTNwd3c3ugsAAMAOCKIDABCHeXh6Srp0KpBsW6JEL7LIPy5ZUkqXLiX+ow5Jq5Yt9bq333pLQkOf6tez58yRoKCgCO8fM3acTJw0+f9teniI/0GT+PsfinR7RwsMPCDOoZyYTPmN7oQOoJtMPuIc6AtjwnnyKlQAPTBwkzgDFUA3mZzje9YZ+uHp6Wl0FwAAgB0QRAcAIA7btm2bXqLjytWrMm3adEmZIoVlnZtbYkmQIFQH4hMkSBDp+0JCQvQCAAAAAEBcRBAdAABoJ0+elP4DBlqNRvYc2eXx48cR1gMAAAAA4CriG90BAAAAAAAAAACcFZnoAADAprVr1kno01BGCAAAAADgsgiiAwAAm+YvWMDoAAAAAABcGuVcAAAAAAAAAACwgSA6AAAAAAAAAAA2EEQHAAAAAAAAAMAGgugAAAAAAAAAANhAEB0AAAAAAAAAABsIogMAAAAAAAAAYANBdAAAAAAAAAAAbCCIDgAAAAAAAACADQTRAQAAAAAAAACwIaHYUeHChaR4sWJW6x49fixTpky1Z7MAAAAAAAAAADh/JvqHH34oTZo0keTJk/9/SZbMnk0CAAAAAAAAABA7MtGVS5cvyU+DBtu7GQAAAAAAAAAAYl8QPWWKFPJ148by+PEjOXT4sBw/fsLeTQIAAAAAAAAAEDsmFo0fP4HkzpNLSpUqJatXrZSffvoxyu3d3NzE09PTsnh4eNi7iwAAAAAAAAAAvH4metGiRaVokcJRbrN06TK5eOmS/nnNmrUyduw4efr0qWWi0d+XLJbdu3fLqlWrI31/+3Ztxc+vS4T1vr4FJDg4WIzg7Z3NkHadpf2sWdKKSIBh7efInl4SJqJ9xt84rn4O5vRJK+7uhVz2O9DI9t3d3Q1rGwAAAAAAvEIQ3T1JEj05aFQSJPz/Lk+dOmX1O5PpgBw9GigfffShzSD6mLHjZOKkyZbXKhPd/6BJ/P0PSVBQkBhF9d1IRrcfGGhc+yp4R/uMv5E4BwsZ/h3kqu2rJ7IAAAAAAEAsCqJv37FDL6/j6bOn4pHUdomWkJAQvQAAAAAAAAAAEKdroufJk9vqdd68eSR/vnyyZ+9eezYLAAAAAAAAAIDjM9Fj6ruePeX58+dyNDBQUqXykpo1asi69etl4cJF9mwWAAAAAAAAAADnD6J/+VUj+eCDElLQ11duXL8udevVl4MH/e3ZJAAAAAAAAAAAsSOIruzevUcvAAAAAAAAAADENnatiQ4AAAAAAAAAQGxGEB0AAAAAAAAAAKPKuQAAgNijWdMm0rpNa6t19+/dkzJlyxnWJwAAAAAAjEQQHQAAWHgmSyY3b9yQr5s0tax79uw5IwQAAAAAcFkE0QEAgJWQJ0/k8uUrjAoAAAAAAATRAQBAeD45csj2bVvk8ePH4n/okIwYMUquXr3KQAEAAAAAXBKZ6AAAwOLBgwfyyy+jZeu27ZI8eXLx69JJ1q1dLWU/KSe3b9+JdKTc3Nz0Yubh4cGIAgAAAADiDILoAADEYa1btZRm3zSLcpuWLVvJgQMH9c9Tpky1+l2Tpt/Ivr27pVGjRjq4Hpn27dqKn1+XCOt9fQtIcHCwGMnbO5s4i6xZ0opIgNHdkBzZ00vCRMb3Q6EvjAnnyavJ6ZNW3N0LiTNwlu9ZZ+mHu7u70V0AAAB2QBAdAIA4bNbsObJs+fIot7l585bN3z18+FBO/PWXLvFiy5ix42TipMlWmej+B03i739IgoKCxGgm0wFxFoGBxvdFBd6coR8KfWFMOE9e/dpxpu82Z+mLM/TD09PT6C4AAAA7IIgOAEAcpoLYrxPIjhcvnmTNkkX+OvGXzW1CQkL0AgAAAABAXBTf6A4AAADn0b/fD/LWW2/pn5MkSSJ9+vSWjBkzysJFi43uGgAAAAAAhiATHQAAWOz/80+ZMf03yZAhgyROnFj++uukNGj4pRw5coRRAgAAAAC4JILoAADAYtWq1XpRdc0fP34soaGhjA4AAAAAwKURRAcAABE8ePCAUQEAAAAAgJroAAAAAAAAAADYxsSiAAAAAAAAAADYQBAdAAAAAAAAAAAbCKIDAAAAAAAAAGADQXQAAAAAAAAAAGwgiA4AAAAAAAAAgA0JxQGSJUsmxYoVlefPn8uePXvl4cOHjmgWAAAAAAAAAADnzkSvVaummP7cJ61atpQ6dWrLqpUrJFeuXPZuFgAAAAAAAAAA585EL1SooIwaOUI6dOwkS5cu0+vSpUsnqVOnsmezAAAAAAAAAAA4fxC9datW4u/vbwmgK9euXdMLAAAAAAAAAAAuHURXddBnzJgpmTNlkkKFC8mNGzfE/6C/BD96ZPM9bm5uejHz8PCw+tcI7u7u4unpSfuMP+efC15/ztAH2nfd8Tfybx8AAAAAAHiFIHq+vHklT948UW6zdes2uX79uv7Zy8tLChQooOuiHwkIkBzZc0iKFMmlSZNmEnD0aKTvb9+urfj5dYmw3v+gKSZdBQAgzlDB9KCgIKO7AQAAAACAS4pRED3rW1mlRIkSUW5z8MBBSxA9JCREcuXOJWXLlpN79+5JvHjxZNpvU2Xw4EFSuUrVSN8/Zuw4mThpslXgQAXQfQsWlgcPHoij0T7jz/nnutefM/SB9l17/M19uHr1qiFtAwAAAACAGAbR165dp5foOnfubzlx4oQOoCvPnz+XTZs3y8AB/W2+RwXe1RKeCl4YmYVH+4w/55/rXn/O0Afad93xN/rcBwAAAADA1cW3587Xb9ggOd/NabUu17vvyr8XL9qzWQAAAAAAAAAAnH9i0QkTJkqVypVkxoxpsmXLVnk3Z06pV6+utGnb3p7NAgAAAAAAAADg/EF0VcalUuWqUr9+PcmdO5dcu3pNylf4TE6fPh3tfajSLsOHj4i0xIsj0D7jz/nnutefM/SB9l17/AEAAAAAgPHiZcyU5bnRnQAAAHGHp6ennPzruOR8N7fhNd0LFy4kJtMBcQbO0hdn6YdCXxgTzhOunbj2feJMfwMBAEAsqYkOAAAAAAAAAEBsRhAdAAAAAAAAAAAbCKIDAAAAAAAAAGDExKL2kihRIilatIikSJFC/vzTJNevX3dIu8mTJ5eKFStEWL916zaH9SGscuU+kVSpUsmyZcsdOund22+/LXnz5pEHQQ/koL+/3L9/XxzJx8dHcub0kZs3b8nBgwcdPuFf/PjxpXTpUpImTRpZvHiJPHv2zC7tJE6cWEqUKCHJkyeTQ4cOyz///COOVqRwYcnmnU02bdost27dcmjb6twuUOB9iRcvnhw9GihXr151aPtubm5SoEABSZs2jZz/+7wcDQwUo77vqlX7XO7dvScbNm50SJvp0qXT53h4a9euc+j1niBBAilUqJCkS5dW/A/6y8VLlxz2HePrWyDS361atVoePnzokH4AAAAAAADnEOuC6CqoNWnieLl3776cPHlSunfrKj8PGy6rV6+xe9sZM2aUUSNHyIoVKyX40SPL+oMHDjo8iP7pp+Vkwvjx4u6eRDZt3CS3HBBI9vDwkLFjRou3dzY5fuKEZM6cWXxy5JAufl1lzZq1Dgne/zJqhL55cvLUKfHJ4SOenh7SrFlzCTh6VByhaZOvpWXLFvLo0SMdaFu+fIU8fvz4jbeTNWtWWbhgnm7n338vyojhw/R5PnHiJHHU+fVtjx46gJ0r17tSpernDg2iDxzQX9+wOnb8uCSIn0CKFy8mw4ePkF/HT3DY8ffp01suX74sd+7ckeLFisnp02ekUeOvHT5BVO/ve0nDhg3l7NkzDguiv/tuTv1dt2DhIqv127Ztd1gQPUf27PLbb1P0ORgQcFS6dO4sv02bJrNnz7F725kyZtQ3sMIqUqSwpE+XTlauXCWuIkmSJPpmwvPnIv7+/nb5rgMAAAAAIDaIVUF0L6+UMmvmdJ153btPX8v/5L///vsO7Ydq24jMc7MMGTLIoJ9+lJEj/9fefUBVca1tAH7ViFhjwYZGrIAFURBsQEQFAbuo15ZY0zS2eO0aS1SKLTERsHdsiV1EgdiN+tuwgiWCinrtYo/tX9/O5VxQwSCeGYT3WessPMMxsx1mRvPuPd83FcOGDdV0ReycuXOxa9duw7bvR46An6+PJiG6rMweN34CDhw4qN5LuDZzRhCmTJ0MN7fXnxAwhvh799CiZSvY2dlh1swZRtuPr88EXIqLQ7t2HfD8+XM0bdoEAdN/we+/b8WZM2dgbFmQBb2+7a1C/D27d0JrkUePYszYH/D06VP13svLE7NnzcTWbdtw6lSU0ff/6NEjNGvWHLdv31Hv8+fPj127dqBL58/xy/QAaPm0ibOzE3797VfYVa8OrfXv/x30IPf1hQsX4MiRI/i2dx/1tIesSq9du5Ym+9++Y4d6JZB7zd4/dqtJMzk3MgO55vz9/XDxwkXcvHlT/b3z9Tc9cfbsWb2HRkRERERERKS5D6omevt27VSQOsHH17BNQr59+/ZpOg4np7po3NgL1tbW0JqEObIaPCAgEFHR0ZruW1bkJg7QxaVLl1TZCxmXscmTBwkBunj58iUiIn6HlaWlJvsXUr7lypWrRt1HwQIF8OmnLpg/f4EK0IWsfr127TqaN2sKLciK56go44fVyVm58ldDgC7CwsLVV2srba45Oc8TAvSEc//+vXvq/qMVCS39fH1ViCz3OT00aFAfnp4ealW4lpo0aYxPPimJ0WPGGsolybXw6v1HKy7OzurpkCXBwcgMbGxsEBgwHT4+vvD0aoxOn32OLl27Iaepqd5DIyIiIiIiItLFB7USvWZNRxWiyopoqdcrj5ZLrWgty0xI/e2OHTqokg5SYuLgwUNqdZ5WJQ6+699PBWpz581Xq1T1IKtBLUpZoJRFKbRq2QKDBw9VgbYe6rl+qsJevfZvDBUsLVXd9ejo00m2nzlzGlZWVsiMXOvVU1+lvItWcuXKpcLcnDlzqjA5Lu6yKiei5WTZrFmzceLESejh0aPH6NG9O549e4Y6dWojLDwcvXv3TTK5YSw1HR3VJKHcV93d3PASL3H06DHN6+InaN++HU6ePIXDh48gM+jV6xt13i1ZEpxkwlReRERERERERJmRriF68eLF4OzsnOJnJDhJWBFbsFAhVWYiJGQDoqOiVYkFG5sqGDRoCNasXftO5WHc3NxS/Mzp02dUSQEhYX1Dt0aGx9ml+V7IxvUYMWKYCpJTS1b1NX3LyuILFy5i79696tc1a9bEZ591gpu7B96Xtm3bpPh9Wf28bdu2JNusLK1gZ19d1SR/8OAhrt9499I2zZs1Qw7T5Ff3Su370NDQN36vdWtvNPbyQqdOn7/z/j08PFTjzuQ8efwEa9etg5YSxhMfH59k+507d9U5m9nIfcLX1wfLl69AtIZPX5j+t7Fr3jx5UKVyFURERODxY21qQvfv1xcvXr5A0AzjlQx6233HxeVTQyPPMmVKI2TjBvTt0xuTJk8x+v4LFSqErFmyYlPIBsTExKonABwdHTFu3DjMm78AWpJrzt3dDePGjUdmUbtWLSxeEqx+DtLc98aNmzh58mSKEyjyRJK8EvfQSPxVTzIRlidPHqQH6WUs6WUcgmPhMeF5wmsno91P0sPffURERJTBQvQCBQq81rztVVKLNSFEl0DT0dEBHp5ealWg6Nu3DyZN8lerJB88eJCq/efOneet+3/611NDiC510BPXQr927RqCg5eiQ8cOeBcm/w3p3lYbOCFE9/fzwe7de+Dq+veq3EqVKqmvzZs3w4GDh3Ds2LFUr3Z92/7PnT37Wog+f8EC9RJ9+vTG3DmzUbNWHVXyIrWkWV/uFP6xe+0//3ljiN7I3R0T/f0wdNjwJLWLU6t6NVsUKVo02e8/uH9f8xA9oXSHrIR+9R/kepX10IuZmRmWLQ1W94DBQ7Sr/y9u3b5tqAkuzWxDN23E0CGD8f2o0Ubdbwlzc/Tr1xeTp0w1THJZVrBUk4byXpp7yr3HmGJjY5O8P38+BmvWrkODBg00CdHlKaOKFa3xr3btsXPnLrWtQ/t28PGZgC1bwgzhvhZatWqlGmv+tmo1PlSWlpaoUKF8ip/544+9hqe6JDyvaG2tJjFkIrls2bJqUqdbtx6qrNab9P62FwYMeL2G/uFDB97Tn4KIiOjDIv9217ohPREREWXQEF2C8NQ0rjt//jxKlDA3BOgiLCwMgwcNVP+Tn9oQWR5NT2vjPGkyVyB/gXf6vXfv3k3V/rdv34G8+fIZgm/z4sXUVwcHB1y/cSPVf34pgZLWP//69esxZPAgVWbkXWrTjxj5fap/j5R3CAycjlGjx2Dx4iVICx9fP6Q3svJWSE3omJgYw3Z5n5YJgw+NBHkrVyzDlStX0K17D1VKSS9yre7YuRP29vZG39fzFy9UYFu6dGn1SliNnytXbnXtS0kRY4foyd7rNHoS4s/z59X+EgJ0sSUsHJMmTYR1RWtNQ3TpxbExZKM6Bz5UEog3buKV4mfOnDlrCNHlWrOzq476DdzUNmnqumjhAkz090XzFq3e+Pt//mU6ZsyclSQ4kAC9ul2NVE9wv0/pZRzpaSzpZRwcC48JzxNeOxn1fpIwHr3K0BEREZFxfFA10Tdv2aJWBUqQk9D0T8JbaTwXp0GtVlkhmji8kZXcnl6eOHT4ELTw6gpYqYku5XBGjBipVs1q0ehQ/jGYuP549erV/z7+cXHQgvyZg4ICMGbsD1i4cBEyoosXL6qyJc2aNjWEiJUqVVSrSUd+PwqZQcGCBbFyxXJ1vnXp2l3zFfjm5sVx+fIVw3upUV/VpiouXLxg9H1fvXr1tcmtMWNGoU7t2mme9HrXe52UU3Fza4hDhw5rsn9ZbS4lbSwsLAyr4q2t/+4HcPGidnW5bW1t1bU3fMRIfMjkaZrUPFEjx/zUqShDqC5NXTeFhmLsmOSfwpDg/U0TXRJkpIdVeOllHOlpLOllHIJj4THhecJrJ6PdT9LDGIiIiCgTh+jh4RHYvn07VqxYjmXLlqNA/vzo1q2rWgGnRYjs3dobdevWUcGmhAXSdNCiVCl07PgZMgNZmdirZ09s3boV165fh5WlpSovMX16gCYN56pVq4aZM4Jw8NAhtUo1cT33devWaxK02tvboVy5crCtWlW99/ZupRov7tixU4Wf73PCRFZ+SgmF2JhYdOnSGSEhm5KszDWmcuXKqlXXZoUKqfdSxqN8+fJJehQY0/LlS1GsWFFVNqhZor4B0kg4uXIS79PUqVNUiH782DFkz24CLy8PtRq8d5++yAy+/vorlCr1Cf74Yx+yZJH+A61hkj07fP38Ndl/ZGQkFi1ejCVLFqnJMgnxu3frqu77Wvz8E3To0E71wHiXp2w+ZPJ3rbOzU5Jt8rTX+7zHEREREREREX1IPqgQXfT44ku0bNkCNWrUwL34eHzx5VeqTrgWpk37Gbt371aBYpHChfHbb6vUS6+VBpcvX8byFSvx+Ik2zQ4lxJUAtXHjxrC2tlaBSvMWLZOU1zEmCfHWrluvfv1qLfdNm0I1CdElSErYtxx7KaUjJFx+nwGThOUeno3h3aolSlmUwsRJk9W5ppWiRYsm+XOam5urV+IeBcYiT3gcP35CveRJh1cb3WoRorZr1wFeXp7qPiNPXkh4u3r1GjzSqSb9kcORuH9Pu/uMPPHg5FQXLs7OyG5igtmzZ2PV6jWqVrlWpFmz/Ayc6tZVk2YDBw1GWFg4tCR9OPz8JyKzCQwMQtOmTRAUGIDwiAg1Ydr5888wYMBAvYdGREREREREpIssxc1L/q82BxEREWV6Ujatc+fOKFe2rKrBL41lU9N3w8TERDUblSfF9OxnkF7GkZ7Gkl7GwbHwmPA84bWTUe8nRERElDExRCciIiIiIiIiIiIiSkbW5L5BRERERERERERERJTZMUQnIiIiIiIiIiIiIkoGQ3QiIiIiIiIiIiIiomR8lNw3iIiIiNLKzMwMdevUeW17eEQEHjx4oNsBtrCwQDVbWxw/cRznzv2pyxjKli2D8uXK48bNG4iMPIrnz5/rMo6PP/4YVava4MWLFzhx4iTu3LkDveTIkQMuLs54+vQZtm3bpsk+q1SujJKffIKYmBhERUVBL9myZYOzszNy5jTFpk2huv4MbGyqIF++fIiOPo24uDjdxpI/f35UtbHBS7xU5+atW7egN49GjZAlaxZdfkb29nYoWaJkkm03b93Erl27oRe5fszNzXHs+DFcuXJV8/03cneHqanpa9svxV3CwYOHNB8PERERZVwM0YmIiMhoKla0RmDgdKxduy7J9r379ukWoufKlQsLF8xD6dKl4ePjh3PnZmi6f3Pz4pg6dQqKFC6MmJhYVLCsgBwmJujatTuOnzih6VgmTBivQqgzZ04jRw5TVK5cCaPHjEVw8FJo7fuRI9C8eXO8ePEc9+7dN3qInj17dsycEQQHhxo4evQYqlevhvDwCPTp2w8vX76Elnr1/AadO3+uJlIkONYrRO/UqSP69P4WV69eRXz8PdSqVRMrf/0NQ4cO03wsw4YOQcuWLRAVFY3cuXPD1rYqJk+egoDAIOilS+fOGDVqJB4/fqzLz6hH9+6wtbVFZGSkYdvZs2d1CdGLFy+GWTNnoljxYog8Eolhw4Zg0eIlmDNnrqbjcK1fDx/n+9jw3sTEBJ6eHggICGSITkRERO8VQ3QiIiIyum969ko3R9nHZzw2b96CDh3a67L/XLlyq/D+yJEjhm2LFy3EmDGj4d26jaZjkZXXo0ePwV9//aXeyzHx9ZmgQrkLFy5oOpZr167Dzc0dX3/9FRo2bGj0/XXv1g01atjDzb2RWkErTwZs2RyKdnvaYumy5dDSw4cP0ax5S3h6NMKgQQM13fer4/Dw8MKt27fV+0qVKiJk4wbs37cfq9es0XQsp05Fwc+/ruEJDW/vVvh52k9qQi7u8mXoMSH47bc9MXv2HDXZoJc9e/bg3wMHQU9Zs2bF/HlzcevWbXXPevLkidrm6lpP87EMGZJ0gqd5s2YqRF+m8TVMREREGR9rohMREZHROTnVRf36rihZMmkpAq1JEGdlaQn/iZN0G4OsHE0coIvz588jT57cmo9l4cJFhgBdhIRswkcffQRrKyvNxxI0Y4YhvNWCt3dLrN+w0VCC4s8/z6uV6K28W0Fr8+YvUKu/9bZq1eokP4OTJ0+pMjfyhILWJLRPXOIooexSrtzaXyc5TU0RGDAdI0Z8j/9cuwY9FSpUSJWUcXRwUCv09SD3chsbG3w/arQK0IWUg4qI+B16a9/+X9i7dx/Onjun91CIiIgog+FKdCIiIjIqCWm/698fz54/Qw17e6zfsAEDBgzEs2fPND3yZcqUViVDvL3baL7vN6lXrx4KFiygAmtZOdm3X3+9hwRnZyf1Nfr0aWRkWbJkgaWlJRYvCU6y/VRUFL7o0V23caU3JUqUUGWPoqKjddl/+fLlUblSJZgVNkOnjh0QFDQDZ86c0Xwc48ePw/79/4fQzZvRQ+fzQ8oOZfsoGz4pWRKFixTBkCFDsWHDRk3HUKtmTVy+fFlNsMgEabZsH+HkyZO4fv069CSTtE5OTuniXkpEREQZD0N0IiIi+seKFi2qApSUnDh5Uq22FpcuXUI91wYqbBEVKlTAhvVrcf58DH788ac0HfnatWuhSOEiKX5m3fr1qr611L8OCgzA5ClT3/sKxbx586K+q2uKnzkfE4OjR48m2ebsVFcFlFIy49yff+LKlStpHovUSy5tYZHiZ5Jr6lrC3BzjfhiLRYsXIzY2Ns1NMps0bpziZ2RF7969e6GHnDlzqnPizu2kTVRv376tGmrS37Wlp/8yDadPn36tp4FWypYpoyaYpI+A9DKQe4vWpDyI1M13b+QJvS0JDlY1+58+fareD/iuP376caqq6a9l+aVCZmZ49Pgx1q9bg/h799Q2ezt7+E+ciBkzZkIv7f7VFvHx8di4MUS3MRAREVHGxRCdiIiI/rHCZmbw8GiU4mcePXpkCNElLE9MVpGuWbsWbg0bpjlEd3BwQEVr6xQ/szEkRK06l/rXBQsWxN07d1UoJiRElTIV0lhz85Yt7zwOKcPytmOyY8eO10L0H8aNV1+llvAvP09TNYZdPk05jH+bKlUqw6lu3RQ/86amrkWKFMGyZcEqjJOSFWklIfrbjsmJEyd0C9ETStjkzp0ryfbcuXIZylNkZlLSZ0ZQIIoUKQrv1q0Noa3WtoSFqZdwd3PD/PlzVVmXV8shGYvcI/z8fLBkSbDaf8I1JtvlPnL4yBFNw+tXG4j++NM09OrVUz1BImPUypMnj1GubFn06tXbUCu/ZYsWmDbtR1XSJeH+r/XTJW3btlEliaTxKxEREdH7xhCdiIiI/rHjJ06kuUno/Xv3UahQwTQf9WnTfv7Hn5V60wcOHEwS7MpKWysrSzx4+CBNIbrU1E7LMZFawhJEtWjRXNU7vnnz5jv/tyRIS22YVrhwYaxcsQwXLlxEjy++fC+BqYTU6amZ7KtkYiUuLk6VK3m1HERsrLYNVdNjgC5PbVhbW6F167aGmvF6kzBdVhk7OjpoFqJLMLt16zaYm5url5AGtHKM5F5y/cZ1zRvwJiY14yUwlvuGlmJjYg2TlAlCNm3C9Gw/w6ZKFV1CdBcXF3X9ymp9IiIiImNgiE5ERERGIyucryVqxCcrOBs2bIAjkZGaHnVZ/S6vxI4fi8SqVWtUQ0s9j4moamOD+/fvq5BQS2ZmZipAv3QpDt2698hUq7Ajfv8dHh4emDL1RxVG5siRA+7ubmola2YlTxBIA015QkMC9LjLl3UZh5TUkXMx8fkoPQ1ku9Ti1sqbJoOkJrqUUdF6kkgm/aQM0d27dw3b6tSpjfz58yPyiLb307DwCAwfPgzly5dTzWeF/Frodc5IQ9FDhw7j1KkoXfZPREREGR9DdCIiIjKa/v37qeaZe//Yq1Z1tmnTBnny5IWfn3+mPert27eDvb2dKs1wLz4ednZ28PZuhdFjxmpaNkMmNFYsX6ZWsQYEBsGj0f9W6cskR1rroqfWpy4uKhCUuvn58uU1lN2RFa7GOC4//TQNm0I2Yt68OQgPj0CTJo3VUwF61HR2dHBA8eLFYWNjYygVIrZu26bpxMpEfz80auQOX18/1KhRAzX+u/3ipYsqoNRKsWLFVJgfGhqK2AsX1CrwTp06Ytfu3di0KRSZkampqapBvmVLGM6ePQeL0hbo1rULVq9eg+07dmg6FllpPmfuXMyZPQuzZs1W93aZXAgLD8f+/fuhtQIF8quyXMOHj9B830RERJR5ZCluXvKl3oMgIiKijKtBg/pwcXFG9uwmOB19GstXrFB10/Xm7+erSkRIgKo1R0dHuLs1VKHxpbg4rF37d7NVLeU0NcWUKZPf+L3gpUuxc+cuTcczePCgNzZF/ffAQW9shPq+GuV+/lknlChZQpWoWLBgIW7dvg2tffXVl6hma/va9nHjJ6iyM1oZOWK4oWxJYvv27cf8BQugJSkz1LZNa5QrVw63bt3Cvv37ERYWDr25utZTTXMH/Hug5vuWJsZS91t6Qcgx2b17j+YBemJeXp5wrVdPTXIdOHhQBfrSyFlrNWvWVNfxwEGD8fDhQ833T0RERJkDQ3QiIiIiIiIiIiIiomRkTe4bRERERERERERERESZHUN0IiIiIiIiIiIiIqJkMEQnIiIiIiIiIiIiIkoGQ3QiIiIiIiIiIiIiomQwRCciIiIiIiIiIiIiSgZDdCIiIiIiIiIiIiKiZDBEJyIiIiIiIiIiIiJKBkN0IiIiIiIiIiIiIqJkMEQnIiIiIiIiIiIiIkoGQ3QiIiIiIiIiIiIiomQwRCciIiIiIiIiIiIiSgZDdCIiIiIiIiIiIiIivNn/A0kfC8TUkfuKAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ],
      "image/png": "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1gsICndO0RBaE3w5nW6OAgAAAIIfgB155BEaOeIltWnTptTnW7YqfT0Qyny+GLlzz7PLZD8EAABAyARgTzz+mGZ9+61efXWU0renV3+tgCDIy+smn7ehnM6Nio2bzTEAAABAaARg7dq104UXXaKsrKxqq4gZ0lic0r6qr4mNjbXP7aywsFAej8cuR0VFKTo68O2ba5rtfHFpRN7wQ5N63uEo+pwAAAAAQb8O2MpVq9S4ceNqqUD//v3068L5+mf1Ss386ksdd1zX3ZZv2LChXnrxBS35bbFWrfxbc375yW6jpPnz5uqP338LuK1c8Zceefh//jKPPz5Ef/25LKDM9GlTquU9oe7xepOVm3uaXXYlTAp2dQAAABCmKtUDZoYePj38KT30v4e1atWqXXqh8vLyyrUdk8b+tlv76/obbtS8efN1S9+b9c7bb6n7Safo33//LfU1zzw9XK1bt1KPM8/S2rVr1a3biXrj9de0adMmjR8/wZY55NDDA15z4gkn6IMPxmr69I8D1n82Y4ZuuunmCr57hKNc91km9Yaio5cpOnpJsKsDAACAMFWpAMz0QBlfz/yySkk4brrpRo374AN9//0P9vHTzzyryy67VFddeYUef2Joqa856KADNWHCRH+A9s03s+x1yQ466KAy99OrV08tX75cc1NTq2XoI8KP2108/PAjlTJ6FQAAAAheAHbBBUUnq1XRoEF97duunR5/PDDQ+unnn3XEEUeU+ToTfJ177jm292rNmqIesDatW2vatGmllq9fv77OOON0DR325C7PnXLyyXYYY1ZWtubOnavBjz6qlStXVfm9oW7xFLZUfn7R0FeXi2GoAAAACLEA7Nprr1HfWwLnXRV75eWRmjN37h630bhxE3u/bevWgPVbtmxVp44dy3zdCy++pH333VdfffmFP2nG/fc/oAULFpZa/qIL/8/eT5w4MWD9X3/9rWuvvV4///KLmjVrpseGDNakiRN10smnKD299MyOJrmHuRVLTEzc4/tE6HO7L7D3sbE/Kip6XbCrAwAAgDBWqQDs/PPPKzMAM71TZT1XGoczMA+I0+nc7ZDAl18eob3atNFxx5+gf/75VyeccIJeGzPKzjubMnXqLuV79uqpGTM+V1ra9oD1r732un/ZDGfs1/82mwzkvPPO1bvvvlfqvm/t308DBty1y/pOnTrK7Q7+RXvbtWsb7CrUOeajNmvW5Xb5oIPma6+9y+59DQUc48jAcQ5/HOPIwHEOfxzjyNCunOfYLper+gOwlJSUUpeLA6ejjjpSGzduKte2TNIMo3HjRgHrGzdqpE2bNpeZAfGcs8/Wddff6B8qOGvWLH38ySe69tqrdwnADjvsMHU4+GANGjR4j/UxKfXXrV+vffbeu8wyL40YqVGjxwT0gC2Yn2p736ozJX9VpKbOC3YV6pSCgg7KytzLpOHQho0va9PmTIU6jnFk4DiHP45xZOA4hz+OcWRILcc5dlJSUvUHYEv/WFLqcjFzja2d53SVxQzzW7ZsmY7r2lWffPKpPyFG165d9eH48f5y5npdJrgzQw2Lr9EVHR0VsK2Y6Bjl5eeXmnxjxcqVmj37xz3Wx8wVa9WypQ3CypKfn29vCL9rf8XHfymnM/SDLwAAANRtFQrAepx5tr2f8dkn/uVihYUFWrduvbZvDxzqtzsjX35FTw4bph9mzy5KQ3/LzUpMTNA777zjL/PksKHq3LmzTj7lVGVmZurbb7/TgLvutMMP//nnH3U78USdddaZemSnXq74+HhdcP55GjFi5C77NfO4Xn9tjEaMfFnLly9Tq5at9PAj/7NB4UcffVSRJkEd5vNFye0+3y67EiYHuzoAAACIABUKwBYtWmTvuxx9rNasWVPlnU+cOMkO4xs48H41adxYS5cuVc9evbV+/QZ/mYLCQuXn/3ddsVv69dM9d99tk32YTIrmWmCDBw/RO++8G7DtHmecoejoaH2449pgJZlerFdHjdIdt9+mQw7poO3p6Zrzyxzdfvsdu8wVQ/jKzztOXm8zOZzbFBc3K9jVAQAAQAQodwDWsEEDe78tLU052dn+x6UxZcrr7bffsbeyDBz4QMBjEyA98OBDe9yumQ9WWlKOYmZYYnmGJiICrv0VP10OR9HwVgAAACAkArDfflvkv8hy8XJZynshZiBYvN4E5eaeaZddCZM4EAAAAAitAOy0088odRmoi3Jzz5DPl6CoqJWKiVkQ7OoAAAAgQpQ7AFuy5HdNnDBeF19yqV0unmc14/PPa7J+QI3ILR5+mPCRHA4aGQAAALUj8CrIe9C167EBj99447Xqrg9Q4zyepsrLO8Euu1xTaHEAAACEZgAGhAO3+zxzhTnFxKQqOrrogt4AAABAbSAAQ8Rxu//P3nPtLwAAAIT0dcCME044frePje+//6FqtQJqSEHB/iosOMwsyeWaRjsDAAAgtAOwDz8Yt9vHBmnoEerX/oqL/0ZOJxfdBgAAQAgHYEcceVTN1QSoQT6fU3l5Rysnu5d9HB8/mfYGAABAaAdg69dvqLmaADXE7e6hjPTB8npb+tdlZjwsh6NQLtcM2h0AAAC1hiQcCPvga3vaKHm9zQPWe73N7HrzPAAAAFBbCMAQ1sMOTc9X6R/1oscZ6YNsOQAAAKA2cOaJsJWf32XHsMOyPuZOeb2tbDkAAACgNhCAIWx5Pc2qtRwAAABQVQRgCFvOqI3VWg4AAACoKgIwhK3Y2DlyOteZ2WBllPDK6VxrywEAAAC1gQAMYcvh8Col5dEynvXaf1PqDbLlAAAAgNpAAIawZq71JTkkeQLWO53rVb9BH64DBgAAgNC9EDNQ1+Tk9LL3CYmjFR//tU24YeZ8mWGH9HwBAACgthGAIWx5PC2Ul9fdLicmjlV09KpgVwkAAAARjiGICFs5OZdJilJs7I8EXwAAAAgJBGAISz6fUzk5Pe1yQsK4YFcHAAAAsAjAEJby8k6U19NKDkea4l2fBbs6AAAAgEUAhrCUk9Pb3rsSJsnhyAt2dQAAAACLAAxhx+NporzcU+0yww8BAAAQSgjAEHbcOZdIilFMTKpiYpYHuzoAAACAHwEYworP5yhx7S+SbwAAACC0EIAhrOTnHyuPZx85HBmKj58e7OoAAAAAAQjAEJ7JN1xT5XS6g10dAAAAIAABGMKG19NAue4edjkhYWywqwMAAADsggAMYSPHfZGkOEXHLFJM7G/Brg4AAACwCwIwhAWfz2Q/3JF8I4HkGwAAAAhNBGAICwX5R6mw8AA5HDlyuaYEuzoAAABAqQjAEBaKU8+bzIdOZ1awqwMAAACUigAMdZ7XmyJ37jl2OSGR5BsAAAAIXQRgqPPc7v+TfC5FRy9VTMz8YFcHAAAAKBMBGOp88o2c7OLkG2PlcAS7RgAAAEDZCMBQpxUUHK7Cwg6ScuVKmBzs6gAAAAC7RQCG8Ei+4fpUTuf2YFcHAAAA2C0CMNRZXm+Cct3n22Wu/QUAAIC6gAAMdVau+zz5fEmKivpbsbE/B7s6AAAAwB4RgKHOysnpbe8TEseRfAMAAAB1AgEY6qSCggNVUNBJUr5cronBrg4AAABQLgRgqNO9X/HxXygqamuwqwMAAACUCwEY6hyfL17unP+zyyTfAAAAQF0SrRDgcrlUv349bdy4SV6vt3yviY9Xvfr1tXnzZnk8noDnGjZsqJSUlIB1+fl5WrdufbXsG8Hldp8ln6++oqL+UWzc9xwOAAAA1BlBDcCcTqceG/KoevXqqZwct7xejx566GFNnTatzNfstddeevaZp9WpUydt377dBk8ffjhe/3v4EX8gdu+9d+uiCy/Upk2b/a9bsWKFrrzq6irtG6HBvWP4oSvhQzkcvmBXBwAAAKgbAdgtt/TVueeeo9NO76G//vpLl1/eWy+99IKWLlumZcuWlfqa4U8NU1RUlA47vKOys7N18MEHaeqUyfrzzz/15ltv+8t9M2uWbrrp5mrdN4KvsGBf5ecfLcmjhITxwa4OAAAAUHfmgF191ZUaO3acDYCM998fq9X//KMrLi/q4ShNmzZ7afbs2Tb4Mn7//Q+tWr1abfbaa5eyzZo1s0MMq2vfCL6cnF72Pi7ua0VFbQh2dQAAAIC60QPWuHFjtWrVSvPmzQ9Ynzo3VYcffliZrxs1erT63dJXCxYu1Jo1a9Wt24lq2qSJDaZKOufss3XM0UcrOTlZy5cv18AHHtT8+QuqtG8El88XK7f7YruckDiWwwEAAIA6J2g9YCZRhpGWlhawftu2bWqw47nSTJw4yQZOr40ZrXFj39d9996r5557wd+TZZjnT+x2kg47vJMOPvgQ/fbbEr337jtq3rx5lfYdGxurpKQk/y0xMbGS7x6VkZt7urzeRnI6Nygu7hsaEQAAAHVO0HrAijMORscEViEmJkbenbIalvTWW2/Y15rgKjMzUwcddKAmTZwgp9OhN958y5aZMOG/C/O6c3Nt75eZ73XWmT1smcru+9b+/TRgwF27rO/UqaPcbreCrV27tgpnP/3Yx97vu993OvDAjopE4X6MUYTjHP44xpGB4xz+OMaRoV05z7/KmvoUMgHY+vVFKeGbNmkasL5p06b+53Zmnjuua1dddfU1Nvgy/vhjqT799DP934X/5w/Adpafn69NmzerdevWld638dKIkRo1eoz/sekBWzA/VQsWLFRWVpZCQWrqPIWjwsK9tGWLCbq82r79OaWmrlGkCtdjjEAc5/DHMY4MHOfwxzGODKnlOP8yI+RCegiiSaLx66+L1L17t4AeqONPOF4//vSzf50ZLtiyZQu7bIIc03tVr169gG3Vr19fmRlFAVlxivmSWrRorjatW2vlqlUV2ndpgZypQ/GtOBEIal5OTk97b677FR0ducEXAAAA6ragpqF/9rnn7Fyu35YssfO2+tx0owry8/Xuu+/6yzww8H517txZJ59yqnJycvTxx5/o/vvuVXZWtlb/s1rdTuymM844Xf373+YPpKZNnaLRo8do2fJlNtnGvffeo3/+/VeTJn1UoX0jNPh8UXLnXGqXExJIvgEAAIC6K6gB2JdffqU+ffrquuuvtenfly5dpgsvulhpadv9ZbZs3aq1a9f6H99x51264Ybr7a1BgwZas3aNbrjhJn3+xRf2+YKCAt12+x3qe3Mf9e3bR9vT0/X5jM/1yqujbABXkX0jNOTlniKvt5mczi2Kj/8y2NUBAAAA6mYAZsz4/HN7K8uwYU8GPM7NzdWIESPtrSzmosx3Dbi7yvtGaF37y+WaIIejINjVAQAAAOrmhZiBPfF4Wigv7yS7nJAYeK03AAAAoK4hAENIy8m5TFKUYmN/UnT0ymBXBwAAAKgSAjCELJ/P6c9+SPINAAAAhAMCMISsvLwT5fW0ksORpnjXZ8GuDgAAAFBlBGAIWTk5ve29K2GSHI68YFcHAAAAqDICMIQkj6eJ8nJPtcsJCSTfAAAAQHggAENIcudcYi6rrZiYVMXELA92dQAAAIBqQQCGkOPzOfzX/iL1PAAAAMIJARhCTn7+sfJ49pHDkaH4+OnBrg4AAABQbQjAELrJN1xT5XS6g10dAAAAoNoQgCGkeD0NlOvuYZe59hcAAADCDQEYQkqO+yJJcYqOWaSY2N+CXR0AAACgWkVX7+aAivP5nMrP7yKPp5mys66z60g9DwAAgHBEAIagcrt7KCN9sLzeliXWeuVwZAexVgAAAEDNIABDUIOv7WmjSnnGofTtz8vhcMvlmhGEmgEAAAA1gzlgCNqwQ9PzVfrH0GH/zUgfZMsBAAAA4YKzWwSFmfNVNOywrI+gU15vK1sOAAAACBcEYAgKr6dZtZYDAAAA6gICMATngxe1sVrLAQAAAHUBARiCIjZ2jpzOdTbjYem8cjrX2nIAAABAuCAAQ1A4HF6l1HvEn3AjUFFQllJvkC0HAAAAhAsCMARNfPwMRUWt3GW907le9Rv0IQU9AAAAwg7XAUPQ5OcfJ4+nnaRc1W/QX/LF2zlfZtghPV8AAAAIRwRgCJqszP72PiFxrFyuzzkSAAAACHsMQURQ5Od3Un7+8ZIKlJQ4iqMAAACAiEAAhqDIyrzV3rsSJikq2mRDBAAAAMIfARhqXUHBgcrLO02SR0lJL3MEAAAAEDEIwFDrsrKK5n7Fx3+i6OhdsyACAAAA4YoADLWqsHAf5brPsctJySNofQAAAEQUAjDUqqysWyRFKS7uK8XE/EHrAwAAIKIQgKHWeDwt5M65yC4nJb9EywMAACDiEICh1mRl9ZEUq9jYHxUbO5+WBwAAQMQhAEOt8HgaKSent12m9wsAAACRigAMtSI7+wbJ51JMzELFxv5AqwMAACAiEYChxnm9KcrJvsouJyW9JIeDRgcAAEBkIgBDjcvOvlo+X4qio5cpLv5LWhwAAAARiwAMNcrrdSkn+3q7nJQ0Qg6HjxYHAABAxCIAQ41y5/SW19tIUVGrFe+aTmsDAAAgohGAocb4fLE7Us+b3q+Rcjg8tDYAAAAiGgEYaoy56LLX20JO53q5EibR0gAAAIh4BGCoET5flLKybrHLSUmj5HDk09IAAACIeARgqBG57nPl8ewjp3OrXAljaWUAAACAIYioCT6fQ1lZ/exyQuLrcjrdNDQAAABAAIaakJd7mgoLD5TDkanExLdpZAAAAGAHhiCiWvl8UlZWf7uckPi2nM4MWhgAAADYIVohoE2bNmrSpLH+/nuF0tPT91je4XCobdt9VK9ePa1du06bNm3apUx0dLT2228/FRYWavXq1SooKAh4vl27tmrWrFnAupwct3799ddqeEeRKz//eBUUdDKzwJSY+FqwqwMAAACElKAGYPHx8Xrl5ZE6/vjj9M8//2qfffbRsCef1JgxZZ+4d+hwsF599RUluBK0fv16tW9/gH74YbZuuaWf3Lm5tsxdd96hq6++Sps3b5HL5bK3gQMf0OdffOHfzk033aizzzpLy5Yt96/7999/deddA2r4XYe3rMzi3q+xioraGuzqAAAAACElqAHYgLvu1CGHdNCxXY/Xli1bdNppp+rtt97UvHnzNH/+glJfM/SJx7Vq5Spdfc218nq9atGiub6e+ZWuvfYavfzKq7Z3zNxOOLG7MjKKhr/dccftevnlEXY/JXvLfvr5Z91008219n7DXX5+Z+XnHyepQElJrwa7OgAAAEDICeocsEsvvURjx46zwZfx5Zdfacnvv+uyyy4t8zUNGjTQ4t9+s8GXsX79Bm3YsMGuN3w+n5559jl/8GW89977thfMBHs798B17NhR++7bTlFRUTX0LiOv98tcdDkqan2wqwMAAACEnKD1gDVv3lxNmjTRosWLA9YvXrRYh3Q4pMzXPfnUcA0a9IjWrVunNWvWqlu3ExUTG6s333qrzNd06tTR3q9atSpg/QnHH69mTZuqSZOmNnC7f+BAGwSWJTY21t6KJSYmluu9RoKCgoOUl3eaJI+SkkYGuzoAAABASApaAGYSaBjbt28PWL9t2zbVq1/0XGl++WWOfl34qx2+uG7dejtvbNTo0bYnrDSNGjXS448N0eTJU7RixUr/+q9nfqMnn3xKaWnb7ZDF++67V6++8rJOPe10rVwZGKgVu7V/Pw0YcFepAZ7bHfxrXZnEIsEyL7Vo7lzLlj/qiCMbmZYPWl3CWTCPMWoPxzn8cYwjA8c5/HGMI0O7cp5/mRF3IR2AFRTk+4cB7lzxgvyi50oz9v13tWLlSh3V5Rib4dD0pH36yceKjorSs889v0uQZ8qbZB1333NvwHNffPmlf9n0fj311HBddeUVOu200zR69JhS9/3SiJEaVeI50wO2YH6qFixYqKysLIWC1NR5tb7PwsK22rzJzP2S8gseVWrq0lqvQyQJxjFG7eM4hz+OcWTgOIc/jnFkSC3H+VdSUlJozwFbv269PB6PDaBKMo/N0MLSmIQbHTp00AcffGiDL8PM//ryqy916qmnBpRNSUnRuLHvKy8vT70vv3KPPVRmTtn27elqvlNq+pLy8/NtoFV8y87OrsA7Dl9ZWbfYj1Jc3JeKiSH4AgAAAEIuADMp4+fOTdXpp5t5Q0USEhJ0wgnH67vvv/evMwkyDj/8cLtshguawKtly5YB22rVspW2bC1K5GEkJyfb4KvQU2iDr9ICpZ27CM1+2rRprT+WEkBUhKewpdw5F9nlpOSXKvRaAAAAINIENQ39sCef0vgPx+l/Dz2o1HnzbCr5TZs36/33x/rL9L35ZnXu3Fknn3KqcnNzbUbDgQPvV2xMjFb/849NwtG9ezddfsVV/gswv//+u2rdupXuuec+HXrofwk9zIWeTRr6mJgYffbpxxo/foKWLV+uVq1aqX+/W7Rg4UJNmTI1KG1RV2Vl95EUo9jY2YqNLf3SAQAAAABCIACbM2eOLrzoYnvR5CuvuEK/Lf5Nffv2U05Ojr/M33//HZAi/sGH/qd58+ere7duOuWUU7Rm7Rqddfa5WrRokb9nKz8vX3/++Ze92HJJr7z6qmbO/FoFBQW6+JLLdO01V9t5X9vT0/X8Cy/qww/H22GRKB+Pp7FysnvbZXq/AAAAgBAPwAxzweWyLrpsvPLqqIDHJmHGpEkf2VtpMjMzdfElZV9HrJi59tjwp5+pRI1RLDv7epNGRTExC2wPGAAAAIAQvhAz6i6vt55ysq/29345HMGuEQAAABD6CMBQKdnZV8vnS1Z09FLFxZV98WoAAAAA/yEAQ4V5vQk7hh+a6x2MlMPhoxUBAACAciAAQ4Xl5PSWz9tQUVGrFO+aTgsCAAAA5UQAhgrx+WKVndVnR+/Xy3I4yBoJAAAAlBcBGCrEnXOxvN7mcjrXy5UwidYDAAAA6lIaeoQ+n8+p/Pwu8nhaKDPzTrsuKWmUHI78YFcNAAAAqFMIwLBbbncPZaQPltfbssRajxzOLbQcAAAAUEEEYNht8LU9LfBC2EWcSt/+ohyOPLlcM2hBAAAAoJyYA4Yyhx2anq/SPyZFV13OSB9kywEAAAAoH86eUSoz56to2GFZHxGnvN5WthwAAACA8iEAQ6m8nmbVWg4AAAAAARjK4IzaWK3lAAAAABCAoQyxsXPkdK4zfVxllPDK6VxrywEAAAAoH4YgolQOh1cp9R7xJ9wIVBSUpdQbZMsBAAAAKB8CMJTJpJiPi/9s1w+Nc73qN+hDCnoAAACggrgOGMrk80mFBR3scmLSs4qJXmHnfJlhh/R8AQAAABVHAIYyFRR0lMeztxyObCUlvSqn001rAQAAAFXAEESUKdd9vr2Pi/+S4AsAAACoBgRgKJXP55Tbfa5ddrmm0UoAAABANSAAQ6ny87vI620mh2O74uK+pZUAAACAakAAhlLlus+z9/GuGXI48mklAAAAoBoQgGEXPl+0cnPPssuueIYfAgAAANWFAAy7yMs7Xl5vIzmdWxQb9yMtBAAAAFQTAjCUPfww/hM5HB5aCAAAAKgmBGAI4PPFKTf3DLvsck2ldQAAAIBqRACGAHm53eXzpcjpXKeY2FRaBwAAAKhGBGAI4N5x8WWXa7ocDh+tAwAAAFQjAjD4eb0Jys071S7Hc/FlAAAAoNoRgMEvL/c0yedSVNQqxcQsomUAAACAakYABj937nn+5BsOBw0DAAAAVDcCMFhebz2bgMNg+CEAAABQMwjAYOXm9pAUq+jopYqJWU6rAAAAADWAAAyWu/jiyyTfAAAAAGoMARjk8TRSft5x/vTzAAAAAGoGARiUm3u2pCjFxCxUdPQqWgQAAACoIQRgUC7DDwEAAIBaQQAW4TyeFsrPP9ouM/wQAAAAqFkEYBHO7T7X3sfG/qKoqA3Brg4AAAAQ1gjAIhzDDwEAAIDaQwAWwQoL91FBweFmSfHxnwS7OgAAAEDYIwCLYMXX/oqNm62oqK3Brg4AAAAQ9gjAIljx8EMXF18GAAAAagUBWIQqKGivwsL2kvIVHz8j2NUBAAAAIgIBWIT3fsXFz5LTmRHs6gAAAAARITrYFXA4HOrcuZOaNG6ipcuWadWqVXt8TXx8vA4//HDVr1dPa9eu1W9LllRqu5XZdzjw+f6b/+VyTQ12dQAAAICIEdQALDk5We+//65atWylP/9criOPPFJvvPGmnhg6rMzXHHPMMRoz+lVt2LhRa/5do06dOmrNmrW6/IorlZ6eXu7tVmbf4cJkPvR49pHDkaO4uC+DXR0AAAAgYgQ1ALv/vnvVoH59dT/pZGVmZqrLUUdpypSP9N333+uHH2aX+ppBj/xPs2f/qJv73mIfp6SkaPYP3+naa6/R88+/UO7tVmbfYTf8MO4rOZ3uYFcHAAAAiBhBnQP2f/93gcaN+8AGQMacuXM1f/4CXXThhWW+JjY2Tv/++6//cUZGhrZv366YmJgKbbcy+w4HPp9Dbve5dpnshwAAAECE9IC1bNlC9evXt3OvSlq6dKk6dOhQ5usGDRqsp54aJrfbrTVr16rbiScqbft2vf76G+XebmX3HRsba2/FEhMTVdcU5B8lr7eFHI4Mm4ADAAAAQAQEYMnJKfbe9F6VlJaWZocVluXfNf9q9erVOuecc/TPP/+oQ4eD9cmnnykrK6vc263svm/t308DBty1y3ozD80EhMHWrl3bPZZZvOh6bd0qtW49Vx07HVIr9ULtHmPUfRzn8Mcxjgwc5/DHMY4M7cp5/uVyuUI7AMvPzyu1F8k8zssreq60rIXvvvuOfv7pZ13Ws7c/mcYXn38mT2Ghhjz2eLm2W5l9Gy+NGKlRo8cElF8wP1ULFiz0B4DBlpo6r8znfL4obdrYxS5nZ7+527IIXRy3yMBxDn8c48jAcQ5/HOPIkFqO8+akpKTQngO2du06FRQU2CyEJbVq3cr2bJWmRYvmate2raZ//Il/nZnD9e1336lr167l3m5l9m3k5+fbQKv4lp2drbokP+84eb2N5XRuVWxceCcaAQAAAEJR0AIwE8yYbIPnnHO2f13DBg10/HHH6auZM/3rzPW+unfvbpc3b95iX7f//vsFbGv//fbX+vXry73d8u473BRf+ys+/lM5HIXBrg4AAAAQcYKahv6JoUM1ZfJHevHF5zVv3nz17tVTf/75p8aPn+Avc+UVl6tz586aNWuW7bUaOfJl3XfvPWrYsKH+Wf2PunU70V5M+aKLL6nQdstTJpz4fLHKze1hl+Nd04JdHQAAACAiBTUN/ZIlv+uMHmdq08ZNNpHF5MlT9X8XXmx7qIotWLhQ33zzjf/x8Kef0fXX36j4uDgdfXQX/fXXXzqx20k2hXxFtlueMuEkL7e7fL56cjo3KDb2l2BXBwAAAIhIQe0BM1asWKnHHn+izOfff3/sLuvMxZLNrSrbLW+ZcOHOLRp+6HJNl8PhC3Z1AAAAgIgU1B4w1A6v16W83NPsMsMPAQAAgOAhAIsAeXmnyudLUFTUasXELAx2dQAAAICIRQAWAfzZD+3ww2DXBgAAAIhcBGBhzutNUV7uSXbZ5Zoa7OoAAAAAEY0ALMzl5p4hKU7R0csUHb002NUBAAAAIhoBWJjLZfghAAAAEDIIwMKYx9NQeXnH22UXF18GAAAAgo4ALIzl5p5lL/UWHbNI0dErg10dAAAAIOIRgIWxXPf59p7eLwAAACA0EICFKY+nufLzu9hlV/z0YFcHAAAAAAFY+HK7z7GHNyZ2jqKi1wW7OgAAAAAIwMI/+yHDDwEAAIDQwRDEMFRYuLcKCjqZgYiKj/8k2NUBAAAAsAMBWBjKdZ9r72NjZysqakuwqwMAAABgBwKwMORm+CEAAAAQkgjAwkxBwQEqLDxIUr7iXZ8HuzoAAAAASiAAC9Phh3Fx38rp3B7s6gAAAAAogQAsjPh8ZvghF18GAAAAQhUBWBhJT99XHk9byeFWXPwXwa4OAAAAgJ1E77wCdY/P51R+fhctW9rTPo6L/UpOZ06wqwUAAABgJwRgdZzb3UMZ6YPl9bb0r8vPP86ud7lmBLVuAAAAAAIxBLEOM0HW9rRR8nqbB6z3+erb9eZ5AAAAAKGDAKwODzs0PV+lH8aixxnpg2w5AAAAAKGBs/M6ysz5Khp2WNYhdMrrbWXLAQAAAAgNBGB1lNfTrFrLAQAAAKh5BGB1lDNqY7WWAwAAAFDzCMDqqNjYOXI615k+rjJKeOV0rrXlAAAAAIQGArA6yuHwKqXeIzse7RyEFT1OqTfIlgMAAAAQGgjA6jBzna/6DfrI6dwQsN7pXG/Xcx0wAAAAILRwIeY6zgRZ8fFf2GyH++x9jFat/tkOO6TnCwAAAAg9BGBhwARbcXE/q1XrAq3fMC/Y1QEAAABQBoYgAgAAAEAtIQADAAAAgFpCAAYAAAAAtYQADAAAAABqCQEYAAAAANQSAjAAAAAAqCUEYAAAAABQSwjAAAAAAKCWEIABAAAAQC0hAAMAAACAWkIABgAAAAC1hAAMAAAAAGoJARgAAAAA1JLo2tpROEtMTFQocLlcSkpKCnY1UIM4xpGB4xz+OMaRgeMc/jjGkcFVznPs8sYEBGBVUNzIC+anVmUzAAAAAMIoRsjKyirzeUeLlq19tVqjMNOsWTNlZ2eHxIE2gWCnzkeGRH1Q/TjGkYHjHP44xpGB4xz+OMaRIbGC59im/MaNG3dbhh6wKtpTA9c288HYXcSNuo9jHBk4zuGPYxwZOM7hj2McGbLLeY5dnjIk4QAAAACAWkIABgAAAAC1hAAsTOTn5+uZZ5619whPHOPIwHEOfxzjyMBxDn8c48iQXwPn2CThAAAAAIBaQg8YAAAAANQSAjAAAAAAqCUEYAAAAABQS7gOWBiIj4/X/vvvr8zMTK1atSrY1UE122/ffdWwYcOAdRmZmVq6dCltXce1bt1aLVu00K+LFikvL6/UMnvvvbdSUlL0159/yp2bW+t1RNVER0fr8MMP07Zt27Ry5apdLtbZ4eCDd3nNb0uWKCcnh6avI2JiYrTffvsqMzNLa9asKbNc27b7KCkxScv//LPM7ztCV/PmzdWwYQOtWrV6l++n+Rt9YPv2u7xmd3/bEXqcTqf23Xdfeb0e/fPPvyooKCi13L77tlOCK0FLly0rs8yeEIDVcT169NBzzz6trdu2qVHDhlq+fLmuvfZ6bUtLC3bVUE3uve8eHXXkkVq9erV/3W+/LdFD/3uYNq6jjjuuq27p29eemJvguutxJ+zy40m9evX0+mtjdOihh2jT5s1q0rix7r3vfk2bNj1o9Ub5JSUlqV+/W3TJxRfZk7NPPv1Md955V0CZ9u0P0JQpHyk1NVVer9e/fsDd9+jvv1fQ3CEuISFB9957jy65+GKtX79ejRs3Ulpamm67/U4tXrzYX65Ro0Z6883X7Y9p5v/mBvUb2M/CF19+GdT6o3y6d++uBx+4Xw0bNtK2tG1qu88+ev31NzR02JP+Mp07d9bY99/VnDlzAl57c99+2rBhA01dB9x44w3qe/PN9seypKRE+/1+5JHBmjxlSkAQ/vZbb6hV69bKzMiwf+f7979N3373XYX3RwBWh7Vo0VwjR7yoYU8+pTFjXrMflqlTPtITQx/XzTffEuzqoRp9/sUXuv/+B2jTMGF+KX3t9ddtr/W0qf/9cS9pyJDBatCggY44souysrJ07TVX64Xnn9P8+Qt2+ys7QkOTJo3ldrt15lnnaMRLL+y2bM9el9PjVQeZ76f5Lh5x5FHKzc21vZ3PPvu0DbaOOupo+Xw+W+6pJ4cpOipaRxxxlO3F7t/vFr388ggd2/V4bd68OdhvA3uw99576bbb79AffxSNOuncuZMmThivP//6SxMnTvKXKyws1AX/dxHtWUdFR0WpW/eT7P/LRt+b++iFF57Tt99+6+/UeP65Z5SdnaPOnY+0KenNDzCvvvqy/S5v3769QvtjDlgddsH55ys3N09vvPGmfWy6xEePeU1n9uhhf3FF+HC5XDrssMPUqlWrYFcF1eD1N97UN9/MCuj1KMn8mHLuOefotddes8GX8fY779rliy66kGNQB5jhhi+++FK5TrDbtW2rDh0Ott9z1B1r167Va6+9boOv4hPwsWM/sMOK27RpY9c1bNBAp59+ml4dNco/hHjMa6/L4/Ho/PPPC2r9UT5vv/2OP/gyzI9gZphwl6OO2qWs6eU86KAD7dQQ1C2vvDrKH3wZP/70s/1RpXGTJvZxy5YtdOKJJ2rkyy/7rwf28suvKC4uTmed2aPC+6MHrA475JBD9Mcff9g/5MUWLFhox6MfeOCBu3SFo+4679xzdfDBB6tFixb2V5YBA+7RL7/8EuxqoYYccMAB9o/6ohLDmEywtnjxbzqkQwfaPcyYHhPTW2ZO2t96+x0NGfJYmcE5QlvHww+X253rH3Z20MEHKSoqSosW/fddNnOCzBzeQw7hu1wXmbmb+7bbVzM+mxGw3pysv/PO2/L6vDYINyf0w4c/HbR6ouJMkNW6VWs1adrEThOYNOkjO7XHOKTDIfa+5HfZ/Cj694oV9ny8ogjA6rD69evb8eYlFT9uUL9+kGqF6jZ9+se6++57lZGRYYPrJx5/TK+/Pkbdu5+sLVu20OBh+t02Svt+N23WNEi1QnUzP6ZcfMml+vHHn/xDmz78YJy2bt2qESNG0uB1jEmGdeedt+uVV17x/0Je9nd5O/9P11HDhj5hg+hxH3zgX7dp00adc+55tnfMOP744/TuO29r48aNeuedd4NYW1RE165ddeUVl6tly5bKy88POMb1G5T9/3Lx97wiGIJYhxUWFiguPi5gXXG3d35B0R9/hEcAZoIvw2TbefiRQUpJTla3bicGu2qowe+2YXrBdv5+F+RXLuMSQs+KFSv9wZdhTt7Gj5/A0LQ6mtHUJGEwQ4uffe55//rCgsIyvstxyue7XOf876EHdeqpp+iaa6+zQXSx33//wx98GT/8MFsff/yJzj+PYaZ1ycSJk3T+BRfqqC7H6PXXXte4se/bYaVGcbbD0v5frsw5NwFYHbZmzVq1aN58l8Qcxtq164JUK9Q0M1QpOzt7l2OP8PpuF2dcKsk8NvNOEL42b9nCd7sOBl+TJo7XgoUL1a//rQHDR9esXVP2d3kd/0/XJQPvv0+XX95bvS+/QosWLSrXd3nn446648233rZB1wknHG8fr93x//Iu5932/+WKf5cJwOqw7777XgcddFBAYoYzTj9d69av159//hnUuqF6mDHlZthhSZ06dbQpys31JxCeTEp6c9mB008/PeDHlcMOO1Tfff99UOuG6lNa0o0TTzhBS5fy3a4rWrVsqYkTPrTXe+rbt1/AnGzDJG/YtGmTzjj9NP+6du3a2nme31UidTWC4/7779PVV19lgy8z135P32VzPanjj+uqZfw/XSe4SkmaYv7PNQmxins6F/76q9LT021SnWJmTrY5Bzfn4xXFHLA6zFxDxFw/5o3Xx+j5F17U3nvtrZtuutFeQ6Y4/S3qNhNomTkhY8eOtdcFatu2rW6//VZ9//33mjnz62BXD1Wc6Lv/AfvbxyawatqkiVasXOmf12euMfPSiy9o65Yt+uvvFbrt1v528u8nn3xKu9cRxVnSkpNT1Di/wD7Ozcvz/3puhjOZv9U/zJ4tn9dnM1yaa8P17Nk7yDVHeZhr+E2YMN6OSnjzzbd0ROfO/ud+/+MPO0Hf9IYNG/aUhg59XNvT020P9l133mmHnn799Tc0dB1w66397aUDhjz2uL2cQPH3Om37dv+P3U8+OVRbtmzVnF/myOF06PLevbXXXnvpzrsGBLn2KI8D2rfX4EEPa/yEifr333/VqmUr9elzo5YsWaLPZhQlWzHzOp9++hk98MBA+503PZz33nO3vpo5s1JJ0RwtWrbmTL2OZ+O5pe/NOuKIzsrMzNKECRO5uGMYDm+57tpr1L59e3uBwO9/+MEeZ4Lsuuviiy/SFZfvepI9YuTL+uqrmf7HJ53UXb169VS9lBTNX7DQprwtmSYXoW3K5P+uEVRs46ZN6tOnr/9X8ksvuUTdT+pmf4H988+/9Mabb2rduvVBqC0qymQbHjb08VKfu3/ggzbTYbEeZ5xhv/fmAq9z56bq5VdetSdxCH1PPPG4Dj7owF3Wm+P4+BND7bIZqWL+Vp9w/PF25Mqy5cvtxZq5zlvdcdBBB+qKyy9Xu3bt7LnWTz//bOfkFifUKXbeeefay0CZXk9TZvToMf5LUVQEARgAAAAA1BLmgAEAAABALSEAAwAAAIBaQgAGAAAAALWEAAwAAAAAagkBGAAAAADUEgIwAAAAAKglBGAAAAAAUEsIwAAACCGHHnKIuhx1VLCrAQCoIdE1tWEAAGrKAQccoH323lt5eXlatXq1Vq9eXScb+7DDDlNcbKzmpqb61/XseZlatGihOXPnBrVuAICaQQAGAKgzunTpoieHPaEGDRpo0eLFcsihffbZWzk5ORr86BD9+ONPqkt69+6phg0bBgRgixYt1j///hvUegEAag4BGACgTjj00EP1wbj39frrb+jJp4arsLDQ/9yBBx6oli1b7PIas970lK1dt05LliyR1+v1P9epU0c5HA798fsfOuSQQ5SQmKgFCxYoIyOjUttZtmy5jjziCEXHRGvmzK+1//776+CDDrJlMjIztHTpUq1fv2GXbSYmJen8886z62b/+KN+//13uVyugP07nU517txJjRs30cqVK7Vs2bKA5yvyXgAAwUUABgCoEwbef5/+XrFCTwwdJp/PF/CcCW7MrVhiYqJGvfqKDjywvX77bYnatWurrKxsXX3Ntdq8ebMtc9VVV6nDwQcpLi5Oa9asVdOmTdS0aVNddNEl+uvvvyu8HVdCgv5Z/Y/++vsvG4Dtu+++6tHjDFumfv36OuqoI/Xcc89r5Muv2HX777+f2rTZS3Fxsf5yS5ct22UIYuPGjTX2/Xdtr58J8kwg9t333+uWW/r7A8HyvBcAQGggAAMAhLzo6Ggde+wxevmVV3cJvkrz8MMP2XLHdj1eBQUFtndo9KhX9fD/HtKtt93uL2eCpDN6nKW//vrLPv7ww3Hq2/dmDbj7ngptp3379jrr7HO0ZMnv/nUzZsywt2KHdOig6dOnavrHn+iff/7R9Okf67jjutohiH1v6Vfme3nwgYHyeLw6sdtJcrvdatOmjb78YoZ69eqp998fW+73AgAIDQRgAICQZ3qQTO/O2rVrA9Z369ZN9evVs8vb09P17bffKioqShddeKHefvsdnX76aTZoMrf169fr7LPPDni9mTNWHLAYv/z8i0488QS7XJHt/DJnTkDwVSwpKckOCWzcuJGinFHKysrSYYcdagOw8jr33HN03/0DbfBl/Pvvv5o8ZarOP/+8gABsd+8FABA6CMAAACEvOzvb3jds0CBg/XFdj7U9Qocc0kG5ubk2ADND9hISEtShw8Fq2bJlQPmffgpM0rF9+/aAx/n5+YqLi7fLFdnOpo2bdqnzWWedqWeeHm4zNK5du85uOzY2Vo0bNS73+27UqJGtgxnaWNLqVavV7cQTy/1eAAChgwAMABDyTO+PSTzRqVOngPVmPpgxePAj6nrssXbZ9DKZuVHvjx1nh/lVVkW2U9qwyMeGDNHw4U/rjTff8q/7bfGvcjjKX4f09HSbbKR+g/oB683jbdu2lX9DAICQwYWYAQB1wujRY3TGGafrxBNO2GNvWWpqqq644vJdnmvevHm591eV7ZishQ0bNtDff6/wrzNz2Mx8r5JysnPs0MqymOBr4cKFOuvMMwO2fWaPM7hOGADUUfSAAQDqhHEffKh27drpvffe0dSp07Tw11+VmZmpvffaS2efdZZS583zlx34wIMa/+EHmjDhQ3388Sc2yDn++OPsUL6H/vdwufdZ2e2YnrOvvpqpRx8dpNFjXrNDCW+4/jp7vbKSfv11kU2mcfXVV2l72nabhn5n5vpm4z/8UB6PRwsWLtR5555jU9ePeGlEud8HACB0EIABAOqMx58YqvETJtr5VSarYF5+nk27fv0NN+nXX3/1l/vjj6XqftIpuuzSS9SxY0elbdum119/084RK2auk+V0BA4EWb78TyUmfVvl7Ri33nqbrrr6Kh155JFKS0tT795X6MKLLtSKFSv9ZaZNn674+HgdcURnJScn2zT0O1+Ied68+epx5lm2Dl26HKUff/pZfW/pr21paRV6LwCA0OBo0bL1nvP5AgAAAACqjDlgAAAAAFBLCMAAAAAAoJYQgAEAAABALSEAAwAAAIBaQgAGAAAAALWEAAwAAAAAagkBGAAAAADUEgIwAAAAAKglBGAAAAAAUEsIwAAAAACglhCAAQAAAEAtIQADAAAAANWO/wfTy2fn+J/8qAAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Evolved best tree: ((((Node23[a=-1.0,b=0.0,x=-2.0,y=0.0,r=1.17],Node22[a=-1.0,b=1.0,x=-2.0,y=1.0,r=1.08])Node13[a=-1.0,b=1.0,x=-1.0,y=0.0,r=1.28])Node8[a=1.0,b=0.0,x=0.0,y=-1.0,r=1.27])Node3[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=1.37],(((Node21[a=1.0,b=0.0,x=0.0,y=-3.0,r=1.31],Node20[a=-1.0,b=0.0,x=-2.0,y=-3.0,r=0.61])Node12[a=-1.0,b=-1.0,x=-1.0,y=-3.0,r=0.97])Node6[a=-1.0,b=-1.0,x=0.0,y=-2.0,r=1.38],((Node30[a=1.0,b=1.0,x=3.0,y=-2.0,r=1.42],Node29[a=1.0,b=-1.0,x=3.0,y=-4.0,r=0.83],Node28[a=1.0,b=0.0,x=3.0,y=-3.0,r=0.56])Node17[a=1.0,b=-1.0,x=2.0,y=-3.0,r=0.73],Node16[a=1.0,b=0.0,x=2.0,y=-2.0,r=0.68],(Node27[a=0.0,b=1.0,x=0.0,y=-2.0,r=0.72],Node26[a=-1.0,b=1.0,x=-1.0,y=-2.0,r=1.29],Node25[a=-1.0,b=-1.0,x=-1.0,y=-4.0,r=0.89])Node15[a=-1.0,b=-1.0,x=0.0,y=-3.0,r=1.39])Node5[a=1.0,b=1.0,x=2.0,y=0.0,r=0.65])Node2[a=1.0,b=-1.0,x=1.0,y=-1.0,r=0.85],((((Node33[a=1.0,b=0.0,x=4.0,y=-1.0,r=1.05],((Node34[a=-1.0,b=-1.0,x=-3.0,y=-4.0,r=0.68],Node33[a=0.0,b=-1.0,x=-2.0,y=-4.0,r=0.82])Node16[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=1.25],Node15[a=0.0,b=1.0,x=-1.0,y=-1.0,r=1.15],(Node9[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=1.27])Node14[a=-1.0,b=1.0,x=-2.0,y=-1.0,r=1.49])Node32[a=1.0,b=1.0,x=4.0,y=0.0,r=1.23],(Node50[a=0.0,b=-1.0,x=3.0,y=-3.0,r=1.33],Node49[a=1.0,b=-1.0,x=4.0,y=-3.0,r=1.4],Node48[a=1.0,b=1.0,x=4.0,y=-1.0,r=0.72])Node31[a=1.0,b=-1.0,x=4.0,y=-2.0,r=0.54])Node15[a=1.0,b=0.0,x=3.0,y=-1.0,r=1.28],(Node30[a=1.0,b=-1.0,x=3.0,y=-3.0,r=0.83])Node14[a=0.0,b=-1.0,x=2.0,y=-2.0,r=0.8],((Node53[a=0.0,b=1.0,x=2.0,y=1.0,r=0.61],Node52[a=-1.0,b=0.0,x=1.0,y=0.0,r=0.54],Node51[a=-1.0,b=1.0,x=1.0,y=1.0,r=1.17])Node29[a=-1.0,b=0.0,x=2.0,y=0.0,r=0.76],(Node50[a=-1.0,b=1.0,x=3.0,y=2.0,r=1.18],Node49[a=1.0,b=0.0,x=5.0,y=1.0,r=0.86],Node48[a=-1.0,b=0.0,x=3.0,y=1.0,r=1.05])Node28[a=1.0,b=1.0,x=4.0,y=1.0,r=1.06])Node13[a=1.0,b=1.0,x=3.0,y=0.0,r=0.73])Node6[a=1.0,b=0.0,x=2.0,y=-1.0,r=0.82],(((Node47[a=-1.0,b=-1.0,x=-3.0,y=-4.0,r=0.61],Node46[a=-1.0,b=0.0,x=-3.0,y=-3.0,r=0.92])Node27[a=-1.0,b=0.0,x=-2.0,y=-3.0,r=1.36])Node12[a=-1.0,b=-1.0,x=-1.0,y=-3.0,r=1.12])Node5[a=-1.0,b=-1.0,x=0.0,y=-2.0,r=1.11])Node2[a=1.0,b=-1.0,x=1.0,y=-1.0,r=1.23],(((Node26[a=1.0,b=1.0,x=0.0,y=2.0,r=0.7],(Node45[a=1.0,b=-1.0,x=0.0,y=1.0,r=1.11])Node25[a=0.0,b=1.0,x=-1.0,y=2.0,r=0.54])Node11[a=0.0,b=1.0,x=-1.0,y=1.0,r=1.38],(((Node17[a=-1.0,b=1.0,x=-2.0,y=4.0,r=1.16])Node11[a=0.0,b=-1.0,x=-2.0,y=-2.0,r=0.94],(Node23[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=0.78],Node22[a=1.0,b=0.0,x=0.0,y=-2.0,r=1.41],Node21[a=0.0,b=-1.0,x=-1.0,y=-3.0,r=1.26])Node10[a=1.0,b=-1.0,x=-1.0,y=-2.0,r=1.2])Node4[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=1.31])Node10[a=-1.0,b=0.0,x=-2.0,y=0.0,r=0.52],(((Node23[a=-1.0,b=0.0,x=1.0,y=2.0,r=1.4],((Node30[a=-1.0,b=0.0,x=-3.0,y=0.0,r=1.33])Node14[a=-1.0,b=-1.0,x=-2.0,y=0.0,r=1.19],(Node29[a=-1.0,b=1.0,x=-3.0,y=3.0,r=0.99],Node28[a=-1.0,b=-1.0,x=-3.0,y=1.0,r=1.03])Node13[a=-1.0,b=1.0,x=-2.0,y=2.0,r=0.51],(((Node21[a=-1.0,b=-1.0,x=0.0,y=-3.0,r=0.72],(Node37[a=1.0,b=0.0,x=3.0,y=-2.0,r=0.78])Node20[a=1.0,b=0.0,x=2.0,y=-2.0,r=1.02],(Node36[a=0.0,b=-1.0,x=0.0,y=-2.0,r=1.18],Node35[a=-1.0,b=1.0,x=-1.0,y=0.0,r=0.83],Node34[a=-1.0,b=-1.0,x=-1.0,y=-2.0,r=1.37])Node19[a=-1.0,b=1.0,x=0.0,y=-1.0,r=1.23])Node10[a=-1.0,b=-1.0,x=1.0,y=-2.0,r=1.13],(((Node17[a=-1.0,b=1.0,x=-2.0,y=4.0,r=1.16])Node11[a=0.0,b=-1.0,x=-2.0,y=-2.0,r=0.94],(Node23[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=0.78],Node22[a=1.0,b=0.0,x=0.0,y=-2.0,r=1.41],Node21[a=0.0,b=-1.0,x=-1.0,y=-3.0,r=1.26])Node10[a=1.0,b=-1.0,x=-1.0,y=-2.0,r=1.2])Node4[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=1.31])Node9[a=1.0,b=0.0,x=3.0,y=-1.0,r=1.23])Node5[a=1.0,b=-1.0,x=2.0,y=-1.0,r=0.81],(((Node36[a=-1.0,b=1.0,x=-2.0,y=2.0,r=1.04])Node19[a=0.0,b=1.0,x=-1.0,y=1.0,r=0.69],Node18[a=-1.0,b=1.0,x=-2.0,y=1.0,r=0.88],(Node35[a=-1.0,b=1.0,x=-3.0,y=1.0,r=0.98])Node17[a=-1.0,b=0.0,x=-2.0,y=0.0,r=0.65])Node16[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=1.25],Node15[a=0.0,b=1.0,x=-1.0,y=-1.0,r=1.15],(Node32[a=0.0,b=-1.0,x=-2.0,y=-2.0,r=0.91],Node31[a=-1.0,b=1.0,x=-3.0,y=0.0,r=0.83],Node30[a=-1.0,b=-1.0,x=-3.0,y=-2.0,r=1.48])Node14[a=-1.0,b=1.0,x=-2.0,y=-1.0,r=1.49])Node4[a=0.0,b=1.0,x=1.0,y=1.0,r=0.67],((Node7[a=-1.0,b=1.0,x=0.0,y=1.0,r=0.68],Node6[a=1.0,b=0.0,x=2.0,y=0.0,r=1.37],Node5[a=1.0,b=1.0,x=2.0,y=1.0,r=0.67])Node2[a=1.0,b=0.0,x=1.0,y=0.0,r=0.9],(Node4[a=0.0,b=1.0,x=-1.0,y=2.0,r=0.65],Node3[a=-1.0,b=1.0,x=-2.0,y=2.0,r=0.61])Node1[a=-1.0,b=1.0,x=-1.0,y=1.0,r=0.77])Node3[a=0.0,b=-1.0,x=1.0,y=-1.0,r=0.86])Node12[a=1.0,b=1.0,x=0.0,y=2.0,r=0.62])Node22[a=1.0,b=0.0,x=3.0,y=2.0,r=0.71],Node21[a=-1.0,b=1.0,x=1.0,y=3.0,r=1.42])Node10[a=1.0,b=1.0,x=2.0,y=2.0,r=1.0])Node21[a=1.0,b=-1.0,x=-1.0,y=-2.0,r=1.0],Node20[a=-1.0,b=1.0,x=-3.0,y=0.0,r=1.38])Node9[a=-1.0,b=-1.0,x=-2.0,y=-1.0,r=1.01])Node4[a=-1.0,b=1.0,x=-1.0,y=0.0,r=0.73],(((Node39[a=1.0,b=1.0,x=3.0,y=-2.0,r=0.68])Node19[a=1.0,b=0.0,x=2.0,y=-3.0,r=1.39],Node18[a=0.0,b=-1.0,x=1.0,y=-4.0,r=0.9])Node8[a=0.0,b=-1.0,x=1.0,y=-3.0,r=0.6],(((Node26[a=1.0,b=1.0,x=0.0,y=2.0,r=0.7],(Node17[a=1.0,b=0.0,x=1.0,y=1.0,r=1.04],Node16[a=1.0,b=1.0,x=1.0,y=2.0,r=1.33],Node15[a=-1.0,b=1.0,x=-1.0,y=2.0,r=1.5])Node25[a=0.0,b=1.0,x=-1.0,y=2.0,r=0.54])Node11[a=0.0,b=1.0,x=-1.0,y=1.0,r=1.38],(((Node17[a=-1.0,b=1.0,x=-2.0,y=4.0,r=1.16])Node11[a=0.0,b=-1.0,x=-2.0,y=-2.0,r=0.94],(Node23[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=0.78],Node22[a=1.0,b=0.0,x=0.0,y=-2.0,r=1.41],Node21[a=0.0,b=-1.0,x=-1.0,y=-3.0,r=1.26])Node10[a=1.0,b=-1.0,x=-1.0,y=-2.0,r=1.2])Node4[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=1.31])Node10[a=-1.0,b=0.0,x=-2.0,y=0.0,r=0.52],((((Node36[a=-1.0,b=1.0,x=-2.0,y=2.0,r=1.04])Node19[a=0.0,b=1.0,x=-1.0,y=1.0,r=0.69],Node18[a=-1.0,b=1.0,x=-2.0,y=1.0,r=0.88],(Node35[a=-1.0,b=1.0,x=-3.0,y=1.0,r=0.98])Node17[a=-1.0,b=0.0,x=-2.0,y=0.0,r=0.65])Node16[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=1.25],Node15[a=0.0,b=1.0,x=-1.0,y=-1.0,r=1.15],(Node32[a=0.0,b=-1.0,x=-2.0,y=-2.0,r=0.91],Node31[a=-1.0,b=1.0,x=-3.0,y=0.0,r=0.83],Node30[a=-1.0,b=-1.0,x=-3.0,y=-2.0,r=1.48])Node14[a=-1.0,b=1.0,x=-2.0,y=-1.0,r=1.49])Node7[a=-1.0,b=0.0,x=-1.0,y=-2.0,r=0.91],(((((Node23[a=-1.0,b=0.0,x=-2.0,y=0.0,r=1.17],Node22[a=-1.0,b=1.0,x=-2.0,y=1.0,r=1.08])Node13[a=-1.0,b=1.0,x=-1.0,y=0.0,r=1.28])Node8[a=1.0,b=0.0,x=0.0,y=-1.0,r=1.27])Node3[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=1.37],(((Node21[a=1.0,b=0.0,x=0.0,y=-3.0,r=1.31],Node20[a=-1.0,b=0.0,x=-2.0,y=-3.0,r=0.61])Node12[a=-1.0,b=-1.0,x=-1.0,y=-3.0,r=0.97])Node6[a=-1.0,b=-1.0,x=0.0,y=-2.0,r=1.38],(((Node13[a=1.0,b=1.0,x=3.0,y=1.0,r=0.7])Node6[a=1.0,b=1.0,x=2.0,y=0.0,r=0.94])Node7[a=-1.0,b=0.0,x=1.0,y=0.0,r=1.2])Node5[a=1.0,b=1.0,x=2.0,y=0.0,r=0.65])Node2[a=1.0,b=-1.0,x=1.0,y=-1.0,r=0.85],(((Node18[a=1.0,b=1.0,x=0.0,y=3.0,r=1.45])Node11[a=-1.0,b=0.0,x=-1.0,y=2.0,r=1.22],(Node17[a=-1.0,b=1.0,x=-2.0,y=4.0,r=1.16])Node10[a=-1.0,b=1.0,x=-1.0,y=3.0,r=0.6],(Node16[a=1.0,b=0.0,x=2.0,y=2.0,r=0.97],Node15[a=1.0,b=-1.0,x=2.0,y=1.0,r=1.4],Node14[a=-1.0,b=-1.0,x=0.0,y=1.0,r=1.16])Node9[a=1.0,b=0.0,x=1.0,y=2.0,r=0.69])Node4[a=-1.0,b=1.0,x=0.0,y=2.0,r=1.21])Node1[a=1.0,b=1.0,x=1.0,y=1.0,r=1.49])Node13[a=-1.0,b=0.0,x=0.0,y=-3.0,r=0.53],Node12[a=1.0,b=-1.0,x=2.0,y=-4.0,r=0.58],((Node38[a=1.0,b=0.0,x=4.0,y=-1.0,r=1.15],Node37[a=1.0,b=1.0,x=4.0,y=0.0,r=0.63])Node20[a=1.0,b=0.0,x=3.0,y=-1.0,r=0.59],(Node36[a=1.0,b=0.0,x=3.0,y=-2.0,r=0.57],Node35[a=1.0,b=-1.0,x=3.0,y=-3.0,r=1.02])Node19[a=0.0,b=-1.0,x=2.0,y=-2.0,r=1.2],(Node34[a=1.0,b=1.0,x=2.0,y=0.0,r=1.32])Node18[a=-1.0,b=0.0,x=1.0,y=-1.0,r=0.78])Node11[a=0.0,b=-1.0,x=1.0,y=-4.0,r=0.62])Node6[a=1.0,b=-1.0,x=1.0,y=-3.0,r=0.88],Node5[a=1.0,b=0.0,x=1.0,y=-2.0,r=1.16])Node9[a=-1.0,b=-1.0,x=-2.0,y=-1.0,r=1.01])Node17[a=-1.0,b=-1.0,x=-1.0,y=-4.0,r=1.24],(((Node23[a=-1.0,b=0.0,x=1.0,y=2.0,r=1.4],(Node40[a=1.0,b=-1.0,x=4.0,y=1.0,r=1.41],Node39[a=1.0,b=0.0,x=4.0,y=2.0,r=1.46])Node22[a=1.0,b=0.0,x=3.0,y=2.0,r=0.71],Node21[a=-1.0,b=1.0,x=1.0,y=3.0,r=1.42])Node10[a=1.0,b=1.0,x=2.0,y=2.0,r=1.0])Node7[a=0.0,b=1.0,x=1.0,y=1.0,r=1.0],((Node38[a=1.0,b=0.0,x=4.0,y=-1.0,r=1.15],Node37[a=1.0,b=1.0,x=4.0,y=0.0,r=0.63])Node20[a=1.0,b=0.0,x=3.0,y=-1.0,r=0.59],(Node36[a=1.0,b=0.0,x=3.0,y=-2.0,r=0.57],Node35[a=1.0,b=-1.0,x=3.0,y=-3.0,r=1.02])Node19[a=0.0,b=-1.0,x=2.0,y=-2.0,r=1.2],(Node23[a=-1.0,b=0.0,x=1.0,y=2.0,r=1.4],(Node40[a=1.0,b=-1.0,x=4.0,y=1.0,r=1.41],Node39[a=1.0,b=0.0,x=4.0,y=2.0,r=1.46])Node22[a=1.0,b=0.0,x=3.0,y=2.0,r=0.71],Node21[a=-1.0,b=1.0,x=1.0,y=3.0,r=1.42])Node18[a=-1.0,b=0.0,x=1.0,y=-1.0,r=0.78])Node6[a=1.0,b=-1.0,x=2.0,y=-1.0,r=0.76])Node16[a=0.0,b=-1.0,x=0.0,y=-4.0,r=1.0])Node7[a=-1.0,b=-1.0,x=0.0,y=-3.0,r=1.46])Node3[a=1.0,b=-1.0,x=1.0,y=-2.0,r=1.17])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.95])Node1[a=1.0,b=1.0,x=1.0,y=1.0,r=1.49])Node_0[a=0,b=-0,x=0,y=0,r=1]\n",
      "Evolved best fitness: 0.97\n",
      "Execution time: 0 hours, 4 minutes, 13 seconds\n"
     ]
    }
   ],
   "execution_count": 9
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Observation.* Fitness grows with generations, a fact that shows that Evolution works. Nevertheless, this program has nothing to do with morphogenesis because children are located distantly away from fathers. Besides, many branches invade the territory of others, and the final graph looks more like an entanglement than a tree. Thus, our model is not compatible with Evolution and has no future. It is not evolvable. Additionally, we have the problem with overgrowing of trees that causes the program to run the slower, the higher is the number of executed generations.\n",
    "\n",
    "**Intrigue.** Can evolvability of morpho-trees be engineered?\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# EVOLVABLE MODELS\n",
    "\n",
    "Our considered trees are not evolvable because they are torn apart by recombination. Let us present two evolvable models, one in relation with polar coordinates and the other with a fractal.\n",
    "\n",
    "## The pie model\n",
    "\n",
    "A bar char in polar coordinates that is appropriate for our purpose is depicted by the following program:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "# Program pie.py\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "# Example \n",
    "# Bar char in polar axis\n",
    "# of Matplot library usage to create a polar bar chart.\n",
    "# Adapted with the help of the AI of Visual Studio Code.\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "# Compute pie slices\n",
    "N = 20\n",
    "theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)\n",
    "radii = 10 * np.random.rand(N)\n",
    "#width = np.pi / 4 * np.random.rand(N) #overlapping bars\n",
    "width = theta[1] - theta[0]  # Set width to the difference between consecutive theta values\n",
    "colors = plt.colormaps[\"viridis\"](radii / 10.)\n",
    "\n",
    "ax = plt.subplot(projection='polar')\n",
    "ax.bar(theta, radii, width=width, bottom=0.0, color=colors, alpha=0.5)\n",
    "\n",
    "plt.show()"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise.** Run the program and figure out that this is an ordinary bar chart that has been rolled up around the origin covering the complete angular span.\n",
    "\n",
    "**Exercise.** Interpret the pie char in terms of morphology. Prove that this char leads to a model of morphogenesis that is evolvable to the full.\n",
    ">\n",
    "> *Answer.* We see that a pie chart can have very complex outer silhouette a fact that says that very intricate geometries can be modelled with this type of char. All we need is to control the number of slices, the width, and the radius of each slice as a function of the angular position of each slice. In the simplest model, all slices have the same width but varying radius. In morphology, each slice is a product of a single cell whose descendants inherit the same information: the radius of the slice. This is interpreted as the number of cell divisions that are allowed along the corresponding radius. When that number is attained, the outer cells stop reproduction. The genomes of cells contain the number of allowed reproductions before stopping.\n",
    ">\n",
    "> This model is evolvable because neither mutation nor recombination have collateral effects. These operations modify each radius without affecting that of other slices. In this sense, each slice is isolated. \n",
    "\n",
    "**Exercise.** Relate the pie model with trees. Do you expect pleiotropy? If this model does not observe pleiotropy, the evolutionary stability of the form of flies cannot be explained. \n",
    ">\n",
    "> *Answer.* A pie with n slices is indeed a tree whose root is the origin, and the root has n children, each one of which defines a clan that fully occupy each slice and nothing else. Pleiotropy is not expected because each slice is isolated from the others. But, pleiotropy might be engineered by augmenting the width of slices to overlap one with another. \n",
    "\n",
    "\n",
    "The pie model is good to explain how to generate a region in which every point can be connected to the origin by a radius that is whole. Such a region is called a *Star Domain*. But regions with holes, such as a vertebra cannot be explained. To fill in this gap, the next model might help.\n",
    "\n",
    "# The quadric cross fractal\n",
    "\n",
    "This is a self similar plot that is based on a square. The following code presents how it is drawn recursively. "
   ]
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "# Program quadric.py\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "# By Google on the prompt: \n",
    "\n",
    "# \"Draw the Vicsek Cross Fractal (Quadric-Cross-Fractal) using Matplotlib in Python.\" \n",
    "# The fractal isdrawn recursively, and the depth of recursion should be adjustable. \n",
    "# The base case should draw a filled square, \n",
    "# and the recursive case should draw the cross pattern \n",
    "# by dividing the square into 9 smaller squares \n",
    "# and drawing the cross in the center and the middle of each edge.\"\n",
    "\n",
    "# You can use the following command to install the required libraries \n",
    "# if they are not already installed:\n",
    "# pip install matplotlib\n",
    "\n",
    "def draw_vicsek_cross(ax, x, y, size, depth):\n",
    "    \"\"\"\n",
    "    Zeichnet das Quadric-Cross-Fraktal (Vicsek-Kreuz) rekursiv.\n",
    "    \n",
    "    Parameters:\n",
    "        ax: Das Matplotlib-Achsen-Objekt.\n",
    "        x, y: Die Koordinaten der linken unteren Ecke des aktuellen Quadrats.\n",
    "        size: Die Seitenlänge des aktuellen Quadrats.\n",
    "        depth: Die aktuelle Rekursionstiefe (0 ist das Basis-Quadrat).\n",
    "    \"\"\"\n",
    "    if depth == 0:\n",
    "        # Basis-Fall: Zeichne ein ausgefülltes Quadrat\n",
    "        rect = patches.Rectangle((x, y), size, size, facecolor='darkblue', edgecolor='none')\n",
    "        ax.add_patch(rect)\n",
    "    else:\n",
    "        # Berechne die Größe der 9 kleineren Unterquadrate (3x3)\n",
    "        new_size = size / 3\n",
    "        \n",
    "        # Das Kreuz besteht aus 5 Positionen im 3x3 Gitter:\n",
    "        # (Spalte, Zeile) -> 0=links/unten, 1=mitte, 2=rechts/oben\n",
    "        cross_positions = [\n",
    "            (1, 1),  # Zentrum\n",
    "            (1, 0),  # Unten-Mitte\n",
    "            (1, 2),  # Oben-Mitte\n",
    "            (0, 1),  # Links-Mitte\n",
    "            (2, 1)   # Rechts-Mitte\n",
    "        ]\n",
    "        \n",
    "        # Rekursiver Aufruf für jede der 5 Teilflächen des Kreuzes\n",
    "        for dx, dy in cross_positions:\n",
    "            draw_vicsek_cross(ax, x + dx * new_size, y + dy * new_size, new_size, depth - 1)\n",
    "\n",
    "def plot_fractal(depth):\n",
    "    fig, ax = plt.subplots(figsize=(8, 8))\n",
    "    \n",
    "    # Startparameter für das Hauptquadrat\n",
    "    start_x, start_y = 0, 0\n",
    "    total_size = 1.0\n",
    "    \n",
    "    # Fraktal zeichnen\n",
    "    draw_vicsek_cross(ax, start_x, start_y, total_size, depth)\n",
    "    \n",
    "    # Achsen-Layout optimieren\n",
    "    ax.set_xlim(0, total_size)\n",
    "    ax.set_ylim(0, total_size)\n",
    "    ax.set_aspect('equal')\n",
    "    ax.axis('off')  # Blendet die Achsenlinien aus\n",
    "    \n",
    "    plt.title(f\"Quadric Cross Fraktal (Tiefe {depth})\", fontsize=14, fontweight='bold')\n",
    "    plt.show()\n",
    "\n",
    "# Generiert das Fraktal. \n",
    "# Hinweis: Tiefen über 5 können aufgrund der exponentiellen Zunahme der Quadrate rechenintensiv werden.\n",
    "plot_fractal(depth=0)\n",
    "plot_fractal(depth=1)\n",
    "plot_fractal(depth=2)\n",
    "plot_fractal(depth=3)\n",
    "plot_fractal(depth=4)\n",
    "plot_fractal(depth=5)"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise.** Run the program to see how the quadric fractal is constructed iteratively.\n",
    "\n",
    "**Exercise.** Fix a recursion depth, say 4, and explain how this frozen structure can be enlivened to be a model of morphogenesis.\n",
    ">\n",
    "> *Answer.* Everything is frozen in the fractal for a given depth of recursion. To fit whatever silhouette, one needs to give to strategic branches an appropriate length, whose value must go inside the genome of each cell.  The fractal is a tree that expel messengers to control the reproduction of neighboring cells. The radius of action of each center must also be included in the genome.\n",
    "\n",
    "**Exercise.** Decide: Would you keep working with the previous morpho-trees, or would you prefer to explore these evolvable models?\n",
    ">\n",
    "> *Answer.* We prefer to continue working with oridnary trees because of four reasons:\n",
    "> 1. Morpho-trees can eventually be used to produce pleiotropy, which is a simple machinery to explain the evolutionary stability of the morphology of flies.\n",
    " > 2. Morpho-trees are in principle capable of explaining such complex structures like a vertebra or the pancreas, which includes islands that generate specific products, say insulin or components for the pancreatic juice.\n",
    "  > 3. Morpho-trees can explain the tremedous variability of details inside species and races, while predicting evolutionaery stability of deep characterictics.\n",
    "   > 4. Evolvable trees cannot explain the stability of flies because easy as it might be to gain perfection, it is also easy to lost it when selection fails, for instance in small groups, such as those in which flies love to exist.\n",
    "\n",
    "\n",
    "\n",
    "So, let us continue working.\n",
    "\n",
    "**Example.**  In the following program, we see some improvements that have been added to the simulation of Evolution of morpho-trees in Newick nottion:\n",
    "   1. Mutation has been inbuilt with the power\n",
    "       to have children in the immediate neighborhood of the father and\n",
    "       to change radius and the topology of trees\n",
    "       by means of insertion and deletion of leaves.\n",
    "   2. Recombination has been enabled with the power\n",
    "       to exchange leaves between trees.\n",
    "       We expect a good proportion of the population to\n",
    "       be able to successfully recombine, mutate and reproduce.\n",
    "   3. A cut-off for the length of the Newick string has been introduced to avoid overgrowth of trees.\n",
    "   4. The seed of the random number generator has been fixed to make the results reproducible."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2026-10-08T18:34:57.650754Z",
     "start_time": "2026-10-08T18:30:34.294651Z"
    }
   },
   "source": [
    "# Program evolution_of_newick_morphological_trees11.py\n",
    "# Morphological trees considered here are like lighting trees:\n",
    "# an electrical thread in the form of tree covers an area\n",
    "# and there is lamp at each node.\n",
    "# Each lamp has a given power and a circle of illumination,\n",
    "# whose radius is determined by a threshold intensity.\n",
    "# In morphology, this corresponds with a threshold concentration of a messenger.\n",
    "# Evolution is given the task of illuminating\n",
    "# the area determined by a random target tree.\n",
    "# Trees are encoded in Newick Notation and\n",
    "# everything is done over the correspond strings\n",
    "# without resorting to the Node class.\n",
    "# Thus, it is possible to use the Newick strings as a genotype and\n",
    "# the corresponding trees as a phenotype.\n",
    "# \n",
    "# In this version:\n",
    "#   1. Mutation has been inbuilt with the power\n",
    "#       to have children in the immediate neighborhood of the father and    \n",
    "#       to change radius and the topology of trees\n",
    "#       by means of insertion and deletion of leaves.\n",
    "#    2. Recombination has been enabled with the power \n",
    "#       to exchange leaves between trees.\n",
    "#       We expect a good proportion of the population to \n",
    "#       be able to successfully recombine, mutate and reproduce.\n",
    "#    3. A cut-off for the length of the Newick string has been introduced to avoid overgrowth of trees.\n",
    "#    4. The seed of the random number generator has been fixed to make the results reproducible.\n",
    "# We reuse programs made with the help of Colab and Gemini 2.5 Flash.\n",
    "# With the  assistance of the AI of Visual Studio Code.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "# trace memory allocation \n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc \n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False \n",
    "recombination_of_leaves = True\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start() \n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 7,\n",
    "  'max_number_children': 3,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "  'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 200,\n",
    "  'generations': 5001,\n",
    "  'max_depth': 8,\n",
    "  'max_number_children': 3,\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001, \n",
    "  'crossover_rate': 0.001  \n",
    "}\n",
    "\n",
    " \n",
    "def print_parameters11(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=14.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence11(original_str, start_idx, end_idx, new_subsequence):\n",
    "    ''' Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google'''\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length11(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups11(newick_string):\n",
    "    '''Al substrings that encodes for the info of a node, step from father, center and radius are detected.'''\n",
    "\n",
    "    #print(\"detect_all_groups11(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    '''\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        '''\n",
    "    return groups\n",
    "\n",
    "def count_groups11(newick_string):\n",
    "    '''The number of groups is counted.'''\n",
    "    groups = detect_all_groups11(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info11(group):\n",
    "  '''The info of each group is extracted by tokenizers from the string.'''\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos11(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups11(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info11(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates11(cell):\n",
    "  '''Immediate neighboring coordinates of a cell are generated'''\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "def find_father_center11(newick_string, j):\n",
    "  ''' Finds the address of the father of a node at j'''\n",
    "  #print(\"find_father_center11(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups11(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info11(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator11(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  '''For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      '''\n",
    "  #print(\"node_info_generator11(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates11(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children11(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  ''' Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n '''\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator11(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator11(max_depth, max_numb_children, max_node_radius):\n",
    "  ''' A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.'''\n",
    "  #print(\"complete_tree_generator11(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = random.randint(0, max_depth) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion. \n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center11(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children11(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence11(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# === VALIDATOR ====\n",
    "\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# Connectivity issues are not checked.\n",
    "\n",
    "# A bug in the drawing procedure has been corrected, and the drawing of trees is now correct.\n",
    "# The bug was related to the function that finds the father of a node.\n",
    "\n",
    "# With the help of Gemini, Google and the AI of Visual Studio Code.\n",
    "\n",
    "\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- NodeB_3_x_2[a=1,b=0,x=4,y=5,r=1.2]\n",
    "# --- where a nad b are -1,0,1 except (0,0)\n",
    "# --- because they represent a step awya from the father.\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick11(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=1,b=-1,x=2,y=4,r=3.2], 22 tokens\n",
    "def examine_subsequence11(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 14][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 15][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 16][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 17][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 18][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 19][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 20][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 21][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"Tokens: {tracker}\")\n",
    "    #print(f\"tracker2: {tracker2}\")\n",
    "    master_pattern = \"7375627562756275627564\"\n",
    "                    # 7375627562756275627564\n",
    "    #print(f\"master pattern:  {master_pattern}\")\n",
    "    if tracker2 == master_pattern:\n",
    "        return True, \"Valid Newick sub-string.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string.\"\n",
    "\n",
    "\n",
    "def simplify11(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    # print(\"\\nsimplify(text)\")\n",
    "    # print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,x=3,y=7,r=2.3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_strig_of_length11(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    # print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        #print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        #print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "\n",
    "def validate_newick_syntax11(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    #print(\"Validating Newick syntax\")\n",
    "    tokens = []\n",
    "    try:\n",
    "        tokens = tokenize_newick11(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    l = len(tokens)\n",
    "    #print(f\"Length of tokens: {l}\")\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 22: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 22:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-20):\n",
    "            #print(f\"tokens[{j}]: {tokens[j]}\")\n",
    "            #print(f\"tokens[{j+1}]: {tokens[j+1]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid11, message11 = examine_subsequence11(tokens, j)\n",
    "                if is_valid11:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid11, message11 = simplify11(newick_str)\n",
    "    if is_valid11:\n",
    "        return True, \"Valid morpho-tree.\"\n",
    "    else:\n",
    "        return False, \"Invalid morpho-tree.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "def test_validator11(max_depth, max_numb_children, max_node_radius):\n",
    "    # Specific test\n",
    "    model = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]\"\n",
    "    #print(\"Simple test\")\n",
    "    #print(f\"Model of Newick String: {model}\")\n",
    "    is_valid, message = validate_newick_syntax11(model)\n",
    "    #print(f\"message: {message}\")\n",
    "    invalid_string = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]]\"\n",
    "    #print(f\"\\nInvalid_string: {invalid_string}\")\n",
    "    is_valid, message = validate_newick_syntax11(invalid_string)\n",
    "    #print(f\"message: {message}\")\n",
    "    #print(\"\\n\")\n",
    "\n",
    "\n",
    "    #print(\"\\nMassive test of Newick formulas encoding for morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 3\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        p, s = complete_tree_generator11(max_depth, max_numb_children, max_node_radius)\n",
    "        #print(f\"pattern {p}\")\n",
    "        #print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax11(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        #print(f\"Morpho-tree {i}:: {status} - {message}\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# ======== DRAWING ================\n",
    "\n",
    "def get_illuminated_area11(x,y,r):\n",
    "    '''\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    '''\n",
    "    #print(\"get_illuminated_area11\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick11(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles11(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves(newick_string):\n",
    "    '''Detect leaves in a Newick string.'''\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups11(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father11(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    '''Draw lines connecting leaves to fathers'''\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info11(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups11(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info11(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    #is_valid, message = validate_newick_syntax11(newick_string)\n",
    "    #print(f\"is valid at connect_leaves_to_father11(...) : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    groups = detect_all_groups11(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links11(newick_string, ax,   diff_color='red' ):\n",
    "    '''Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       '''\n",
    "\n",
    "    #print(\"draw_tree_links11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups11(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links11\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father11(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups11(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info11(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick11(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos11(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 15))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles11(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "\n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area11(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick11(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links11(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree, test and draw it\n",
    "# def generate_test_and_draw_morpho_tree(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] ):\n",
    "def generate_and_test_morpho_tree11(ga_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    newick_tree = complete_tree_generator11(ga_params['max_depth'], ga_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #newick_tree = complete_tree_generator11(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    is_valid, message = validate_newick_syntax11(newick_tree)\n",
    "    illuminated_coords = set()\n",
    "    \n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos11(newick_tree)\n",
    "        illuminated_coords = get_illuminated_area11(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "    '''\n",
    "    is_valid, message = validate_newick_syntax11(newick_tree)\n",
    "    print(f\"is the Newick String valid?: {is_valid}, message: {message}\")\n",
    "    status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    '''\n",
    "    return newick_tree, illuminated_coords\n",
    "\n",
    "\n",
    "# --- Evolutionary functions ---\n",
    "\n",
    "def create_initial_population_newick11(pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],  max_node_radius=ga_params['max_node_radius'] ):\n",
    "    population = []\n",
    "    for _ in range(pop_size):\n",
    "        new_tree = complete_tree_generator11(max_depth, max_children, max_node_radius)\n",
    "        population.append(new_tree)\n",
    "    return population\n",
    "\n",
    "def get_illuminated_coordinates11(newick_string):\n",
    "  '''Coordinates of illuminated cells are extracted from the Newick string'''\n",
    "  a,b,x,y,r = extract_all_infos11(newick_string)\n",
    "  # Illuminated area is calculated\n",
    "  illuminated_coords = get_illuminated_area11(x,y,r)\n",
    "  ##print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "  ##print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "  return illuminated_coords\n",
    "\n",
    "def calculate_fitness_illumination11(candidate_tree_root, target_illuminated_area):\n",
    "    \"\"\"\n",
    "    Calculates fitness based on the symmetric difference between illuminated areas.\n",
    "    Fitness is 1.0 for a perfect match, and decreases as symmetric difference increases.\n",
    "    Reuse of a previous code by Gemini 2.5 Flash\n",
    "    \"\"\"\n",
    "    if candidate_tree_root is None:\n",
    "        # If the tree generation failed, assign a very low fitness\n",
    "        return 0.0001 # A small non-zero value to avoid division by zero issues later\n",
    "\n",
    "    candidate_illuminated_area = get_illuminated_coordinates11(candidate_tree_root)\n",
    "\n",
    "    # Symmetric difference: (A U B) - (A intersect B)\n",
    "    # Or, the elements in A but not B, plus elements in B but not A.\n",
    "    symmetric_difference = candidate_illuminated_area.symmetric_difference(target_illuminated_area)\n",
    "\n",
    "    # Union size: used for normalization\n",
    "    union_size = len(candidate_illuminated_area.union(target_illuminated_area))\n",
    "\n",
    "    if union_size == 0:\n",
    "        if not target_illuminated_area and not candidate_illuminated_area:\n",
    "            return 1.0 # Perfect match if both are empty\n",
    "        else:\n",
    "            return 0.0001 # Should not happen if target is non-empty, but handles cases where both are empty but expected non-empty\n",
    "\n",
    "    # Fitness is 1.0 - (len(symmetric_difference) / union_size)\n",
    "    # This gives 1.0 for a perfect match (symmetric_difference_area = 0)\n",
    "    # and approaches 0.0 for large differences.\n",
    "    fitness = 1.0 - (len(symmetric_difference) / union_size)\n",
    "    return max(0.0001, fitness) # Ensure fitness is always positive\n",
    "\n",
    "\n",
    "def select_parents_newick(population, fitness_scores, num_parents):\n",
    "    parents = []\n",
    "    # Use roulette wheel selection or tournament selection. Tournament is generally robust.\n",
    "    for _ in range(num_parents):\n",
    "        tournament_size = min(5, len(population))\n",
    "        if tournament_size == 0:\n",
    "            break\n",
    "        tournament_candidates = random.sample(list(zip(population, fitness_scores)), tournament_size)\n",
    "        winner = max(tournament_candidates, key=lambda x: x[1])[0]\n",
    "        parents.append(winner)\n",
    "    return parents\n",
    "\n",
    "def find_recombinant_branch11(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  #print(\"\\nfind_branch\")\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  pattern_left_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_left_par, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  #print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  #print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      #print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_position_branch_recombination11(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_position_branch_recombination11\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_recombinant_branch11(newick_string1)\n",
    "  branch2 = find_recombinant_branch11(newick_string2)\n",
    "  #print(f\"\\nbranch1: {branch1}\")\n",
    "  #print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "def newick_leaves_recombination11(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_leaves_recombination11\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  leaves1 = find_leaves(newick_string1)\n",
    "  leaves2 = find_leaves(newick_string2)\n",
    "  if not leaves1 or not leaves2:\n",
    "    return newick_string1, newick_string2\n",
    "  # Select a leaf at random from each tree\n",
    "  leaf1 = random.choice(leaves1)\n",
    "  leaf2 = random.choice(leaves2)\n",
    "  #print(f\"\\nleaf1: {leaf1}\")\n",
    "  #print(f\"leaf2: {leaf2}\")\n",
    "  # Leaves are interchanged\n",
    "  newick_string1 = newick_string1.replace(leaf1, leaf2)\n",
    "  newick_string2 = newick_string2.replace(leaf2, leaf1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "def find_occupied_squares11(newick_string):\n",
    "    '''Detects all the occupied squares in a tree'''\n",
    "    occupied_squares_set = set()\n",
    "    groups = detect_all_groups11(newick_string)\n",
    "    for group in groups:\n",
    "        [a,b,x,y,r] = extract_info11(group)\n",
    "        occupied_squares_set.add((x, y))\n",
    "    return occupied_squares_set\n",
    "\n",
    "def newick_mutation_of_radius11(newick_string):\n",
    "  # The pattern of the radius of illumination, r = 0.2\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  #print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  #print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  #print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence11(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    " \n",
    "def newick_find_insertion_patterns11(newick_string):\n",
    "  \"\"\" All insertion patterns are found and one is chosen at random\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    " \n",
    "\n",
    "def insertion_of_branch11(newick_string):\n",
    "  #original_newick_string = newick_string\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_insertion_patterns11(newick_string)\n",
    "  # String to be inserted\n",
    "  # child_string = \"(Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  child_string = complete_tree_generator11(max_depth = 2, max_numb_children = 2, max_node_radius= 1.5)\n",
    "  if group:\n",
    "    #print(f\"Group (main): {group}\")\n",
    "    #print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    #char_before = newick_string[start-1]\n",
    "    #print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {original_newick_string}\")\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_left_parenthesis_11(newick_string, counter, max_illumination_radius):\n",
    "  ''' All insertion patterns (  are found and one is chosen at random\n",
    "      The new info will be inserted to the right of the parenthesis'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group110: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center11(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares11(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator11(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \"(\" + child_string +  \")\" + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "def select_one_insertion_pattern_comma_11(newick_string, counter, max_illumination_radius):\n",
    "  ''' All  commas are found and one is chosen at random,\n",
    "  the child will be inserted after the comma'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][,]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group110: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center11(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares11(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator11(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+2] + \"(\" + child_string + \")\" + newick_string[start+2:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_parentheses_11(newick_string, counter, max_illumination_radius):\n",
    "  ''' All insertion patterns ]) are found and one is chosen at random\n",
    "      The new info will be inserted between ] and ) as a brother'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][)]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group110: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center11(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares11(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator11(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \",\" + child_string + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def insertion_of_leaf11(newick_string, counter, max_illumination_radius):    #original_newick_string = newick_string\n",
    "    ''' All insertion patterns ]) are found and one is chosen at random\n",
    "        The new info will be inserted between ] and )'''\n",
    "    case = random.choice([1, 2, 3])  # Randomly choose between three insertion methods\n",
    "    match case:\n",
    "        case 1:\n",
    "            newick_string = select_one_insertion_pattern_comma_11(newick_string, counter, max_illumination_radius)\n",
    "        case 2:\n",
    "            newick_string = select_one_insertion_pattern_parentheses_11(newick_string, counter, max_illumination_radius)\n",
    "        case 3:\n",
    "            newick_string = select_one_insertion_pattern_left_parenthesis_11(newick_string, counter, max_illumination_radius)\n",
    "     \n",
    "    return newick_string\n",
    "\n",
    "\n",
    "\n",
    "def deletion_of_leaf11(newick_string):\n",
    "    '''A leaf is deleted at random from the Newick string. \n",
    "        If there are no leaves, the original string is returned.'''\n",
    "    # All leaves are detected\n",
    "    leaves = find_leaves(newick_string)\n",
    "    if not leaves:\n",
    "        return newick_string  # No leaves to delete\n",
    "    # Select a leaf at random\n",
    "    leaf_to_delete = random.choice(leaves)\n",
    "    # Remove the selected leaf from the Newick string\n",
    "    newick_string = newick_string.replace(leaf_to_delete, \"\")\n",
    "    # Clean up any potential formatting issues (like double commas)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    return newick_string\n",
    "\n",
    "def find_branch11(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_find_all_groups11(newick_string):\n",
    "  ''' All groups are found and one is chosen at random and returned'''\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "\n",
    "def deletion_of_branch11(newick_string ):\n",
    "  group, start =  newick_find_all_groups11(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch11(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def newick_mutation_branches11(newick_string):\n",
    "  # Mutation of radius of illumination and of complete branches\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    newick_string = newick_mutation_of_radius11(newick_string)\n",
    "    newick_string = insertion_of_branch11(newick_string)\n",
    "    newick_string = deletion_of_branch11(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "def newick_mutation_leaves11(newick_string, ga_params):\n",
    "  '''Radius is mutated, and only leaves can be inserted or deleted'''\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    # Mutation of radius of illumination and of complete leaves\n",
    "    newick_string = newick_mutation_of_radius11(newick_string)\n",
    "    newick_string = insertion_of_leaf11(newick_string, counter=random.randint(0, 1000), max_illumination_radius=ga_params['max_node_radius'])\n",
    "    newick_string = deletion_of_leaf11(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def plot_illuminated_area11(ax, illuminated_coords, title, color='blue', alpha=0.5):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "# --- MAIN EVOLUTIONARY SIMULATION LOOP ---\n",
    "\n",
    "def run_evolution_newick_morpho_trees11(target_tree_params, ga_params):\n",
    "    # A previous code by Gemini was reused.\n",
    "\n",
    "    # 1. Generate Target Tree and its Illuminated Area\n",
    "    #print(\"\\n--- Generating Target Tree ---\")\n",
    "    random.seed(ga_params['seed'] + 1) # Use a different seed for target generation\n",
    "    target_tree, target_illuminated_area =  generate_and_test_morpho_tree11( ga_params)#926\n",
    "    print(f\"target_tree: {target_tree} \\n\\n\")\n",
    "    #number_of_groups = count_groups11(target_tree)\n",
    "    #print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    length_of_target_tree = len(target_tree)\n",
    "    #draw_newick_string11(target_tree, \"Target Tree\")\n",
    "    # target_area = get_illuminated_coordinates11(target_tree)\n",
    "    #print(f\"Target illuminated area: {target_illuminated_area}\")\n",
    "\n",
    "    # 2. Initialize Population\n",
    "    random.seed(ga_params['seed']) # Reset seed for GA population generation\n",
    "    #print(f\"\\n--- Initializing Population of {ga_params['pop_size']} Trees ---\")\n",
    "    population = create_initial_population_newick11(\n",
    "        pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],\n",
    "        max_node_radius=ga_params['max_node_radius']  )\n",
    "    #print(f\"Population initialized with {len(population)} individuals.\")\n",
    "    #print(f\"Population: {population}\")\n",
    "\n",
    "\n",
    "\n",
    "    best_tree_overall = None\n",
    "    best_fitness_overall = -1.0\n",
    "    history = []\n",
    "\n",
    "    # 3. Evolutionary Loop\n",
    "    #print(f\"\\n--- Starting Evolutionary Loop for {ga_params['generations']} Generations ---\")\n",
    "    for generation in range(ga_params['generations']):\n",
    "        if generation % 1000 == 0:\n",
    "            print(f\"\\n--- Generation {generation+1}/{ga_params['generations']}, Best fitness {round(best_fitness_overall, 5)} ---\")\n",
    "        fitness_scores = [calculate_fitness_illumination11(tree, target_illuminated_area)for tree in population]\n",
    "\n",
    "        current_best_fitness = max(fitness_scores)\n",
    "        current_best_tree = population[np.argmax(fitness_scores)]\n",
    "\n",
    "        if current_best_fitness > best_fitness_overall:\n",
    "            best_fitness_overall = current_best_fitness\n",
    "            best_tree_overall = copy.deepcopy(current_best_tree) # Deepcopy to save the best tree\n",
    "\n",
    "        history.append(current_best_fitness)\n",
    "\n",
    "        #print(f\"Generation {generation+1}/{ga_params['generations']}: Best Fitness = {current_best_fitness:.4f} (Overall Best: {best_fitness_overall:.4f})\")\n",
    "\n",
    "        if best_fitness_overall >= 0.999: # Almost perfect match\n",
    "            #print(\"Target illumination achieved (or very close)! Stopping evolution.\")\n",
    "            return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history\n",
    "\n",
    "        # Selection\n",
    "        parents = select_parents_newick(population, fitness_scores, ga_params['pop_size'] // 2)\n",
    "\n",
    "        # Create next generation\n",
    "        next_population = []\n",
    "        # Elitism: Keep the best individual from the current generation\n",
    "        if best_tree_overall and current_best_fitness == best_fitness_overall: # Only if it's the current best in this generation\n",
    "            next_population.append(copy.deepcopy(current_best_tree))\n",
    "\n",
    "        while len(next_population) < ga_params['pop_size']:\n",
    "            if len(parents) < 2: # Not enough parents for crossover, fill with new random trees\n",
    "                new_tree =  complete_tree_generator11(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "                if new_tree:\n",
    "                    next_population.append(new_tree)\n",
    "                continue\n",
    "\n",
    "            # Randomly pick two parents (can be the same parent multiple times with replacement for simplicity)\n",
    "            p1 = random.choice(parents)\n",
    "            p2 = random.choice(parents)\n",
    "            child1, child2 = p1,p2 # No crossover, just pass parents to children for mutation\n",
    "            if recombination_of_leaves:\n",
    "                # Crossover newick_position_branch_recombination11\n",
    "                # child1, child2 = newick_position_branch_recombination11(p1, p2)\n",
    "                # Crossover newick_leaves_recombination11\n",
    "                child1, child2 =newick_leaves_recombination11(p1,p2)\n",
    "            # Mutation: Apply mutation to both children\n",
    "            mutated_child1 = newick_mutation_leaves11(child1, ga_params)\n",
    "            mutated_child2 = newick_mutation_leaves11(child2, ga_params)\n",
    "\n",
    "\n",
    "            next_population.append(mutated_child1)\n",
    "            if len(next_population) < ga_params['pop_size']:\n",
    "                next_population.append(mutated_child2)\n",
    "\n",
    "        population = next_population[:ga_params['pop_size']]\n",
    "        # print(f\"Population size for next generation: {len(population)}\")\n",
    "        # print(f\"Best fitness this generation: {current_best_fitness:.4f}, Overall best fitness: {best_fitness_overall:.4f}\")\n",
    "        # print(f\"Best tree this generation: {current_best_tree}\")\n",
    "        # If you want to see the entire population, uncomment the following line:\n",
    "        # print(f\"Population: {population}\")\n",
    "        # Cutt-off for the length of the Newick string to avoid excessive growth\n",
    "        population = [tree for tree in population if len(tree) <= 2 * length_of_target_tree]  # Allow some growth but limit it\n",
    "        #print(f\"Population size after length cut-off: {len(population)}\")\n",
    "        # If the population is too small, refill\n",
    "        while len(population) < ga_params['pop_size']:\n",
    "            new_tree = complete_tree_generator11(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'])\n",
    "            if new_tree:\n",
    "                population.append(new_tree) \n",
    "    #print(\"\\n--- Evolution Finished ---\")\n",
    "    #print(f\"Final Best Fitness: {best_fitness_overall:.4f}\")\n",
    "\n",
    "    return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree and draw it\n",
    "if __name__ == \"__main__\":\n",
    "    print_parameters11(target_tree_params, ga_params)\n",
    "    # Run the evolution loop\n",
    "    target_tree, target_illuminated_area, evolved_best_tree, evolved_best_fitness, history = run_evolution_newick_morpho_trees11(target_tree_params, ga_params)\n",
    "    number_of_groups = count_groups11(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    title = \"Target Tree. Number of groups or nodes: \" + str(number_of_groups)\n",
    "    draw_tree_newick11(target_tree, title)\n",
    "    title = \"Evolved Best Tree\"\n",
    "    draw_tree_newick11(evolved_best_tree, title)\n",
    "\n",
    "    # Plot Symmetric Difference Area\n",
    "    evolved_best_area = get_illuminated_coordinates11(evolved_best_tree)\n",
    "    symmetric_diff_area = target_illuminated_area.symmetric_difference(evolved_best_area )\n",
    "    ##print(f\"Symmetric Difference Area: {symmetric_diff_area}\")\n",
    "    ##print(f\"Number of cells in symmetric difference area: {len(symmetric_diff_area)}\")\n",
    "\n",
    "\n",
    "    fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "\n",
    "    plot_illuminated_area11(axes[0], target_illuminated_area, title=f\"Target Area (number of cells: {len(target_illuminated_area)})\")\n",
    "    plot_illuminated_area11(axes[1], evolved_best_area, title=f\"Evolved Best Area (number of cells: {len(evolved_best_area)})\")\n",
    "    plot_illuminated_area11(axes[2], symmetric_diff_area, title=f\"Symmetric Difference (Error Area: {len(symmetric_diff_area)})\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "    # Plot Fitness History\n",
    "    plt.figure(figsize=(10, 6))\n",
    "    plt.plot(history, marker='o', linestyle='-', color='blue')\n",
    "    plt.title('Best Fitness Progression Over Generations')\n",
    "    plt.xlabel('Generation')\n",
    "    plt.ylabel('Fitness')\n",
    "    plt.grid(True)\n",
    "    plt.show()\n",
    "\n",
    "    print(f\"Evolved best tree: {evolved_best_tree}\")\n",
    "    print(f\"Evolved best fitness: {evolved_best_fitness:.2}\")\n",
    "\n",
    "    end_time = time.time()\n",
    "    Execution_time = end_time - start_time\n",
    "    # print(f\"Execution time: {Execution_time:.2f} seconds\")\n",
    "    # Execution time in hours, minutes and seconds:\n",
    "    hours = int(Execution_time // 3600)\n",
    "    minutes = int((Execution_time % 3600) // 60)\n",
    "    seconds = int(Execution_time % 60)\n",
    "    print(f\"Execution time: {hours} hours, {minutes} minutes, {seconds} seconds\")\n",
    "    if memory_monitoring:\n",
    "        # displaying the allocated memory\n",
    "        print(tracemalloc.get_traced_memory())\n",
    "        # stopping the memory allocation library\n",
    "        tracemalloc.stop()\n",
    "    \n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LAB: EVOLUTION OF NEWICK MORPHO-TREES\n",
      "PURPOSE: \n",
      " A random morpho-tree T is generated.\n",
      " Evolution tries to restore the tree T\n",
      " beginning from a population of random trees.\n",
      "EXPERIMENT 1791484234.459203\n",
      "RECOMBINATION OF LEAVES: True\n",
      "SEED FOR THE GENETIC ALGORITHM: 47423648\n",
      "TARGET TREE PARAMETERS: {'max_depth': 7, 'max_number_children': 3, 'max_node_radius': 1.5}\n",
      "GENETIC ALGORITHM PARAMETERS: {'seed': 47423648, 'pop_size': 200, 'generations': 5001, 'max_depth': 8, 'max_number_children': 3, 'max_node_radius': 1.5, 'mutation_rate': 0.001, 'crossover_rate': 0.001}\n",
      "\n",
      "target_tree: (((Node32[a=-1.0,b=-1.0,x=1.0,y=-1.0,r=0.7])Node18[a=1.0,b=-1.0,x=2.0,y=0.0,r=0.9],(Node31[a=1.0,b=-1.0,x=2.0,y=1.0,r=0.79],Node30[a=1.0,b=0.0,x=2.0,y=2.0,r=1.16],Node29[a=1.0,b=1.0,x=2.0,y=3.0,r=1.44])Node17[a=0.0,b=1.0,x=1.0,y=2.0,r=1.32])Node2[a=1.0,b=1.0,x=1.0,y=1.0,r=0.94],(((Node16[a=1.0,b=-1.0,x=0.0,y=-2.0,r=1.39],(Node28[a=1.0,b=1.0,x=1.0,y=0.0,r=1.44],Node27[a=1.0,b=-1.0,x=1.0,y=-2.0,r=1.44])Node15[a=1.0,b=0.0,x=0.0,y=-1.0,r=1.3],(Node26[a=0.0,b=-1.0,x=-2.0,y=-3.0,r=0.84],Node25[a=1.0,b=0.0,x=-1.0,y=-2.0,r=1.47])Node14[a=-1.0,b=-1.0,x=-2.0,y=-2.0,r=0.91])Node7[a=0.0,b=-1.0,x=-1.0,y=-1.0,r=0.72])Node4[a=-1.0,b=-1.0,x=-1.0,y=0.0,r=1.3],(((Node24[a=1.0,b=-1.0,x=-2.0,y=-1.0,r=0.64],Node23[a=0.0,b=-1.0,x=-3.0,y=-1.0,r=1.29],Node22[a=-1.0,b=-1.0,x=-4.0,y=-1.0,r=1.37])Node13[a=-1.0,b=-1.0,x=-3.0,y=0.0,r=1.0],(Node21[a=-1.0,b=-1.0,x=-4.0,y=0.0,r=0.97],Node20[a=-1.0,b=0.0,x=-4.0,y=1.0,r=1.04])Node12[a=-1.0,b=0.0,x=-3.0,y=1.0,r=0.79],Node11[a=-1.0,b=1.0,x=-3.0,y=2.0,r=0.76])Node6[a=-1.0,b=-1.0,x=-2.0,y=1.0,r=0.86],((Node19[a=-1.0,b=1.0,x=-3.0,y=3.0,r=1.27])Node10[a=-1.0,b=1.0,x=-2.0,y=2.0,r=1.27],Node9[a=-1.0,b=-1.0,x=-2.0,y=0.0,r=1.11],Node8[a=1.0,b=1.0,x=0.0,y=2.0,r=0.72])Node5[a=0.0,b=-1.0,x=-1.0,y=1.0,r=0.79])Node3[a=-1.0,b=1.0,x=-1.0,y=2.0,r=1.48])Node1[a=0.0,b=1.0,x=0.0,y=1.0,r=1.31])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "\n",
      "--- Generation 1/5001, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/5001, Best fitness 0.94203 ---\n",
      "\n",
      "--- Generation 2001/5001, Best fitness 0.94203 ---\n",
      "\n",
      "--- Generation 3001/5001, Best fitness 0.94203 ---\n",
      "\n",
      "--- Generation 4001/5001, Best fitness 0.94203 ---\n",
      "\n",
      "--- Generation 5001/5001, Best fitness 0.94203 ---\n",
      "Number of groups or nodes in target tree: 33\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 700x1500 with 1 Axes>"
      ],
      "image/png": "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SMgKIYQQQohEIiErhBBCCCESiYSsEEIIIYRIJBKyQgghhBAikUjICiGEEEKIRCIhK4QQQgghEomErBBCCCGESCQSskIIIYQQIpFIyAohhBBCiEQiISuEEEIIIRKJhKwQQgghhEgkErJCCCGEECKRSMgKIYQQQohEIiErhBBCCCESiYSsEEIIIYRIJBKyQgghhBAikUjICiGEEEKIRCIhK4QQQgghEomErBBCCCGESCQSskIIIYQQIpFIyAohhBBCiEQiISuEEEIIIRKJhKwQQgghhEgkErJCCCGEECKRSMgKIYQQQohEIiErhBBCCCESiYSsEEIIIYRIJKsmZPfee28877nPxcMeduJq3aUQQgghhEgx/mrcieM4+MgZH8a97nVPnPfLX+Kcc362GncrhBBCCCFSzKpUZF/+spdi586d+P3556/G3QkhhBBCiAzQcyF79NFH46lPfQpe+apX9/quhBBCCCFEhuiptWDdunU448MfxGmveCV27dq1qN/J5/N26VCpVHr4CIUQQgghRCaE7H2POgpHHnnkvD/zve9/DzfffIv9//3vey9+8MMf4de//s2i7+PFL3ohTjvt1D1uP+KIw1GtVpFmDjroQGSBrGzngXc+AFngwIP2hec2kXaysp0HH3wAXC/925ml9yJtZ7rIwv4slUq9EbKVgQHstdfmeX8ml4urqQ958INx3HHH4uIPXGJpBeROBxyAViuwr7/05S9jfHx8j9//8BkfwZmf+OTt91mp4OKLLsDFF18y68+njQsuuBBZICvbedHF6d9Oih5tZ7r2Z1ZenyQr26rtTBdp358DAwO9EbLnnXeeXRbDrVu24LOf/RzWDQ9P3ZbPF+B5LRPDnufN+nuNRsMuQgghhBBCrIlH9uqrr8ab3vyWGbcdfMjBqNfre9wuhBBCCCHEUtFkLyGEEEIIkUhWZSBChx//6Gy0gtZq3qUQQgghhEgpqypkv/b1r6/m3QkhhBBCiBQja4EQQgghhEgkErJCCCGEECKRSMgKIYQQQohEIiErhBBCCCESiYSsEEIIIYRIJBKyQgghhBAikUjICiGEEEKIRCIhK4QQQgghEomErBBCCCGESCQSskIIIYQQIpFIyAohhBBCiEQiISuEEEIIIRKJhKwQQgghhEgkErJCCCGEECKRSMgKIYQQQohEIiErhBBCCCESiYSsEEIIIYRIJBKyQgghhBAikUjICiGEEEKIRCIhK4QQQgghEomErBBCCCGESCQSskIIIYQQIpFIyAohhBBCiEQiISuEEEIIIRKJhKwQQgghhEgkErJCCCGEECKRSMgKIYQQQohEIiErhBBCCCESiYSsEEIIIYRIJBKyQgghhBAikUjICiGEEEKIRCIhK4QQQgghEomErBBCCCGESCQSskIIIYQQIpFIyAohhBBCiEQiISuEEEIIIRKJhKwQQgghhEgkErJCCCGEECKRSMgKIYQQQohEIiErhBBCCCESiYSsEEIIIYRIJBKyQgghhBAikUjICiGEEEKIRCIhK4QQQgghEomErBBCCCGESCQSskIIIYQQIpH4vfzjhxx8MO76T3edcVuz0cRPzzmnl3crhBBCCCEyQE+F7KNPfjSe/exn4Xe/+93UbZOTkxKyQgghhBCiv4Usuf766/Gc5zyv13cjhBBCCCEyRs+FbLFYxLHHHot6vY4rr7wSu3bt6vVdCiGEEEKIDNBzIXunAw7AC17wPAwPDeHQQw/FO9/1bnziE5+c8+fz+bxdOlQqlRnXaaZUKmFgYABpR9uZLrQ/00VW9meWtlXbmS6ysD8rS9B8SxKyd7nLXXDooYfM+zO///352LFjR/z/3/0en/vc5zEyMmJfP+6xj8XHPvYRXHHFFfjNb3476++/+EUvxGmnnbrH7RdfdMFSHqoQQgghhEi4oB0fH5/3Z5w77Lt/tNg/SCH66JMfNe/PvOc978PVV1895/d/ds5Prfnrv9/wxkVXZClij7jPUZiYmEBa0XamC+3PdKH9mT60T9OF9mc69+mWLVu6W5H97ve+Z5eVMDY2hk2bNs35/UajYZfdoYhdSJWnAW1nutD+TBfan+lD+zRdaH+mh8Vqvp4ORNhdsO677x1wz3veA3/+y196ebdCCCGEECID9LTZ67Of/TQuufgSXHbZ5diwYT1OOeU/cdVVV+OLX/xSL+9WCCGEEEJkgJ5WZP/5n5+E/7vyStz3vkdh3333xdvf8U485rGPs6EIi4U2g/e+932z2g3ShLYzXWh/pgvtz/ShfZoutD+zy5KavYQQQgghhMhERVYIIYQQQoheISErhBBCCCESiYSsEEIIIYRIJD0fUdsLPM/DEUccjuHhYVx00UXYuXMX0kS5XMbDTjxxj9t/9/vf47bbbkNauf/9j8Fem/fCT885B9VqFWlj8+bNuMc9DkOtVrMkD2Yqp5E73GEf3O1ud8Po6CguvfQy1Ot1pJX73OcI3HH/O+JnP/95Kga28H117732xtV/vRrXXXc90sqd73xn3Pte98LFl1yCf/zjH0gjhULB3m/4Ocm0oJtuuglp5dBDD8WBd74ztmzdir/85S+IonS3/hz7kIdg3bp1+OGPfoRWq4Wskzghe4/DDsOZZ34cYRjg6qv/ije+4b/xlre8DT/56U+RFvbaay8b5XvOOedgcvJ2QffXa/6aWiF79NFH40tf/ILNkD76fvfHjTfeiLTAE6/3vPtdeMAD7o8rr7wSmzZtxsEHH4TX/b/X41vf+jbSwsaNG207Dzvs7rjyqquw/377Y2h4CC94wYvwxz/+EWnipJMeidNOPRWFYgEHH3QQHvKQ43DNtdciyRN0vviFz5vAu+qqq3DUUUfiy1/5Kt74xv9BmuCx+brTT8ed7nQnHHDAHfHqV78GX0mhkP23f30qXvrSl5iwG9k1gmOOuR++852z8KpXvwZpgu+j73/fe1Eql3HjDTfi7ne/GxrNJv7935+J66//G9LICSccj09+4kwUi0X8090Os4JB1kmUkOWZ5Ze+9AWc/ZOf4LWvfZ2ddVH4HHnkfZBGXvf//jtVgm4ueGb5oQ++H+9//wdw+umvRdqgkP3Fuefi5aeeNnXby172Urzrne/E9773fTSbTaRlJeGrX/2aVdQ7vPtd78THP/ZR3OfIo5AmCvkCXvySlyCXy+PsH/8QSee0U19ulfTjTzgRu3btwuGHH47vf+8s/PrXv8bPf/4LpIXBwSGc+YlP4pe//CWuu/avSCvVag0nPepk7Nixw76+613vih//6Af445/+hG9+81tIC+VSGa969WutQNB5rz3rrG/j9Ne+Fs9+znORNvbee2+88x1vxwc/9GG8+lWvXOuH0zckyiP7r099qlUO3vSmt0wtHXAJ+je/+S3SyFFHHomHPexEO+tMMzyj/sY3/hcXXnQR0ppv+P3v/2DGbddeey1yOR/5fB5p4YYbbpghYsmPzz4b++yzt1Vr08RZ3/0u/u//4g/PNPDEJz7BXoMUseSSSy7BH//4J/zzE5+INHH++eebiE073znrrCkRS1hlp1XksMMOQ5q49LLLpkQsCYIA//j7PzAwMIC04TgOzjjjQ/jYx8/EVVdetdYPp69IVEWWyyMXXnih/f/44x9q3jt6DUdGRpA2+IJ89rOfZdvGijM/VF74ohenbhnhv075T2zcuAEf+OCHcL/7HY00c6973QsHHXigjWp++tOfjje9+S2p8FXOx4Mf/GCzw2zfvn2tH4qYgw0bNpidiXaQ6VAg3P/+99fzlgJYbWdB5FOf+jTSyCMe/nAMDA7gXve6p9linvPc5yNtvOylL0Gz0cSnP/0ZPPIRj1jrh9NX+GtdJj/mfveb92cuv+IKXHPNNfb/jZs2IgpD/OQnP8bf//Z3W5Lmi/O0V7wSP/rRj9GvDA4O4viHPnTen7n+b38zkzqhWH30yY+d+prP0w++/1284b9fb9var/i+j0c/6lHz/swtt9465ZekX41L7NzWMAyRNI9kPjd3NXVkdBTnnXfejNsOu/vdcOxxx1pTQqNRxzXX9L+n8rjjjsPw0NCc3280G/jxj8+e9XsPetADccp//gde9ar+9+Udc8wx2Huvveb9mR/88Id2gpk2htr7t1ON7bBz507zOItkk8vlcMaHP4xrr70O3/7Od5BGHnr8cdYoTCHL4tbWrVuQJo6+733xzGf+Ox7+iJPW+qH0JWsqZDdv2oRHPnL+MwtaBzpCtl6rW9Xu5Mc8Dn/+85/ttle+4jR84P3vw7nnnte3ne4DA5UFt/NXv/rVlHDlktD0ZaEtW7bg81/4Ip7z7Gehn8n5/oLbeemll04J2Xe84+2WxHDE4Yfb5S53OdRuf/jDTsSf/nSBLRv1KyeecIJ5Qufi5ptv3kPIfvVrX7dLpxL9mU9/Eg968ENw8823oF958IMeaOOl54LjpmcTsuzm//SnPomPfuzj+Po3voF+56gj77PgsittEmkUsjypIrRtTadcqdh7rkgu9Ix+7KMfwX777Wsj49M66v01rzl9SrR/7rOfMV/+4x6fHlvMe97zLpx73i9x/2OOsa/vfe972fWjTjoJl/z5zzPsFVlkTYXsZZdfjue/4IWL/vm///3v2H///aZELGH8xMtf/jIccvDBfSt8brnl1iVt52yMj41j/fr15pPp12iRaq22pO1kdBrPojvilxV3cuyxD8HExGTf7k+y0sr4N7/1bbz5zW/Cve99774Wsm9+y1uXFeH0lS9/CZ///Bfwzne+C0ngjI98FFnl1lu3WHPQfvvtN+N2vtemNZoqKyL2ox89A/e85z3wz//yZNx0881IO2ycZQPte9/7btv+tJx4nn/+H2xlt/NZuc8++0wlGExMTkjIIkGcc87P8PjHP87SCzq+2EMPiat4N9/Sv2JgqdCvtnXr1hm3nXTSI/CXv1zatyJ2ObzhDf+zR47sgx74wNSlNdCDyGXb6fYJLoGRfhaxy4HCnCL2C1/4It729nes9cMRi4DHJRugTj750Xby0bEbMKvyXe9+j57DBOK6Lj7ykQ/j8Hvf20Rsmt5PF/qs5Hvrli1bUyNiye6xafTIcnWaBZXRlPXNpF7IMnbrd7/7Pb76lS/jK1/9qnlkn/fc5+DjZ34iVc0kT37Sv+ABD3gAzvvlLy08/9GPOskahf793/9jrR+aWGb28Wte82rLOr7llltw0EEH4RlPfzr+95vfnLG6kHSYzfnVr3zJqniXX34FHvfYx05979zzzkvVG+4hhxyCw+5+dxxwpwPs6+NPON6sCVzm48pR0njHO99lcVsf/cgZ+MMf/4gnP+lJuPHGm/DlL38FaWLD+vXWgNgRe/c+/N62+nPDjTfgoosuRlp4x9vfZsvO73rXu3Hkfe5jF3LjTTfiwgvTkw7zghc8H/vtu6+lUXBFkA3hjzn5ZLz0ZS9f64cmVhHnDvvun6gSH5cLnvKUJ+O+Rx2F0bFR/PKXv8IvfnEu0gbN3Q9/+MMwODRosSnf+MY3UjfBbLbpLKe+/GU2KGC6RzgNMGj+CY9/HA444AALKT/vvF/am2+aYBj5i1/0olm/95a3vi1Vk4Ue/rCH4QlPePwet/ME+9e//g2SeiLytH/7V+y19164+qqrzZeftlQNNge/4rTb85w7/OEPf8TnPv95pIXTX/sa3PGOd9zj9gsuuACf/sxnkSa4cnDcQ49DpVzGP264Ad/59ndSb6NgYev5z3suTj31NBPwWSdxQlYIIYQQQojEDUQQQgghhBCig4SsEEIIIYRIJBKyQgghhBAikUjICiGEEEKIRCIhK4QQQgghEomErBBCCCGESCQSskIIIYQQIpFIyAohhBBCiEQiISuEEEIIIRKJhKwQQgghhEgkErJCCCGEECKRSMgKIYQQQggkkf8P2wAa5X3vjecAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 700x1500 with 1 Axes>"
      ],
      "image/png": "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8L9b/PqLh12kESOGb3b99GlTduShAgAAIOSBtqysbJu3cfZst1ewvf+hCaInDT1xm7e57bY7NG/evK1+/u0Jb9mTv353/e+3uyJrQmzvg/uqvLxcUcV2RgvPZ7TwfEYPz2m08HxG8zldvnz57q3I/u2ll+xlV6xbt06tWrXa6uerqqrsZVMmxP5YKo8CtjNaeD6jheczenhOo4XnMzq2N/NldUGETQNru3Z76qCDDtSnn32WzbsFAABADGT1ZK+HH35IM6bP0MyZs9SiRXOdc86vNXfuPD3++BPZvFsAAADEQFYrsj/72c/1zzlzdMghfdWuXTvdfMso/fTkU+yiCNvLtBncfvsdW2w3iBK2M1p4PqOF5zN6eE6jheczvnboZC8AAAAgFhVZAAAAIFsIsgAAAAglgiwAAABCKetL1GaD53nq3buXmjZtqmnTpmnNmhJFSWFhoYYce+xm13/40Uf67rvvFFUDBvRXm9Zt9NaECaqoqFDUtG7dWgce2F0bNmywkzzMTOUo2nPPPbT//vtr7dq1+vzzmaqsrFRUHXxwb+291956+513IrFgi3ldbdumreZ9MU9ffvmVomqfffZRzx49NH3GDH377beKokaNGtnXG/N30kwLWrx4saKqW7du6rTPPlq+YoU+++wzBUG0T/0ZeNRRatasmV597TWlUinFXeiC7IHdu2v8+Pvk+2nNm/eFfn/973TTTX/Qm2+9paho06aNXcp3woQJWr/++0D3xfwvIhtk+/Xrpycef8yuId3v0AFatGiRosLseN1262gddtgAzZkzR61atVaXLp113X/+l/761+cVFS1btrTb2b37AZozd672ar+XmjRtogsvHKaPP/5YUXLCCT/RiOHD1Si/kbp07qyjjhqk+QsWKMwr6Dz+2KM24M2dO1d9+/bRk089rd///r8VJeZn87qRI9WxY0d16LC3rr76Gj0VwSD7b788U5deeokNdqUlperf/1C98MKLuurqaxQl5nX0zjtuV0FhoRYtXKQDDthfVdXVOvvsX+mrr75WFB1zzGA9cP945efn61/2724LBnEXqiBr9iyfeOIxvfHmm7r22uvsXpcJPn36HKwouu4/fxepQLc1Zs/y7rvu1J13/lEjR16rqDFB9t333tPlw0fUXXfZZZdq9KhReumll1VdXa2oHEl4+uk/24p6rVtHj9J9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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1500x500 with 3 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAAIiCAYAAAAkWjI2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAX1ZJREFUeJzt3QmcTeUfx/HvLGZMljH2fS2UJXvIlhakHYX25V+JVq1UtKG0KGTXnlARKUQlZBtGdrIzdoZBw8yY+b+eZ9zbXDOjweWew+f9et3XzD33OWfOvfe4zvf+nuc5QcWKl0wVAAAAAOCMBJ/Z6gAAAAAAwhUAAAAA+AmVKwAAAADwA8IVAAAAAPgB4QoAAAAA/IBwBQAAAAB+QLgCAAAAAD8gXAEAAACAHxCuACCbRo8epZe7d+P1ukB9O3aMXnrxhUDvBlyK4we4MIQGegcAnL+6PvO0br75Ju/9lJQU7d6zRytXrNTITz7Vxo0bz9rffuvNN1S6dGndfc+9p7Wv6X351dcaOnSYypYpo107d/k8Nu777zR//nz17vO23G7E8GG65JKL7e+pqak6evSoNm7apO+/G6fJU6boQle2XFlt2bo1oPvQoEF9tbntNlWqXEk5w8O1bds2/frb7/rmm9H2/XKiyy67VG3btlX1atUUmS9S+/fv147tOzR79p+a+OOPOnz4sM4XEyaM18yZs9S377uOPH4AnH2EKwBnTaHChXTxxRfrhhtvUvyBeAWHhKhkyRJ65umndeedHXXLLbdp6bJlZ+VvFytWTGXKlD7tfU1vX1yc/Xn7HR2UkJDg81i5cmVtADkflC5dSjlz5lTHjnfZ+wUKFtQ9d9+lkSOH25PFD/p9qAtZmzbtMrz/50pwcLDe7tNbt9/eTp98+pneeOMtHT58yAaWp556Ug899KDuvvves/qFxakKCgpSjx6v6oH779N3332vwUOG2DCYO3ceNWzYQN26vaju3V9Steo1dL4oX66c1qxe47jjB8C5Q7gCcNZt3LDRG1DWrFmjtWvXae6c2ep4Z0e99FI3x+7riTadJyHqZJKSkrV23Tr7u/lpqnKVK1fW44930eDBQ5Rw5IguVIF8/7t2fcZ+IfFop8c0YcJE7/Lly1do6i/T9NOkifri80913XUtHfMemWrww/97SJ06ddYPEyb4PGaOq08++VTv9n1HF4oL4fMDAOEKQACYbkFGjtCM3++UKFFC//vfQ6pVq6Yicua0QWzI0GFavHixt02RIkXsSVuNGjV00UUXaf369fp61CjbzcjTva1RoyuVI0cO/THjN+96TZpedcZjrpYuWao33+pltz192lTlz59frVq2UO1av3lPdjs91tn+PunHifr111/tvj3btauqVauq3bv3aOiw4ZoxY0aG7Zvnc99996hypUpKTZViYmI0cODHit22zaeL1YMPPKBLKl5i+u5p5apVGjZ0uDcQZbdNdpnugX/99ZcuvbSySpQsad+TgQP764UXX1JoaKitmJQuVUqPPPqYDc6mkvfwww/r8urVFRISnPa3hw23r0t61atXV+fOnew3/Vu2bFX/AQNUtmxZPf3Uk7qtTTvt2bPHe4LevHlz3XTzLer06CO67rprdeBAvLe7pzlO7r037TVLSUnVwoUL9fGgQdq2bbv3b1WtUkUPPviALr7kYqWmpGjFypW2m+f69RtOqY0ZM2O2f2IX0FatWur2du1UslRJHTp4SLNmzbLv8cGDB71tJv88ST9PnqJvx36rZ5/tqipVLtOuXbs1ZOhQ243sZMwx9ugjj+j332f4BCuPvXv3qk+fd+z70r79Hbay9dlnn9gqyaOPPpahvQk0pUqX0h13dPAuy87r6HkO338/zr5PVatW0RdffqUvvvgy033u1KmTfpk2LUOw8jhw4IAeebRThuWnsi/ZfT3P9PkNHTrYrmskJx/Tnr177N8ZPmy4DbPm38WUKT8rb968at36etWrV9e2XbJkqbo8/sQ5PX6ycywDOHuY0ALAOWVOyB/v0tmOv5r0008ZwsW0X6bYcNCv34f2BH7nrl0aP+47XXPN1bZNeHi4vvturGrXrqWP+g/Qs889p58nT7bbvOKKK2ybHj1fs8Fkx44deuCBh7y3M2XGXJlgZyQlJdltmhNEE+o8f8MEL4/y5cvZroZ933lHv/wyTS91625PmEyFwYSV9O64/XZN+GGckhKT9Nrrb+j1N95QiRLFNXnyTypTpoxtU6FCef0wfpxCQkP05htv6ZVXe2pxzGINHjzIntxlt82pKlq0qP0ZFxeniIiItO6TrVurY4cOGjJkqIYNH6GwHDl0+eWXa/LPP6niJZfo7Xf6qudrrytvnrz6ceIENW/+b7CtV7eufU/NmCHzXn366Wd66skn1LBB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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Evolved best tree: ((((Node31[a=-1.0,b=-1.0,x=-4.0,y=-1.0,r=1.11],Node23[a=-1.0,b=1.0,x=1.0,y=3.0,r=1.0])Node13[a=1.0,b=0.0,x=2.0,y=2.0,r=1.05],Node12[a=-1.0,b=1.0,x=0.0,y=3.0,r=0.77])Node7[a=1.0,b=1.0,x=1.0,y=2.0,r=1.23],((Node22[a=-1.0,b=1.0,x=-3.0,y=3.0,r=0.72],Node19[a=-1.0,b=-1.0,x=-4.0,y=1.0,r=1.15],Node16[a=0.0,b=-1.0,x=-2.0,y=-3.0,r=1.09])Node11[a=-1.0,b=1.0,x=-2.0,y=2.0,r=0.85])Node6[a=-1.0,b=0.0,x=-1.0,y=1.0,r=0.73])Node3[a=0.0,b=1.0,x=0.0,y=1.0,r=1.4],((Node19[a=-1.0,b=-1.0,x=-3.0,y=-1.0,r=1.27],Node34[a=0.0,b=1.0,x=2.0,y=3.0,r=0.62])Node10[a=-1.0,b=0.0,x=-2.0,y=0.0,r=1.04],(Node20[a=1.0,b=1.0,x=-2.0,y=3.0,r=0.6],Node16[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.97],Node15[a=0.0,b=-1.0,x=-1.0,y=-2.0,r=0.77])Node9[a=0.0,b=-1.0,x=-1.0,y=-1.0,r=1.23])Node2[a=-1.0,b=0.0,x=-1.0,y=0.0,r=0.94],(Node5[a=-1.0,b=-1.0,x=0.0,y=-2.0,r=1.34],((Node14[a=0.0,b=-1.0,x=2.0,y=0.0,r=1.36])Node8[a=1.0,b=1.0,x=2.0,y=1.0,r=0.51])Node4[a=0.0,b=1.0,x=1.0,y=0.0,r=1.38])Node1[a=1.0,b=-1.0,x=1.0,y=-1.0,r=0.8])Node_0[a=0,b=0,x=0,y=0,r=1]\n",
      "Evolved best fitness: 0.94\n",
      "Execution time: 0 hours, 4 minutes, 23 seconds\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise.** Run the previous program, in which recombination is off. Turn recombination on (line 49). Compare the outputs.\n",
    ">\n",
    "> *Answer.* Recombination speeds the process 20 times. But the final tree is very disconnected. So, we do not accept that programmed recombination could have something to do with life on Earth. In our case, disconnections happen because it is not censured anyhow. All that imports is the final shape of the illuminated region. \n",
    "\n",
    "**Exercise.** The variability of the offspring in every human family points to a high activity of recombination but in most cases no monster is produced. How can this be? Formulate a testable prediction.\n",
    ">\n",
    "> *Answer.* Apart from many small and diverse details, the genome of the human being is frozen: we all have two legs and tow arms, two eyes, two ears, one mouth, one head. So, the regions of our genomes that encode for the form and shape are mostly monomorphic. Thus, every type of variable items are somehow disjoint from the others. This is not the case in our simulations, because every tree can have every kind of drastic changes by cumulating effect of insertion and deletion of leaves.  One can assume that the present state of the genomes have been attained by the Evolutionary Process. From this a prediction arises: the prehistory and history of the human genome must be filled in every kind of monstrosities. You can go to the museum and test this prediction by direct observation of fossils.\n",
    "\n",
    "**Exercise.** The previous program has been made with the intention of implementing error free mutation. This consists of change of the radius of illumination and insertion and deletion of leaves (only leaves). Nevertheless, if recombination is turned off, not every produced tree is perfect, say, it has a disconnected colored square that does not belong in the tree. This is a bug that contradicts the intention of the design. Correct it.\n",
    ">\n",
    "> *Answer.* If a defective tree is found, we indeed do not know who is the culprit: the mutation procedure or the drawing machinery. We must analyze as the formula as the drawing. Thus, we present the following program in which a Newick formula that produced a defective tree is plotted. \n",
    ">\n",
    "> The formula is: \n",
    ">\n",
    "> ((((((()Node63[a=1.0,b=-1.0,x=5.0,y=-3.0,r=1.26])Node52[a=1.0,b=-1.0,x=4.0,y=-2.0,r=0.7])Node21[a=1.0,b=1.0,x=3.0,y=-1.0,r=1.9613197090647045],((()Node219[a=0.0,b=1.0,x=-2.0,y=3.0,r=1.06])((((Node156[a=-1.0,b=-1.0,x=-2.0,y=2.0,r=0.71])Node125[a=0.0,b=1.0,x=-1.0,y=3.0,r=1.37])Node103[a=-1.0,b=1.0,x=-1.0,y=2.0,r=1.36],(((Node198[a=-1.0,b=1.0,x=-4.0,y=1.0,r=0.75])Node155[a=-1.0,b=0.0,x=-3.0,y=0.0,r=0.58])Node124[a=-1.0,b=-1.0,x=-2.0,y=0.0,r=1.6749306080259698],((((()Node913[a=-1.0,b=0.0,x=-4.0,y=3.0,r=0.59]))Node698[a=0.0,b=1.0,x=-3.0,y=3.0,r=0.84])()Node600[a=-1.0,b=1.0,x=-3.0,y=2.0,r=1.25])()Node123[a=0.0,b=-1.0,x=-1.0,y=0.0,r=1.33])Node102[a=-1.0,b=0.0,x=-1.0,y=1.0,r=1.33])Node51[a=-1.0,b=1.0,x=0.0,y=1.0,r=0.54],(((()Node122[a=-1.0,b=0.0,x=0.0,y=3.0,r=1.17])Node81[a=-1.0,b=1.0,x=1.0,y=3.0,r=0.85])Node62[a=0.0,b=1.0,x=2.0,y=2.0,r=1.07],(((()Node153[a=-1.0,b=1.0,x=3.0,y=5.0,r=0.515683679559608],Node152[a=0.0,b=-1.0,x=4.0,y=3.0,r=1.03])Node101[a=1.0,b=1.0,x=4.0,y=4.0,r=0.5748403340449614])Node80[a=0.0,b=1.0,x=3.0,y=3.0,r=1.22],()Node79[a=1.0,b=0.0,x=4.0,y=2.0,r=1.36])Node61[a=1.0,b=1.0,x=3.0,y=2.0,r=0.5295884877970901])Node50[a=1.0,b=1.0,x=2.0,y=1.0,r=1.21])Node29[a=0.0,b=1.0,x=1.0,y=0.0,r=1.43])Node20[a=-1.0,b=1.0,x=1.0,y=-1.0,r=1.1])Node8[a=1.0,b=0.0,x=2.0,y=-2.0,r=0.64])Node3[a=1.0,b=-1.0,x=1.0,y=-2.0,r=1.37],((((((()Node100[a=0.0,b=1.0,x=-2.0,y=-2.0,r=1.05],((Node150[a=0.0,b=1.0,x=-4.0,y=-1.0,r=0.7334891191596699],(Node193[a=-1.0,b=1.0,x=-6.0,y=0.0,r=0.5820889162363478])Node149[a=-1.0,b=1.0,x=-5.0,y=-1.0,r=0.81])Node120[a=-1.0,b=0.0,x=-4.0,y=-2.0,r=1.36],()Node119[a=0.0,b=1.0,x=-3.0,y=-1.0,r=1.16])Node99[a=-1.0,b=1.0,x=-3.0,y=-2.0,r=1.47])Node49[a=-1.0,b=1.0,x=-2.0,y=-3.0,r=1.26],()((()Node118[a=0.0,b=-1.0,x=-3.0,y=-4.0,r=1.0],((()Node367[a=-1.0,b=-1.0,x=-7.0,y=-3.0,r=1.8764650499221425])()Node147[a=-1.0,b=0.0,x=-5.0,y=-3.0,r=0.82],Node146[a=-1.0,b=1.0,x=-5.0,y=-2.0,r=1.13])Node117[a=-1.0,b=0.0,x=-4.0,y=-3.0,r=1.13])Node78[a=-1.0,b=1.0,x=-3.0,y=-3.0,r=1.0329473493338008])Node48[a=-1.0,b=0.0,x=-2.0,y=-4.0,r=0.76])Node28[a=-1.0,b=0.0,x=-1.0,y=-4.0,r=1.46])Node14[a=1.0,b=-1.0,x=0.0,y=-4.0,r=1.06])Node7[a=0.0,b=-1.0,x=-1.0,y=-3.0,r=0.89])Node5[a=0.0,b=-1.0,x=-1.0,y=-2.0,r=0.71],(((((((()Node47[a=-1.0,b=1.0,x=4.0,y=-4.0,r=0.6058398421466735],((()Node441[a=0.0,b=-1.0,x=8.0,y=0.0,r=1.2970045651723827])((((()Node145[a=1.0,b=1.0,x=8.0,y=1.0,r=0.52],()Node144[a=0.0,b=1.0,x=7.0,y=1.0,r=0.96])Node116[a=1.0,b=1.0,x=7.0,y=0.0,r=1.235712154728331],()Node115[a=1.0,b=0.0,x=7.0,y=-1.0,r=0.95])Node98[a=1.0,b=1.0,x=6.0,y=-1.0,r=1.37],(()Node114[a=1.0,b=0.0,x=7.0,y=-2.0,r=0.62])Node97[a=1.0,b=0.0,x=6.0,y=-2.0,r=1.04])Node77[a=1.0,b=1.0,x=5.0,y=-2.0,r=1.01])Node59[a=-1.0,b=1.0,x=4.0,y=-3.0,r=0.62],(((Node185[a=1.0,b=0.0,x=9.0,y=-5.0,r=1.25],()Node476[a=1.0,b=-1.0,x=9.0,y=-6.0,r=0.87])Node142[a=1.0,b=-1.0,x=8.0,y=-5.0,r=1.7146586553405185])Node96[a=1.0,b=1.0,x=7.0,y=-4.0,r=1.49],((Node183[a=1.0,b=-1.0,x=8.0,y=-6.0,r=0.54])Node141[a=1.0,b=-1.0,x=7.0,y=-5.0,r=0.5185357042371559],(()Node303[a=1.0,b=-1.0,x=9.0,y=-4.0,r=0.69])(Node181[a=1.0,b=0.0,x=8.0,y=-3.0,r=1.16])Node140[a=1.0,b=1.0,x=7.0,y=-3.0,r=1.44])Node95[a=0.0,b=1.0,x=6.0,y=-4.0,r=1.1])Node58[a=1.0,b=-1.0,x=6.0,y=-5.0,r=0.72])Node46[a=0.0,b=1.0,x=5.0,y=-4.0,r=0.79])Node36[a=1.0,b=0.0,x=5.0,y=-5.0,r=1.02])Node27[a=1.0,b=-1.0,x=4.0,y=-5.0,r=0.71])Node19[a=1.0,b=0.0,x=3.0,y=-4.0,r=0.83],(Node57[a=0.0,b=-1.0,x=3.0,y=-6.0,r=0.83])Node18[a=1.0,b=-1.0,x=3.0,y=-5.0,r=1.36])Node13[a=0.0,b=-1.0,x=2.0,y=-4.0,r=1.9563373261553025],((((((()Node94[a=1.0,b=1.0,x=2.0,y=3.0,r=1.5714886013535794])Node76[a=1.0,b=0.0,x=1.0,y=2.0,r=1.7607046194653915])Node56[a=-1.0,b=1.0,x=0.0,y=2.0,r=1.43])Node45[a=-1.0,b=1.0,x=1.0,y=1.0,r=0.71])Node26[a=0.0,b=1.0,x=2.0,y=0.0,r=0.81],(((()Node55[a=1.0,b=0.0,x=5.0,y=-1.0,r=0.68])Node44[a=0.0,b=-1.0,x=4.0,y=-1.0,r=1.39])Node35[a=1.0,b=0.0,x=4.0,y=0.0,r=1.5450652146942652])Node25[a=1.0,b=1.0,x=3.0,y=0.0,r=0.8])Node17[a=-1.0,b=1.0,x=2.0,y=-1.0,r=0.84])Node12[a=1.0,b=1.0,x=3.0,y=-2.0,r=0.59])Node10[a=1.0,b=0.0,x=2.0,y=-3.0,r=1.31],((((((()Node74[a=0.0,b=1.0,x=-3.0,y=-5.0,r=0.97],(((()Node139[a=0.0,b=1.0,x=-5.0,y=-4.0,r=0.85])Node113[a=0.0,b=1.0,x=-5.0,y=-5.0,r=1.29],(Node138[a=-1.0,b=1.0,x=-7.0,y=-4.0,r=1.09])Node112[a=-1.0,b=1.0,x=-6.0,y=-5.0,r=0.69])Node92[a=-1.0,b=0.0,x=-5.0,y=-6.0,r=1.9891193529247717])Node73[a=-1.0,b=0.0,x=-4.0,y=-6.0,r=0.9])Node43[a=-1.0,b=-1.0,x=-3.0,y=-6.0,r=0.93])Node34[a=-1.0,b=0.0,x=-2.0,y=-5.0,r=1.7667232954270577],(()Node707[a=0.0,b=-1.0,x=-8.0,y=-11.0,r=1.2418125160543307])((((((Node176[a=-1.0,b=1.0,x=-8.0,y=-8.0,r=0.73])Node137[a=-1.0,b=-1.0,x=-7.0,y=-9.0,r=1.3],Node136[a=-1.0,b=0.0,x=-7.0,y=-8.0,r=0.59])Node111[a=-1.0,b=-1.0,x=-6.0,y=-8.0,r=0.53],(Node175[a=-1.0,b=1.0,x=-7.0,y=-6.0,r=1.8710079054235957])Node110[a=-1.0,b=0.0,x=-6.0,y=-7.0,r=0.81])Node91[a=-1.0,b=0.0,x=-5.0,y=-7.0,r=0.64])Node72[a=-1.0,b=0.0,x=-4.0,y=-7.0,r=1.35],(Node90[a=-1.0,b=0.0,x=-5.0,y=-8.0,r=1.48],(()Node109[a=-1.0,b=0.0,x=-6.0,y=-9.0,r=1.8236264836746388])Node89[a=-1.0,b=-1.0,x=-5.0,y=-9.0,r=0.94])Node71[a=-1.0,b=-1.0,x=-4.0,y=-8.0,r=0.91])Node42[a=-1.0,b=-1.0,x=-3.0,y=-7.0,r=0.58],(()Node46[a=-1.0,b=-1.0,x=-2.0,y=-7.0,r=0.93])()Node41[a=1.0,b=0.0,x=-1.0,y=-6.0,r=1.39])Node33[a=-1.0,b=-1.0,x=-2.0,y=-6.0,r=1.12])Node24[a=-1.0,b=0.0,x=-1.0,y=-5.0,r=1.47])Node16[a=-1.0,b=-1.0,x=0.0,y=-5.0,r=0.67],((Node32[a=0.0,b=-1.0,x=1.0,y=-6.0,r=1.9638918299741654],(((()Node841[a=-1.0,b=-1.0,x=-7.0,y=-11.0,r=0.58])((((()Node135[a=-1.0,b=-1.0,x=-5.0,y=-11.0,r=0.85])Node108[a=0.0,b=-1.0,x=-4.0,y=-10.0,r=1.0],(()Node630[a=-1.0,b=-1.0,x=-6.0,y=-13.0,r=0.77])(()Node134[a=-1.0,b=-1.0,x=-6.0,y=-11.0,r=1.0])Node107[a=-1.0,b=-1.0,x=-5.0,y=-10.0,r=1.14])Node88[a=-1.0,b=-1.0,x=-4.0,y=-9.0,r=0.65])Node69[a=-1.0,b=0.0,x=-3.0,y=-8.0,r=0.87],(((Node170[a=1.0,b=-1.0,x=-3.0,y=-12.0,r=1.9512384698512715],(()Node686[a=-1.0,b=-1.0,x=-4.0,y=-12.0,r=1.5])Node169[a=1.0,b=0.0,x=-3.0,y=-11.0,r=0.91])Node133[a=-1.0,b=-1.0,x=-4.0,y=-11.0,r=1.33])Node87[a=-1.0,b=-1.0,x=-3.0,y=-10.0,r=1.08],Node86[a=-1.0,b=0.0,x=-3.0,y=-9.0,r=1.33])Node68[a=0.0,b=-1.0,x=-2.0,y=-9.0,r=0.99])Node54[a=-1.0,b=-1.0,x=-2.0,y=-8.0,r=0.72])Node40[a=-1.0,b=-1.0,x=-1.0,y=-7.0,r=1.45],(()Node951[a=-1.0,b=-1.0,x=0.0,y=-11.0,r=1.7392926307253513])((()Node132[a=1.0,b=-1.0,x=2.0,y=-9.0,r=1.25],()Node131[a=1.0,b=0.0,x=2.0,y=-8.0,r=1.45])Node67[a=1.0,b=-1.0,x=1.0,y=-8.0,r=1.41],((()Node193[a=-1.0,b=0.0,x=-4.0,y=-14.0,r=1.22])()Node370[a=-1.0,b=-1.0,x=-3.0,y=-14.0,r=0.94])((()Node139[a=0.0,b=-1.0,x=-2.0,y=-13.0,r=1.33])(((Node166[a=0.0,b=-1.0,x=-2.0,y=-12.0,r=0.65],((()Node192[a=-1.0,b=0.0,x=0.0,y=-14.0,r=0.88])((()Node527[a=1.0,b=-1.0,x=1.0,y=-14.0,r=0.85])((()Node591[a=1.0,b=-1.0,x=0.0,y=-13.0,r=1.04])()Node169[a=0.0,b=-1.0,x=-1.0,y=-12.0,r=1.0099492850296317]))Node421[a=1.0,b=-1.0,x=-1.0,y=-11.0,r=1.29])Node165[a=0.0,b=1.0,x=-2.0,y=-10.0,r=1.23])Node130[a=-1.0,b=-1.0,x=-2.0,y=-11.0,r=1.45])Node106[a=0.0,b=-1.0,x=-1.0,y=-10.0,r=1.2592804255064793],Node105[a=1.0,b=0.0,x=0.0,y=-9.0,r=1.23])Node85[a=0.0,b=-1.0,x=-1.0,y=-9.0,r=1.49])Node66[a=-1.0,b=-1.0,x=-1.0,y=-8.0,r=1.38])Node39[a=0.0,b=-1.0,x=0.0,y=-7.0,r=1.13])Node31[a=-1.0,b=-1.0,x=0.0,y=-6.0,r=1.07])Node23[a=-1.0,b=0.0,x=1.0,y=-5.0,r=0.73],(((()Node952[a=1.0,b=-1.0,x=2.0,y=-10.0,r=1.18])(()Node84[a=-1.0,b=-1.0,x=0.0,y=-8.0,r=0.91])Node38[a=-1.0,b=0.0,x=1.0,y=-7.0,r=1.38],(((Node129[a=-1.0,b=-1.0,x=3.0,y=-8.0,r=1.27],()Node128[a=0.0,b=-1.0,x=4.0,y=-8.0,r=1.35])Node65[a=0.0,b=-1.0,x=4.0,y=-7.0,r=0.98],((((Node162[a=1.0,b=0.0,x=8.0,y=-7.0,r=1.2685669416870335],()Node283[a=1.0,b=-1.0,x=8.0,y=-8.0,r=0.9586343616711437])Node127[a=1.0,b=-1.0,x=7.0,y=-7.0,r=0.81],(()Node189[a=0.0,b=-1.0,x=6.0,y=-12.0,r=0.94])((()Node78[a=-1.0,b=-1.0,x=6.0,y=-11.0,r=0.66])((()Node537[a=0.0,b=-1.0,x=7.0,y=-11.0,r=1.22])()Node887[a=0.0,b=-1.0,x=7.0,y=-10.0,r=0.94])()Node473[a=0.0,b=-1.0,x=7.0,y=-9.0,r=0.81])()Node126[a=0.0,b=-1.0,x=6.0,y=-7.0,r=1.19],()Node93[a=1.0,b=0.0,x=7.0,y=-6.0,r=0.74])Node104[a=1.0,b=0.0,x=6.0,y=-6.0,r=1.4108167024543916])Node83[a=0.0,b=1.0,x=5.0,y=-6.0,r=1.32],((((()Node745[a=-1.0,b=-1.0,x=3.0,y=-14.0,r=0.62]))Node919[a=-1.0,b=-1.0,x=4.0,y=-13.0,r=1.15])()Node772[a=0.0,b=-1.0,x=5.0,y=-12.0,r=1.28])(()Node798[a=1.0,b=0.0,x=5.0,y=-11.0,r=0.8])(((()Node151[a=-1.0,b=-1.0,x=4.0,y=-11.0,r=0.96]))Node15[a=0.0,b=-1.0,x=5.0,y=-10.0,r=1.03])()Node82[a=1.0,b=-1.0,x=6.0,y=-8.0,r=0.96])Node64[a=1.0,b=-1.0,x=5.0,y=-7.0,r=1.37])Node53[a=1.0,b=1.0,x=4.0,y=-6.0,r=0.5])Node37[a=1.0,b=0.0,x=3.0,y=-7.0,r=1.28])Node30[a=0.0,b=-1.0,x=2.0,y=-7.0,r=0.75])Node22[a=0.0,b=-1.0,x=2.0,y=-6.0,r=0.83])Node15[a=1.0,b=-1.0,x=2.0,y=-5.0,r=1.41])Node11[a=1.0,b=-1.0,x=1.0,y=-4.0,r=0.68])Node9[a=-1.0,b=0.0,x=0.0,y=-3.0,r=1.224188604200087])Node6[a=1.0,b=-1.0,x=1.0,y=-3.0,r=0.95])Node4[a=1.0,b=-1.0,x=0.0,y=-2.0,r=0.82])Node2[a=-1.0,b=0.0,x=-1.0,y=-1.0,r=0.53])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.62])Node_0[a=0,b=0,x=0,y=0,r=1]\n",
    "\n",
    "How can we understand this unfathomable mystery? \n",
    "\n",
    "We might draw it. The code follows:\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "\n",
    "def get_neighboring_coordinates11b(cell):\n",
    "  '''Immediate neighboring coordinates of a cell are generated'''\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def detect_all_groups11b(newick_string):\n",
    "    '''Al substrings that encodes for the info of a node, step from father, center and radius are detected.'''\n",
    "\n",
    "    #print(\"detect_all_groups11b(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    '''\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        '''\n",
    "    return groups\n",
    "\n",
    "def extract_info11b(group):\n",
    "  '''The info of each group is extracted by tokenizers from the string.'''\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos11b(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups11b(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info11b(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "def find_father_center11b(newick_string, j):\n",
    "  ''' Finds the address of the father of a node at j'''\n",
    "  #print(\"find_father_center11(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups11b(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info11b(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def get_illuminated_area11b(x,y,r):\n",
    "    '''\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    '''\n",
    "    #print(\"get_illuminated_area11\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick11b(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles11b(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves_newick11b(newick_string):\n",
    "    '''Detect leaves in a Newick string.'''\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups11b(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father11b(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    '''Draw lines connecting leaves to fathers'''\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves_newick11b(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info11b(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups11b(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info11b(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    groups = detect_all_groups11b(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")    \n",
    "     \n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links11b(newick_string, ax,   diff_color='red' ):\n",
    "    '''Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       '''\n",
    "\n",
    "    #print(\"draw_tree_links11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups11b(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links11\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father11b(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups11b(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info11b(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick11b(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos11b(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 15))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles11b(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "     \n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area11b(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick11b(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links11b(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    # Example Newick string\n",
    "    newick_string = \"((((((()Node63[a=1.0,b=-1.0,x=5.0,y=-3.0,r=1.26])Node52[a=1.0,b=-1.0,x=4.0,y=-2.0,r=0.7])Node21[a=1.0,b=1.0,x=3.0,y=-1.0,r=1.9613197090647045],((()Node219[a=0.0,b=1.0,x=-2.0,y=3.0,r=1.06])((((Node156[a=-1.0,b=-1.0,x=-2.0,y=2.0,r=0.71])Node125[a=0.0,b=1.0,x=-1.0,y=3.0,r=1.37])Node103[a=-1.0,b=1.0,x=-1.0,y=2.0,r=1.36],(((Node198[a=-1.0,b=1.0,x=-4.0,y=1.0,r=0.75])Node155[a=-1.0,b=0.0,x=-3.0,y=0.0,r=0.58])Node124[a=-1.0,b=-1.0,x=-2.0,y=0.0,r=1.6749306080259698],((((()Node913[a=-1.0,b=0.0,x=-4.0,y=3.0,r=0.59]))Node698[a=0.0,b=1.0,x=-3.0,y=3.0,r=0.84])()Node600[a=-1.0,b=1.0,x=-3.0,y=2.0,r=1.25])()Node123[a=0.0,b=-1.0,x=-1.0,y=0.0,r=1.33])Node102[a=-1.0,b=0.0,x=-1.0,y=1.0,r=1.33])Node51[a=-1.0,b=1.0,x=0.0,y=1.0,r=0.54],(((()Node122[a=-1.0,b=0.0,x=0.0,y=3.0,r=1.17])Node81[a=-1.0,b=1.0,x=1.0,y=3.0,r=0.85])Node62[a=0.0,b=1.0,x=2.0,y=2.0,r=1.07],(((()Node153[a=-1.0,b=1.0,x=3.0,y=5.0,r=0.515683679559608],Node152[a=0.0,b=-1.0,x=4.0,y=3.0,r=1.03])Node101[a=1.0,b=1.0,x=4.0,y=4.0,r=0.5748403340449614])Node80[a=0.0,b=1.0,x=3.0,y=3.0,r=1.22],()Node79[a=1.0,b=0.0,x=4.0,y=2.0,r=1.36])Node61[a=1.0,b=1.0,x=3.0,y=2.0,r=0.5295884877970901])Node50[a=1.0,b=1.0,x=2.0,y=1.0,r=1.21])Node29[a=0.0,b=1.0,x=1.0,y=0.0,r=1.43])Node20[a=-1.0,b=1.0,x=1.0,y=-1.0,r=1.1])Node8[a=1.0,b=0.0,x=2.0,y=-2.0,r=0.64])Node3[a=1.0,b=-1.0,x=1.0,y=-2.0,r=1.37],((((((()Node100[a=0.0,b=1.0,x=-2.0,y=-2.0,r=1.05],((Node150[a=0.0,b=1.0,x=-4.0,y=-1.0,r=0.7334891191596699],(Node193[a=-1.0,b=1.0,x=-6.0,y=0.0,r=0.5820889162363478])Node149[a=-1.0,b=1.0,x=-5.0,y=-1.0,r=0.81])Node120[a=-1.0,b=0.0,x=-4.0,y=-2.0,r=1.36],()Node119[a=0.0,b=1.0,x=-3.0,y=-1.0,r=1.16])Node99[a=-1.0,b=1.0,x=-3.0,y=-2.0,r=1.47])Node49[a=-1.0,b=1.0,x=-2.0,y=-3.0,r=1.26],()((()Node118[a=0.0,b=-1.0,x=-3.0,y=-4.0,r=1.0],((()Node367[a=-1.0,b=-1.0,x=-7.0,y=-3.0,r=1.8764650499221425])()Node147[a=-1.0,b=0.0,x=-5.0,y=-3.0,r=0.82],Node146[a=-1.0,b=1.0,x=-5.0,y=-2.0,r=1.13])Node117[a=-1.0,b=0.0,x=-4.0,y=-3.0,r=1.13])Node78[a=-1.0,b=1.0,x=-3.0,y=-3.0,r=1.0329473493338008])Node48[a=-1.0,b=0.0,x=-2.0,y=-4.0,r=0.76])Node28[a=-1.0,b=0.0,x=-1.0,y=-4.0,r=1.46])Node14[a=1.0,b=-1.0,x=0.0,y=-4.0,r=1.06])Node7[a=0.0,b=-1.0,x=-1.0,y=-3.0,r=0.89])Node5[a=0.0,b=-1.0,x=-1.0,y=-2.0,r=0.71],(((((((()Node47[a=-1.0,b=1.0,x=4.0,y=-4.0,r=0.6058398421466735],((()Node441[a=0.0,b=-1.0,x=8.0,y=0.0,r=1.2970045651723827])((((()Node145[a=1.0,b=1.0,x=8.0,y=1.0,r=0.52],()Node144[a=0.0,b=1.0,x=7.0,y=1.0,r=0.96])Node116[a=1.0,b=1.0,x=7.0,y=0.0,r=1.235712154728331],()Node115[a=1.0,b=0.0,x=7.0,y=-1.0,r=0.95])Node98[a=1.0,b=1.0,x=6.0,y=-1.0,r=1.37],(()Node114[a=1.0,b=0.0,x=7.0,y=-2.0,r=0.62])Node97[a=1.0,b=0.0,x=6.0,y=-2.0,r=1.04])Node77[a=1.0,b=1.0,x=5.0,y=-2.0,r=1.01])Node59[a=-1.0,b=1.0,x=4.0,y=-3.0,r=0.62],(((Node185[a=1.0,b=0.0,x=9.0,y=-5.0,r=1.25],()Node476[a=1.0,b=-1.0,x=9.0,y=-6.0,r=0.87])Node142[a=1.0,b=-1.0,x=8.0,y=-5.0,r=1.7146586553405185])Node96[a=1.0,b=1.0,x=7.0,y=-4.0,r=1.49],((Node183[a=1.0,b=-1.0,x=8.0,y=-6.0,r=0.54])Node141[a=1.0,b=-1.0,x=7.0,y=-5.0,r=0.5185357042371559],(()Node303[a=1.0,b=-1.0,x=9.0,y=-4.0,r=0.69])(Node181[a=1.0,b=0.0,x=8.0,y=-3.0,r=1.16])Node140[a=1.0,b=1.0,x=7.0,y=-3.0,r=1.44])Node95[a=0.0,b=1.0,x=6.0,y=-4.0,r=1.1])Node58[a=1.0,b=-1.0,x=6.0,y=-5.0,r=0.72])Node46[a=0.0,b=1.0,x=5.0,y=-4.0,r=0.79])Node36[a=1.0,b=0.0,x=5.0,y=-5.0,r=1.02])Node27[a=1.0,b=-1.0,x=4.0,y=-5.0,r=0.71])Node19[a=1.0,b=0.0,x=3.0,y=-4.0,r=0.83],(Node57[a=0.0,b=-1.0,x=3.0,y=-6.0,r=0.83])Node18[a=1.0,b=-1.0,x=3.0,y=-5.0,r=1.36])Node13[a=0.0,b=-1.0,x=2.0,y=-4.0,r=1.9563373261553025],((((((()Node94[a=1.0,b=1.0,x=2.0,y=3.0,r=1.5714886013535794])Node76[a=1.0,b=0.0,x=1.0,y=2.0,r=1.7607046194653915])Node56[a=-1.0,b=1.0,x=0.0,y=2.0,r=1.43])Node45[a=-1.0,b=1.0,x=1.0,y=1.0,r=0.71])Node26[a=0.0,b=1.0,x=2.0,y=0.0,r=0.81],(((()Node55[a=1.0,b=0.0,x=5.0,y=-1.0,r=0.68])Node44[a=0.0,b=-1.0,x=4.0,y=-1.0,r=1.39])Node35[a=1.0,b=0.0,x=4.0,y=0.0,r=1.5450652146942652])Node25[a=1.0,b=1.0,x=3.0,y=0.0,r=0.8])Node17[a=-1.0,b=1.0,x=2.0,y=-1.0,r=0.84])Node12[a=1.0,b=1.0,x=3.0,y=-2.0,r=0.59])Node10[a=1.0,b=0.0,x=2.0,y=-3.0,r=1.31],((((((()Node74[a=0.0,b=1.0,x=-3.0,y=-5.0,r=0.97],(((()Node139[a=0.0,b=1.0,x=-5.0,y=-4.0,r=0.85])Node113[a=0.0,b=1.0,x=-5.0,y=-5.0,r=1.29],(Node138[a=-1.0,b=1.0,x=-7.0,y=-4.0,r=1.09])Node112[a=-1.0,b=1.0,x=-6.0,y=-5.0,r=0.69])Node92[a=-1.0,b=0.0,x=-5.0,y=-6.0,r=1.9891193529247717])Node73[a=-1.0,b=0.0,x=-4.0,y=-6.0,r=0.9])Node43[a=-1.0,b=-1.0,x=-3.0,y=-6.0,r=0.93])Node34[a=-1.0,b=0.0,x=-2.0,y=-5.0,r=1.7667232954270577],(()Node707[a=0.0,b=-1.0,x=-8.0,y=-11.0,r=1.2418125160543307])((((((Node176[a=-1.0,b=1.0,x=-8.0,y=-8.0,r=0.73])Node137[a=-1.0,b=-1.0,x=-7.0,y=-9.0,r=1.3],Node136[a=-1.0,b=0.0,x=-7.0,y=-8.0,r=0.59])Node111[a=-1.0,b=-1.0,x=-6.0,y=-8.0,r=0.53],(Node175[a=-1.0,b=1.0,x=-7.0,y=-6.0,r=1.8710079054235957])Node110[a=-1.0,b=0.0,x=-6.0,y=-7.0,r=0.81])Node91[a=-1.0,b=0.0,x=-5.0,y=-7.0,r=0.64])Node72[a=-1.0,b=0.0,x=-4.0,y=-7.0,r=1.35],(Node90[a=-1.0,b=0.0,x=-5.0,y=-8.0,r=1.48],(()Node109[a=-1.0,b=0.0,x=-6.0,y=-9.0,r=1.8236264836746388])Node89[a=-1.0,b=-1.0,x=-5.0,y=-9.0,r=0.94])Node71[a=-1.0,b=-1.0,x=-4.0,y=-8.0,r=0.91])Node42[a=-1.0,b=-1.0,x=-3.0,y=-7.0,r=0.58],(()Node46[a=-1.0,b=-1.0,x=-2.0,y=-7.0,r=0.93])()Node41[a=1.0,b=0.0,x=-1.0,y=-6.0,r=1.39])Node33[a=-1.0,b=-1.0,x=-2.0,y=-6.0,r=1.12])Node24[a=-1.0,b=0.0,x=-1.0,y=-5.0,r=1.47])Node16[a=-1.0,b=-1.0,x=0.0,y=-5.0,r=0.67],((Node32[a=0.0,b=-1.0,x=1.0,y=-6.0,r=1.9638918299741654],(((()Node841[a=-1.0,b=-1.0,x=-7.0,y=-11.0,r=0.58])((((()Node135[a=-1.0,b=-1.0,x=-5.0,y=-11.0,r=0.85])Node108[a=0.0,b=-1.0,x=-4.0,y=-10.0,r=1.0],(()Node630[a=-1.0,b=-1.0,x=-6.0,y=-13.0,r=0.77])(()Node134[a=-1.0,b=-1.0,x=-6.0,y=-11.0,r=1.0])Node107[a=-1.0,b=-1.0,x=-5.0,y=-10.0,r=1.14])Node88[a=-1.0,b=-1.0,x=-4.0,y=-9.0,r=0.65])Node69[a=-1.0,b=0.0,x=-3.0,y=-8.0,r=0.87],(((Node170[a=1.0,b=-1.0,x=-3.0,y=-12.0,r=1.9512384698512715],(()Node686[a=-1.0,b=-1.0,x=-4.0,y=-12.0,r=1.5])Node169[a=1.0,b=0.0,x=-3.0,y=-11.0,r=0.91])Node133[a=-1.0,b=-1.0,x=-4.0,y=-11.0,r=1.33])Node87[a=-1.0,b=-1.0,x=-3.0,y=-10.0,r=1.08],Node86[a=-1.0,b=0.0,x=-3.0,y=-9.0,r=1.33])Node68[a=0.0,b=-1.0,x=-2.0,y=-9.0,r=0.99])Node54[a=-1.0,b=-1.0,x=-2.0,y=-8.0,r=0.72])Node40[a=-1.0,b=-1.0,x=-1.0,y=-7.0,r=1.45],(()Node951[a=-1.0,b=-1.0,x=0.0,y=-11.0,r=1.7392926307253513])((()Node132[a=1.0,b=-1.0,x=2.0,y=-9.0,r=1.25],()Node131[a=1.0,b=0.0,x=2.0,y=-8.0,r=1.45])Node67[a=1.0,b=-1.0,x=1.0,y=-8.0,r=1.41],((()Node193[a=-1.0,b=0.0,x=-4.0,y=-14.0,r=1.22])()Node370[a=-1.0,b=-1.0,x=-3.0,y=-14.0,r=0.94])((()Node139[a=0.0,b=-1.0,x=-2.0,y=-13.0,r=1.33])(((Node166[a=0.0,b=-1.0,x=-2.0,y=-12.0,r=0.65],((()Node192[a=-1.0,b=0.0,x=0.0,y=-14.0,r=0.88])((()Node527[a=1.0,b=-1.0,x=1.0,y=-14.0,r=0.85])((()Node591[a=1.0,b=-1.0,x=0.0,y=-13.0,r=1.04])()Node169[a=0.0,b=-1.0,x=-1.0,y=-12.0,r=1.0099492850296317]))Node421[a=1.0,b=-1.0,x=-1.0,y=-11.0,r=1.29])Node165[a=0.0,b=1.0,x=-2.0,y=-10.0,r=1.23])Node130[a=-1.0,b=-1.0,x=-2.0,y=-11.0,r=1.45])Node106[a=0.0,b=-1.0,x=-1.0,y=-10.0,r=1.2592804255064793],Node105[a=1.0,b=0.0,x=0.0,y=-9.0,r=1.23])Node85[a=0.0,b=-1.0,x=-1.0,y=-9.0,r=1.49])Node66[a=-1.0,b=-1.0,x=-1.0,y=-8.0,r=1.38])Node39[a=0.0,b=-1.0,x=0.0,y=-7.0,r=1.13])Node31[a=-1.0,b=-1.0,x=0.0,y=-6.0,r=1.07])Node23[a=-1.0,b=0.0,x=1.0,y=-5.0,r=0.73],(((()Node952[a=1.0,b=-1.0,x=2.0,y=-10.0,r=1.18])(()Node84[a=-1.0,b=-1.0,x=0.0,y=-8.0,r=0.91])Node38[a=-1.0,b=0.0,x=1.0,y=-7.0,r=1.38],(((Node129[a=-1.0,b=-1.0,x=3.0,y=-8.0,r=1.27],()Node128[a=0.0,b=-1.0,x=4.0,y=-8.0,r=1.35])Node65[a=0.0,b=-1.0,x=4.0,y=-7.0,r=0.98],((((Node162[a=1.0,b=0.0,x=8.0,y=-7.0,r=1.2685669416870335],()Node283[a=1.0,b=-1.0,x=8.0,y=-8.0,r=0.9586343616711437])Node127[a=1.0,b=-1.0,x=7.0,y=-7.0,r=0.81],(()Node189[a=0.0,b=-1.0,x=6.0,y=-12.0,r=0.94])((()Node78[a=-1.0,b=-1.0,x=6.0,y=-11.0,r=0.66])((()Node537[a=0.0,b=-1.0,x=7.0,y=-11.0,r=1.22])()Node887[a=0.0,b=-1.0,x=7.0,y=-10.0,r=0.94])()Node473[a=0.0,b=-1.0,x=7.0,y=-9.0,r=0.81])()Node126[a=0.0,b=-1.0,x=6.0,y=-7.0,r=1.19],()Node93[a=1.0,b=0.0,x=7.0,y=-6.0,r=0.74])Node104[a=1.0,b=0.0,x=6.0,y=-6.0,r=1.4108167024543916])Node83[a=0.0,b=1.0,x=5.0,y=-6.0,r=1.32],((((()Node745[a=-1.0,b=-1.0,x=3.0,y=-14.0,r=0.62]))Node919[a=-1.0,b=-1.0,x=4.0,y=-13.0,r=1.15])()Node772[a=0.0,b=-1.0,x=5.0,y=-12.0,r=1.28])(()Node798[a=1.0,b=0.0,x=5.0,y=-11.0,r=0.8])(((()Node151[a=-1.0,b=-1.0,x=4.0,y=-11.0,r=0.96]))Node15[a=0.0,b=-1.0,x=5.0,y=-10.0,r=1.03])()Node82[a=1.0,b=-1.0,x=6.0,y=-8.0,r=0.96])Node64[a=1.0,b=-1.0,x=5.0,y=-7.0,r=1.37])Node53[a=1.0,b=1.0,x=4.0,y=-6.0,r=0.5])Node37[a=1.0,b=0.0,x=3.0,y=-7.0,r=1.28])Node30[a=0.0,b=-1.0,x=2.0,y=-7.0,r=0.75])Node22[a=0.0,b=-1.0,x=2.0,y=-6.0,r=0.83])Node15[a=1.0,b=-1.0,x=2.0,y=-5.0,r=1.41])Node11[a=1.0,b=-1.0,x=1.0,y=-4.0,r=0.68])Node9[a=-1.0,b=0.0,x=0.0,y=-3.0,r=1.224188604200087])Node6[a=1.0,b=-1.0,x=1.0,y=-3.0,r=0.95])Node4[a=1.0,b=-1.0,x=0.0,y=-2.0,r=0.82])Node2[a=-1.0,b=0.0,x=-1.0,y=-1.0,r=0.53])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.62])Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "    # Draw the tree and get the illuminated coordinates\n",
    "    illuminated_coords = draw_tree_newick11b(newick_string, title=\"Example of disconnected Morpho-tree\")\n",
    "    print(f\"Illuminated coordinates: {illuminated_coords}\")"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Observations.** By looking at the plot, one sees at least three types of connectivity defects:\n",
    "1. Isolated cells, for instance `(-6, -13)`. According to the formula, this corresponds with the info `(()Node630[a=-1.0,b=-1.0,x=-6.0,y=-13.0,r=0.77])(()Node134`. According to the formula, the node630 is also isolated. Hence, this is not an error of the drawing machinery. It is an error caused by ill programmed Evolution. \n",
    "2. The father and the child are not neighbors. Such is the case of the cell `(-3,-14)`, whose info is `)()Node370[a=-1.0,b=-1.0,x=-3.0,y=-14.0,r=0.94])((()Node139`, whose father is, according to the plot, (-2,-12), with info `(Node166[a=0.0,b=-1.0,x=-2.0,y=-12.0,r=0.65], `. According to the formula, the node370 is also isolated.  This is a bug of an ill programmed Evolution. \n",
    "3. Unlinked cell: The cell `(-7,-3)`, with info `(()Node367[a=-1.0,b=-1.0,x=-7.0,y=-3.0,r=1.8764650499221425])()Node147` is by side of `(-7,-4)`, with info `(Node138[a=-1.0,b=1.0,x=-7.0,y=-4.0,r=1.09])Node112` but is not linked to it. According to the formula, the node367 is also isolated. This is a bug of an ill programmed Evolution. \n",
    ">\n",
    "> We find no reason of blaming the drawing machinery as the cause of the errors. Hence, the errors are caused by ill programmed Evolution. In this case, recombination is turned off, so the culprit is mutation, which consists of insertion and deletion of a leaf. \n",
    ">\n",
    "> By looking at the code, we found that a modality of insertion inserts a node after the left parenthesis `( `. But this is valid for `((((`and this would produce an isolated info, if this is inserted somewhere in the middle. To correct the bug, left parenthesis as criterion for a leaf, was changed by `(N` which means that a node begins just after the left parenthesis. Additionally, the bug was seemingly propitiated by the substring `()` that was used in the constructive process of Newick strings to enable recursion. So, this was erased in line 1318 and below together with other possible causes of error. The code follows: it is a clone of the previous one with two exceptions. First: the disconnection bug was presumably resolved, and second: there is no random seed, so one can rerun it and receive different outputs."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2026-10-05T15:11:06.660439Z",
     "start_time": "2026-10-05T15:10:18.333441Z"
    }
   },
   "source": [
    "# Program evolution_of_newick_morphological_trees12.py\n",
    "# Morphological trees considered here are like lighting trees:\n",
    "# an electrical thread in the form of tree covers an area\n",
    "# and there is lamp at each node.\n",
    "# Each lamp has a given power and a circle of illumination,\n",
    "# whose radius is determined by a threshold intensity.\n",
    "# In morphology, this corresponds with a threshold concentration of a messenger.\n",
    "# Evolution is given the task of illuminating\n",
    "# the area determined by a random target tree.\n",
    "# Trees are encoded in Newick Notation and\n",
    "# everything is done over the correspond strings\n",
    "# without resorting to the Node class.\n",
    "# Thus, it is possible to use the Newick strings as a genotype and\n",
    "# the corresponding trees as a phenotype.\n",
    "# \n",
    "# In this version:\n",
    "#   1. Mutation has been inbuilt with the power\n",
    "#       to have children in the immediate neighborhood of the father and    \n",
    "#       to change radius and the topology of trees\n",
    "#       by means of insertion and deletion of leaves.\n",
    "#    2. Recombination has been enabled with the power \n",
    "#       to exchange leaves between trees.\n",
    "#       We expect a good proportion of the population to \n",
    "#       be able to successfully recombine, mutate and reproduce.\n",
    "#    3. A cut-off for the length of the Newick string has been introduced \n",
    "#       to avoid overgrowth of trees.\n",
    "#    4. The seed for the random number generator has been canceled \n",
    "#        to allow different histories for different runs.\n",
    "#\n",
    "# A bug was corrected in the function that inserts a node.\n",
    "# The criterion for insertion was changed from \"a leaf is just after a left parenthesis\" \n",
    "# to \"a leaf begins with `N` that is preceded by a left parenthesis\".\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# We reuse pieces of code made with the help of Colab and Gemini 2.5 Flash.\n",
    "# With the  assistance of the AI of Visual Studio Code.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "# trace memory allocation \n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc \n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False \n",
    "recombination_of_leaves = False\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start() \n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 30,\n",
    "  'max_number_children': 2,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "   #'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 200,\n",
    "  'generations': 100,\n",
    "  'max_depth': target_tree_params['max_depth'],\n",
    "  'max_number_children': target_tree_params['max_number_children'],\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001, \n",
    "  'crossover_rate': 0.001  \n",
    "}\n",
    "\n",
    " \n",
    "def print_parameters12(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    #print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=14.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence12(original_str, start_idx, end_idx, new_subsequence):\n",
    "    \"\"\" Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google\"\"\"\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length12(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups12(newick_string):\n",
    "    \"\"\"Al substrings that encodes for the info of a node, step from father, center and radius are detected.\"\"\"\n",
    "\n",
    "    #print(\"detect_all_groups12(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    \"\"\"\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        \"\"\"\n",
    "    return groups\n",
    "\n",
    "def count_groups12(newick_string):\n",
    "    \"\"\"The number of groups is counted.\"\"\"\n",
    "    groups = detect_all_groups12(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info12(group):\n",
    "  \"\"\"The info of each group is extracted by tokenizers from the string.\"\"\"\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos12(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups12(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info12(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates12(cell):\n",
    "  \"\"\"Immediate neighboring coordinates of a cell are generated\"\"\"\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "def find_father_center12(newick_string, j):\n",
    "  \"\"\" Finds the address of the father of a node at j\"\"\"\n",
    "  #print(\"find_father_center12(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups12(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info12(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator12(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  \"\"\"For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      \"\"\"\n",
    "  #print(\"node_info_generator12(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates12(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children12(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  \"\"\" Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n \"\"\"\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator12(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator12(max_depth, max_numb_children, max_node_radius):\n",
    "  \"\"\" A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.\"\"\"\n",
    "  #print(\"complete_tree_generator12(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = random.randint(0, max_depth) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion. \n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center12(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children12(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence12(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# === VALIDATOR ====\n",
    "\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# Connectivity issues are not checked.\n",
    "\n",
    "# A bug in the drawing procedure has been corrected, and the drawing of trees is now correct.\n",
    "# The bug was related to the function that finds the father of a node.\n",
    "\n",
    "# With the help of Gemini, Google and the AI of Visual Studio Code.\n",
    "\n",
    "\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- NodeB_3_x_2[a=1,b=0,x=4,y=5,r=1.2]\n",
    "# --- where a nad b are -1,0,1 except (0,0)\n",
    "# --- because they represent a step awya from the father.\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick12(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=1,b=-1,x=2,y=4,r=3.2], 22 tokens\n",
    "def examine_subsequence12(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 14][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 15][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 16][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 17][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 18][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 19][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 20][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 21][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"Tokens: {tracker}\")\n",
    "    #print(f\"tracker2: {tracker2}\")\n",
    "    master_pattern = \"7375627562756275627564\"\n",
    "                     # 7375627562756275627564\n",
    "    #print(f\"master pattern:  {master_pattern}\")\n",
    "    if tracker2 == master_pattern:\n",
    "        return True, \"Valid Newick sub-string.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string.\"\n",
    "\n",
    "\n",
    "def simplify12(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    # print(\"\\nsimplify(text)\")\n",
    "    # print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,x=3,y=7,r=2.3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_strig_of_length12(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    # print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        #print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        #print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "\n",
    "def validate_newick_syntax12(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    #print(\"Validating Newick syntax\")\n",
    "    tokens = []\n",
    "    try:\n",
    "        tokens = tokenize_newick12(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    l = len(tokens)\n",
    "    #print(f\"Length of tokens: {l}\")\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 22: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 22:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-20):\n",
    "            #print(f\"tokens[{j}]: {tokens[j]}\")\n",
    "            #print(f\"tokens[{j+1}]: {tokens[j+1]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid12, message12 = examine_subsequence12(tokens, j)\n",
    "                if is_valid12:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid12, message12 = simplify12(newick_str)\n",
    "    if is_valid12:\n",
    "        return True, \"Valid morpho-tree.\"\n",
    "    else:\n",
    "        return False, \"Invalid morpho-tree.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "def test_validator12(max_depth, max_numb_children, max_node_radius):\n",
    "    # Specific test\n",
    "    model = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]\"\n",
    "    #print(\"Simple test\")\n",
    "    #print(f\"Model of Newick String: {model}\")\n",
    "    is_valid, message = validate_newick_syntax12(model)\n",
    "    #print(f\"message: {message}\")\n",
    "    invalid_string = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]]\"\n",
    "    #print(f\"\\nInvalid_string: {invalid_string}\")\n",
    "    is_valid, message = validate_newick_syntax12(invalid_string)\n",
    "    #print(f\"message: {message}\")\n",
    "    #print(\"\\n\")\n",
    "\n",
    "\n",
    "    #print(\"\\nMassive test of Newick formulas encoding for morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 3\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        p, s = complete_tree_generator12(max_depth, max_numb_children, max_node_radius)\n",
    "        #print(f\"pattern {p}\")\n",
    "        #print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax12(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        #print(f\"Morpho-tree {i}:: {status} - {message}\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# ======== DRAWING ================\n",
    "\n",
    "def get_illuminated_area12(x,y,r):\n",
    "    \"\"\"\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    \"\"\"\n",
    "    #print(\"get_illuminated_area12\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick12(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles12(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves(newick_string):\n",
    "    \"\"\"Detect leaves in a Newick string.\"\"\"\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups12(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father12(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    \"\"\"Draw lines connecting leaves to fathers\"\"\"\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father12\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info12(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups12(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info12(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    #is_valid, message = validate_newick_syntax12(newick_string)\n",
    "    #print(f\"is valid at connect_leaves_to_father12(...) : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    groups = detect_all_groups12(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links12(newick_string, ax,   diff_color='red' ):\n",
    "    \"\"\"Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       \"\"\"\n",
    "\n",
    "    #print(\"draw_tree_links12\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups12(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links12\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father12(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups12(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info12(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick12(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos12(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 15))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles12(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "\n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area12(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick12(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links12(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree, test and draw it\n",
    "# def generate_test_and_draw_morpho_tree(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] ):\n",
    "def generate_and_test_morpho_tree12(ga_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    newick_tree = complete_tree_generator12(ga_params['max_depth'], ga_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #newick_tree = complete_tree_generator12(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    is_valid, message = validate_newick_syntax12(newick_tree)\n",
    "    illuminated_coords = set()\n",
    "    \n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos12(newick_tree)\n",
    "        illuminated_coords = get_illuminated_area12(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "    \"\"\"\n",
    "    is_valid, message = validate_newick_syntax12(newick_tree)\n",
    "    print(f\"is the Newick String valid?: {is_valid}, message: {message}\")\n",
    "    status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    \"\"\"\n",
    "    return newick_tree, illuminated_coords\n",
    "\n",
    "\n",
    "# --- Evolutionary functions ---\n",
    "\n",
    "def create_initial_population_newick12(pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],  max_node_radius=ga_params['max_node_radius'] ):\n",
    "    population = []\n",
    "    for _ in range(pop_size):\n",
    "        new_tree = complete_tree_generator12(max_depth, max_children, max_node_radius)\n",
    "        population.append(new_tree)\n",
    "    return population\n",
    "\n",
    "def get_illuminated_coordinates12(newick_string):\n",
    "  \"\"\"Coordinates of illuminated cells are extracted from the Newick string\"\"\"\n",
    "  a,b,x,y,r = extract_all_infos12(newick_string)\n",
    "  # Illuminated area is calculated\n",
    "  illuminated_coords = get_illuminated_area12(x,y,r)\n",
    "  ##print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "  ##print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "  return illuminated_coords\n",
    "\n",
    "def calculate_fitness_illumination12(candidate_tree_root, target_illuminated_area):\n",
    "    \"\"\"\n",
    "    Calculates fitness based on the symmetric difference between illuminated areas.\n",
    "    Fitness is 1.0 for a perfect match, and decreases as symmetric difference increases.\n",
    "    Reuse of a previous code by Gemini 2.5 Flash\n",
    "    \"\"\"\n",
    "    if candidate_tree_root is None:\n",
    "        # If the tree generation failed, assign a very low fitness\n",
    "        return 0.0001 # A small non-zero value to avoid division by zero issues later\n",
    "\n",
    "    candidate_illuminated_area = get_illuminated_coordinates12(candidate_tree_root)\n",
    "\n",
    "    # Symmetric difference: (A U B) - (A intersect B)\n",
    "    # Or, the elements in A but not B, plus elements in B but not A.\n",
    "    symmetric_difference = candidate_illuminated_area.symmetric_difference(target_illuminated_area)\n",
    "\n",
    "    # Union size: used for normalization\n",
    "    union_size = len(candidate_illuminated_area.union(target_illuminated_area))\n",
    "\n",
    "    if union_size == 0:\n",
    "        if not target_illuminated_area and not candidate_illuminated_area:\n",
    "            return 1.0 # Perfect match if both are empty\n",
    "        else:\n",
    "            return 0.0001 # Should not happen if target is non-empty, but handles cases where both are empty but expected non-empty\n",
    "\n",
    "    # Fitness is 1.0 - (len(symmetric_difference) / union_size)\n",
    "    # This gives 1.0 for a perfect match (symmetric_difference_area = 0)\n",
    "    # and approaches 0.0 for large differences.\n",
    "    fitness = 1.0 - (len(symmetric_difference) / union_size)\n",
    "    return max(0.0001, fitness) # Ensure fitness is always positive\n",
    "\n",
    "\n",
    "def select_parents_newick(population, fitness_scores, num_parents):\n",
    "    parents = []\n",
    "    # Use roulette wheel selection or tournament selection. Tournament is generally robust.\n",
    "    for _ in range(num_parents):\n",
    "        tournament_size = min(5, len(population))\n",
    "        if tournament_size == 0:\n",
    "            break\n",
    "        tournament_candidates = random.sample(list(zip(population, fitness_scores)), tournament_size)\n",
    "        winner = max(tournament_candidates, key=lambda x: x[1])[0]\n",
    "        parents.append(winner)\n",
    "    return parents\n",
    "\n",
    "def find_recombinant_branch12(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  #print(\"\\nfind_branch\")\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  pattern_left_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_left_par, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  #print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  #print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      #print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_position_branch_recombination12(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_position_branch_recombination12\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_recombinant_branch12(newick_string1)\n",
    "  branch2 = find_recombinant_branch12(newick_string2)\n",
    "  #print(f\"\\nbranch1: {branch1}\")\n",
    "  #print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "def newick_leaves_recombination12(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_leaves_recombination12\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  leaves1 = find_leaves(newick_string1)\n",
    "  leaves2 = find_leaves(newick_string2)\n",
    "  if not leaves1 or not leaves2:\n",
    "    return newick_string1, newick_string2\n",
    "  # Select a leaf at random from each tree\n",
    "  leaf1 = random.choice(leaves1)\n",
    "  leaf2 = random.choice(leaves2)\n",
    "  #print(f\"\\nleaf1: {leaf1}\")\n",
    "  #print(f\"leaf2: {leaf2}\")\n",
    "  # Leaves are interchanged\n",
    "  newick_string1 = newick_string1.replace(leaf1, leaf2)\n",
    "  newick_string2 = newick_string2.replace(leaf2, leaf1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "def find_occupied_squares12(newick_string):\n",
    "    \"\"\"Detects all the occupied squares in a tree\"\"\"\n",
    "    occupied_squares_set = set()\n",
    "    groups = detect_all_groups12(newick_string)\n",
    "    for group in groups:\n",
    "        [a,b,x,y,r] = extract_info12(group)\n",
    "        occupied_squares_set.add((x, y))\n",
    "    return occupied_squares_set\n",
    "\n",
    "def newick_mutation_of_radius12(newick_string):\n",
    "  # The pattern of the radius of illumination, r = 0.2\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  #print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  #print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  #print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence12(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    " \n",
    "def newick_find_insertion_patterns12(newick_string):\n",
    "  \"\"\" All insertion patterns are found and one is chosen at random\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    " \n",
    "\n",
    "def insertion_of_branch12(newick_string):\n",
    "  #original_newick_string = newick_string\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_insertion_patterns12(newick_string)\n",
    "  # String to be inserted\n",
    "  # child_string = \"(Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  child_string = complete_tree_generator12(max_depth = 2, max_numb_children = 2, max_node_radius= 1.5)\n",
    "  if group:\n",
    "    #print(f\"Group (main): {group}\")\n",
    "    #print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    #char_before = newick_string[start-1]\n",
    "    #print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {original_newick_string}\")\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_left_parenthesis_12(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns (N  are found and one is chosen at random\n",
    "      The new info will be inserted to the right of the parenthesis\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[(][N]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group120: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center12(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares12(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator12(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \"(\" + child_string +  \")\" + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "def select_one_insertion_pattern_comma_12(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All  commas are found and one is chosen at random,\n",
    "  the child will be inserted after the comma\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][,]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group120: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center12(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares12(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator12(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+2] + \"(\" + child_string + \")\" + newick_string[start+2:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_parentheses_12(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns ]) are found and one is chosen at random\n",
    "      The new info will be inserted between ] and ) as a brother\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][)]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group120: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center12(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares12(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator12(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \",\" + child_string + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def insertion_of_leaf12(newick_string, counter, max_illumination_radius):    #original_newick_string = newick_string\n",
    "    \"\"\" All insertion patterns are found and one is chosen at random\n",
    "        for the new info to be inserted \"\"\"\n",
    "    case = random.choice([1, 2, 3])  # Randomly choose between three insertion methods\n",
    "    match case:\n",
    "        case 1:\n",
    "            newick_string = select_one_insertion_pattern_comma_12(newick_string, counter, max_illumination_radius)\n",
    "        case 2:\n",
    "            newick_string = select_one_insertion_pattern_parentheses_12(newick_string, counter, max_illumination_radius)\n",
    "        case 3:\n",
    "            newick_string = select_one_insertion_pattern_left_parenthesis_12(newick_string, counter, max_illumination_radius)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    newick_string = newick_string.replace(\" \", \"\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    return newick_string\n",
    "\n",
    "\n",
    "\n",
    "def deletion_of_leaf12(newick_string):\n",
    "    \"\"\"A leaf is deleted at random from the Newick string. \n",
    "        If there are no leaves, the original string is returned.\"\"\"\n",
    "    # All leaves are detected\n",
    "    leaves = find_leaves(newick_string)\n",
    "    if not leaves:\n",
    "        return newick_string  # No leaves to delete\n",
    "    # Select a leaf at random\n",
    "    leaf_to_delete = random.choice(leaves)\n",
    "    # Remove the selected leaf from the Newick string\n",
    "    newick_string = newick_string.replace(leaf_to_delete, \"\")\n",
    "    # Clean up any potential formatting issues (like double commas)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    return newick_string\n",
    "\n",
    "def find_branch12(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_find_all_groups12(newick_string):\n",
    "  \"\"\" All groups are found and one is chosen at random and returned\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "\n",
    "def deletion_of_branch12(newick_string ):\n",
    "  group, start =  newick_find_all_groups12(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch12(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def newick_mutation_branches12(newick_string):\n",
    "  # Mutation of radius of illumination and of complete branches\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    newick_string = newick_mutation_of_radius12(newick_string)\n",
    "    newick_string = insertion_of_branch12(newick_string)\n",
    "    newick_string = deletion_of_branch12(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "def newick_mutation_leaves12(newick_string, ga_params):\n",
    "  \"\"\"Radius is mutated, and only leaves can be inserted or deleted\"\"\"\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    # Mutation of radius of illumination and of complete leaves\n",
    "    newick_string = newick_mutation_of_radius12(newick_string)\n",
    "    newick_string = insertion_of_leaf12(newick_string, counter=random.randint(0, 1000), max_illumination_radius=ga_params['max_node_radius'])\n",
    "    newick_string = deletion_of_leaf12(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def plot_illuminated_area12(ax, illuminated_coords, title, color='blue', alpha=0.5):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "# --- MAIN EVOLUTIONARY SIMULATION LOOP ---\n",
    "\n",
    "def run_evolution_newick_morpho_trees12(target_tree_params, ga_params):\n",
    "    # A previous code by Gemini was reused.\n",
    "\n",
    "    # 1. Generate Target Tree and its Illuminated Area\n",
    "    #print(\"\\n--- Generating Target Tree ---\")\n",
    "    #random.seed(ga_params['seed'] + 1) # Use a different seed for target generation\n",
    "    target_tree, target_illuminated_area =  generate_and_test_morpho_tree12( ga_params)#926\n",
    "    print(f\"target_tree: {target_tree} \\n\\n\")\n",
    "    number_of_groups = count_groups12(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    length_of_target_tree = len(target_tree)\n",
    "    #draw_newick_string12(target_tree, \"Target Tree\")\n",
    "    # target_area = get_illuminated_coordinates12(target_tree)\n",
    "    #print(f\"Target illuminated area: {target_illuminated_area}\")\n",
    "\n",
    "    # 2. Initialize Population\n",
    "    #random.seed(ga_params['seed']) # Reset seed for GA population generation\n",
    "    #print(f\"\\n--- Initializing Population of {ga_params['pop_size']} Trees ---\")\n",
    "    population = create_initial_population_newick12(\n",
    "        pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],\n",
    "        max_node_radius=ga_params['max_node_radius']  )\n",
    "    #print(f\"Population initialized with {len(population)} individuals.\")\n",
    "    #print(f\"Population: {population}\")\n",
    "\n",
    "\n",
    "\n",
    "    best_tree_overall = None\n",
    "    best_fitness_overall = -1.0\n",
    "    history = []\n",
    "\n",
    "    # 3. Evolutionary Loop\n",
    "    #print(f\"\\n--- Starting Evolutionary Loop for {ga_params['generations']} Generations ---\")\n",
    "    generation = 0\n",
    "    for generation in range(ga_params['generations']):\n",
    "        print(f\"\\n--- Generation {generation+1}/{ga_params['generations']}, Best fitness {round(best_fitness_overall, 5)} ---\")\n",
    "        fitness_scores = [calculate_fitness_illumination12(tree, target_illuminated_area)for tree in population]\n",
    "\n",
    "        current_best_fitness = max(fitness_scores)\n",
    "        current_best_tree = population[np.argmax(fitness_scores)]\n",
    "\n",
    "        if current_best_fitness > best_fitness_overall:\n",
    "            best_fitness_overall = current_best_fitness\n",
    "            best_tree_overall = copy.deepcopy(current_best_tree) # Deepcopy to save the best tree\n",
    "\n",
    "        history.append(current_best_fitness)\n",
    "\n",
    "        #print(f\"Generation {generation+1}/{ga_params['generations']}: Best Fitness = {current_best_fitness:.4f} (Overall Best: {best_fitness_overall:.4f})\")\n",
    "\n",
    "        if best_fitness_overall >= 0.999: # Almost perfect match\n",
    "            #print(\"Target illumination achieved (or very close)! Stopping evolution.\")\n",
    "            return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history, generation\n",
    "\n",
    "        # Selection\n",
    "        parents = select_parents_newick(population, fitness_scores, ga_params['pop_size'] // 2)\n",
    "\n",
    "        # Create next generation\n",
    "        next_population = []\n",
    "        # Elitism: Keep the best individual from the current generation\n",
    "        if best_tree_overall and current_best_fitness == best_fitness_overall: # Only if it's the current best in this generation\n",
    "            next_population.append(copy.deepcopy(current_best_tree))\n",
    "\n",
    "        while len(next_population) < ga_params['pop_size']:\n",
    "            if len(parents) < 2: # Not enough parents for crossover, fill with new random trees\n",
    "                new_tree =  complete_tree_generator12(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "                if new_tree:\n",
    "                    next_population.append(new_tree)\n",
    "                continue\n",
    "\n",
    "            # Randomly pick two parents (can be the same parent multiple times with replacement for simplicity)\n",
    "            p1 = random.choice(parents)\n",
    "            p2 = random.choice(parents)\n",
    "            child1, child2 = p1,p2 # No crossover, just pass parents to children for mutation\n",
    "            if recombination_of_leaves:\n",
    "                # Crossover newick_position_branch_recombination12\n",
    "                # child1, child2 = newick_position_branch_recombination12(p1, p2)\n",
    "                # Crossover newick_leaves_recombination12\n",
    "                child1, child2 =newick_leaves_recombination12(p1,p2)\n",
    "            # Mutation: Apply mutation to both children\n",
    "            mutated_child1 = newick_mutation_leaves12(child1, ga_params)\n",
    "            mutated_child2 = newick_mutation_leaves12(child2, ga_params)\n",
    "\n",
    "\n",
    "            next_population.append(mutated_child1)\n",
    "            if len(next_population) < ga_params['pop_size']:\n",
    "                next_population.append(mutated_child2)\n",
    "\n",
    "        population = next_population[:ga_params['pop_size']]\n",
    "        # print(f\"Population size for next generation: {len(population)}\")\n",
    "        # print(f\"Best fitness this generation: {current_best_fitness:.4f}, Overall best fitness: {best_fitness_overall:.4f}\")\n",
    "        # print(f\"Best tree this generation: {current_best_tree}\")\n",
    "        # If you want to see the entire population, uncomment the following line:\n",
    "        # print(f\"Population: {population}\")\n",
    "        # Cutt-off for the length of the Newick string to avoid excessive growth\n",
    "        population = [tree for tree in population if len(tree) <= 2 * length_of_target_tree]  # Allow some growth but limit it\n",
    "        #print(f\"Population size after length cut-off: {len(population)}\")\n",
    "        # If the population is too small, refill\n",
    "        while len(population) < ga_params['pop_size']:\n",
    "            new_tree = complete_tree_generator12(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'])\n",
    "            if new_tree:\n",
    "                population.append(new_tree) \n",
    "    generation += 1  # Increment generation count after the loop\n",
    "    #print(\"\\n--- Evolution Finished ---\")\n",
    "    #print(f\"Final Best Fitness: {best_fitness_overall:.4f}\")\n",
    "\n",
    "    return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history, generation\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree and draw it\n",
    "if __name__ == \"__main__\":\n",
    "    print_parameters12(target_tree_params, ga_params)\n",
    "    # Run the evolution loop\n",
    "    target_tree, target_illuminated_area, evolved_best_tree, evolved_best_fitness, history, generation = run_evolution_newick_morpho_trees12(target_tree_params, ga_params)\n",
    "    number_of_groups = count_groups12(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    title = \"Target Tree. Number of groups or nodes: \" + str(number_of_groups)\n",
    "    draw_tree_newick12(target_tree, title)\n",
    "    title = \"Evolved Best Tree\"\n",
    "    draw_tree_newick12(evolved_best_tree, title)\n",
    "\n",
    "    # Plot Symmetric Difference Area\n",
    "    evolved_best_area = get_illuminated_coordinates12(evolved_best_tree)\n",
    "    symmetric_diff_area = target_illuminated_area.symmetric_difference(evolved_best_area )\n",
    "    ##print(f\"Symmetric Difference Area: {symmetric_diff_area}\")\n",
    "    ##print(f\"Number of cells in symmetric difference area: {len(symmetric_diff_area)}\")\n",
    "\n",
    "\n",
    "    fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "\n",
    "    plot_illuminated_area12(axes[0], target_illuminated_area, title=f\"Target Area (number of cells: {len(target_illuminated_area)})\")\n",
    "    plot_illuminated_area12(axes[1], evolved_best_area, title=f\"Evolved Best Area (number of cells: {len(evolved_best_area)})\")\n",
    "    plot_illuminated_area12(axes[2], symmetric_diff_area, title=f\"Symmetric Difference (Error Area: {len(symmetric_diff_area)})\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "    # Plot Fitness History\n",
    "    plt.figure(figsize=(10, 6))\n",
    "    plt.plot(history, marker='o', linestyle='-', color='blue')\n",
    "    plt.title('Best Fitness Progression Over Generations')\n",
    "    plt.xlabel('Generation')\n",
    "    plt.ylabel('Fitness')\n",
    "    plt.grid(True)\n",
    "    plt.show()\n",
    "\n",
    "     \n",
    "    print(f\"Evolved best tree: {evolved_best_tree}\")\n",
    "    print(f\"Evolved best fitness: {evolved_best_fitness:.2}\")\n",
    "    print(f\"Generation: {generation}\")\n",
    "    print(f\"Number of nodes in target tree: {number_of_groups}\")\n",
    "    end_time = time.time()\n",
    "    Execution_time = end_time - start_time\n",
    "    # print(f\"Execution time: {Execution_time:.2f} seconds\")\n",
    "    # Execution time in hours, minutes and seconds:\n",
    "    hours = int(Execution_time // 3600)\n",
    "    minutes = int((Execution_time % 3600) // 60)\n",
    "    seconds = int(Execution_time % 60)\n",
    "    print(f\"Execution time: {hours} hours, {minutes} minutes, {seconds} seconds\")\n",
    "    if memory_monitoring:\n",
    "        # displaying the allocated memory\n",
    "        print(tracemalloc.get_traced_memory())\n",
    "        # stopping the memory allocation library\n",
    "        tracemalloc.stop()\n",
    "    \n",
    "# End of program evolution_of_newick_morphological_trees12.py"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LAB: EVOLUTION OF NEWICK MORPHO-TREES\n",
      "PURPOSE: \n",
      " A random morpho-tree T is generated.\n",
      " Evolution tries to restore the tree T\n",
      " beginning from a population of random trees.\n",
      "EXPERIMENT 1791213018.4772859\n",
      "RECOMBINATION OF LEAVES: False\n",
      "TARGET TREE PARAMETERS: {'max_depth': 30, 'max_number_children': 2, 'max_node_radius': 1.5}\n",
      "GENETIC ALGORITHM PARAMETERS: {'pop_size': 200, 'generations': 100, 'max_depth': 30, 'max_number_children': 2, 'max_node_radius': 1.5, 'mutation_rate': 0.001, 'crossover_rate': 0.001}\n",
      "\n",
      "target_tree: (((((Node19[a=1.0,b=0.0,x=4.0,y=-1.0,r=0.51])Node12[a=1.0,b=-1.0,x=3.0,y=-1.0,r=0.61])Node8[a=1.0,b=-1.0,x=2.0,y=0.0,r=1.05])Node6[a=1.0,b=0.0,x=1.0,y=1.0,r=1.3],((Node14[a=1.0,b=1.0,x=0.0,y=2.0,r=1.16])Node11[a=0.0,b=-1.0,x=-1.0,y=1.0,r=0.87],Node10[a=0.0,b=1.0,x=-1.0,y=3.0,r=0.85])Node5[a=-1.0,b=1.0,x=-1.0,y=2.0,r=1.14])Node2[a=0.0,b=1.0,x=0.0,y=1.0,r=0.57],(((Node18[a=0.0,b=-1.0,x=-2.0,y=-2.0,r=1.49],Node17[a=-1.0,b=-1.0,x=-3.0,y=-2.0,r=0.79])Node7[a=0.0,b=-1.0,x=-2.0,y=-1.0,r=0.96])Node4[a=-1.0,b=0.0,x=-2.0,y=0.0,r=0.86],(((Node16[a=-1.0,b=1.0,x=-5.0,y=3.0,r=1.28],Node15[a=0.0,b=1.0,x=-4.0,y=3.0,r=0.67])Node13[a=-1.0,b=1.0,x=-4.0,y=2.0,r=1.15])Node9[a=-1.0,b=0.0,x=-3.0,y=1.0,r=0.65])Node3[a=-1.0,b=1.0,x=-2.0,y=1.0,r=1.18])Node1[a=-1.0,b=0.0,x=-1.0,y=0.0,r=0.96])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 20\n",
      "\n",
      "--- Generation 1/100, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 2/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 3/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 4/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 5/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 6/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 7/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 8/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 9/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 10/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 11/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 12/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 13/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 14/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 15/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 16/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 17/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 18/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 19/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 20/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 21/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 22/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 23/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 24/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 25/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 26/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 27/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 28/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 29/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 30/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 31/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 32/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 33/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 34/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 35/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 36/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 37/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 38/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 39/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 40/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 41/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 42/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 43/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 44/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 45/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 46/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 47/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 48/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 49/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 50/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 51/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 52/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 53/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 54/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 55/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 56/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 57/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 58/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 59/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 60/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 61/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 62/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 63/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 64/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 65/100, Best fitness 0.59375 ---\n",
      "\n",
      "--- Generation 66/100, Best fitness 0.6 ---\n",
      "\n",
      "--- Generation 67/100, Best fitness 0.6 ---\n",
      "\n",
      "--- Generation 68/100, Best fitness 0.6 ---\n",
      "\n",
      "--- Generation 69/100, Best fitness 0.6 ---\n",
      "\n",
      "--- Generation 70/100, Best fitness 0.6 ---\n",
      "\n",
      "--- Generation 71/100, Best fitness 0.60938 ---\n",
      "\n",
      "--- Generation 72/100, Best fitness 0.60938 ---\n",
      "\n",
      "--- Generation 73/100, Best fitness 0.60938 ---\n",
      "\n",
      "--- Generation 74/100, Best fitness 0.60938 ---\n",
      "\n",
      "--- Generation 75/100, Best fitness 0.60938 ---\n",
      "\n",
      "--- Generation 76/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 77/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 78/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 79/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 80/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 81/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 82/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 83/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 84/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 85/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 86/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 87/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 88/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 89/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 90/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 91/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 92/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 93/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 94/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 95/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 96/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 97/100, Best fitness 0.64062 ---\n",
      "\n",
      "--- Generation 98/100, Best fitness 0.67692 ---\n",
      "\n",
      "--- Generation 99/100, Best fitness 0.67692 ---\n",
      "\n",
      "--- Generation 100/100, Best fitness 0.67692 ---\n",
      "Number of groups or nodes in target tree: 20\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 700x1500 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArIAAAIJCAYAAABZdN42AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA/h5JREFUeJzsnQecY3XV/p/b0qdvX8ouvUsHQUSxCyjYXl8Vu4Bdwf5XwfpasWABrIi9gAVUVJoCCiJFEOkdFrZNS731/3lOktnpk8wkM8nM+foZw2azyc3Nndznnt9znmOsXrNdBEVRFEVRFEVpM8yF3gBFURRFURRFmQ0qZBVFURRFUZS2RIWsoiiKoiiK0paokFUURVEURVHaEhWyiqIoiqIoSluiQlZRFEVRFEVpS1TIKoqiKIqiKG2JCllFURRFURSlLbEXegMURVEWkne+8x3YtGkTfvzjn7TFB9Hb24sXvehEbL/9digVS/j0/31moTdJaQKWZeHjHzsTl11+OS6//Ardx4oyBSpklbbn+c9/Ho484ogZH5fL5VrupP+pT34CV131V/zpz3+e9nEULgcdeOCMz7dlyxac9aUvo1V4zWtejd123RW3//e/+NGPfjzh78888wz89/b/4mc//zkWihe/6ETcc8+9bSFku7q6cMXlf8Edd9yBP//lMuSy2YXeJKVJ2LaN173utdi6dWtLCFnHcfD0pz0Ne+61J+LxOO6//378/vd/kO/VqY7VF7zgeKxftw79AwP4wx/+iHvuuWfet1tZ/Ki1QGl7Nm/aLF+Q1Z+h4WE5Aaxbt27M/fzibTW4nQcffNCMj9u4ceOY9+J6nvzbVatWjbn/gQcfRCvx7Gc9S7aTgp2fx3hefdKr8LSnHb0g29aOHH/8cVi+fDne/o534dvf/g5+8tOfLfQmKUuAo48+Gv+64Xp8+tOfRCqZRKlUwhvf8Hr8/dqr8bSnPW3C43fbbTdcdeXleOlLXyKrHTutX4+//PlSvOIV/7sg268sbrQiq7Q91//zn/JTZffdd8c73/F23PLvf+N73z8fi4Grr75GfqocesghOOXkN+Gf/7yh5d9jNptFFEX44Affj1NOefNCb05bs912241c2CjKfLHT+nX405/+jI985KMoFIty39lnfw2/vuhX+PrXzsYhhx6GfD4/8vivf/1sEbAvetFL4Pu+3Pf4E0/g05/6JP7+97/j/vsf0A9PaRgqZJUlwXHHHYsnH364/HcYhhgaGsK/brwRV1xxpYisKq977WuQSCTwzXPOxdFPfSqefMST8eijj+KCC34of7/XXnviec99LmKxGK655lr89W9/w2nvfhc2bNgwoTrW2dmJY5//POyyyy5SQb3uuutx5ZVXyt91d3fjve85Xf77qU89Cul0Wv77P7ffPuslblZNnv2sZ+LMj31cqp/HHvt8dHZ04OOf+OTI0uBznvNs7LvPPrJseeutt+HiSy4ZOdFUqfVxtcIT3PfP/wHe99734NwDz8ONN9407eM/+tGP4MYbb8TFF18y5n5Wc1iN/MpXvjrB3/qTn/xUPuP99t0XDz/yCH7+81+gWCzCMAyxnhyw//7YvHkLfvLTn2JwcHDS1zVNc+Q5uJz769/8Bo89tmHC42rZP6O36znPfjYOOuhA3Hrbbfjtb3835fvmUixff+eddhKxcP111+Oqv/515O9Z1T7kkINH/ptcceWV+MtfLpvyOdeuWYMXvvAF6Ovrw7//fSt+d/HF+J+XvRSrV68eY0GZaXv33HMPPOMZz5DneeLxJ/DHSy/FAw9sEyP8+1e98pXye/PII4+M2VdnnvFR/OnPf8FVV101sk1vecub8eOf/ASPP/4EXvKSF2PlihViP/n1r38z4Tjjax5/3HFYu3aNfHb/vOFfuO6661ALM2336G157LHH8KITT8QOO+6A73zne3jooYcm3Z/Vxz/yyKOy7bzvzjvvwoUXXQTP8+rehipPfvLheNrRR8v75zL83dMsw69evUq+h7bbfntkh4dx+RVX4uabb657v73hDa+Xaun/+/BHpt2Pl/z+DxMumPk9+ruLL8HHzjwD++//JFx77d9HLrL33msvvO/9HxjzWX7nO9/F29/2VrzyFa/AJz/16WlfT1HqQa0FypJg0yj7wYMPPSSi4WtnfxXf//53xzzuuc99Dl7wghfgox/5MF7+8v+BWyphn332lr979atPwqV//AP2229fDGezeOWrXoHTT3s3XvziF+Ppxzx9wknp2muvFo8oPWS2ZeFrX/sqvv+970oTB094Vb9Yf//AyLY9/vjjs36PPJlwGZ/ChUuAZJ9995FbCtvLL/8LPvLh/yfijuLy9Pechj/84RJpHqpS6+Pq5dxzzsWGDY/jIx/+8IyPPelVrxy5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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 700x1500 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1500x500 with 3 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Evolved best tree: (((Node6[a=-1.0,b=1.0,x=-2.0,y=2.0,r=0.97],(()Node8[a=-1.0,b=-1.0,x=-2.0,y=-1.0,r=1.6471840104761717],(Node898[a=-1.0,b=-1.0,x=-4.0,y=1.0,r=1.21])(Node10[a=-1.0,b=1.0,x=-3.0,y=2.0,r=1.9722911115144293])Node7[a=-1.0,b=1.0,x=-2.0,y=1.0,r=0.8375737439077295])Node5[a=0.0,b=-1.0,x=-1.0,y=0.0,r=0.62])Node3[a=-1.0,b=0.0,x=-1.0,y=1.0,r=1.14],((Node842[a=-1.0,b=0.0,x=-1.0,y=3.0,r=0.65])Node72[a=0.0,b=-1.0,x=0.0,y=3.0,r=0.93])Node2[a=1.0,b=1.0,x=1.0,y=2.0,r=0.6])Node1[a=0.0,b=1.0,x=0.0,y=1.0,r=0.82])Node_0[a=0,b=0,x=0,y=0,r=1]\n",
      "Evolved best fitness: 0.68\n",
      "Generation: 100\n",
      "Number of nodes in target tree: 20\n",
      "Execution time: 0 hours, 0 minutes, 48 seconds\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Observations.** The Author was unable to find an error in the new version. So, we proceed further on. Moreover:\n",
    "1. To clearly perceive that the number of nodes is a measure of complexity, one needs large difference among the compared numbers of nodes, say of various hundreds. \n",
    "2. One gets the impression that globular target trees are easier to resolve by Evolution than trees with a rich structure of holes and large arms. \n",
    "3. Our measure of fitness does not seem to be perfect because in large globules, there could be too many cells in the symmetric difference of target and test trees, but nevertheless, the fitness is high. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# THE COST OF EVOLUTION\n",
    "\n",
    "Our purpose now is to study the cost of Evolution dependning on complexity. The cost is measured in employed chromosomes, that are given by the population size times the number of generations to achieve a given proportion of the fitness for a perfect solution that is one. Complexity is here measured by the number of nodes of the target tree.\n",
    "\n",
    "Two questions are important for us:  \n",
    " 1. Does complexity smash Evolution? \n",
    " 2. There is a sign of pleiotropy? \n",
    "\n",
    "In this research these questions are ordinary because we always have found that when complexity increases, the maximal fitness decreases. Moreover, Evolution is very bad to overcome pliotropy.\n",
    "\n",
    "We have moreover an ethical reason to ask these questions because we have found in various cases that the fitness grows to its final value in th first 100 generations and remains invariable until generation 5000. Two possible hypotheses compete for being the correct explanation. First: the final observed value is the equilibrium value that is determined by the balance of resources and complexity. Second, the final value is not the equilibrium point, but rather a transient ecstasy state caused by plieotropy.\n",
    "\n",
    "In consequence, let us study the battle of Evolution against complexity in the case of Newick morphological trees to shed a light over the two posed questions. We have two complementary experiments. In the first, we increase the complexity, in the second we decrease resources. The first follows.\n",
    "\n",
    "**Exercise.**  Program Evolution to battle diverse degrees of complexity.\n",
    ">\n",
    "> *Answer.*  The following program depicts the dynamics of the fitness along the number of generations for different values of complexity to see whether complexity smashes Evolution. The inference of pleiotropy may arise from the increasing of fitness by jumps, and from a very frustrated advance of the fitness function.\n",
    ">\n",
    "> Our expectation: Complexity, given by the number of nodes in the target tree, must smash Evolution. We expect that the higher the complexity, the retarded the growth of the fitness and the lower the equilibrium state that operates as maximal value.\n",
    ">\n",
    "> Obtained results were inconsistent, sometimes the expectation was more or less fulfilled, most times not.   \n",
    ">\n",
    "> What could be the cause of so much disorder?\n",
    ">\n",
    "> In our opinion, the most influent cause of disorder was that a great difference could exist between the number of nodes in the target tree, that defines the task that Evolution must solve, and the range of the number of nodes in the test trees. For instance: max-depth in the target tree: 40, number of nodes in the target tree: around 1000. Number of nodes in the test tree: 5. This may happen because the actual value of the depth for each tree is random but below the max-depth. So, test trees must pick up many fluctuations to grow enough to fit into the target tree. This can be done but takes time. As a consequence, the solution is retarded. Now, if the actual value of the number of nodes in the test trees is in the same range as that value in the test trees, we expect that the problem would be easier, i.e., solved earlier.  Nevertheless, Evolution demands variability and so, it must be kept alive.\n",
    ">\n",
    "> The implementation of our homogenizing criterion, in the following program, was the following: the actual depth, the number of allowed cellular divisions along each branch, is the max depth plus a random value in the interval (-5,5). Line 332. The following code tests our ideas:\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2026-10-05T20:24:04.717922Z",
     "start_time": "2026-10-05T15:15:27.502286Z"
    }
   },
   "source": [
    "# Program evolution_of_newick_morphological_trees13.py\n",
    "# Evolution tries to restore three target morpho-trees\n",
    "# with different number of nodes.\n",
    "#\n",
    "# Morphological trees considered here are like lighting trees:\n",
    "# an electrical thread in the form of tree covers an area\n",
    "# and there is lamp at each node.\n",
    "# Each lamp has a given power and a circle of illumination,\n",
    "# whose radius is determined by a threshold intensity.\n",
    "# In morphology, this corresponds with a threshold concentration of a messenger.\n",
    "# Evolution is given the task of illuminating\n",
    "# the area determined by a random target tree.\n",
    "# Trees are encoded in Newick Notation and\n",
    "# everything is done over the correspond strings\n",
    "# without resorting to the Node class.\n",
    "# Thus, it is possible to use the Newick strings as a genotype and\n",
    "# the corresponding trees as a phenotype.\n",
    "# \n",
    "# In this version:\n",
    "#   1. Mutation has been inbuilt with the power\n",
    "#       to have children in the immediate neighborhood of the father and    \n",
    "#       to change radius and the topology of trees\n",
    "#       by means of insertion and deletion of leaves.\n",
    "#    2. Recombination has been enabled with the power \n",
    "#       to exchange leaves between trees.\n",
    "#       We expect a good proportion of the population to \n",
    "#       be able to successfully recombine, mutate and reproduce.\n",
    "#    3. A cut-off for the length of the Newick string has been introduced \n",
    "#       to avoid overgrowth of trees.\n",
    "#    4. The seed for the random number generator has been canceled \n",
    "#        to allow different histories for different runs.\n",
    "#\n",
    "# A bug was corrected in the function that inserts a node.\n",
    "# The criterion for insertion was changed from \"a leaf is just after a left parenthesis\" \n",
    "# to \"a leaf begins with `N` that is preceded by a left parenthesis\".\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# We reuse pieces of code made with the help of Colab and Gemini 2.5 Flash.\n",
    "# With the  assistance of the AI of Visual Studio Code.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "from datetime import datetime, timedelta\n",
    "\n",
    "# trace memory allocation \n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc \n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False \n",
    "recombination_of_leaves = False\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start() \n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 10,\n",
    "  'max_number_children': 2,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "   #'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 70,\n",
    "  'generations': 100,\n",
    "  'max_depth': target_tree_params['max_depth'],\n",
    "  'max_number_children': target_tree_params['max_number_children'],\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001, \n",
    "  'crossover_rate': 0.001  \n",
    "}\n",
    "\n",
    " \n",
    "def print_parameters13(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    #print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"INITIAL TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"INITIAL GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=14.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence13(original_str, start_idx, end_idx, new_subsequence):\n",
    "    \"\"\" Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google\"\"\"\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length13(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups13(newick_string):\n",
    "    \"\"\"Al substrings that encodes for the info of a node, step from father, center and radius are detected.\"\"\"\n",
    "\n",
    "    #print(\"detect_all_groups13(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    \"\"\"\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        \"\"\"\n",
    "    return groups\n",
    "\n",
    "def count_groups13(newick_string):\n",
    "    \"\"\"The number of groups is counted.\"\"\"\n",
    "    groups = detect_all_groups13(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info13(group):\n",
    "  \"\"\"The info of each group is extracted by tokenizers from the string.\"\"\"\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos13(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups13(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info13(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates13(cell):\n",
    "  \"\"\"Immediate neighboring coordinates of a cell are generated\"\"\"\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "def find_father_center13(newick_string, j):\n",
    "  \"\"\" Finds the address of the father of a node at j\"\"\"\n",
    "  #print(\"find_father_center13(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups13(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info13(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator13(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  \"\"\"For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      \"\"\"\n",
    "  #print(\"node_info_generator13(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates13(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children13(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  \"\"\" Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n \"\"\"\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator13(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator13(max_depth, max_numb_children, max_node_radius):\n",
    "  \"\"\" A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.\"\"\"\n",
    "  #print(\"complete_tree_generator13(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = max_depth + random.randint(-5,5) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion. \n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center13(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children13(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence13(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# === VALIDATOR ====\n",
    "\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# Connectivity issues are not checked.\n",
    "\n",
    "# A bug in the drawing procedure has been corrected, and the drawing of trees is now correct.\n",
    "# The bug was related to the function that finds the father of a node.\n",
    "\n",
    "# With the help of Gemini, Google and the AI of Visual Studio Code.\n",
    "\n",
    "\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- NodeB_3_x_2[a=1,b=0,x=4,y=5,r=1.2]\n",
    "# --- where a nad b are -1,0,1 except (0,0)\n",
    "# --- because they represent a step awya from the father.\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick13(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=1,b=-1,x=2,y=4,r=3.2], 22 tokens\n",
    "def examine_subsequence13(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 14][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 15][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 16][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 17][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 18][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 19][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 20][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 21][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"Tokens: {tracker}\")\n",
    "    #print(f\"tracker2: {tracker2}\")\n",
    "    master_pattern = \"7375627562756275627564\"\n",
    "                     # 7375627562756275627564\n",
    "    #print(f\"master pattern:  {master_pattern}\")\n",
    "    if tracker2 == master_pattern:\n",
    "        return True, \"Valid Newick sub-string.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string.\"\n",
    "\n",
    "\n",
    "def simplify13(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    # print(\"\\nsimplify(text)\")\n",
    "    # print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,x=3,y=7,r=2.3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_strig_of_length13(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    # print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        #print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        #print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "\n",
    "def validate_newick_syntax13(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    #print(\"Validating Newick syntax\")\n",
    "    tokens = []\n",
    "    try:\n",
    "        tokens = tokenize_newick13(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    l = len(tokens)\n",
    "    #print(f\"Length of tokens: {l}\")\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 22: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 22:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-20):\n",
    "            #print(f\"tokens[{j}]: {tokens[j]}\")\n",
    "            #print(f\"tokens[{j+1}]: {tokens[j+1]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid13, message13 = examine_subsequence13(tokens, j)\n",
    "                if is_valid13:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid13, message13 = simplify13(newick_str)\n",
    "    if is_valid13:\n",
    "        return True, \"Valid morpho-tree.\"\n",
    "    else:\n",
    "        return False, \"Invalid morpho-tree.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "def test_validator13(max_depth, max_numb_children, max_node_radius):\n",
    "    # Specific test\n",
    "    model = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]\"\n",
    "    #print(\"Simple test\")\n",
    "    #print(f\"Model of Newick String: {model}\")\n",
    "    is_valid, message = validate_newick_syntax13(model)\n",
    "    #print(f\"message: {message}\")\n",
    "    invalid_string = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]]\"\n",
    "    #print(f\"\\nInvalid_string: {invalid_string}\")\n",
    "    is_valid, message = validate_newick_syntax13(invalid_string)\n",
    "    #print(f\"message: {message}\")\n",
    "    #print(\"\\n\")\n",
    "\n",
    "\n",
    "    #print(\"\\nMassive test of Newick formulas encoding for morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 3\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        p, s = complete_tree_generator13(max_depth, max_numb_children, max_node_radius)\n",
    "        #print(f\"pattern {p}\")\n",
    "        #print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax13(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        #print(f\"Morpho-tree {i}:: {status} - {message}\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# ======== DRAWING ================\n",
    "\n",
    "def get_illuminated_area13(x,y,r):\n",
    "    \"\"\"\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    \"\"\"\n",
    "    #print(\"get_illuminated_area13\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick13(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles13(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves(newick_string):\n",
    "    \"\"\"Detect leaves in a Newick string.\"\"\"\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups13(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father13(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    \"\"\"Draw lines connecting leaves to fathers\"\"\"\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father13\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info13(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups13(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info13(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    #is_valid, message = validate_newick_syntax13(newick_string)\n",
    "    #print(f\"is valid at connect_leaves_to_father13(...) : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    groups = detect_all_groups13(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links13(newick_string, ax,   diff_color='red' ):\n",
    "    \"\"\"Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       \"\"\"\n",
    "\n",
    "    #print(\"draw_tree_links13\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups13(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links13\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father13(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups13(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info13(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick13(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos13(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 15))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles13(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "\n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area13(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick13(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links13(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree, test and draw it\n",
    "# def generate_test_and_draw_morpho_tree(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] ):\n",
    "def generate_and_test_morpho_tree13(ga_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    newick_tree = complete_tree_generator13(ga_params['max_depth'], ga_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #newick_tree = complete_tree_generator13(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    is_valid, message = validate_newick_syntax13(newick_tree)\n",
    "    illuminated_coords = set()\n",
    "    \n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos13(newick_tree)\n",
    "        illuminated_coords = get_illuminated_area13(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "    \"\"\"\n",
    "    is_valid, message = validate_newick_syntax13(newick_tree)\n",
    "    print(f\"is the Newick String valid?: {is_valid}, message: {message}\")\n",
    "    status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    \"\"\"\n",
    "    return newick_tree, illuminated_coords\n",
    "\n",
    "\n",
    "# --- Evolutionary functions ---\n",
    "\n",
    "def create_initial_population_newick13(pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],  max_node_radius=ga_params['max_node_radius'] ):\n",
    "    population = []\n",
    "    for _ in range(pop_size):\n",
    "        new_tree = complete_tree_generator13(max_depth, max_children, max_node_radius)\n",
    "        population.append(new_tree)\n",
    "    return population\n",
    "\n",
    "def get_illuminated_coordinates13(newick_string):\n",
    "  \"\"\"Coordinates of illuminated cells are extracted from the Newick string\"\"\"\n",
    "  a,b,x,y,r = extract_all_infos13(newick_string)\n",
    "  # Illuminated area is calculated\n",
    "  illuminated_coords = get_illuminated_area13(x,y,r)\n",
    "  ##print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "  ##print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "  return illuminated_coords\n",
    "\n",
    "def calculate_fitness_illumination13(candidate_tree_root, target_illuminated_area):\n",
    "    \"\"\"\n",
    "    Calculates fitness based on the symmetric difference between illuminated areas.\n",
    "    Fitness is 1.0 for a perfect match, and decreases as symmetric difference increases.\n",
    "    Reuse of a previous code by Gemini 2.5 Flash\n",
    "    \"\"\"\n",
    "    if candidate_tree_root is None:\n",
    "        # If the tree generation failed, assign a very low fitness\n",
    "        return 0.0001 # A small non-zero value to avoid division by zero issues later\n",
    "\n",
    "    candidate_illuminated_area = get_illuminated_coordinates13(candidate_tree_root)\n",
    "\n",
    "    # Symmetric difference: (A U B) - (A intersect B)\n",
    "    # Or, the elements in A but not B, plus elements in B but not A.\n",
    "    symmetric_difference = candidate_illuminated_area.symmetric_difference(target_illuminated_area)\n",
    "\n",
    "    # Union size: used for normalization\n",
    "    union_size = len(candidate_illuminated_area.union(target_illuminated_area))\n",
    "\n",
    "    if union_size == 0:\n",
    "        if not target_illuminated_area and not candidate_illuminated_area:\n",
    "            return 1.0 # Perfect match if both are empty\n",
    "        else:\n",
    "            return 0.0001 # Should not happen if target is non-empty, but handles cases where both are empty but expected non-empty\n",
    "\n",
    "    # Fitness is 1.0 - (len(symmetric_difference) / union_size)\n",
    "    # This gives 1.0 for a perfect match (symmetric_difference_area = 0)\n",
    "    # and approaches 0.0 for large differences.\n",
    "    fitness = 1.0 - (len(symmetric_difference) / union_size)\n",
    "    return max(0.0001, fitness) # Ensure fitness is always positive\n",
    "\n",
    "\n",
    "def select_parents_newick(population, fitness_scores, num_parents):\n",
    "    parents = []\n",
    "    # Use roulette wheel selection or tournament selection. Tournament is generally robust.\n",
    "    for _ in range(num_parents):\n",
    "        tournament_size = min(5, len(population))\n",
    "        if tournament_size == 0:\n",
    "            break\n",
    "        tournament_candidates = random.sample(list(zip(population, fitness_scores)), tournament_size)\n",
    "        winner = max(tournament_candidates, key=lambda x: x[1])[0]\n",
    "        parents.append(winner)\n",
    "    return parents\n",
    "\n",
    "def find_recombinant_branch13(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  #print(\"\\nfind_branch\")\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  pattern_left_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_left_par, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  #print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  #print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      #print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_position_branch_recombination13(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_position_branch_recombination13\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_recombinant_branch13(newick_string1)\n",
    "  branch2 = find_recombinant_branch13(newick_string2)\n",
    "  #print(f\"\\nbranch1: {branch1}\")\n",
    "  #print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "def newick_leaves_recombination13(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_leaves_recombination13\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  leaves1 = find_leaves(newick_string1)\n",
    "  leaves2 = find_leaves(newick_string2)\n",
    "  if not leaves1 or not leaves2:\n",
    "    return newick_string1, newick_string2\n",
    "  # Select a leaf at random from each tree\n",
    "  leaf1 = random.choice(leaves1)\n",
    "  leaf2 = random.choice(leaves2)\n",
    "  #print(f\"\\nleaf1: {leaf1}\")\n",
    "  #print(f\"leaf2: {leaf2}\")\n",
    "  # Leaves are interchanged\n",
    "  newick_string1 = newick_string1.replace(leaf1, leaf2)\n",
    "  newick_string2 = newick_string2.replace(leaf2, leaf1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "def find_occupied_squares13(newick_string):\n",
    "    \"\"\"Detects all the occupied squares in a tree\"\"\"\n",
    "    occupied_squares_set = set()\n",
    "    groups = detect_all_groups13(newick_string)\n",
    "    for group in groups:\n",
    "        [a,b,x,y,r] = extract_info13(group)\n",
    "        occupied_squares_set.add((x, y))\n",
    "    return occupied_squares_set\n",
    "\n",
    "def newick_mutation_of_radius13(newick_string):\n",
    "  # The pattern of the radius of illumination, r = 0.2\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  #print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  #print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  #print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence13(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    " \n",
    "def newick_find_insertion_patterns13(newick_string):\n",
    "  \"\"\" All insertion patterns are found and one is chosen at random\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    " \n",
    "\n",
    "def insertion_of_branch13(newick_string):\n",
    "  #original_newick_string = newick_string\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_insertion_patterns13(newick_string)\n",
    "  # String to be inserted\n",
    "  # child_string = \"(Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  child_string = complete_tree_generator13(max_depth = 2, max_numb_children = 2, max_node_radius= 1.5)\n",
    "  if group:\n",
    "    #print(f\"Group (main): {group}\")\n",
    "    #print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    #char_before = newick_string[start-1]\n",
    "    #print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {original_newick_string}\")\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_left_parenthesis_13(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns (N  are found and one is chosen at random\n",
    "      The new info will be inserted to the right of the parenthesis\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[(][N]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group130: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center13(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares13(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator13(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \"(\" + child_string +  \")\" + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "def select_one_insertion_pattern_comma_13(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All  commas are found and one is chosen at random,\n",
    "  the child will be inserted after the comma\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][,]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group130: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center13(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares13(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator13(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+2] + \"(\" + child_string + \")\" + newick_string[start+2:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_parentheses_13(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns ]) are found and one is chosen at random\n",
    "      The new info will be inserted between ] and ) as a brother\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][)]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group130: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center13(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares13(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator13(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \",\" + child_string + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def insertion_of_leaf13(newick_string, counter, max_illumination_radius):    #original_newick_string = newick_string\n",
    "    \"\"\" All insertion patterns are found and one is chosen at random\n",
    "        for the new info to be inserted \"\"\"\n",
    "    case = random.choice([1, 2, 3])  # Randomly choose between three insertion methods\n",
    "    match case:\n",
    "        case 1:\n",
    "            newick_string = select_one_insertion_pattern_comma_13(newick_string, counter, max_illumination_radius)\n",
    "        case 2:\n",
    "            newick_string = select_one_insertion_pattern_parentheses_13(newick_string, counter, max_illumination_radius)\n",
    "        case 3:\n",
    "            newick_string = select_one_insertion_pattern_left_parenthesis_13(newick_string, counter, max_illumination_radius)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    newick_string = newick_string.replace(\" \", \"\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    return newick_string\n",
    "\n",
    "\n",
    "\n",
    "def deletion_of_leaf13(newick_string):\n",
    "    \"\"\"A leaf is deleted at random from the Newick string. \n",
    "        If there are no leaves, the original string is returned.\"\"\"\n",
    "    # All leaves are detected\n",
    "    leaves = find_leaves(newick_string)\n",
    "    if not leaves:\n",
    "        return newick_string  # No leaves to delete\n",
    "    # Select a leaf at random\n",
    "    leaf_to_delete = random.choice(leaves)\n",
    "    # Remove the selected leaf from the Newick string\n",
    "    newick_string = newick_string.replace(leaf_to_delete, \"\")\n",
    "    # Clean up any potential formatting issues (like double commas)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    return newick_string\n",
    "\n",
    "def find_branch13(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_find_all_groups13(newick_string):\n",
    "  \"\"\" All groups are found and one is chosen at random and returned\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "\n",
    "def deletion_of_branch13(newick_string ):\n",
    "  group, start =  newick_find_all_groups13(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch13(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def newick_mutation_branches13(newick_string):\n",
    "  # Mutation of radius of illumination and of complete branches\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    newick_string = newick_mutation_of_radius13(newick_string)\n",
    "    newick_string = insertion_of_branch13(newick_string)\n",
    "    newick_string = deletion_of_branch13(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "def newick_mutation_leaves13(newick_string, ga_params):\n",
    "  \"\"\"Radius is mutated, and only leaves can be inserted or deleted\"\"\"\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    # Mutation of radius of illumination and of complete leaves\n",
    "    newick_string = newick_mutation_of_radius13(newick_string)\n",
    "    newick_string = insertion_of_leaf13(newick_string, counter=random.randint(0, 1000), max_illumination_radius=ga_params['max_node_radius'])\n",
    "    newick_string = deletion_of_leaf13(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def plot_illuminated_area13(ax, illuminated_coords, title, color='blue', alpha=0.5):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "# --- MAIN EVOLUTIONARY SIMULATION LOOP ---\n",
    "\n",
    "def oneEvolutionaryProcess13(target_tree_params, ga_params):\n",
    "    # A previous code by Gemini was reused.\n",
    "\n",
    "    # 1. Generate Target Tree and its Illuminated Area\n",
    "    #print(\"\\n--- Generating Target Tree ---\")\n",
    "    #random.seed(ga_params['seed'] + 1) # Use a different seed for target generation\n",
    "    target_tree, target_illuminated_area =  generate_and_test_morpho_tree13( ga_params)#926\n",
    "    print(f\"target_tree: {target_tree} \\n\\n\")\n",
    "    number_of_groups = count_groups13(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    length_of_target_tree = len(target_tree)\n",
    "    #draw_newick_string13(target_tree, \"Target Tree\")\n",
    "    # target_area = get_illuminated_coordinates13(target_tree)\n",
    "    #print(f\"Target illuminated area: {target_illuminated_area}\")\n",
    "\n",
    "    # 2. Initialize Population\n",
    "    #random.seed(ga_params['seed']) # Reset seed for GA population generation\n",
    "    #print(f\"\\n--- Initializing Population of {ga_params['pop_size']} Trees ---\")\n",
    "    population = create_initial_population_newick13(\n",
    "        pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],\n",
    "        max_node_radius=ga_params['max_node_radius']  )\n",
    "    #print(f\"Population initialized with {len(population)} individuals.\")\n",
    "    #print(f\"Population: {population}\")\n",
    "\n",
    "    best_tree_overall = \"\"\n",
    "    best_fitness_overall = -1.0\n",
    "    history = []\n",
    "\n",
    "    # 3. Evolutionary Loop\n",
    "    #print(f\"\\n--- Starting Evolutionary Loop for {ga_params['generations']} Generations ---\")\n",
    "    for generation in range(ga_params['generations']):\n",
    "        if generation % 1000 == 0:\n",
    "            print(f\"\\n--- Generation {generation+1}/{ga_params['generations']}, Best fitness {round(best_fitness_overall, 5)} ---\")\n",
    "        fitness_scores = [calculate_fitness_illumination13(tree, target_illuminated_area)for tree in population]\n",
    "\n",
    "        current_best_fitness = max(fitness_scores)\n",
    "        current_best_tree = population[np.argmax(fitness_scores)]\n",
    "\n",
    "        if current_best_fitness > best_fitness_overall:\n",
    "            best_fitness_overall = current_best_fitness\n",
    "            best_tree_overall = copy.deepcopy(current_best_tree) # Deepcopy to save the best tree\n",
    "\n",
    "        history.append(current_best_fitness)\n",
    "\n",
    "        #print(f\"Generation {generation+1}/{ga_params['generations']}: Best Fitness = {current_best_fitness:.4f} (Overall Best: {best_fitness_overall:.4f})\")\n",
    "\n",
    "        if best_fitness_overall >= 0.999: # Almost perfect match\n",
    "            #print(\"Target illumination achieved (or very close)! Stopping evolution.\")\n",
    "            return history, number_of_groups\n",
    "\n",
    "        # Selection\n",
    "        parents = select_parents_newick(population, fitness_scores, ga_params['pop_size'] // 2)\n",
    "\n",
    "        # Create next generation\n",
    "        next_population = []\n",
    "        # Elitism: Keep the best individual from the current generation\n",
    "        if best_tree_overall and current_best_fitness == best_fitness_overall: # Only if it's the current best in this generation\n",
    "            next_population.append(copy.deepcopy(current_best_tree))\n",
    "\n",
    "        while len(next_population) < ga_params['pop_size']:\n",
    "            if len(parents) < 2: # Not enough parents for crossover, fill with new random trees\n",
    "                new_tree =  complete_tree_generator13(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "                if new_tree:\n",
    "                    next_population.append(new_tree)\n",
    "                continue\n",
    "\n",
    "            # Randomly pick two parents (can be the same parent multiple times with replacement for simplicity)\n",
    "            p1 = random.choice(parents)\n",
    "            p2 = random.choice(parents)\n",
    "            child1, child2 = p1,p2 # No crossover, just pass parents to children for mutation\n",
    "            if recombination_of_leaves:\n",
    "                # Crossover newick_position_branch_recombination13\n",
    "                # child1, child2 = newick_position_branch_recombination13(p1, p2)\n",
    "                # Crossover newick_leaves_recombination13\n",
    "                child1, child2 =newick_leaves_recombination13(p1,p2)\n",
    "            # Mutation: Apply mutation to both children\n",
    "            mutated_child1 = newick_mutation_leaves13(child1, ga_params)\n",
    "            mutated_child2 = newick_mutation_leaves13(child2, ga_params)\n",
    "\n",
    "\n",
    "            next_population.append(mutated_child1)\n",
    "            if len(next_population) < ga_params['pop_size']:\n",
    "                next_population.append(mutated_child2)\n",
    "\n",
    "        population = next_population[:ga_params['pop_size']]\n",
    "        # print(f\"Population size for next generation: {len(population)}\")\n",
    "        # print(f\"Best fitness this generation: {current_best_fitness:.4f}, Overall best fitness: {best_fitness_overall:.4f}\")\n",
    "        # print(f\"Best tree this generation: {current_best_tree}\")\n",
    "        # If you want to see the entire population, uncomment the following line:\n",
    "        # print(f\"Population: {population}\")\n",
    "        # Cutt-off for the length of the Newick string to avoid excessive growth\n",
    "        population = [tree for tree in population if len(tree) <= 2 * length_of_target_tree]  # Allow some growth but limit it\n",
    "        #print(f\"Population size after length cut-off: {len(population)}\")\n",
    "        # If the population is too small, refill\n",
    "        while len(population) < ga_params['pop_size']:\n",
    "            new_tree = complete_tree_generator13(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'])\n",
    "            if new_tree:\n",
    "                population.append(new_tree) \n",
    "    #print(\"\\n--- Evolution Finished ---\")\n",
    "    #print(f\"Final Best Fitness: {best_fitness_overall:.4f}\")\n",
    "    #return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history, number_of_groups\n",
    "    \n",
    "    return history, number_of_groups\n",
    "        \n",
    "\n",
    "def draw_all_histories13(fitness_histories, numbers_of_nodes):\n",
    "    print(\"draw_all_historiesk4(fitness_histories, lengths_of_target_sequence)\")\n",
    "    # Plot all the fitness histories together\n",
    "    # By the AI of VSCode. \n",
    "    for i in range(len(fitness_histories)):\n",
    "        # x_range contains all numbers from 0 to the length of the fitness history for the current length of target sequence.\n",
    "        x_range = range(len(fitness_histories[i]))\n",
    "        plt.plot(x_range, fitness_histories[i], label=f'Number of nodes {numbers_of_nodes[i]}')\n",
    "    plt.xlabel('Generation')\n",
    "    plt.ylabel('Best Fitness')\n",
    "    plt.title('GA: Fitness of the best morpho-treeover Generations for Different number of nodes')\n",
    "    plt.grid(True)\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "\n",
    " \n",
    "def main13(target_tree_params, ga_params):\n",
    "    ''' An Evolutionary process is triggered for each max_depth value.\n",
    "    Only max-depth values are changed, the other parameters remain constant.\n",
    "    The fitness history is stored in a list, \n",
    "    and then all the histories are plotted together.\n",
    "    '''\n",
    "    max_depth_values = [10, 25, 40  ]  # Example max_depth values for different lengths of target sequence\n",
    "    numbers_of_generations = [7001, 7002, 7003 ]  # Example numbers of generations for different lengths of target sequence\n",
    "    # List to store the normalized best fitness history for each length of target sequence   \n",
    "    fitness_histories = []\n",
    "    numbers_of_nodes = []  # Example numbers of generations for different lengths of target sequence\n",
    "    for i in range(len(max_depth_values)):\n",
    "        target_tree_params['max_depth'] = max_depth_values[i]\n",
    "        ga_params['generations'] =  numbers_of_generations[i]\n",
    "        ga_params['max_depth'] = max_depth_values[i]\n",
    "        print(f\"\\nRunning evolutionary process for max_depth = {target_tree_params['max_depth']} and generations = {ga_params['generations']}\")\n",
    "        history, number_of_groups = oneEvolutionaryProcess13(target_tree_params, ga_params)\n",
    "        fitness_histories.append(history)\n",
    "        numbers_of_nodes.append(number_of_groups)\n",
    "    draw_all_histories13(fitness_histories, numbers_of_nodes)\n",
    "     \n",
    "    \n",
    "# Run an evolutionary process for each value of target tree and GA parameters\n",
    "# Produces a comparative graphic\n",
    "if __name__ == \"__main__\":\n",
    "    print_parameters13(target_tree_params, ga_params)\n",
    "    main13(target_tree_params, ga_params)\n",
    " \n",
    "    end_time = time.time()\n",
    "    Execution_time = end_time - start_time\n",
    "    # print(f\"Execution time: {Execution_time:.2f} seconds\")\n",
    "    # Execution time in hours, minutes and seconds:\n",
    "    hours = int(Execution_time // 3600)\n",
    "    minutes = int((Execution_time % 3600) // 60)\n",
    "    seconds = int(Execution_time % 60)\n",
    "    print(f\"Execution time: {hours} hours, {minutes} minutes, {seconds} seconds\")\n",
    "    if memory_monitoring:\n",
    "        # displaying the allocated memory\n",
    "        print(tracemalloc.get_traced_memory())\n",
    "        # stopping the memory allocation library\n",
    "        tracemalloc.stop()\n",
    "    \n",
    "# End of program evolution_of_newick_morphological_trees13.py"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LAB: EVOLUTION OF NEWICK MORPHO-TREES\n",
      "PURPOSE: \n",
      " A random morpho-tree T is generated.\n",
      " Evolution tries to restore the tree T\n",
      " beginning from a population of random trees.\n",
      "EXPERIMENT 1791213327.6287968\n",
      "RECOMBINATION OF LEAVES: False\n",
      "INITIAL TARGET TREE PARAMETERS: {'max_depth': 10, 'max_number_children': 2, 'max_node_radius': 1.5}\n",
      "INITIAL GENETIC ALGORITHM PARAMETERS: {'pop_size': 70, 'generations': 100, 'max_depth': 10, 'max_number_children': 2, 'max_node_radius': 1.5, 'mutation_rate': 0.001, 'crossover_rate': 0.001}\n",
      "\n",
      "\n",
      "Running evolutionary process for max_depth = 10 and generations = 7001\n",
      "target_tree: ((((Node15[a=1.0,b=-1.0,x=3.0,y=0.0,r=1.09])Node10[a=1.0,b=1.0,x=2.0,y=1.0,r=0.67],(Node14[a=0.0,b=1.0,x=1.0,y=2.0,r=1.48],Node13[a=1.0,b=1.0,x=2.0,y=2.0,r=0.62])Node9[a=0.0,b=1.0,x=1.0,y=1.0,r=0.61])Node6[a=0.0,b=1.0,x=1.0,y=0.0,r=0.51],((Node12[a=-1.0,b=0.0,x=-2.0,y=-2.0,r=0.66],(Node17[a=-1.0,b=1.0,x=-3.0,y=-2.0,r=1.33])Node11[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=1.4])Node8[a=-1.0,b=0.0,x=-1.0,y=-2.0,r=0.81])Node5[a=-1.0,b=-1.0,x=0.0,y=-2.0,r=1.39])Node2[a=1.0,b=-1.0,x=1.0,y=-1.0,r=1.46],(Node4[a=1.0,b=0.0,x=0.0,y=1.0,r=0.66],((Node16[a=-1.0,b=1.0,x=-3.0,y=2.0,r=1.33])Node7[a=-1.0,b=-1.0,x=-2.0,y=1.0,r=0.69])Node3[a=0.0,b=1.0,x=-1.0,y=2.0,r=0.57])Node1[a=-1.0,b=1.0,x=-1.0,y=1.0,r=0.9])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 18\n",
      "\n",
      "--- Generation 1/7001, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7001, Best fitness 0.87302 ---\n",
      "\n",
      "--- Generation 2001/7001, Best fitness 0.96552 ---\n",
      "\n",
      "--- Generation 3001/7001, Best fitness 0.96552 ---\n",
      "\n",
      "--- Generation 4001/7001, Best fitness 0.96552 ---\n",
      "\n",
      "--- Generation 5001/7001, Best fitness 0.96552 ---\n",
      "\n",
      "--- Generation 6001/7001, Best fitness 0.96552 ---\n",
      "\n",
      "--- Generation 7001/7001, Best fitness 0.96552 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 25 and generations = 7002\n",
      "target_tree: (((((((((((((((Node374[a=-1.0,b=1.0,x=-4.0,y=6.0,r=1.41])Node317[a=0.0,b=1.0,x=-3.0,y=5.0,r=0.94],(Node373[a=1.0,b=0.0,x=-1.0,y=4.0,r=1.34])Node316[a=1.0,b=0.0,x=-2.0,y=4.0,r=0.54])Node272[a=1.0,b=1.0,x=-3.0,y=4.0,r=0.7],((Node372[a=1.0,b=0.0,x=-1.0,y=2.0,r=1.37])Node315[a=1.0,b=-1.0,x=-2.0,y=2.0,r=0.99],Node314[a=1.0,b=0.0,x=-2.0,y=3.0,r=1.01])Node271[a=1.0,b=0.0,x=-3.0,y=3.0,r=0.59])Node232[a=0.0,b=1.0,x=-4.0,y=3.0,r=1.14],((Node371[a=0.0,b=1.0,x=-4.0,y=5.0,r=1.24])Node313[a=1.0,b=1.0,x=-4.0,y=4.0,r=1.33],Node312[a=0.0,b=1.0,x=-5.0,y=4.0,r=1.26])Node231[a=-1.0,b=1.0,x=-5.0,y=3.0,r=0.86])Node186[a=1.0,b=1.0,x=-4.0,y=2.0,r=0.92])Node94[a=-1.0,b=1.0,x=-5.0,y=1.0,r=0.6])Node57[a=-1.0,b=-1.0,x=-4.0,y=0.0,r=1.07])Node29[a=0.0,b=1.0,x=-3.0,y=1.0,r=1.26])Node23[a=0.0,b=1.0,x=-3.0,y=0.0,r=0.71])Node15[a=-1.0,b=1.0,x=-3.0,y=-1.0,r=1.43],(Node22[a=-1.0,b=0.0,x=-4.0,y=-2.0,r=0.56],(((((((((Node311[a=1.0,b=1.0,x=-7.0,y=5.0,r=1.08])Node230[a=0.0,b=1.0,x=-8.0,y=4.0,r=0.92],(((Node370[a=-1.0,b=1.0,x=-9.0,y=7.0,r=0.58])Node310[a=1.0,b=1.0,x=-8.0,y=6.0,r=1.19])Node270[a=0.0,b=1.0,x=-9.0,y=5.0,r=0.91],(Node369[a=0.0,b=1.0,x=-10.0,y=6.0,r=1.39],Node368[a=1.0,b=1.0,x=-9.0,y=6.0,r=1.34])Node269[a=-1.0,b=1.0,x=-10.0,y=5.0,r=1.21])Node229[a=-1.0,b=1.0,x=-9.0,y=4.0,r=0.97])Node185[a=-1.0,b=1.0,x=-8.0,y=3.0,r=1.36])Node151[a=1.0,b=1.0,x=-7.0,y=2.0,r=1.0],(Node228[a=-1.0,b=1.0,x=-9.0,y=3.0,r=0.81],Node227[a=1.0,b=1.0,x=-7.0,y=3.0,r=1.4])Node150[a=0.0,b=1.0,x=-8.0,y=2.0,r=0.52])Node116[a=-1.0,b=0.0,x=-8.0,y=1.0,r=1.11])Node93[a=0.0,b=1.0,x=-7.0,y=1.0,r=1.21])Node76[a=-1.0,b=1.0,x=-7.0,y=0.0,r=1.1])Node37[a=-1.0,b=0.0,x=-6.0,y=-1.0,r=1.32],(((((Node184[a=-1.0,b=1.0,x=-11.0,y=1.0,r=1.21],((Node309[a=-1.0,b=-1.0,x=-13.0,y=0.0,r=1.28])Node226[a=-1.0,b=1.0,x=-12.0,y=1.0,r=0.83],(Node268[a=-1.0,b=1.0,x=-13.0,y=1.0,r=1.11],Node267[a=-1.0,b=-1.0,x=-13.0,y=-1.0,r=1.41])Node225[a=-1.0,b=0.0,x=-12.0,y=0.0,r=0.55])Node183[a=-1.0,b=0.0,x=-11.0,y=0.0,r=0.9])Node149[a=-1.0,b=1.0,x=-10.0,y=0.0,r=0.96],(Node182[a=-1.0,b=0.0,x=-11.0,y=-1.0,r=1.09],(Node224[a=-1.0,b=1.0,x=-12.0,y=-1.0,r=1.27])Node181[a=-1.0,b=-1.0,x=-11.0,y=-2.0,r=0.8])Node148[a=-1.0,b=0.0,x=-10.0,y=-1.0,r=1.31])Node115[a=-1.0,b=1.0,x=-9.0,y=-1.0,r=1.28],((Node223[a=0.0,b=-1.0,x=-10.0,y=-3.0,r=1.43])Node180[a=-1.0,b=0.0,x=-10.0,y=-2.0,r=1.11])Node114[a=-1.0,b=0.0,x=-9.0,y=-2.0,r=0.91])Node75[a=-1.0,b=1.0,x=-8.0,y=-2.0,r=1.17])Node48[a=-1.0,b=-1.0,x=-7.0,y=-3.0,r=1.24],(((((((Node367[a=-1.0,b=1.0,x=-11.0,y=5.0,r=1.36])Node266[a=1.0,b=1.0,x=-10.0,y=4.0,r=0.8])Node222[a=-1.0,b=1.0,x=-11.0,y=3.0,r=1.22],((Node366[a=-1.0,b=0.0,x=-12.0,y=4.0,r=0.73])Node308[a=-1.0,b=1.0,x=-11.0,y=4.0,r=1.21])Node221[a=0.0,b=1.0,x=-10.0,y=3.0,r=1.16])Node179[a=-1.0,b=1.0,x=-10.0,y=2.0,r=0.55])Node147[a=-1.0,b=1.0,x=-9.0,y=1.0,r=1.29],(((((Node365[a=-1.0,b=-1.0,x=-14.0,y=2.0,r=1.31],Node364[a=0.0,b=1.0,x=-13.0,y=4.0,r=1.06])Node307[a=-1.0,b=0.0,x=-13.0,y=3.0,r=1.24])Node265[a=-1.0,b=1.0,x=-12.0,y=3.0,r=0.93],(Node363[a=-1.0,b=0.0,x=-13.0,y=2.0,r=0.55])Node264[a=-1.0,b=0.0,x=-12.0,y=2.0,r=1.4])Node220[a=-1.0,b=1.0,x=-11.0,y=2.0,r=1.02],Node219[a=1.0,b=1.0,x=-9.0,y=2.0,r=0.75])Node178[a=-1.0,b=1.0,x=-10.0,y=1.0,r=1.3])Node146[a=-1.0,b=0.0,x=-9.0,y=0.0,r=1.25])Node92[a=-1.0,b=1.0,x=-8.0,y=0.0,r=0.87])Node74[a=0.0,b=1.0,x=-7.0,y=-1.0,r=0.54],Node73[a=-1.0,b=1.0,x=-8.0,y=-1.0,r=1.31])Node47[a=-1.0,b=0.0,x=-7.0,y=-2.0,r=0.83])Node36[a=-1.0,b=-1.0,x=-6.0,y=-2.0,r=1.01])Node28[a=-1.0,b=0.0,x=-5.0,y=-1.0,r=0.97],((Node46[a=1.0,b=0.0,x=-5.0,y=-3.0,r=1.28],Node45[a=0.0,b=-1.0,x=-6.0,y=-4.0,r=1.43])Node35[a=-1.0,b=-1.0,x=-6.0,y=-3.0,r=0.84])Node27[a=-1.0,b=-1.0,x=-5.0,y=-2.0,r=1.41])Node21[a=-1.0,b=1.0,x=-4.0,y=-1.0,r=1.13])Node14[a=-1.0,b=0.0,x=-3.0,y=-2.0,r=1.2])Node10[a=-1.0,b=-1.0,x=-2.0,y=-2.0,r=0.64],(((((((((Node362[a=-1.0,b=1.0,x=-8.0,y=5.0,r=0.82])Node263[a=-1.0,b=1.0,x=-7.0,y=4.0,r=0.92],((Node361[a=-1.0,b=1.0,x=-7.0,y=6.0,r=0.97],Node360[a=0.0,b=1.0,x=-6.0,y=6.0,r=0.59])Node306[a=0.0,b=1.0,x=-6.0,y=5.0,r=0.53])Node262[a=0.0,b=1.0,x=-6.0,y=4.0,r=1.39])Node218[a=0.0,b=1.0,x=-6.0,y=3.0,r=1.13])Node177[a=0.0,b=1.0,x=-6.0,y=2.0,r=0.64],Node176[a=1.0,b=1.0,x=-5.0,y=2.0,r=1.09])Node91[a=-1.0,b=1.0,x=-6.0,y=1.0,r=0.98],Node90[a=-1.0,b=0.0,x=-6.0,y=0.0,r=0.52])Node72[a=-1.0,b=-1.0,x=-5.0,y=0.0,r=1.09])Node44[a=-1.0,b=-1.0,x=-4.0,y=1.0,r=1.42])Node34[a=-1.0,b=1.0,x=-3.0,y=2.0,r=1.22])Node20[a=0.0,b=1.0,x=-2.0,y=1.0,r=0.56])Node9[a=-1.0,b=1.0,x=-2.0,y=0.0,r=0.96])Node6[a=1.0,b=0.0,x=-1.0,y=-1.0,r=1.35])Node4[a=-1.0,b=1.0,x=-2.0,y=-1.0,r=1.04],(((((((Node71[a=0.0,b=-1.0,x=-5.0,y=-6.0,r=0.54],((((Node217[a=-1.0,b=-1.0,x=-8.0,y=-10.0,r=1.41])Node145[a=0.0,b=-1.0,x=-7.0,y=-9.0,r=0.94],(((Node359[a=-1.0,b=-1.0,x=-8.0,y=-12.0,r=1.39])Node216[a=0.0,b=-1.0,x=-7.0,y=-11.0,r=1.21],((Node305[a=-1.0,b=-1.0,x=-10.0,y=-13.0,r=0.7],Node304[a=1.0,b=-1.0,x=-8.0,y=-13.0,r=0.65])Node261[a=-1.0,b=-1.0,x=-9.0,y=-12.0,r=1.45])Node215[a=-1.0,b=-1.0,x=-8.0,y=-11.0,r=1.26])Node175[a=1.0,b=-1.0,x=-7.0,y=-10.0,r=0.82])Node144[a=-1.0,b=-1.0,x=-8.0,y=-9.0,r=1.16])Node113[a=-1.0,b=-1.0,x=-7.0,y=-8.0,r=1.06],Node112[a=0.0,b=-1.0,x=-6.0,y=-8.0,r=0.72])Node89[a=0.0,b=-1.0,x=-6.0,y=-7.0,r=0.8],Node88[a=-1.0,b=-1.0,x=-7.0,y=-7.0,r=0.66])Node70[a=-1.0,b=-1.0,x=-6.0,y=-6.0,r=1.37])Node56[a=0.0,b=-1.0,x=-5.0,y=-5.0,r=0.8],((((((((Node358[a=-1.0,b=1.0,x=-14.0,y=-2.0,r=1.04])Node303[a=-1.0,b=-1.0,x=-13.0,y=-3.0,r=1.05])Node260[a=-1.0,b=1.0,x=-12.0,y=-2.0,r=0.66],Node259[a=-1.0,b=0.0,x=-12.0,y=-3.0,r=0.56])Node214[a=-1.0,b=1.0,x=-11.0,y=-3.0,r=0.5])Node174[a=-1.0,b=1.0,x=-10.0,y=-4.0,r=1.1],(((Node357[a=-1.0,b=-1.0,x=-13.0,y=-5.0,r=0.9])Node302[a=-1.0,b=0.0,x=-12.0,y=-4.0,r=0.59])Node213[a=-1.0,b=1.0,x=-11.0,y=-4.0,r=1.36],Node212[a=1.0,b=1.0,x=-9.0,y=-4.0,r=0.84])Node173[a=-1.0,b=0.0,x=-10.0,y=-5.0,r=0.53])Node143[a=-1.0,b=1.0,x=-9.0,y=-5.0,r=0.88])Node87[a=-1.0,b=-1.0,x=-8.0,y=-6.0,r=0.77],(((((((Node356[a=-1.0,b=0.0,x=-11.0,y=-12.0,r=0.92])Node301[a=-1.0,b=-1.0,x=-10.0,y=-12.0,r=0.63])Node258[a=0.0,b=-1.0,x=-9.0,y=-11.0,r=1.19])Node211[a=0.0,b=-1.0,x=-9.0,y=-10.0,r=0.57],((Node355[a=1.0,b=-1.0,x=-10.0,y=-11.0,r=0.65],Node354[a=0.0,b=-1.0,x=-11.0,y=-11.0,r=1.46])Node300[a=-1.0,b=-1.0,x=-11.0,y=-10.0,r=1.49],(Node353[a=-1.0,b=0.0,x=-12.0,y=-8.0,r=1.37],Node352[a=0.0,b=-1.0,x=-11.0,y=-9.0,r=1.24])Node299[a=-1.0,b=1.0,x=-11.0,y=-8.0,r=1.46])Node210[a=-1.0,b=0.0,x=-10.0,y=-9.0,r=1.46])Node172[a=-1.0,b=-1.0,x=-9.0,y=-9.0,r=0.57])Node142[a=0.0,b=-1.0,x=-8.0,y=-8.0,r=1.21],((Node298[a=-1.0,b=0.0,x=-10.0,y=-8.0,r=1.47],(Node351[a=-1.0,b=0.0,x=-11.0,y=-7.0,r=1.24])Node297[a=-1.0,b=1.0,x=-10.0,y=-7.0,r=0.54])Node171[a=0.0,b=-1.0,x=-9.0,y=-8.0,r=0.73])Node141[a=-1.0,b=0.0,x=-9.0,y=-7.0,r=1.45])Node111[a=-1.0,b=-1.0,x=-8.0,y=-7.0,r=1.47],((((Node296[a=-1.0,b=-1.0,x=-12.0,y=-6.0,r=1.19])Node209[a=-1.0,b=1.0,x=-11.0,y=-5.0,r=0.92],(Node257[a=-1.0,b=1.0,x=-12.0,y=-5.0,r=1.17],(Node350[a=-1.0,b=0.0,x=-13.0,y=-7.0,r=0.63],Node349[a=-1.0,b=-1.0,x=-13.0,y=-8.0,r=0.78])Node256[a=-1.0,b=-1.0,x=-12.0,y=-7.0,r=1.11])Node208[a=-1.0,b=0.0,x=-11.0,y=-6.0,r=0.7])Node170[a=-1.0,b=0.0,x=-10.0,y=-6.0,r=1.2])Node140[a=-1.0,b=-1.0,x=-9.0,y=-6.0,r=1.04])Node110[a=-1.0,b=1.0,x=-8.0,y=-5.0,r=0.72])Node86[a=0.0,b=-1.0,x=-7.0,y=-6.0,r=0.64])Node69[a=-1.0,b=0.0,x=-7.0,y=-5.0,r=1.49],((Node207[a=-1.0,b=0.0,x=-9.0,y=-3.0,r=0.93],Node206[a=0.0,b=-1.0,x=-8.0,y=-4.0,r=1.09])Node109[a=-1.0,b=1.0,x=-8.0,y=-3.0,r=1.03])Node68[a=-1.0,b=1.0,x=-7.0,y=-4.0,r=0.84])Node55[a=-1.0,b=-1.0,x=-6.0,y=-5.0,r=1.39])Node33[a=-1.0,b=1.0,x=-5.0,y=-4.0,r=0.63])Node19[a=0.0,b=-1.0,x=-4.0,y=-5.0,r=0.54],(((Node54[a=0.0,b=-1.0,x=-2.0,y=-6.0,r=1.16])Node43[a=1.0,b=-1.0,x=-2.0,y=-5.0,r=0.79],((Node67[a=-1.0,b=0.0,x=-4.0,y=-6.0,r=0.65],(((Node139[a=-1.0,b=-1.0,x=-6.0,y=-9.0,r=1.29])Node108[a=0.0,b=-1.0,x=-5.0,y=-8.0,r=0.93])Node85[a=-1.0,b=0.0,x=-5.0,y=-7.0,r=1.05])Node66[a=-1.0,b=-1.0,x=-4.0,y=-7.0,r=0.99])Node53[a=0.0,b=-1.0,x=-3.0,y=-6.0,r=1.31])Node42[a=0.0,b=-1.0,x=-3.0,y=-5.0,r=1.09])Node32[a=1.0,b=-1.0,x=-3.0,y=-4.0,r=1.2])Node18[a=0.0,b=1.0,x=-4.0,y=-3.0,r=1.2])Node13[a=-1.0,b=-1.0,x=-4.0,y=-4.0,r=1.24])Node8[a=-1.0,b=1.0,x=-3.0,y=-3.0,r=1.14],(((((((((Node107[a=1.0,b=-1.0,x=-1.0,y=-12.0,r=0.96],(((((Node348[a=-1.0,b=-1.0,x=-7.0,y=-15.0,r=0.71])Node295[a=-1.0,b=0.0,x=-6.0,y=-14.0,r=1.29])Node255[a=-1.0,b=0.0,x=-5.0,y=-14.0,r=1.34],((Node347[a=-1.0,b=-1.0,x=-6.0,y=-17.0,r=0.76])Node294[a=-1.0,b=-1.0,x=-5.0,y=-16.0,r=0.79])Node254[a=0.0,b=-1.0,x=-4.0,y=-15.0,r=0.62])Node205[a=-1.0,b=-1.0,x=-4.0,y=-14.0,r=1.04])Node138[a=-1.0,b=-1.0,x=-3.0,y=-13.0,r=0.56],((((Node293[a=1.0,b=-1.0,x=-2.0,y=-17.0,r=1.37],(Node346[a=1.0,b=0.0,x=-3.0,y=-17.0,r=0.83],Node345[a=1.0,b=-1.0,x=-3.0,y=-18.0,r=1.45])Node292[a=-1.0,b=-1.0,x=-4.0,y=-17.0,r=0.91])Node253[a=-1.0,b=-1.0,x=-3.0,y=-16.0,r=1.13],((Node344[a=1.0,b=-1.0,x=-1.0,y=-17.0,r=0.56])Node291[a=1.0,b=-1.0,x=-2.0,y=-16.0,r=1.4],(Node343[a=-1.0,b=1.0,x=-5.0,y=-15.0,r=0.6])Node290[a=-1.0,b=-1.0,x=-4.0,y=-16.0,r=1.4])Node252[a=-1.0,b=0.0,x=-3.0,y=-15.0,r=1.39])Node204[a=0.0,b=-1.0,x=-2.0,y=-15.0,r=1.3])Node169[a=-1.0,b=-1.0,x=-2.0,y=-14.0,r=0.65])Node137[a=1.0,b=-1.0,x=-1.0,y=-13.0,r=0.98])Node106[a=0.0,b=-1.0,x=-2.0,y=-12.0,r=1.48])Node84[a=0.0,b=-1.0,x=-2.0,y=-11.0,r=1.48],(((Node251[a=-1.0,b=-1.0,x=-3.0,y=-14.0,r=1.44])Node168[a=1.0,b=-1.0,x=-2.0,y=-13.0,r=1.24])Node136[a=0.0,b=-1.0,x=-3.0,y=-12.0,r=1.2])Node83[a=-1.0,b=-1.0,x=-3.0,y=-11.0,r=0.67])Node65[a=0.0,b=-1.0,x=-2.0,y=-10.0,r=0.75],(((((Node250[a=-1.0,b=-1.0,x=2.0,y=-14.0,r=1.2])Node203[a=1.0,b=-1.0,x=3.0,y=-13.0,r=1.03],(((Node342[a=1.0,b=1.0,x=4.0,y=-14.0,r=0.91],Node341[a=0.0,b=-1.0,x=3.0,y=-16.0,r=1.03])Node289[a=0.0,b=-1.0,x=3.0,y=-15.0,r=0.97])Node249[a=1.0,b=-1.0,x=3.0,y=-14.0,r=0.76])Node202[a=0.0,b=-1.0,x=2.0,y=-13.0,r=0.62])Node167[a=1.0,b=0.0,x=2.0,y=-12.0,r=0.84])Node135[a=1.0,b=-1.0,x=1.0,y=-12.0,r=0.63])Node105[a=1.0,b=-1.0,x=0.0,y=-11.0,r=1.13],(((((Node340[a=1.0,b=0.0,x=2.0,y=-15.0,r=0.56],Node339[a=1.0,b=-1.0,x=2.0,y=-16.0,r=0.74])Node288[a=0.0,b=-1.0,x=1.0,y=-15.0,r=1.03])Node248[a=1.0,b=-1.0,x=1.0,y=-14.0,r=1.43],(Node338[a=0.0,b=-1.0,x=-1.0,y=-15.0,r=1.29],Node337[a=1.0,b=-1.0,x=0.0,y=-15.0,r=0.83])Node247[a=-1.0,b=-1.0,x=-1.0,y=-14.0,r=0.54])Node166[a=0.0,b=-1.0,x=0.0,y=-13.0,r=0.89])Node134[a=1.0,b=-1.0,x=0.0,y=-12.0,r=1.44])Node104[a=0.0,b=-1.0,x=-1.0,y=-11.0,r=0.74])Node64[a=1.0,b=-1.0,x=-1.0,y=-10.0,r=0.83])Node52[a=1.0,b=-1.0,x=-2.0,y=-9.0,r=0.8],((((((Node246[a=1.0,b=-1.0,x=3.0,y=-12.0,r=0.96])Node201[a=1.0,b=0.0,x=2.0,y=-11.0,r=0.66])Node133[a=1.0,b=-1.0,x=1.0,y=-11.0,r=0.93])Node103[a=1.0,b=-1.0,x=0.0,y=-10.0,r=1.04],(Node165[a=1.0,b=-1.0,x=1.0,y=-10.0,r=0.81])Node102[a=1.0,b=0.0,x=0.0,y=-9.0,r=0.53])Node82[a=0.0,b=-1.0,x=-1.0,y=-9.0,r=1.5])Node63[a=1.0,b=0.0,x=-1.0,y=-8.0,r=0.88],((Node132[a=-1.0,b=-1.0,x=-5.0,y=-10.0,r=1.11])Node81[a=-1.0,b=0.0,x=-4.0,y=-9.0,r=1.16],(((Node287[a=0.0,b=-1.0,x=-5.0,y=-13.0,r=0.87],Node286[a=-1.0,b=-1.0,x=-6.0,y=-13.0,r=1.45])Node164[a=-1.0,b=-1.0,x=-5.0,y=-12.0,r=0.88],(Node200[a=0.0,b=-1.0,x=-4.0,y=-13.0,r=0.82])Node163[a=0.0,b=-1.0,x=-4.0,y=-12.0,r=0.76])Node131[a=-1.0,b=-1.0,x=-4.0,y=-11.0,r=1.16],Node130[a=-1.0,b=0.0,x=-4.0,y=-10.0,r=0.99])Node80[a=0.0,b=-1.0,x=-3.0,y=-10.0,r=0.63])Node62[a=-1.0,b=-1.0,x=-3.0,y=-9.0,r=0.69])Node51[a=1.0,b=0.0,x=-2.0,y=-8.0,r=1.37])Node41[a=-1.0,b=-1.0,x=-3.0,y=-8.0,r=0.61],(((((Node245[a=-1.0,b=-1.0,x=-7.0,y=-12.0,r=1.44])Node199[a=0.0,b=-1.0,x=-6.0,y=-11.0,r=0.75],((Node336[a=-1.0,b=-1.0,x=-7.0,y=-13.0,r=1.48])Node285[a=-1.0,b=-1.0,x=-6.0,y=-12.0,r=0.99])Node198[a=1.0,b=-1.0,x=-5.0,y=-11.0,r=0.62])Node162[a=-1.0,b=-1.0,x=-6.0,y=-10.0,r=1.26])Node129[a=-1.0,b=-1.0,x=-5.0,y=-9.0,r=1.1])Node101[a=-1.0,b=-1.0,x=-4.0,y=-8.0,r=1.18])Node40[a=-1.0,b=0.0,x=-3.0,y=-7.0,r=1.02])Node31[a=-1.0,b=-1.0,x=-2.0,y=-7.0,r=1.49])Node26[a=-1.0,b=-1.0,x=-1.0,y=-6.0,r=0.73],(((((((((Node335[a=0.0,b=1.0,x=4.0,y=2.0,r=0.95])Node284[a=0.0,b=1.0,x=4.0,y=1.0,r=0.73])Node244[a=-1.0,b=1.0,x=4.0,y=0.0,r=1.06])Node197[a=1.0,b=1.0,x=5.0,y=-1.0,r=1.18])Node161[a=1.0,b=-1.0,x=4.0,y=-2.0,r=1.2])Node128[a=1.0,b=0.0,x=3.0,y=-1.0,r=0.87])Node100[a=0.0,b=1.0,x=2.0,y=-1.0,r=0.64],(((Node334[a=0.0,b=1.0,x=2.0,y=2.0,r=0.94],Node333[a=1.0,b=0.0,x=3.0,y=1.0,r=1.36])Node243[a=1.0,b=1.0,x=2.0,y=1.0,r=1.18],((Node332[a=0.0,b=1.0,x=1.0,y=3.0,r=1.14])Node283[a=0.0,b=1.0,x=1.0,y=2.0,r=1.11],(Node331[a=1.0,b=0.0,x=3.0,y=0.0,r=0.8])Node282[a=1.0,b=-1.0,x=2.0,y=0.0,r=0.55])Node242[a=0.0,b=1.0,x=1.0,y=1.0,r=1.38])Node127[a=0.0,b=1.0,x=1.0,y=0.0,r=1.11],Node126[a=0.0,b=-1.0,x=1.0,y=-2.0,r=0.9])Node99[a=-1.0,b=1.0,x=1.0,y=-1.0,r=0.97])Node61[a=0.0,b=1.0,x=2.0,y=-2.0,r=1.37])Node39[a=1.0,b=1.0,x=2.0,y=-3.0,r=0.83],((((Node160[a=1.0,b=1.0,x=3.0,y=-5.0,r=0.51])Node98[a=1.0,b=-1.0,x=2.0,y=-6.0,r=0.92],((Node159[a=1.0,b=0.0,x=2.0,y=-7.0,r=0.72])Node125[a=0.0,b=-1.0,x=1.0,y=-7.0,r=0.96])Node97[a=0.0,b=-1.0,x=1.0,y=-6.0,r=0.7])Node60[a=-1.0,b=0.0,x=1.0,y=-5.0,r=0.85],(((((Node196[a=1.0,b=-1.0,x=4.0,y=-7.0,r=0.95])Node158[a=-1.0,b=0.0,x=3.0,y=-6.0,r=1.4],(Node195[a=0.0,b=-1.0,x=3.0,y=-8.0,r=0.99],Node194[a=1.0,b=-1.0,x=4.0,y=-8.0,r=1.45])Node157[a=-1.0,b=-1.0,x=3.0,y=-7.0,r=1.1])Node124[a=-1.0,b=0.0,x=4.0,y=-6.0,r=1.38],(((((Node330[a=1.0,b=-1.0,x=7.0,y=-8.0,r=1.45])Node281[a=0.0,b=1.0,x=6.0,y=-7.0,r=1.13])Node241[a=0.0,b=1.0,x=6.0,y=-8.0,r=0.59])Node193[a=1.0,b=-1.0,x=6.0,y=-9.0,r=0.58])Node156[a=0.0,b=-1.0,x=5.0,y=-8.0,r=0.85])Node123[a=0.0,b=-1.0,x=5.0,y=-7.0,r=1.39])Node96[a=1.0,b=-1.0,x=5.0,y=-6.0,r=1.11],((((((Node329[a=1.0,b=-1.0,x=8.0,y=-7.0,r=1.24])Node280[a=-1.0,b=-1.0,x=7.0,y=-6.0,r=1.4])Node240[a=1.0,b=0.0,x=8.0,y=-5.0,r=1.02])Node192[a=1.0,b=-1.0,x=7.0,y=-5.0,r=1.01],((Node328[a=1.0,b=-1.0,x=7.0,y=-4.0,r=0.71])Node239[a=-1.0,b=0.0,x=6.0,y=-3.0,r=0.69])Node191[a=1.0,b=1.0,x=7.0,y=-3.0,r=1.43])Node155[a=1.0,b=1.0,x=6.0,y=-4.0,r=1.46])Node122[a=1.0,b=-1.0,x=5.0,y=-5.0,r=1.11],((Node327[a=1.0,b=0.0,x=7.0,y=-2.0,r=1.07],Node326[a=1.0,b=1.0,x=7.0,y=-1.0,r=1.04])Node190[a=1.0,b=1.0,x=6.0,y=-2.0,r=1.22])Node121[a=1.0,b=1.0,x=5.0,y=-3.0,r=1.19])Node95[a=0.0,b=1.0,x=4.0,y=-4.0,r=0.8])Node79[a=1.0,b=-1.0,x=4.0,y=-5.0,r=1.35],(((Node325[a=1.0,b=1.0,x=4.0,y=-1.0,r=0.52])Node238[a=0.0,b=1.0,x=3.0,y=-2.0,r=0.96])Node120[a=-1.0,b=0.0,x=3.0,y=-3.0,r=1.22],((((Node324[a=-1.0,b=1.0,x=7.0,y=2.0,r=0.81],Node323[a=1.0,b=0.0,x=9.0,y=1.0,r=1.24])Node279[a=1.0,b=1.0,x=8.0,y=1.0,r=0.61],Node278[a=0.0,b=1.0,x=7.0,y=1.0,r=1.44])Node237[a=1.0,b=1.0,x=7.0,y=0.0,r=0.7],(Node277[a=0.0,b=1.0,x=6.0,y=1.0,r=1.29])Node236[a=0.0,b=1.0,x=6.0,y=0.0,r=0.55])Node154[a=1.0,b=1.0,x=6.0,y=-1.0,r=1.21])Node119[a=1.0,b=1.0,x=5.0,y=-2.0,r=0.98])Node78[a=1.0,b=1.0,x=4.0,y=-3.0,r=0.78])Node59[a=1.0,b=1.0,x=3.0,y=-4.0,r=1.32])Node50[a=0.0,b=-1.0,x=2.0,y=-5.0,r=0.83])Node38[a=1.0,b=0.0,x=2.0,y=-4.0,r=1.11])Node25[a=1.0,b=1.0,x=1.0,y=-4.0,r=0.53])Node17[a=0.0,b=-1.0,x=0.0,y=-5.0,r=0.66])Node12[a=1.0,b=-1.0,x=0.0,y=-4.0,r=1.15],(((((((((Node189[a=1.0,b=-1.0,x=2.0,y=-9.0,r=1.02],(((Node322[a=1.0,b=0.0,x=5.0,y=-9.0,r=1.16])Node276[a=1.0,b=0.0,x=4.0,y=-9.0,r=1.11])Node235[a=1.0,b=-1.0,x=3.0,y=-9.0,r=1.15])Node188[a=1.0,b=0.0,x=2.0,y=-8.0,r=1.08])Node153[a=1.0,b=-1.0,x=1.0,y=-8.0,r=1.08])Node118[a=1.0,b=0.0,x=0.0,y=-7.0,r=0.53],((((Node275[a=1.0,b=0.0,x=4.0,y=-11.0,r=0.56],(Node321[a=0.0,b=-1.0,x=4.0,y=-13.0,r=0.95],Node320[a=1.0,b=0.0,x=5.0,y=-12.0,r=0.78])Node274[a=1.0,b=-1.0,x=4.0,y=-12.0,r=0.66])Node234[a=1.0,b=-1.0,x=3.0,y=-11.0,r=1.36],((Node319[a=1.0,b=0.0,x=5.0,y=-10.0,r=1.33],Node318[a=1.0,b=-1.0,x=5.0,y=-11.0,r=1.11])Node273[a=1.0,b=0.0,x=4.0,y=-10.0,r=1.08])Node233[a=1.0,b=0.0,x=3.0,y=-10.0,r=0.53])Node187[a=1.0,b=-1.0,x=2.0,y=-10.0,r=1.01])Node152[a=1.0,b=-1.0,x=1.0,y=-9.0,r=1.08])Node117[a=1.0,b=-1.0,x=0.0,y=-8.0,r=0.9])Node77[a=-1.0,b=-1.0,x=-1.0,y=-7.0,r=0.86])Node58[a=1.0,b=-1.0,x=0.0,y=-6.0,r=0.6])Node49[a=0.0,b=-1.0,x=-1.0,y=-5.0,r=0.77])Node30[a=-1.0,b=-1.0,x=-1.0,y=-4.0,r=0.68])Node24[a=-1.0,b=0.0,x=0.0,y=-3.0,r=1.44])Node16[a=1.0,b=-1.0,x=1.0,y=-3.0,r=1.3])Node11[a=1.0,b=1.0,x=0.0,y=-2.0,r=0.64])Node7[a=1.0,b=1.0,x=-1.0,y=-3.0,r=1.37])Node5[a=0.0,b=-1.0,x=-2.0,y=-4.0,r=0.55])Node3[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=0.78])Node2[a=-1.0,b=-1.0,x=-1.0,y=-2.0,r=1.33])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=1.49])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 375\n",
      "\n",
      "--- Generation 1/7002, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7002, Best fitness 0.74687 ---\n",
      "\n",
      "--- Generation 2001/7002, Best fitness 0.77373 ---\n",
      "\n",
      "--- Generation 3001/7002, Best fitness 0.77901 ---\n",
      "\n",
      "--- Generation 4001/7002, Best fitness 0.79582 ---\n",
      "\n",
      "--- Generation 5001/7002, Best fitness 0.80357 ---\n",
      "\n",
      "--- Generation 6001/7002, Best fitness 0.8075 ---\n",
      "\n",
      "--- Generation 7001/7002, Best fitness 0.81281 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 40 and generations = 7003\n",
      "target_tree: (((((((((Node78[a=0.0,b=1.0,x=6.0,y=7.0,r=0.81],(((((Node205[a=0.0,b=1.0,x=3.0,y=10.0,r=1.34])Node162[a=0.0,b=1.0,x=3.0,y=9.0,r=0.55])Node136[a=-1.0,b=-1.0,x=3.0,y=8.0,r=0.79],(((Node301[a=0.0,b=1.0,x=4.0,y=13.0,r=1.49],((Node421[a=1.0,b=1.0,x=5.0,y=15.0,r=1.47])Node366[a=-1.0,b=1.0,x=4.0,y=14.0,r=0.57])Node300[a=1.0,b=1.0,x=5.0,y=13.0,r=1.21])Node247[a=0.0,b=1.0,x=4.0,y=12.0,r=1.11],Node246[a=-1.0,b=0.0,x=3.0,y=11.0,r=0.52])Node161[a=0.0,b=1.0,x=4.0,y=11.0,r=0.89],((((Node365[a=-1.0,b=1.0,x=5.0,y=14.0,r=0.66],(((((((Node879[a=0.0,b=1.0,x=8.0,y=20.0,r=0.96],(((((((Node1768[a=1.0,b=-1.0,x=15.0,y=23.0,r=0.57],(Node1916[a=1.0,b=-1.0,x=15.0,y=24.0,r=0.99],(((Node2538[a=1.0,b=1.0,x=18.0,y=28.0,r=0.83],(((((Node3390[a=1.0,b=1.0,x=16.0,y=33.0,r=0.53])Node3212[a=0.0,b=1.0,x=15.0,y=32.0,r=1.23],Node3211[a=-1.0,b=1.0,x=14.0,y=32.0,r=1.47])Node3041[a=-1.0,b=1.0,x=15.0,y=31.0,r=0.69])Node2871[a=0.0,b=1.0,x=16.0,y=30.0,r=0.88],(((((Node3725[a=1.0,b=1.0,x=19.0,y=35.0,r=1.34])Node3555[a=1.0,b=1.0,x=18.0,y=34.0,r=1.34],(Node3724[a=-1.0,b=1.0,x=16.0,y=35.0,r=1.25],Node3723[a=0.0,b=1.0,x=17.0,y=35.0,r=1.38])Node3554[a=0.0,b=1.0,x=17.0,y=34.0,r=1.26])Node3389[a=1.0,b=1.0,x=17.0,y=33.0,r=0.98],(Node3553[a=1.0,b=1.0,x=16.0,y=34.0,r=0.65])Node3388[a=-1.0,b=1.0,x=15.0,y=33.0,r=0.93])Node3210[a=0.0,b=1.0,x=16.0,y=32.0,r=1.4])Node3040[a=-1.0,b=1.0,x=16.0,y=31.0,r=1.11],Node3039[a=1.0,b=1.0,x=18.0,y=31.0,r=0.6])Node2870[a=1.0,b=1.0,x=17.0,y=30.0,r=1.17])Node2702[a=-1.0,b=1.0,x=16.0,y=29.0,r=1.24],(Node2869[a=-1.0,b=0.0,x=17.0,y=29.0,r=0.72],((Node3387[a=0.0,b=1.0,x=17.0,y=32.0,r=1.34])Node3038[a=-1.0,b=1.0,x=17.0,y=31.0,r=1.41])Node2868[a=0.0,b=1.0,x=18.0,y=30.0,r=0.54])Node2701[a=1.0,b=1.0,x=18.0,y=29.0,r=1.17])Node2537[a=0.0,b=1.0,x=17.0,y=28.0,r=0.53])Node2379[a=1.0,b=1.0,x=17.0,y=27.0,r=0.89],(Node2700[a=-1.0,b=1.0,x=14.0,y=27.0,r=0.8])Node2378[a=-1.0,b=0.0,x=15.0,y=26.0,r=1.0])Node2066[a=1.0,b=1.0,x=16.0,y=26.0,r=0.57])Node1915[a=1.0,b=0.0,x=15.0,y=25.0,r=1.3])Node1767[a=0.0,b=1.0,x=14.0,y=25.0,r=1.5])Node1633[a=1.0,b=1.0,x=14.0,y=24.0,r=1.19],Node1632[a=0.0,b=1.0,x=13.0,y=24.0,r=1.41])Node1494[a=1.0,b=1.0,x=13.0,y=23.0,r=0.62])Node1277[a=1.0,b=1.0,x=12.0,y=22.0,r=0.77],((((((((Node2867[a=-1.0,b=-1.0,x=13.0,y=27.0,r=1.01],(Node3037[a=-1.0,b=-1.0,x=12.0,y=28.0,r=0.93])Node2866[a=-1.0,b=1.0,x=13.0,y=29.0,r=1.09])Node2699[a=-1.0,b=1.0,x=14.0,y=28.0,r=0.97])Node2377[a=1.0,b=1.0,x=15.0,y=27.0,r=0.51])Node2065[a=1.0,b=0.0,x=14.0,y=26.0,r=0.9])Node1914[a=0.0,b=1.0,x=13.0,y=26.0,r=0.51])Node1766[a=1.0,b=1.0,x=13.0,y=25.0,r=1.4])Node1631[a=1.0,b=1.0,x=12.0,y=24.0,r=0.79],(Node1765[a=1.0,b=1.0,x=12.0,y=25.0,r=1.48])Node1630[a=0.0,b=1.0,x=11.0,y=24.0,r=0.98])Node1381[a=0.0,b=1.0,x=11.0,y=23.0,r=0.58],((Node1629[a=1.0,b=1.0,x=14.0,y=23.0,r=1.29],Node1628[a=-1.0,b=1.0,x=12.0,y=23.0,r=0.78])Node1493[a=1.0,b=1.0,x=13.0,y=22.0,r=0.61])Node1380[a=1.0,b=-1.0,x=12.0,y=21.0,r=1.08])Node1276[a=0.0,b=1.0,x=11.0,y=22.0,r=0.66])Node1178[a=0.0,b=1.0,x=11.0,y=21.0,r=0.89])Node1078[a=1.0,b=-1.0,x=11.0,y=20.0,r=1.19])Node975[a=1.0,b=1.0,x=10.0,y=21.0,r=0.7])Node878[a=1.0,b=1.0,x=9.0,y=20.0,r=1.2])Node791[a=1.0,b=1.0,x=8.0,y=19.0,r=0.77])Node712[a=1.0,b=1.0,x=7.0,y=18.0,r=0.99])Node639[a=0.0,b=1.0,x=6.0,y=17.0,r=0.82])Node575[a=0.0,b=1.0,x=6.0,y=16.0,r=1.12],((((Node1077[a=1.0,b=1.0,x=10.0,y=20.0,r=0.69])Node974[a=1.0,b=1.0,x=9.0,y=19.0,r=1.09])Node877[a=0.0,b=1.0,x=8.0,y=18.0,r=1.24])Node638[a=1.0,b=1.0,x=8.0,y=17.0,r=1.26],(((((Node1275[a=0.0,b=-1.0,x=10.0,y=18.0,r=1.2])Node1076[a=1.0,b=1.0,x=10.0,y=19.0,r=0.92])Node876[a=0.0,b=1.0,x=9.0,y=18.0,r=0.61])Node790[a=1.0,b=1.0,x=9.0,y=17.0,r=1.3],(((Node1274[a=0.0,b=1.0,x=11.0,y=19.0,r=1.12],((Node1492[a=1.0,b=1.0,x=13.0,y=21.0,r=1.17])Node1379[a=0.0,b=1.0,x=12.0,y=20.0,r=0.85])Node1273[a=1.0,b=1.0,x=12.0,y=19.0,r=1.27])Node973[a=1.0,b=1.0,x=11.0,y=18.0,r=1.39])Node875[a=1.0,b=1.0,x=10.0,y=17.0,r=0.95])Node789[a=1.0,b=0.0,x=9.0,y=16.0,r=1.13])Node711[a=1.0,b=-1.0,x=8.0,y=16.0,r=0.95])Node637[a=0.0,b=1.0,x=7.0,y=17.0,r=0.69])Node574[a=1.0,b=1.0,x=7.0,y=16.0,r=0.78])Node501[a=-1.0,b=0.0,x=6.0,y=15.0,r=0.78])Node420[a=1.0,b=1.0,x=7.0,y=15.0,r=0.56])Node364[a=0.0,b=1.0,x=6.0,y=14.0,r=0.77])Node299[a=-1.0,b=1.0,x=6.0,y=13.0,r=0.99],(Node363[a=0.0,b=-1.0,x=8.0,y=12.0,r=0.61],(((((Node972[a=0.0,b=-1.0,x=13.0,y=14.0,r=1.07])Node788[a=1.0,b=1.0,x=13.0,y=15.0,r=1.2],((((Node1177[a=1.0,b=0.0,x=14.0,y=17.0,r=1.35])Node1075[a=1.0,b=1.0,x=13.0,y=17.0,r=0.82],(Node1176[a=1.0,b=1.0,x=13.0,y=16.0,r=0.66])Node1074[a=0.0,b=-1.0,x=12.0,y=15.0,r=1.28])Node971[a=1.0,b=0.0,x=12.0,y=16.0,r=0.84])Node874[a=0.0,b=1.0,x=11.0,y=16.0,r=1.31])Node787[a=-1.0,b=1.0,x=11.0,y=15.0,r=1.06])Node573[a=1.0,b=0.0,x=12.0,y=14.0,r=0.54],Node572[a=0.0,b=-1.0,x=11.0,y=13.0,r=0.61])Node500[a=1.0,b=-1.0,x=11.0,y=14.0,r=0.64],Node499[a=0.0,b=-1.0,x=10.0,y=14.0,r=1.42])Node419[a=1.0,b=1.0,x=10.0,y=15.0,r=0.6])Node362[a=1.0,b=1.0,x=9.0,y=14.0,r=0.92])Node298[a=1.0,b=1.0,x=8.0,y=13.0,r=0.73])Node245[a=1.0,b=1.0,x=7.0,y=12.0,r=0.52])Node204[a=1.0,b=1.0,x=6.0,y=11.0,r=0.68],(Node244[a=0.0,b=1.0,x=5.0,y=12.0,r=1.1],((((((((((Node1627[a=1.0,b=0.0,x=14.0,y=20.0,r=0.66])Node1378[a=0.0,b=1.0,x=13.0,y=20.0,r=0.73])Node1272[a=1.0,b=1.0,x=13.0,y=19.0,r=0.67],(((Node1626[a=-1.0,b=1.0,x=14.0,y=21.0,r=1.41],(Node1764[a=-1.0,b=1.0,x=14.0,y=22.0,r=1.41],((((((Node2698[a=0.0,b=1.0,x=16.0,y=28.0,r=0.53],Node2697[a=-1.0,b=1.0,x=15.0,y=28.0,r=1.26])Node2536[a=-1.0,b=1.0,x=16.0,y=27.0,r=1.01])Node2376[a=0.0,b=1.0,x=17.0,y=26.0,r=1.31],(((((((Node3722[a=-1.0,b=-1.0,x=20.0,y=30.0,r=0.62])Node3386[a=-1.0,b=1.0,x=21.0,y=31.0,r=0.84])Node3209[a=1.0,b=1.0,x=22.0,y=30.0,r=1.04])Node3036[a=1.0,b=1.0,x=21.0,y=29.0,r=0.87])Node2865[a=1.0,b=0.0,x=20.0,y=28.0,r=0.54],(((((Node3721[a=0.0,b=1.0,x=18.0,y=33.0,r=1.25])Node3552[a=-1.0,b=1.0,x=18.0,y=32.0,r=0.53],(Node3720[a=0.0,b=1.0,x=19.0,y=33.0,r=0.82],Node3719[a=1.0,b=1.0,x=20.0,y=33.0,r=1.21])Node3551[a=0.0,b=1.0,x=19.0,y=32.0,r=0.55])Node3385[a=-1.0,b=0.0,x=19.0,y=31.0,r=1.2],Node3384[a=0.0,b=1.0,x=20.0,y=32.0,r=0.97])Node3208[a=1.0,b=1.0,x=20.0,y=31.0,r=1.26])Node3035[a=0.0,b=1.0,x=19.0,y=30.0,r=0.63],Node3034[a=1.0,b=0.0,x=20.0,y=29.0,r=1.45])Node2864[a=0.0,b=1.0,x=19.0,y=29.0,r=1.11])Node2696[a=1.0,b=1.0,x=19.0,y=28.0,r=0.6])Node2535[a=0.0,b=1.0,x=18.0,y=27.0,r=1.21],Node2534[a=1.0,b=1.0,x=19.0,y=27.0,r=0.87])Node2375[a=1.0,b=1.0,x=18.0,y=26.0,r=1.0])Node2218[a=1.0,b=1.0,x=17.0,y=25.0,r=1.45])Node2064[a=0.0,b=1.0,x=16.0,y=24.0,r=0.52],(Node2217[a=-1.0,b=1.0,x=16.0,y=25.0,r=1.29])Node2063[a=1.0,b=1.0,x=17.0,y=24.0,r=0.74])Node1913[a=1.0,b=1.0,x=16.0,y=23.0,r=1.14])Node1763[a=0.0,b=1.0,x=15.0,y=22.0,r=1.01])Node1625[a=0.0,b=1.0,x=15.0,y=21.0,r=0.57])Node1491[a=1.0,b=1.0,x=15.0,y=20.0,r=1.18])Node1377[a=1.0,b=1.0,x=14.0,y=19.0,r=1.27])Node1271[a=1.0,b=0.0,x=13.0,y=18.0,r=0.54])Node1175[a=1.0,b=1.0,x=12.0,y=18.0,r=0.64],Node1174[a=1.0,b=0.0,x=12.0,y=17.0,r=0.74])Node1073[a=1.0,b=1.0,x=11.0,y=17.0,r=0.87])Node970[a=1.0,b=1.0,x=10.0,y=16.0,r=1.36])Node636[a=1.0,b=0.0,x=9.0,y=15.0,r=1.22])Node571[a=0.0,b=1.0,x=8.0,y=15.0,r=0.72])Node498[a=1.0,b=1.0,x=8.0,y=14.0,r=1.17],Node497[a=0.0,b=1.0,x=7.0,y=14.0,r=1.12])Node361[a=1.0,b=1.0,x=7.0,y=13.0,r=0.93])Node243[a=1.0,b=1.0,x=6.0,y=12.0,r=0.58])Node203[a=0.0,b=1.0,x=5.0,y=11.0,r=1.42])Node160[a=1.0,b=0.0,x=5.0,y=10.0,r=1.36])Node135[a=0.0,b=1.0,x=4.0,y=10.0,r=0.8])Node109[a=0.0,b=1.0,x=4.0,y=9.0,r=1.1],(Node159[a=1.0,b=-1.0,x=6.0,y=8.0,r=0.76],((((((Node496[a=-1.0,b=1.0,x=9.0,y=13.0,r=1.17])Node418[a=1.0,b=1.0,x=10.0,y=12.0,r=0.98],(Node570[a=1.0,b=1.0,x=10.0,y=13.0,r=1.19])Node417[a=0.0,b=1.0,x=9.0,y=12.0,r=0.81])Node360[a=1.0,b=0.0,x=9.0,y=11.0,r=0.55])Node297[a=1.0,b=0.0,x=8.0,y=11.0,r=0.6])Node242[a=1.0,b=1.0,x=7.0,y=11.0,r=1.32],(Node296[a=1.0,b=0.0,x=8.0,y=9.0,r=1.47],(Node359[a=1.0,b=1.0,x=9.0,y=9.0,r=0.51],(Node416[a=1.0,b=-1.0,x=10.0,y=6.0,r=0.84])Node358[a=1.0,b=-1.0,x=9.0,y=7.0,r=1.26])Node295[a=1.0,b=-1.0,x=8.0,y=8.0,r=0.87])Node241[a=1.0,b=-1.0,x=7.0,y=9.0,r=1.16])Node202[a=0.0,b=1.0,x=6.0,y=10.0,r=1.03],((((Node495[a=1.0,b=1.0,x=11.0,y=12.0,r=0.92])Node415[a=1.0,b=1.0,x=10.0,y=11.0,r=0.77],((Node569[a=1.0,b=-1.0,x=12.0,y=10.0,r=0.56],((Node710[a=1.0,b=-1.0,x=13.0,y=12.0,r=1.22])Node635[a=0.0,b=1.0,x=12.0,y=13.0,r=0.91],(((((((Node1376[a=1.0,b=1.0,x=19.0,y=15.0,r=0.97])Node1270[a=0.0,b=1.0,x=18.0,y=14.0,r=0.57],((((((Node2062[a=1.0,b=0.0,x=25.0,y=12.0,r=1.16],((Node2374[a=1.0,b=0.0,x=27.0,y=11.0,r=1.12])Node2216[a=1.0,b=0.0,x=26.0,y=11.0,r=0.67])Node2061[a=1.0,b=-1.0,x=25.0,y=11.0,r=0.8])Node1912[a=1.0,b=0.0,x=24.0,y=12.0,r=0.92])Node1762[a=1.0,b=0.0,x=23.0,y=12.0,r=1.1])Node1624[a=1.0,b=-1.0,x=22.0,y=12.0,r=1.33])Node1490[a=1.0,b=-1.0,x=21.0,y=13.0,r=0.88])Node1375[a=1.0,b=1.0,x=20.0,y=14.0,r=1.01],(((((((Node2373[a=0.0,b=1.0,x=24.0,y=19.0,r=0.72],((((((Node3718[a=1.0,b=1.0,x=29.0,y=24.0,r=1.01])Node3207[a=1.0,b=1.0,x=28.0,y=23.0,r=0.64])Node3033[a=1.0,b=0.0,x=27.0,y=22.0,r=1.14])Node2863[a=1.0,b=1.0,x=26.0,y=22.0,r=1.18])Node2695[a=0.0,b=1.0,x=25.0,y=21.0,r=1.2],(((Node3383[a=1.0,b=1.0,x=29.0,y=23.0,r=0.99])Node3206[a=1.0,b=1.0,x=28.0,y=22.0,r=1.01])Node2862[a=1.0,b=0.0,x=27.0,y=21.0,r=0.57])Node2694[a=1.0,b=1.0,x=26.0,y=21.0,r=0.59])Node2533[a=0.0,b=1.0,x=25.0,y=20.0,r=0.52],((Node3032[a=1.0,b=0.0,x=27.0,y=20.0,r=0.88])Node2693[a=0.0,b=1.0,x=26.0,y=20.0,r=0.66],((((((Node3717[a=1.0,b=1.0,x=31.0,y=23.0,r=0.75])Node3550[a=1.0,b=0.0,x=30.0,y=22.0,r=0.78],(Node3716[a=1.0,b=-1.0,x=31.0,y=22.0,r=1.17])Node3549[a=1.0,b=1.0,x=30.0,y=23.0,r=1.11])Node3382[a=1.0,b=1.0,x=29.0,y=22.0,r=0.83])Node3205[a=-1.0,b=1.0,x=28.0,y=21.0,r=1.42],((Node3715[a=1.0,b=-1.0,x=32.0,y=19.0,r=0.89],Node3714[a=1.0,b=1.0,x=32.0,y=21.0,r=0.97])Node3381[a=1.0,b=0.0,x=31.0,y=20.0,r=0.78])Node3204[a=1.0,b=0.0,x=30.0,y=20.0,r=1.07])Node3031[a=1.0,b=1.0,x=29.0,y=20.0,r=1.41],(((Node3713[a=1.0,b=-1.0,x=32.0,y=18.0,r=1.46])Node3548[a=1.0,b=1.0,x=31.0,y=19.0,r=0.94])Node3380[a=1.0,b=-1.0,x=30.0,y=18.0,r=0.85],Node3379[a=1.0,b=0.0,x=30.0,y=19.0,r=0.88])Node3030[a=1.0,b=0.0,x=29.0,y=19.0,r=0.54])Node2861[a=1.0,b=1.0,x=28.0,y=19.0,r=0.87],(Node3203[a=1.0,b=1.0,x=29.0,y=18.0,r=1.34])Node2860[a=1.0,b=-1.0,x=28.0,y=17.0,r=0.69])Node2692[a=1.0,b=-1.0,x=27.0,y=18.0,r=0.57])Node2532[a=1.0,b=0.0,x=26.0,y=19.0,r=1.33])Node2372[a=1.0,b=1.0,x=25.0,y=19.0,r=0.66])Node2215[a=1.0,b=0.0,x=24.0,y=18.0,r=0.88])Node2060[a=1.0,b=1.0,x=23.0,y=18.0,r=1.05])Node1911[a=0.0,b=1.0,x=22.0,y=17.0,r=0.87])Node1761[a=0.0,b=1.0,x=22.0,y=16.0,r=0.9])Node1623[a=1.0,b=1.0,x=22.0,y=15.0,r=1.04],(((((((((Node3202[a=1.0,b=-1.0,x=30.0,y=9.0,r=1.32])Node2859[a=0.0,b=-1.0,x=29.0,y=10.0,r=1.41],(((Node3547[a=1.0,b=1.0,x=33.0,y=11.0,r=0.86])Node3378[a=1.0,b=0.0,x=32.0,y=10.0,r=0.93],(Node3546[a=1.0,b=0.0,x=33.0,y=9.0,r=1.45])Node3377[a=1.0,b=-1.0,x=32.0,y=9.0,r=1.09])Node3029[a=1.0,b=0.0,x=31.0,y=10.0,r=1.09])Node2858[a=1.0,b=-1.0,x=30.0,y=10.0,r=1.16])Node2691[a=1.0,b=-1.0,x=29.0,y=11.0,r=0.62],((((Node3545[a=1.0,b=1.0,x=33.0,y=15.0,r=1.33])Node3376[a=1.0,b=1.0,x=32.0,y=14.0,r=0.84])Node3201[a=1.0,b=0.0,x=31.0,y=13.0,r=0.89])Node2857[a=1.0,b=0.0,x=30.0,y=13.0,r=0.68],(((((Node3712[a=1.0,b=-1.0,x=34.0,y=12.0,r=0.75],Node3711[a=0.0,b=1.0,x=33.0,y=14.0,r=1.0])Node3544[a=1.0,b=0.0,x=33.0,y=13.0,r=1.28])Node3375[a=0.0,b=1.0,x=32.0,y=13.0,r=0.84])Node3200[a=1.0,b=0.0,x=32.0,y=12.0,r=1.39],((Node3710[a=1.0,b=0.0,x=34.0,y=10.0,r=1.4])Node3543[a=1.0,b=-1.0,x=33.0,y=10.0,r=1.38])Node3199[a=1.0,b=-1.0,x=32.0,y=11.0,r=0.74])Node3028[a=1.0,b=0.0,x=31.0,y=12.0,r=0.55],Node3027[a=1.0,b=-1.0,x=31.0,y=11.0,r=0.84])Node2856[a=1.0,b=-1.0,x=30.0,y=12.0,r=1.0])Node2690[a=1.0,b=1.0,x=29.0,y=13.0,r=1.37])Node2531[a=1.0,b=-1.0,x=28.0,y=12.0,r=0.73],((Node2855[a=1.0,b=-1.0,x=30.0,y=11.0,r=1.46])Node2689[a=1.0,b=-1.0,x=29.0,y=12.0,r=0.63])Node2530[a=1.0,b=0.0,x=28.0,y=13.0,r=0.68])Node2371[a=1.0,b=-1.0,x=27.0,y=13.0,r=1.31])Node2214[a=1.0,b=0.0,x=26.0,y=14.0,r=0.67])Node2059[a=1.0,b=1.0,x=25.0,y=14.0,r=0.82])Node1910[a=1.0,b=0.0,x=24.0,y=13.0,r=0.53],(((Node2529[a=1.0,b=0.0,x=27.0,y=12.0,r=0.67])Node2370[a=1.0,b=-1.0,x=26.0,y=12.0,r=1.32],Node2369[a=1.0,b=0.0,x=26.0,y=13.0,r=1.5])Node2213[a=1.0,b=-1.0,x=25.0,y=13.0,r=1.41])Node1909[a=1.0,b=1.0,x=24.0,y=14.0,r=0.65])Node1760[a=1.0,b=-1.0,x=23.0,y=13.0,r=1.46],(((Node2368[a=1.0,b=1.0,x=24.0,y=17.0,r=0.94])Node2058[a=0.0,b=1.0,x=23.0,y=16.0,r=0.87])Node1908[a=0.0,b=1.0,x=23.0,y=15.0,r=1.34],((Node2212[a=0.0,b=-1.0,x=25.0,y=15.0,r=1.33],((((((((Node3709[a=1.0,b=0.0,x=32.0,y=16.0,r=1.43],Node3708[a=1.0,b=-1.0,x=32.0,y=15.0,r=1.01])Node3542[a=1.0,b=-1.0,x=31.0,y=16.0,r=1.05],Node3541[a=1.0,b=1.0,x=31.0,y=18.0,r=1.1])Node3374[a=1.0,b=1.0,x=30.0,y=17.0,r=1.1])Node3026[a=-1.0,b=1.0,x=29.0,y=16.0,r=1.31])Node2854[a=1.0,b=1.0,x=30.0,y=15.0,r=1.26],((((Node3707[a=1.0,b=0.0,x=32.0,y=17.0,r=1.17])Node3373[a=1.0,b=1.0,x=31.0,y=17.0,r=1.43],Node3372[a=1.0,b=-1.0,x=31.0,y=15.0,r=1.39])Node3198[a=1.0,b=1.0,x=30.0,y=16.0,r=0.9])Node3025[a=-1.0,b=1.0,x=29.0,y=15.0,r=0.9])Node2853[a=1.0,b=0.0,x=30.0,y=14.0,r=1.44])Node2688[a=1.0,b=0.0,x=29.0,y=14.0,r=0.81],Node2687[a=0.0,b=1.0,x=28.0,y=15.0,r=1.26])Node2528[a=1.0,b=0.0,x=28.0,y=14.0,r=1.19])Node2367[a=1.0,b=-1.0,x=27.0,y=14.0,r=1.31],(Node2527[a=-1.0,b=1.0,x=26.0,y=16.0,r=1.16])Node2366[a=1.0,b=0.0,x=27.0,y=15.0,r=0.82])Node2211[a=1.0,b=-1.0,x=26.0,y=15.0,r=1.26])Node2057[a=1.0,b=1.0,x=25.0,y=16.0,r=1.39],((((((((Node3706[a=1.0,b=0.0,x=31.0,y=21.0,r=0.51])Node3540[a=1.0,b=0.0,x=30.0,y=21.0,r=0.89])Node3371[a=1.0,b=1.0,x=29.0,y=21.0,r=1.44])Node3024[a=1.0,b=1.0,x=28.0,y=20.0,r=1.1])Node2852[a=1.0,b=1.0,x=27.0,y=19.0,r=1.08],(Node3023[a=1.0,b=-1.0,x=27.0,y=16.0,r=1.29],(Node3197[a=1.0,b=1.0,x=28.0,y=18.0,r=1.44],(Node3370[a=1.0,b=1.0,x=29.0,y=17.0,r=1.45])Node3196[a=1.0,b=-1.0,x=28.0,y=16.0,r=0.87])Node3022[a=1.0,b=0.0,x=27.0,y=17.0,r=1.36])Node2851[a=0.0,b=-1.0,x=26.0,y=17.0,r=1.02])Node2686[a=1.0,b=0.0,x=26.0,y=18.0,r=0.55])Node2526[a=0.0,b=1.0,x=25.0,y=18.0,r=0.77])Node2210[a=1.0,b=1.0,x=25.0,y=17.0,r=0.57])Node2056[a=0.0,b=1.0,x=24.0,y=16.0,r=1.11])Node1907[a=1.0,b=1.0,x=24.0,y=15.0,r=1.46])Node1759[a=1.0,b=0.0,x=23.0,y=14.0,r=1.19])Node1622[a=1.0,b=0.0,x=22.0,y=14.0,r=1.04])Node1489[a=1.0,b=1.0,x=21.0,y=14.0,r=0.91])Node1374[a=1.0,b=0.0,x=20.0,y=13.0,r=1.38])Node1269[a=1.0,b=0.0,x=19.0,y=13.0,r=1.16])Node1173[a=1.0,b=0.0,x=18.0,y=13.0,r=1.1])Node1072[a=1.0,b=1.0,x=17.0,y=13.0,r=1.37])Node969[a=1.0,b=1.0,x=16.0,y=12.0,r=0.8])Node873[a=1.0,b=-1.0,x=15.0,y=11.0,r=0.55])Node709[a=1.0,b=-1.0,x=14.0,y=12.0,r=1.46],((((Node1071[a=1.0,b=0.0,x=16.0,y=14.0,r=1.06],(((Node1488[a=0.0,b=1.0,x=18.0,y=18.0,r=1.2],Node1487[a=1.0,b=-1.0,x=19.0,y=16.0,r=1.17])Node1268[a=1.0,b=1.0,x=18.0,y=17.0,r=0.91],(((((((((((((Node3539[a=1.0,b=1.0,x=26.0,y=28.0,r=1.29])Node3369[a=1.0,b=-1.0,x=25.0,y=27.0,r=0.55],(Node3705[a=0.0,b=1.0,x=25.0,y=29.0,r=0.9])Node3368[a=1.0,b=0.0,x=25.0,y=28.0,r=1.19])Node3195[a=1.0,b=1.0,x=24.0,y=28.0,r=1.24])Node3021[a=1.0,b=1.0,x=23.0,y=27.0,r=1.04])Node2850[a=1.0,b=1.0,x=22.0,y=26.0,r=0.65])Node2685[a=1.0,b=1.0,x=21.0,y=25.0,r=0.74])Node2365[a=1.0,b=1.0,x=20.0,y=24.0,r=0.89])Node2209[a=1.0,b=1.0,x=19.0,y=23.0,r=1.06])Node1906[a=1.0,b=1.0,x=18.0,y=22.0,r=1.0])Node1758[a=-1.0,b=1.0,x=17.0,y=21.0,r=0.54])Node1621[a=1.0,b=1.0,x=18.0,y=20.0,r=1.18])Node1486[a=1.0,b=1.0,x=17.0,y=19.0,r=0.5],Node1485[a=-1.0,b=0.0,x=15.0,y=18.0,r=0.81])Node1373[a=-1.0,b=1.0,x=16.0,y=18.0,r=0.68],(Node1620[a=-1.0,b=1.0,x=16.0,y=19.0,r=1.38])Node1372[a=0.0,b=1.0,x=17.0,y=18.0,r=1.43])Node1267[a=0.0,b=1.0,x=17.0,y=17.0,r=1.14])Node1172[a=1.0,b=1.0,x=17.0,y=16.0,r=1.06])Node1070[a=1.0,b=1.0,x=16.0,y=15.0,r=0.86])Node968[a=-1.0,b=1.0,x=15.0,y=14.0,r=0.81],(((((((Node1905[a=1.0,b=1.0,x=20.0,y=21.0,r=0.69],(Node2055[a=1.0,b=1.0,x=20.0,y=22.0,r=0.97])Node1904[a=0.0,b=1.0,x=19.0,y=21.0,r=0.7])Node1757[a=1.0,b=1.0,x=19.0,y=20.0,r=1.3])Node1619[a=-1.0,b=1.0,x=18.0,y=19.0,r=1.34],(((Node2208[a=1.0,b=-1.0,x=23.0,y=17.0,r=1.28])Node1903[a=1.0,b=-1.0,x=22.0,y=18.0,r=0.83],(Node2054[a=1.0,b=1.0,x=21.0,y=21.0,r=1.01])Node1902[a=-1.0,b=1.0,x=20.0,y=20.0,r=1.24])Node1756[a=1.0,b=0.0,x=21.0,y=19.0,r=1.24],(((((((((Node3538[a=1.0,b=1.0,x=27.0,y=27.0,r=0.54])Node3194[a=0.0,b=1.0,x=26.0,y=26.0,r=1.26],(((Node3704[a=0.0,b=1.0,x=27.0,y=29.0,r=0.99],Node3703[a=-1.0,b=1.0,x=26.0,y=29.0,r=0.91])Node3537[a=1.0,b=1.0,x=27.0,y=28.0,r=1.46])Node3367[a=1.0,b=1.0,x=26.0,y=27.0,r=1.09])Node3193[a=-1.0,b=1.0,x=25.0,y=26.0,r=1.29])Node3020[a=1.0,b=1.0,x=26.0,y=25.0,r=1.34])Node2849[a=1.0,b=1.0,x=25.0,y=24.0,r=1.16])Node2684[a=1.0,b=1.0,x=24.0,y=23.0,r=1.46])Node2525[a=1.0,b=0.0,x=23.0,y=22.0,r=1.12])Node2364[a=0.0,b=1.0,x=22.0,y=22.0,r=1.06],((Node2683[a=-1.0,b=1.0,x=21.0,y=24.0,r=1.2],((Node3019[a=0.0,b=1.0,x=24.0,y=25.0,r=0.51])Node2848[a=1.0,b=1.0,x=24.0,y=24.0,r=0.53],Node2847[a=0.0,b=1.0,x=23.0,y=24.0,r=1.32])Node2682[a=1.0,b=0.0,x=23.0,y=23.0,r=1.1])Node2524[a=1.0,b=1.0,x=22.0,y=23.0,r=0.93])Node2363[a=-1.0,b=1.0,x=21.0,y=22.0,r=0.55])Node2207[a=0.0,b=1.0,x=22.0,y=21.0,r=1.45],(((Node3018[a=1.0,b=1.0,x=25.0,y=23.0,r=1.06])Node2681[a=1.0,b=1.0,x=24.0,y=22.0,r=0.89])Node2362[a=0.0,b=1.0,x=23.0,y=21.0,r=0.8])Node2206[a=1.0,b=0.0,x=23.0,y=20.0,r=1.03])Node1901[a=1.0,b=0.0,x=22.0,y=20.0,r=0.66])Node1755[a=1.0,b=1.0,x=21.0,y=20.0,r=1.37])Node1618[a=1.0,b=1.0,x=20.0,y=19.0,r=0.66])Node1484[a=0.0,b=1.0,x=19.0,y=18.0,r=0.77],((Node1754[a=1.0,b=-1.0,x=21.0,y=16.0,r=0.7],(Node1900[a=-1.0,b=1.0,x=19.0,y=19.0,r=0.71],(Node2053[a=0.0,b=-1.0,x=21.0,y=17.0,r=1.09],(((((((Node3366[a=-1.0,b=1.0,x=26.0,y=24.0,r=0.57],((Node3702[a=0.0,b=1.0,x=27.0,y=26.0,r=1.26])Node3536[a=0.0,b=1.0,x=27.0,y=25.0,r=1.0],Node3535[a=1.0,b=0.0,x=28.0,y=24.0,r=0.56])Node3365[a=0.0,b=1.0,x=27.0,y=24.0,r=1.42])Node3192[a=1.0,b=0.0,x=27.0,y=23.0,r=1.44])Node3017[a=1.0,b=1.0,x=26.0,y=23.0,r=0.94])Node2846[a=1.0,b=1.0,x=25.0,y=22.0,r=1.13])Node2680[a=0.0,b=1.0,x=24.0,y=21.0,r=1.04])Node2523[a=1.0,b=1.0,x=24.0,y=20.0,r=0.9])Node2205[a=1.0,b=0.0,x=23.0,y=19.0,r=1.01])Node2052[a=1.0,b=1.0,x=22.0,y=19.0,r=1.24])Node1899[a=1.0,b=0.0,x=21.0,y=18.0,r=0.73])Node1753[a=0.0,b=1.0,x=20.0,y=18.0,r=1.27])Node1617[a=0.0,b=1.0,x=20.0,y=17.0,r=1.45],Node1616[a=1.0,b=-1.0,x=21.0,y=15.0,r=0.95])Node1483[a=1.0,b=-1.0,x=20.0,y=16.0,r=0.86])Node1371[a=1.0,b=1.0,x=19.0,y=17.0,r=0.67])Node1266[a=1.0,b=1.0,x=18.0,y=16.0,r=0.58],((Node1615[a=1.0,b=1.0,x=20.0,y=15.0,r=0.78])Node1370[a=1.0,b=-1.0,x=19.0,y=14.0,r=1.47])Node1265[a=1.0,b=0.0,x=18.0,y=15.0,r=0.95])Node1069[a=0.0,b=1.0,x=17.0,y=15.0,r=1.5])Node967[a=1.0,b=1.0,x=17.0,y=14.0,r=1.35])Node872[a=1.0,b=1.0,x=16.0,y=13.0,r=1.23],((((Node1482[a=0.0,b=1.0,x=16.0,y=17.0,r=0.7])Node1171[a=1.0,b=1.0,x=16.0,y=16.0,r=1.11])Node1068[a=1.0,b=1.0,x=15.0,y=15.0,r=0.88],(Node1170[a=0.0,b=1.0,x=14.0,y=16.0,r=1.07],(((((((Node2051[a=0.0,b=1.0,x=17.0,y=23.0,r=0.85],((((((Node3016[a=0.0,b=1.0,x=21.0,y=28.0,r=1.06])Node2845[a=0.0,b=1.0,x=21.0,y=27.0,r=0.74],(((((Node3701[a=-1.0,b=1.0,x=21.0,y=32.0,r=0.64])Node3534[a=1.0,b=1.0,x=22.0,y=31.0,r=1.16])Node3364[a=-1.0,b=1.0,x=21.0,y=30.0,r=0.55])Node3191[a=0.0,b=1.0,x=22.0,y=29.0,r=0.7])Node3015[a=0.0,b=1.0,x=22.0,y=28.0,r=0.95],((((Node3700[a=1.0,b=-1.0,x=27.0,y=30.0,r=0.59],Node3699[a=1.0,b=1.0,x=27.0,y=32.0,r=0.51])Node3533[a=1.0,b=1.0,x=26.0,y=31.0,r=1.28])Node3363[a=1.0,b=1.0,x=25.0,y=30.0,r=1.13],((Node3698[a=1.0,b=1.0,x=25.0,y=32.0,r=0.92],Node3697[a=-1.0,b=1.0,x=23.0,y=32.0,r=0.93])Node3532[a=1.0,b=1.0,x=24.0,y=31.0,r=1.41],(Node3696[a=-1.0,b=1.0,x=22.0,y=32.0,r=1.3],Node3695[a=1.0,b=1.0,x=24.0,y=32.0,r=0.71])Node3531[a=0.0,b=1.0,x=23.0,y=31.0,r=0.89])Node3362[a=-1.0,b=1.0,x=23.0,y=30.0,r=1.46])Node3190[a=1.0,b=1.0,x=24.0,y=29.0,r=1.32],((Node3694[a=1.0,b=1.0,x=25.0,y=31.0,r=0.87])Node3530[a=1.0,b=1.0,x=24.0,y=30.0,r=0.51])Node3189[a=0.0,b=1.0,x=23.0,y=29.0,r=0.74])Node3014[a=1.0,b=1.0,x=23.0,y=28.0,r=1.13])Node2844[a=1.0,b=1.0,x=22.0,y=27.0,r=1.43])Node2679[a=1.0,b=1.0,x=21.0,y=26.0,r=0.91])Node2522[a=1.0,b=0.0,x=20.0,y=25.0,r=0.65])Node2361[a=0.0,b=1.0,x=19.0,y=25.0,r=0.75],(((Node2843[a=1.0,b=0.0,x=20.0,y=26.0,r=0.7],Node2842[a=1.0,b=1.0,x=20.0,y=27.0,r=0.88])Node2678[a=1.0,b=1.0,x=19.0,y=26.0,r=1.02])Node2521[a=0.0,b=1.0,x=18.0,y=25.0,r=0.83])Node2360[a=-1.0,b=0.0,x=18.0,y=24.0,r=1.07])Node2204[a=1.0,b=1.0,x=19.0,y=24.0,r=0.81])Node2050[a=1.0,b=1.0,x=18.0,y=23.0,r=1.03])Node1898[a=1.0,b=1.0,x=17.0,y=22.0,r=0.94],Node1897[a=0.0,b=1.0,x=16.0,y=22.0,r=0.53])Node1752[a=0.0,b=1.0,x=16.0,y=21.0,r=0.88],(((((((Node3013[a=1.0,b=0.0,x=23.0,y=25.0,r=0.78],((Node3361[a=1.0,b=-1.0,x=25.0,y=25.0,r=0.96])Node3188[a=1.0,b=0.0,x=24.0,y=26.0,r=1.11],Node3187[a=1.0,b=1.0,x=24.0,y=27.0,r=1.35])Node3012[a=1.0,b=1.0,x=23.0,y=26.0,r=0.75])Node2841[a=0.0,b=1.0,x=22.0,y=25.0,r=0.58])Node2677[a=1.0,b=1.0,x=22.0,y=24.0,r=0.75])Node2520[a=1.0,b=0.0,x=21.0,y=23.0,r=1.44])Node2203[a=1.0,b=1.0,x=20.0,y=23.0,r=1.22])Node2049[a=1.0,b=1.0,x=19.0,y=22.0,r=1.12])Node1896[a=1.0,b=1.0,x=18.0,y=21.0,r=1.35])Node1751[a=1.0,b=0.0,x=17.0,y=20.0,r=1.5])Node1614[a=1.0,b=1.0,x=16.0,y=20.0,r=0.66])Node1481[a=1.0,b=1.0,x=15.0,y=19.0,r=1.07])Node1369[a=-1.0,b=1.0,x=14.0,y=18.0,r=1.03])Node1264[a=0.0,b=1.0,x=15.0,y=17.0,r=0.9])Node1169[a=1.0,b=1.0,x=15.0,y=16.0,r=0.88])Node1067[a=0.0,b=1.0,x=14.0,y=15.0,r=0.66])Node966[a=-1.0,b=1.0,x=14.0,y=14.0,r=1.5])Node871[a=0.0,b=1.0,x=15.0,y=13.0,r=0.53])Node786[a=1.0,b=-1.0,x=15.0,y=12.0,r=1.38])Node708[a=1.0,b=0.0,x=14.0,y=13.0,r=0.63])Node634[a=1.0,b=1.0,x=13.0,y=13.0,r=0.53])Node568[a=1.0,b=1.0,x=12.0,y=12.0,r=0.9])Node494[a=1.0,b=1.0,x=11.0,y=11.0,r=1.44],(((Node707[a=1.0,b=1.0,x=14.0,y=10.0,r=1.04],(Node785[a=1.0,b=0.0,x=14.0,y=8.0,r=0.53],(((Node1066[a=1.0,b=1.0,x=17.0,y=12.0,r=1.15])Node965[a=1.0,b=1.0,x=16.0,y=11.0,r=1.44])Node870[a=1.0,b=1.0,x=15.0,y=10.0,r=1.49],((Node1065[a=1.0,b=0.0,x=17.0,y=10.0,r=0.73],(Node1168[a=1.0,b=1.0,x=18.0,y=12.0,r=1.1])Node1064[a=1.0,b=1.0,x=17.0,y=11.0,r=1.0])Node964[a=1.0,b=1.0,x=16.0,y=10.0,r=1.13])Node869[a=1.0,b=0.0,x=15.0,y=9.0,r=0.88])Node784[a=1.0,b=1.0,x=14.0,y=9.0,r=1.1])Node706[a=0.0,b=-1.0,x=13.0,y=8.0,r=0.62])Node633[a=1.0,b=0.0,x=13.0,y=9.0,r=1.22])Node567[a=1.0,b=0.0,x=12.0,y=9.0,r=0.53])Node493[a=1.0,b=-1.0,x=11.0,y=9.0,r=0.88])Node414[a=1.0,b=0.0,x=10.0,y=10.0,r=1.37])Node357[a=1.0,b=0.0,x=9.0,y=10.0,r=0.59])Node294[a=1.0,b=0.0,x=8.0,y=10.0,r=1.03])Node201[a=1.0,b=1.0,x=7.0,y=10.0,r=0.57])Node158[a=1.0,b=0.0,x=6.0,y=9.0,r=1.1])Node108[a=1.0,b=1.0,x=5.0,y=9.0,r=0.61])Node93[a=-1.0,b=1.0,x=4.0,y=8.0,r=0.82])Node77[a=-1.0,b=1.0,x=5.0,y=7.0,r=1.07])Node64[a=1.0,b=1.0,x=6.0,y=6.0,r=0.69],(Node76[a=0.0,b=-1.0,x=4.0,y=4.0,r=1.5],Node75[a=-1.0,b=0.0,x=3.0,y=5.0,r=0.8])Node63[a=-1.0,b=0.0,x=4.0,y=5.0,r=0.54])Node49[a=0.0,b=1.0,x=5.0,y=5.0,r=0.86])Node38[a=0.0,b=1.0,x=5.0,y=4.0,r=0.88],(((((((((Node413[a=1.0,b=0.0,x=10.0,y=8.0,r=1.27],((((Node705[a=1.0,b=0.0,x=14.0,y=11.0,r=1.38])Node632[a=1.0,b=0.0,x=13.0,y=11.0,r=1.39],Node631[a=1.0,b=-1.0,x=13.0,y=10.0,r=1.3])Node566[a=1.0,b=1.0,x=12.0,y=11.0,r=0.57])Node492[a=1.0,b=1.0,x=11.0,y=10.0,r=1.24])Node412[a=1.0,b=1.0,x=10.0,y=9.0,r=0.54])Node356[a=-1.0,b=1.0,x=9.0,y=8.0,r=0.92])Node240[a=1.0,b=1.0,x=10.0,y=7.0,r=0.79])Node157[a=1.0,b=-1.0,x=9.0,y=6.0,r=0.58])Node134[a=0.0,b=1.0,x=8.0,y=7.0,r=1.17])Node92[a=0.0,b=1.0,x=8.0,y=6.0,r=1.39])Node74[a=1.0,b=1.0,x=8.0,y=5.0,r=1.23])Node62[a=0.0,b=1.0,x=7.0,y=4.0,r=1.41])Node48[a=1.0,b=1.0,x=7.0,y=3.0,r=1.45],(((((Node200[a=0.0,b=1.0,x=7.0,y=8.0,r=0.56])Node156[a=0.0,b=1.0,x=7.0,y=7.0,r=0.82])Node133[a=0.0,b=1.0,x=7.0,y=6.0,r=0.67],(((Node355[a=1.0,b=1.0,x=11.0,y=5.0,r=1.11],(((Node565[a=0.0,b=1.0,x=11.0,y=8.0,r=0.82])Node491[a=0.0,b=1.0,x=11.0,y=7.0,r=1.1],((Node704[a=-1.0,b=1.0,x=12.0,y=8.0,r=0.85])Node630[a=1.0,b=1.0,x=13.0,y=7.0,r=0.88])Node490[a=1.0,b=0.0,x=12.0,y=6.0,r=0.66])Node411[a=1.0,b=1.0,x=11.0,y=6.0,r=1.12])Node354[a=0.0,b=1.0,x=10.0,y=5.0,r=0.66])Node239[a=1.0,b=-1.0,x=10.0,y=4.0,r=1.1])Node199[a=1.0,b=1.0,x=9.0,y=5.0,r=1.27],(((((Node629[a=-1.0,b=1.0,x=12.0,y=7.0,r=1.41])Node564[a=1.0,b=1.0,x=13.0,y=6.0,r=0.9])Node489[a=1.0,b=1.0,x=12.0,y=5.0,r=0.83])Node353[a=1.0,b=1.0,x=11.0,y=4.0,r=1.24])Node238[a=1.0,b=-1.0,x=10.0,y=3.0,r=1.37])Node198[a=1.0,b=0.0,x=9.0,y=4.0,r=0.65])Node132[a=1.0,b=-1.0,x=8.0,y=4.0,r=0.72])Node107[a=1.0,b=1.0,x=7.0,y=5.0,r=0.82],Node106[a=0.0,b=1.0,x=6.0,y=5.0,r=0.69])Node73[a=0.0,b=1.0,x=6.0,y=4.0,r=0.57])Node47[a=0.0,b=1.0,x=6.0,y=3.0,r=1.44])Node37[a=1.0,b=-1.0,x=6.0,y=2.0,r=0.62])Node29[a=1.0,b=1.0,x=5.0,y=3.0,r=1.22],((Node61[a=1.0,b=1.0,x=3.0,y=4.0,r=0.75],((Node91[a=0.0,b=1.0,x=2.0,y=5.0,r=0.85])Node72[a=1.0,b=1.0,x=2.0,y=4.0,r=0.98])Node60[a=-1.0,b=0.0,x=1.0,y=3.0,r=0.93])Node36[a=-1.0,b=1.0,x=2.0,y=3.0,r=1.07])Node28[a=-1.0,b=0.0,x=3.0,y=2.0,r=1.26])Node18[a=1.0,b=1.0,x=4.0,y=2.0,r=1.21],(((((((Node293[a=1.0,b=-1.0,x=11.0,y=0.0,r=1.04],(((Node563[a=-1.0,b=-1.0,x=7.0,y=2.0,r=0.53])Node410[a=-1.0,b=0.0,x=8.0,y=3.0,r=1.09])Node352[a=0.0,b=1.0,x=9.0,y=3.0,r=0.5])Node292[a=-1.0,b=1.0,x=9.0,y=2.0,r=0.83])Node197[a=1.0,b=0.0,x=10.0,y=1.0,r=0.86])Node131[a=1.0,b=-1.0,x=9.0,y=1.0,r=1.4])Node71[a=1.0,b=1.0,x=8.0,y=2.0,r=1.21])Node59[a=1.0,b=1.0,x=7.0,y=1.0,r=1.36],((((((((Node409[a=0.0,b=1.0,x=12.0,y=4.0,r=1.37])Node351[a=1.0,b=1.0,x=12.0,y=3.0,r=1.01],(Node488[a=1.0,b=0.0,x=13.0,y=1.0,r=1.13])Node350[a=1.0,b=-1.0,x=12.0,y=1.0,r=1.42])Node291[a=0.0,b=1.0,x=11.0,y=2.0,r=0.88],((((((((((((((Node1480[a=1.0,b=-1.0,x=20.0,y=11.0,r=0.96])Node1368[a=0.0,b=1.0,x=19.0,y=12.0,r=0.86],(((Node1750[a=1.0,b=0.0,x=23.0,y=11.0,r=1.24],(((((Node2676[a=1.0,b=1.0,x=28.0,y=11.0,r=1.15],Node2675[a=1.0,b=0.0,x=28.0,y=10.0,r=0.56])Node2359[a=1.0,b=1.0,x=27.0,y=10.0,r=0.81],(Node2674[a=1.0,b=-1.0,x=28.0,y=7.0,r=0.98],((Node3011[a=1.0,b=-1.0,x=30.0,y=7.0,r=1.28])Node2840[a=1.0,b=0.0,x=29.0,y=8.0,r=0.57],((Node3360[a=1.0,b=1.0,x=31.0,y=9.0,r=1.31])Node3010[a=1.0,b=-1.0,x=30.0,y=8.0,r=1.28])Node2839[a=1.0,b=1.0,x=29.0,y=9.0,r=0.64])Node2673[a=1.0,b=0.0,x=28.0,y=8.0,r=1.39])Node2358[a=1.0,b=-1.0,x=27.0,y=8.0,r=1.17])Node2202[a=1.0,b=0.0,x=26.0,y=9.0,r=0.62],Node2201[a=1.0,b=1.0,x=26.0,y=10.0,r=1.13])Node2048[a=1.0,b=-1.0,x=25.0,y=9.0,r=0.69])Node1895[a=1.0,b=0.0,x=24.0,y=10.0,r=1.2],Node1894[a=1.0,b=1.0,x=24.0,y=11.0,r=0.67])Node1749[a=1.0,b=-1.0,x=23.0,y=10.0,r=0.71])Node1613[a=1.0,b=0.0,x=22.0,y=11.0,r=1.45])Node1479[a=1.0,b=-1.0,x=21.0,y=11.0,r=0.7],(Node1748[a=1.0,b=1.0,x=22.0,y=13.0,r=1.2])Node1478[a=1.0,b=0.0,x=21.0,y=12.0,r=1.05])Node1367[a=1.0,b=1.0,x=20.0,y=12.0,r=1.01])Node1263[a=1.0,b=0.0,x=19.0,y=11.0,r=1.13],(Node1477[a=1.0,b=-1.0,x=20.0,y=9.0,r=0.99],(Node1612[a=1.0,b=0.0,x=21.0,y=10.0,r=0.92])Node1476[a=1.0,b=0.0,x=20.0,y=10.0,r=0.83])Node1262[a=1.0,b=-1.0,x=19.0,y=10.0,r=0.62])Node1167[a=0.0,b=1.0,x=18.0,y=11.0,r=0.83])Node1063[a=1.0,b=1.0,x=18.0,y=10.0,r=0.68])Node963[a=1.0,b=1.0,x=17.0,y=9.0,r=1.26])Node868[a=1.0,b=1.0,x=16.0,y=8.0,r=0.53])Node783[a=1.0,b=1.0,x=15.0,y=7.0,r=1.14],((Node962[a=1.0,b=1.0,x=16.0,y=9.0,r=0.92])Node867[a=1.0,b=1.0,x=15.0,y=8.0,r=1.01])Node782[a=0.0,b=1.0,x=14.0,y=7.0,r=1.16])Node703[a=1.0,b=1.0,x=14.0,y=6.0,r=1.11])Node628[a=0.0,b=1.0,x=13.0,y=5.0,r=0.79])Node562[a=0.0,b=1.0,x=13.0,y=4.0,r=0.59],((((Node961[a=1.0,b=1.0,x=17.0,y=8.0,r=1.1])Node866[a=1.0,b=1.0,x=16.0,y=7.0,r=0.89])Node781[a=1.0,b=1.0,x=15.0,y=6.0,r=1.26],((((Node1261[a=1.0,b=-1.0,x=19.0,y=6.0,r=1.14],Node1260[a=1.0,b=0.0,x=19.0,y=7.0,r=1.07])Node1062[a=1.0,b=1.0,x=18.0,y=7.0,r=1.35])Node960[a=1.0,b=1.0,x=17.0,y=6.0,r=0.59],Node959[a=1.0,b=-1.0,x=17.0,y=4.0,r=1.25])Node865[a=1.0,b=1.0,x=16.0,y=5.0,r=1.41])Node780[a=1.0,b=-1.0,x=15.0,y=4.0,r=1.22])Node702[a=0.0,b=1.0,x=14.0,y=5.0,r=0.81],(((Node1061[a=1.0,b=0.0,x=18.0,y=5.0,r=1.05])Node958[a=1.0,b=-1.0,x=17.0,y=5.0,r=0.82],(((Node1366[a=1.0,b=0.0,x=19.0,y=9.0,r=1.22])Node1166[a=0.0,b=1.0,x=18.0,y=9.0,r=1.13],(((Node1747[a=1.0,b=1.0,x=22.0,y=10.0,r=0.52])Node1611[a=1.0,b=1.0,x=21.0,y=9.0,r=1.04])Node1365[a=1.0,b=0.0,x=20.0,y=8.0,r=1.25],((Node1610[a=1.0,b=-1.0,x=22.0,y=7.0,r=1.19],(((Node2200[a=1.0,b=0.0,x=25.0,y=7.0,r=1.44])Node2047[a=1.0,b=-1.0,x=24.0,y=7.0,r=0.95])Node1893[a=1.0,b=-1.0,x=23.0,y=8.0,r=0.68],(((((Node2838[a=1.0,b=0.0,x=28.0,y=9.0,r=1.39])Node2519[a=1.0,b=1.0,x=27.0,y=9.0,r=1.06])Node2357[a=1.0,b=0.0,x=26.0,y=8.0,r=0.72])Node2199[a=1.0,b=-1.0,x=25.0,y=8.0,r=0.65],Node2198[a=1.0,b=1.0,x=25.0,y=10.0,r=1.15])Node2046[a=1.0,b=0.0,x=24.0,y=9.0,r=1.08])Node1892[a=1.0,b=0.0,x=23.0,y=9.0,r=1.35])Node1609[a=1.0,b=1.0,x=22.0,y=9.0,r=1.45])Node1475[a=1.0,b=1.0,x=21.0,y=8.0,r=1.18])Node1364[a=1.0,b=-1.0,x=20.0,y=7.0,r=0.53])Node1165[a=1.0,b=0.0,x=19.0,y=8.0,r=1.39])Node1060[a=1.0,b=1.0,x=18.0,y=8.0,r=0.72],((((((Node2045[a=1.0,b=1.0,x=24.0,y=8.0,r=1.13])Node1746[a=1.0,b=-1.0,x=23.0,y=7.0,r=1.35])Node1608[a=1.0,b=1.0,x=22.0,y=8.0,r=0.83])Node1474[a=1.0,b=1.0,x=21.0,y=7.0,r=0.64])Node1363[a=1.0,b=1.0,x=20.0,y=6.0,r=1.23])Node1259[a=1.0,b=-1.0,x=19.0,y=5.0,r=0.83])Node1059[a=1.0,b=-1.0,x=18.0,y=6.0,r=0.75])Node957[a=1.0,b=1.0,x=17.0,y=7.0,r=1.4])Node864[a=1.0,b=1.0,x=16.0,y=6.0,r=1.16])Node701[a=1.0,b=1.0,x=15.0,y=5.0,r=0.59])Node561[a=1.0,b=1.0,x=14.0,y=4.0,r=0.61])Node487[a=1.0,b=1.0,x=13.0,y=3.0,r=1.03],(Node560[a=1.0,b=0.0,x=14.0,y=2.0,r=0.92],(((Node956[a=0.0,b=1.0,x=16.0,y=4.0,r=1.28])Node779[a=1.0,b=0.0,x=16.0,y=3.0,r=0.68])Node627[a=1.0,b=0.0,x=15.0,y=3.0,r=0.89])Node559[a=1.0,b=1.0,x=14.0,y=3.0,r=1.47])Node486[a=1.0,b=0.0,x=13.0,y=2.0,r=1.17])Node408[a=1.0,b=-1.0,x=12.0,y=2.0,r=1.5])Node349[a=1.0,b=1.0,x=11.0,y=3.0,r=0.83])Node290[a=-1.0,b=1.0,x=10.0,y=2.0,r=1.1])Node196[a=1.0,b=1.0,x=11.0,y=1.0,r=0.74])Node155[a=1.0,b=0.0,x=10.0,y=0.0,r=1.39])Node130[a=1.0,b=-1.0,x=9.0,y=0.0,r=0.67])Node105[a=1.0,b=1.0,x=8.0,y=1.0,r=0.66])Node90[a=1.0,b=-1.0,x=7.0,y=0.0,r=1.15])Node58[a=0.0,b=1.0,x=6.0,y=1.0,r=0.77])Node46[a=1.0,b=-1.0,x=6.0,y=0.0,r=1.46])Node27[a=1.0,b=0.0,x=5.0,y=1.0,r=1.49])Node17[a=1.0,b=0.0,x=4.0,y=1.0,r=1.24])Node11[a=1.0,b=0.0,x=3.0,y=1.0,r=1.42])Node7[a=1.0,b=1.0,x=2.0,y=1.0,r=1.02])Node2[a=1.0,b=0.0,x=1.0,y=0.0,r=0.9],(((((((((Node348[a=-1.0,b=0.0,x=-8.0,y=2.0,r=0.57],(Node407[a=-1.0,b=-1.0,x=-9.0,y=2.0,r=1.2],Node406[a=1.0,b=1.0,x=-7.0,y=4.0,r=0.68])Node347[a=-1.0,b=1.0,x=-8.0,y=3.0,r=0.87])Node195[a=-1.0,b=1.0,x=-7.0,y=2.0,r=1.48],((((((Node700[a=-1.0,b=1.0,x=-10.0,y=-2.0,r=0.72],(((((Node1258[a=-1.0,b=-1.0,x=-15.0,y=-6.0,r=0.85])Node1058[a=-1.0,b=0.0,x=-14.0,y=-5.0,r=1.09],((((((Node1745[a=-1.0,b=0.0,x=-20.0,y=-5.0,r=0.89],Node1744[a=-1.0,b=-1.0,x=-20.0,y=-6.0,r=0.9])Node1607[a=-1.0,b=0.0,x=-19.0,y=-5.0,r=1.49],((Node1891[a=-1.0,b=-1.0,x=-19.0,y=-8.0,r=0.69])Node1743[a=1.0,b=-1.0,x=-18.0,y=-7.0,r=0.52],(((((Node2837[a=-1.0,b=-1.0,x=-23.0,y=-11.0,r=0.94])Node2518[a=0.0,b=-1.0,x=-22.0,y=-10.0,r=1.07],Node2517[a=-1.0,b=-1.0,x=-23.0,y=-10.0,r=0.75])Node2356[a=-1.0,b=-1.0,x=-22.0,y=-9.0,r=1.23])Node2044[a=0.0,b=-1.0,x=-21.0,y=-8.0,r=1.2])Node1890[a=-1.0,b=0.0,x=-21.0,y=-7.0,r=0.64],(((Node2355[a=-1.0,b=-1.0,x=-23.0,y=-8.0,r=1.19],((((Node3186[a=0.0,b=-1.0,x=-24.0,y=-12.0,r=1.21])Node3009[a=0.0,b=-1.0,x=-24.0,y=-11.0,r=0.73],(((Node3529[a=-1.0,b=-1.0,x=-28.0,y=-12.0,r=0.54])Node3359[a=-1.0,b=0.0,x=-27.0,y=-11.0,r=0.86],((Node3693[a=-1.0,b=-1.0,x=-28.0,y=-13.0,r=0.99])Node3528[a=-1.0,b=0.0,x=-27.0,y=-12.0,r=1.36])Node3358[a=0.0,b=-1.0,x=-26.0,y=-12.0,r=1.43])Node3185[a=-1.0,b=0.0,x=-26.0,y=-11.0,r=0.67],(((Node3692[a=-1.0,b=0.0,x=-27.0,y=-13.0,r=1.13])Node3527[a=-1.0,b=0.0,x=-26.0,y=-13.0,r=1.16])Node3357[a=0.0,b=-1.0,x=-25.0,y=-13.0,r=1.35])Node3184[a=0.0,b=-1.0,x=-25.0,y=-12.0,r=1.22])Node3008[a=-1.0,b=-1.0,x=-25.0,y=-11.0,r=1.46])Node2672[a=-1.0,b=-1.0,x=-24.0,y=-10.0,r=1.04])Node2516[a=-1.0,b=-1.0,x=-23.0,y=-9.0,r=0.56])Node2354[a=0.0,b=-1.0,x=-22.0,y=-8.0,r=1.04])Node2197[a=0.0,b=-1.0,x=-22.0,y=-7.0,r=1.32],Node2196[a=-1.0,b=-1.0,x=-23.0,y=-7.0,r=0.69])Node2043[a=-1.0,b=0.0,x=-22.0,y=-6.0,r=0.97])Node1889[a=-1.0,b=1.0,x=-21.0,y=-6.0,r=0.63])Node1742[a=-1.0,b=-1.0,x=-20.0,y=-7.0,r=0.97])Node1606[a=-1.0,b=-1.0,x=-19.0,y=-6.0,r=1.4])Node1473[a=-1.0,b=0.0,x=-18.0,y=-5.0,r=1.42],(((Node2353[a=-1.0,b=-1.0,x=-21.0,y=-9.0,r=1.16])Node2042[a=-1.0,b=-1.0,x=-20.0,y=-8.0,r=0.84])Node1888[a=-1.0,b=-1.0,x=-19.0,y=-7.0,r=1.28])Node1472[a=-1.0,b=-1.0,x=-18.0,y=-6.0,r=1.41])Node1362[a=-1.0,b=-1.0,x=-17.0,y=-5.0,r=1.28])Node1257[a=-1.0,b=1.0,x=-16.0,y=-4.0,r=0.73])Node1164[a=-1.0,b=1.0,x=-15.0,y=-5.0,r=1.01],(((Node1887[a=0.0,b=1.0,x=-17.0,y=-7.0,r=1.08],(((Node2671[a=-1.0,b=-1.0,x=-21.0,y=-11.0,r=0.93])Node2195[a=-1.0,b=-1.0,x=-20.0,y=-10.0,r=0.67],((((Node3183[a=-1.0,b=0.0,x=-23.0,y=-12.0,r=0.97])Node2836[a=0.0,b=-1.0,x=-22.0,y=-12.0,r=1.2])Node2515[a=-1.0,b=-1.0,x=-22.0,y=-11.0,r=0.92])Node2352[a=-1.0,b=-1.0,x=-21.0,y=-10.0,r=1.04])Node2194[a=-1.0,b=0.0,x=-20.0,y=-9.0,r=0.69])Node2041[a=-1.0,b=-1.0,x=-19.0,y=-9.0,r=1.35],((((((((Node3691[a=0.0,b=-1.0,x=-25.0,y=-16.0,r=1.21])Node3526[a=-1.0,b=-1.0,x=-25.0,y=-15.0,r=0.76])Node3356[a=-1.0,b=0.0,x=-24.0,y=-14.0,r=1.35])Node3182[a=-1.0,b=-1.0,x=-23.0,y=-14.0,r=1.22])Node3007[a=-1.0,b=-1.0,x=-22.0,y=-13.0,r=1.02])Node2835[a=-1.0,b=-1.0,x=-21.0,y=-12.0,r=0.75])Node2351[a=-1.0,b=-1.0,x=-20.0,y=-11.0,r=0.72])Node2193[a=-1.0,b=-1.0,x=-19.0,y=-10.0,r=0.9])Node2040[a=0.0,b=-1.0,x=-18.0,y=-9.0,r=1.04])Node1886[a=-1.0,b=0.0,x=-18.0,y=-8.0,r=0.68])Node1605[a=-1.0,b=-1.0,x=-17.0,y=-8.0,r=1.08])Node1361[a=-1.0,b=0.0,x=-16.0,y=-7.0,r=0.93],((Node1885[a=-1.0,b=-1.0,x=-17.0,y=-10.0,r=0.51])Node1604[a=-1.0,b=-1.0,x=-16.0,y=-9.0,r=0.55],Node1603[a=-1.0,b=0.0,x=-16.0,y=-8.0,r=0.58])Node1360[a=0.0,b=-1.0,x=-15.0,y=-8.0,r=1.16])Node1163[a=-1.0,b=-1.0,x=-15.0,y=-7.0,r=1.21])Node1057[a=-1.0,b=-1.0,x=-14.0,y=-6.0,r=1.35])Node955[a=-1.0,b=0.0,x=-13.0,y=-5.0,r=1.42])Node863[a=-1.0,b=-1.0,x=-12.0,y=-5.0,r=1.19],Node862[a=-1.0,b=0.0,x=-12.0,y=-4.0,r=1.46])Node778[a=-1.0,b=-1.0,x=-11.0,y=-4.0,r=0.98],Node777[a=-1.0,b=0.0,x=-11.0,y=-3.0,r=0.77])Node699[a=-1.0,b=0.0,x=-10.0,y=-3.0,r=0.95])Node626[a=-1.0,b=0.0,x=-9.0,y=-3.0,r=0.85])Node485[a=-1.0,b=-1.0,x=-8.0,y=-3.0,r=1.15])Node346[a=-1.0,b=-1.0,x=-7.0,y=-2.0,r=0.89])Node289[a=-1.0,b=-1.0,x=-6.0,y=-1.0,r=0.89])Node237[a=0.0,b=-1.0,x=-5.0,y=0.0,r=0.89])Node194[a=1.0,b=0.0,x=-5.0,y=1.0,r=1.23])Node129[a=-1.0,b=-1.0,x=-6.0,y=1.0,r=0.85],((((((((((Node861[a=-1.0,b=0.0,x=-14.0,y=-1.0,r=0.99])Node776[a=-1.0,b=-1.0,x=-13.0,y=-1.0,r=1.49],((((((Node1471[a=-1.0,b=0.0,x=-19.0,y=-2.0,r=1.46],(((Node1884[a=-1.0,b=0.0,x=-22.0,y=-3.0,r=1.27])Node1741[a=-1.0,b=0.0,x=-21.0,y=-3.0,r=0.9],((((((Node2834[a=1.0,b=1.0,x=-24.0,y=-7.0,r=0.56],((Node3181[a=-1.0,b=-1.0,x=-27.0,y=-10.0,r=1.44],(((Node3690[a=-1.0,b=1.0,x=-29.0,y=-10.0,r=0.95],Node3689[a=-1.0,b=0.0,x=-29.0,y=-11.0,r=0.96])Node3525[a=0.0,b=-1.0,x=-28.0,y=-11.0,r=0.69])Node3355[a=-1.0,b=-1.0,x=-28.0,y=-10.0,r=1.44])Node3180[a=-1.0,b=0.0,x=-27.0,y=-9.0,r=0.84])Node3006[a=0.0,b=-1.0,x=-26.0,y=-9.0,r=0.96])Node2833[a=-1.0,b=0.0,x=-26.0,y=-8.0,r=1.34])Node2670[a=0.0,b=-1.0,x=-25.0,y=-8.0,r=1.08],((Node3005[a=-1.0,b=-1.0,x=-25.0,y=-10.0,r=1.43])Node2832[a=0.0,b=-1.0,x=-24.0,y=-9.0,r=1.05],(Node3179[a=-1.0,b=-1.0,x=-26.0,y=-10.0,r=0.81])Node2831[a=-1.0,b=-1.0,x=-25.0,y=-9.0,r=0.88])Node2669[a=1.0,b=-1.0,x=-24.0,y=-8.0,r=1.25])Node2514[a=-1.0,b=-1.0,x=-25.0,y=-7.0,r=1.1])Node2350[a=-1.0,b=-1.0,x=-24.0,y=-6.0,r=1.25])Node2039[a=-1.0,b=0.0,x=-23.0,y=-5.0,r=1.29],(((((((Node3354[a=-1.0,b=-1.0,x=-30.0,y=-6.0,r=1.36])Node3178[a=-1.0,b=0.0,x=-29.0,y=-5.0,r=1.32])Node2830[a=-1.0,b=1.0,x=-28.0,y=-5.0,r=0.81],(((Node3688[a=-1.0,b=-1.0,x=-31.0,y=-8.0,r=0.59])Node3353[a=-1.0,b=0.0,x=-30.0,y=-7.0,r=0.73],Node3352[a=-1.0,b=-1.0,x=-30.0,y=-8.0,r=0.56])Node3004[a=-1.0,b=-1.0,x=-29.0,y=-7.0,r=0.92],Node3003[a=1.0,b=1.0,x=-27.0,y=-5.0,r=0.85])Node2829[a=-1.0,b=0.0,x=-28.0,y=-6.0,r=0.64])Node2668[a=-1.0,b=-1.0,x=-27.0,y=-6.0,r=0.87])Node2513[a=-1.0,b=1.0,x=-26.0,y=-5.0,r=0.98])Node2349[a=-1.0,b=-1.0,x=-25.0,y=-6.0,r=1.21],((((((Node3351[a=-1.0,b=0.0,x=-30.0,y=-9.0,r=1.12])Node3177[a=-1.0,b=-1.0,x=-29.0,y=-9.0,r=1.31])Node3002[a=-1.0,b=-1.0,x=-28.0,y=-8.0,r=0.69],((Node3350[a=-1.0,b=1.0,x=-29.0,y=-6.0,r=0.67])Node3176[a=-1.0,b=1.0,x=-28.0,y=-7.0,r=1.12],(Node3349[a=-1.0,b=1.0,x=-29.0,y=-8.0,r=1.46])Node3175[a=-1.0,b=-1.0,x=-28.0,y=-9.0,r=0.92])Node3001[a=0.0,b=-1.0,x=-27.0,y=-8.0,r=1.21])Node2828[a=-1.0,b=-1.0,x=-27.0,y=-7.0,r=0.53])Node2667[a=-1.0,b=-1.0,x=-26.0,y=-6.0,r=1.25])Node2512[a=-1.0,b=-1.0,x=-25.0,y=-5.0,r=0.52])Node2348[a=0.0,b=1.0,x=-24.0,y=-4.0,r=1.13])Node2192[a=-1.0,b=1.0,x=-24.0,y=-5.0,r=0.93])Node2038[a=-1.0,b=-1.0,x=-23.0,y=-6.0,r=1.39])Node1883[a=-1.0,b=-1.0,x=-22.0,y=-5.0,r=1.38])Node1740[a=-1.0,b=-1.0,x=-21.0,y=-4.0,r=0.5])Node1602[a=-1.0,b=0.0,x=-20.0,y=-3.0,r=1.21],(((Node2191[a=-1.0,b=0.0,x=-23.0,y=-4.0,r=1.46])Node2037[a=-1.0,b=1.0,x=-22.0,y=-4.0,r=1.24])Node1739[a=-1.0,b=-1.0,x=-21.0,y=-5.0,r=0.71])Node1601[a=-1.0,b=-1.0,x=-20.0,y=-4.0,r=0.87])Node1470[a=-1.0,b=-1.0,x=-19.0,y=-3.0,r=1.2])Node1359[a=-1.0,b=1.0,x=-18.0,y=-2.0,r=0.95],(((Node1738[a=-1.0,b=0.0,x=-19.0,y=-4.0,r=1.34])Node1600[a=0.0,b=-1.0,x=-18.0,y=-4.0,r=0.98])Node1469[a=-1.0,b=1.0,x=-18.0,y=-3.0,r=0.68])Node1358[a=0.0,b=-1.0,x=-17.0,y=-4.0,r=1.23])Node1256[a=-1.0,b=-1.0,x=-17.0,y=-3.0,r=0.72])Node1162[a=-1.0,b=-1.0,x=-16.0,y=-2.0,r=0.54],(Node1255[a=-1.0,b=1.0,x=-16.0,y=-1.0,r=0.63],Node1254[a=-1.0,b=-1.0,x=-16.0,y=-3.0,r=1.07])Node1161[a=0.0,b=-1.0,x=-15.0,y=-2.0,r=1.23])Node1056[a=-1.0,b=-1.0,x=-15.0,y=-1.0,r=1.05],(Node1160[a=-1.0,b=-1.0,x=-16.0,y=0.0,r=1.02])Node1055[a=-1.0,b=1.0,x=-15.0,y=1.0,r=1.28])Node860[a=-1.0,b=-1.0,x=-14.0,y=0.0,r=1.28])Node775[a=-1.0,b=1.0,x=-13.0,y=1.0,r=1.42])Node625[a=-1.0,b=-1.0,x=-12.0,y=0.0,r=0.95])Node558[a=-1.0,b=0.0,x=-11.0,y=1.0,r=1.48])Node405[a=-1.0,b=1.0,x=-10.0,y=1.0,r=1.24])Node345[a=-1.0,b=-1.0,x=-9.0,y=0.0,r=0.86],(Node484[a=-1.0,b=1.0,x=-10.0,y=2.0,r=0.79],((((((Node1054[a=-1.0,b=1.0,x=-14.0,y=-3.0,r=1.19],((((Node1468[a=-1.0,b=0.0,x=-17.0,y=-6.0,r=1.19])Node1357[a=0.0,b=-1.0,x=-16.0,y=-6.0,r=0.95])Node1253[a=-1.0,b=-1.0,x=-16.0,y=-5.0,r=0.71])Node1159[a=-1.0,b=0.0,x=-15.0,y=-4.0,r=1.43])Node1053[a=-1.0,b=0.0,x=-14.0,y=-4.0,r=0.62])Node954[a=0.0,b=-1.0,x=-13.0,y=-4.0,r=0.53])Node859[a=-1.0,b=-1.0,x=-13.0,y=-3.0,r=0.63])Node774[a=-1.0,b=-1.0,x=-12.0,y=-2.0,r=0.58],(Node858[a=-1.0,b=1.0,x=-13.0,y=0.0,r=1.37])Node773[a=-1.0,b=0.0,x=-12.0,y=-1.0,r=1.32])Node624[a=0.0,b=-1.0,x=-11.0,y=-1.0,r=0.68])Node557[a=-1.0,b=0.0,x=-11.0,y=0.0,r=1.0])Node483[a=-1.0,b=-1.0,x=-10.0,y=0.0,r=0.77])Node344[a=-1.0,b=0.0,x=-9.0,y=1.0,r=0.67])Node288[a=0.0,b=1.0,x=-8.0,y=1.0,r=0.73])Node236[a=-1.0,b=-1.0,x=-8.0,y=0.0,r=0.77],((Node482[a=1.0,b=-1.0,x=-6.0,y=-2.0,r=1.18])Node287[a=-1.0,b=-1.0,x=-7.0,y=-1.0,r=0.91],(((Node481[a=-1.0,b=0.0,x=-9.0,y=-2.0,r=0.71],((((((Node1252[a=-1.0,b=-1.0,x=-15.0,y=-3.0,r=0.96])Node1158[a=-1.0,b=0.0,x=-14.0,y=-2.0,r=1.01])Node1052[a=-1.0,b=1.0,x=-13.0,y=-2.0,r=0.77])Node953[a=-1.0,b=-1.0,x=-12.0,y=-3.0,r=1.11])Node772[a=-1.0,b=-1.0,x=-11.0,y=-2.0,r=1.3])Node556[a=-1.0,b=0.0,x=-10.0,y=-1.0,r=0.93])Node480[a=-1.0,b=1.0,x=-9.0,y=-1.0,r=1.1])Node404[a=0.0,b=-1.0,x=-8.0,y=-2.0,r=1.23])Node343[a=-1.0,b=-1.0,x=-8.0,y=-1.0,r=0.92])Node286[a=-1.0,b=0.0,x=-7.0,y=0.0,r=1.39])Node235[a=1.0,b=-1.0,x=-6.0,y=0.0,r=1.37])Node193[a=-1.0,b=-1.0,x=-7.0,y=1.0,r=0.8])Node154[a=0.0,b=-1.0,x=-6.0,y=2.0,r=0.67])Node128[a=-1.0,b=1.0,x=-6.0,y=3.0,r=1.35])Node89[a=-1.0,b=0.0,x=-5.0,y=2.0,r=1.01])Node35[a=0.0,b=1.0,x=-4.0,y=2.0,r=0.65])Node26[a=0.0,b=1.0,x=-4.0,y=1.0,r=0.59])Node16[a=-1.0,b=-1.0,x=-4.0,y=0.0,r=0.75],((Node192[a=0.0,b=-1.0,x=-1.0,y=-2.0,r=0.73],(Node234[a=-1.0,b=-1.0,x=-1.0,y=-3.0,r=1.43])Node191[a=1.0,b=-1.0,x=0.0,y=-2.0,r=0.66])Node153[a=1.0,b=-1.0,x=-1.0,y=-1.0,r=1.11])Node15[a=1.0,b=-1.0,x=-2.0,y=0.0,r=1.24])Node10[a=-1.0,b=-1.0,x=-3.0,y=1.0,r=1.48])Node4[a=-1.0,b=1.0,x=-2.0,y=2.0,r=0.52],(((((Node45[a=1.0,b=-1.0,x=5.0,y=2.0,r=0.55])Node34[a=1.0,b=0.0,x=4.0,y=3.0,r=0.71])Node25[a=1.0,b=1.0,x=3.0,y=3.0,r=1.28])Node9[a=1.0,b=1.0,x=2.0,y=2.0,r=0.82],(((((((((((((Node479[a=-1.0,b=0.0,x=12.0,y=-1.0,r=0.79],(((((((Node1157[a=1.0,b=0.0,x=20.0,y=-1.0,r=0.78],(((Node1599[a=0.0,b=-1.0,x=22.0,y=-4.0,r=0.57],Node1598[a=1.0,b=-1.0,x=23.0,y=-4.0,r=1.33])Node1356[a=1.0,b=0.0,x=22.0,y=-3.0,r=0.54])Node1251[a=1.0,b=-1.0,x=21.0,y=-3.0,r=0.97],Node1250[a=1.0,b=0.0,x=21.0,y=-2.0,r=1.0])Node1156[a=1.0,b=-1.0,x=20.0,y=-2.0,r=1.19])Node1051[a=1.0,b=0.0,x=19.0,y=-1.0,r=0.62])Node952[a=1.0,b=1.0,x=18.0,y=-1.0,r=0.95])Node771[a=1.0,b=0.0,x=17.0,y=-2.0,r=0.82],Node770[a=1.0,b=1.0,x=17.0,y=-1.0,r=1.47])Node698[a=1.0,b=-1.0,x=16.0,y=-2.0,r=1.08])Node623[a=1.0,b=-1.0,x=15.0,y=-1.0,r=0.59],Node622[a=1.0,b=1.0,x=15.0,y=1.0,r=1.22])Node555[a=1.0,b=0.0,x=14.0,y=0.0,r=0.82],((Node697[a=1.0,b=0.0,x=16.0,y=0.0,r=0.66],((Node857[a=1.0,b=1.0,x=18.0,y=1.0,r=0.78])Node769[a=1.0,b=1.0,x=17.0,y=0.0,r=0.51])Node696[a=1.0,b=-1.0,x=16.0,y=-1.0,r=1.16])Node621[a=1.0,b=-1.0,x=15.0,y=0.0,r=0.61],(Node695[a=1.0,b=0.0,x=16.0,y=2.0,r=1.07],(((((((Node1737[a=1.0,b=0.0,x=22.0,y=6.0,r=0.8])Node1467[a=1.0,b=1.0,x=21.0,y=6.0,r=1.49])Node1355[a=1.0,b=1.0,x=20.0,y=5.0,r=1.12])Node1155[a=1.0,b=0.0,x=19.0,y=4.0,r=1.38])Node1050[a=1.0,b=1.0,x=18.0,y=4.0,r=0.53])Node856[a=0.0,b=1.0,x=17.0,y=3.0,r=1.31],(((Node1466[a=1.0,b=1.0,x=21.0,y=5.0,r=1.16])Node1249[a=1.0,b=1.0,x=20.0,y=4.0,r=1.39])Node1154[a=1.0,b=0.0,x=19.0,y=3.0,r=0.75])Node855[a=1.0,b=1.0,x=18.0,y=3.0,r=1.08])Node768[a=1.0,b=1.0,x=17.0,y=2.0,r=0.94],((((Node1248[a=1.0,b=-1.0,x=21.0,y=0.0,r=0.95])Node1049[a=1.0,b=0.0,x=20.0,y=1.0,r=1.15],((((Node1736[a=1.0,b=1.0,x=24.0,y=3.0,r=0.69])Node1465[a=1.0,b=1.0,x=23.0,y=2.0,r=1.22],Node1464[a=0.0,b=1.0,x=22.0,y=2.0,r=1.2])Node1354[a=1.0,b=0.0,x=22.0,y=1.0,r=1.44],(((Node1882[a=1.0,b=1.0,x=25.0,y=3.0,r=1.38],((Node2347[a=0.0,b=1.0,x=26.0,y=4.0,r=1.39],((((Node3174[a=1.0,b=0.0,x=31.0,y=6.0,r=0.96],(Node3348[a=0.0,b=1.0,x=31.0,y=8.0,r=1.22],(Node3524[a=0.0,b=1.0,x=32.0,y=8.0,r=1.31],Node3523[a=1.0,b=1.0,x=33.0,y=8.0,r=1.21])Node3347[a=1.0,b=0.0,x=32.0,y=7.0,r=1.02])Node3173[a=1.0,b=1.0,x=31.0,y=7.0,r=0.86])Node3000[a=1.0,b=0.0,x=30.0,y=6.0,r=1.23],(((Node3687[a=1.0,b=1.0,x=33.0,y=7.0,r=1.37])Node3346[a=1.0,b=1.0,x=32.0,y=6.0,r=0.65])Node3172[a=1.0,b=0.0,x=31.0,y=5.0,r=1.03])Node2999[a=1.0,b=-1.0,x=30.0,y=5.0,r=0.84])Node2827[a=1.0,b=1.0,x=29.0,y=6.0,r=0.94])Node2666[a=1.0,b=1.0,x=28.0,y=5.0,r=0.63])Node2346[a=1.0,b=1.0,x=27.0,y=4.0,r=0.9])Node2036[a=1.0,b=1.0,x=26.0,y=3.0,r=0.88])Node1881[a=1.0,b=0.0,x=25.0,y=2.0,r=1.44])Node1597[a=1.0,b=1.0,x=24.0,y=2.0,r=0.95])Node1463[a=1.0,b=1.0,x=23.0,y=1.0,r=0.97],(((((Node2511[a=1.0,b=-1.0,x=28.0,y=2.0,r=0.8])Node2190[a=1.0,b=1.0,x=27.0,y=3.0,r=1.16])Node1880[a=1.0,b=1.0,x=26.0,y=2.0,r=1.18])Node1735[a=1.0,b=0.0,x=25.0,y=1.0,r=1.12])Node1596[a=1.0,b=1.0,x=24.0,y=1.0,r=1.43])Node1462[a=1.0,b=0.0,x=23.0,y=0.0,r=1.23])Node1353[a=1.0,b=-1.0,x=22.0,y=0.0,r=0.92])Node1247[a=1.0,b=1.0,x=21.0,y=1.0,r=1.12],(((((Node2035[a=1.0,b=0.0,x=25.0,y=-3.0,r=1.05])Node1879[a=0.0,b=1.0,x=24.0,y=-3.0,r=0.84],(((((Node2665[a=1.0,b=0.0,x=28.0,y=-7.0,r=1.0],Node2664[a=0.0,b=-1.0,x=27.0,y=-8.0,r=1.29])Node2510[a=-1.0,b=-1.0,x=27.0,y=-7.0,r=0.57],((((((Node3686[a=1.0,b=0.0,x=34.0,y=-10.0,r=1.23])Node3522[a=1.0,b=-1.0,x=33.0,y=-10.0,r=1.01])Node3345[a=1.0,b=-1.0,x=32.0,y=-9.0,r=1.2])Node3171[a=1.0,b=0.0,x=31.0,y=-8.0,r=1.29])Node2826[a=1.0,b=0.0,x=30.0,y=-8.0,r=1.34],(((Node3685[a=1.0,b=-1.0,x=33.0,y=-11.0,r=0.51])Node3170[a=1.0,b=-1.0,x=32.0,y=-10.0,r=1.01])Node2998[a=1.0,b=0.0,x=31.0,y=-9.0,r=1.31],Node2997[a=1.0,b=-1.0,x=31.0,y=-10.0,r=0.72])Node2825[a=1.0,b=-1.0,x=30.0,y=-9.0,r=1.32])Node2663[a=0.0,b=-1.0,x=29.0,y=-8.0,r=0.93],((((Node3684[a=1.0,b=0.0,x=34.0,y=-8.0,r=0.61])Node3521[a=1.0,b=-1.0,x=33.0,y=-8.0,r=0.84])Node3344[a=1.0,b=-1.0,x=32.0,y=-7.0,r=0.5])Node2996[a=1.0,b=0.0,x=31.0,y=-6.0,r=1.06],((((Node3683[a=1.0,b=0.0,x=35.0,y=-6.0,r=1.45],Node3682[a=1.0,b=-1.0,x=35.0,y=-7.0,r=1.43])Node3520[a=1.0,b=1.0,x=34.0,y=-6.0,r=0.63])Node3343[a=1.0,b=-1.0,x=33.0,y=-7.0,r=0.53])Node3169[a=1.0,b=1.0,x=32.0,y=-6.0,r=1.33],((Node3519[a=1.0,b=0.0,x=34.0,y=-9.0,r=0.93])Node3342[a=1.0,b=-1.0,x=33.0,y=-9.0,r=0.96])Node3168[a=1.0,b=-1.0,x=32.0,y=-8.0,r=0.75])Node2995[a=1.0,b=-1.0,x=31.0,y=-7.0,r=0.82])Node2662[a=1.0,b=1.0,x=30.0,y=-6.0,r=1.06])Node2509[a=1.0,b=-1.0,x=29.0,y=-7.0,r=1.08])Node2345[a=1.0,b=-1.0,x=28.0,y=-6.0,r=1.28])Node2189[a=1.0,b=-1.0,x=27.0,y=-5.0,r=1.4])Node2034[a=1.0,b=0.0,x=26.0,y=-4.0,r=1.01])Node1878[a=1.0,b=0.0,x=25.0,y=-4.0,r=0.89])Node1734[a=1.0,b=-1.0,x=24.0,y=-4.0,r=1.06])Node1595[a=1.0,b=-1.0,x=23.0,y=-3.0,r=0.97])Node1352[a=1.0,b=-1.0,x=22.0,y=-2.0,r=1.46],((((((Node2188[a=-1.0,b=-1.0,x=26.0,y=-2.0,r=0.99],Node2187[a=1.0,b=0.0,x=28.0,y=-1.0,r=0.75])Node2033[a=1.0,b=-1.0,x=27.0,y=-1.0,r=1.09],((Node2661[a=1.0,b=1.0,x=28.0,y=3.0,r=1.34])Node2186[a=0.0,b=1.0,x=27.0,y=2.0,r=0.63])Node2032[a=1.0,b=1.0,x=27.0,y=1.0,r=1.39])Node1877[a=1.0,b=0.0,x=26.0,y=0.0,r=0.6],(((Node2344[a=1.0,b=1.0,x=29.0,y=1.0,r=0.82],((((Node3341[a=1.0,b=1.0,x=33.0,y=4.0,r=0.8])Node3167[a=1.0,b=1.0,x=32.0,y=3.0,r=0.83])Node2824[a=1.0,b=1.0,x=31.0,y=2.0,r=1.29],Node2823[a=0.0,b=1.0,x=30.0,y=2.0,r=0.69])Node2660[a=1.0,b=1.0,x=30.0,y=1.0,r=0.57],(Node2822[a=1.0,b=1.0,x=29.0,y=2.0,r=0.73])Node2659[a=-1.0,b=1.0,x=28.0,y=1.0,r=1.11])Node2343[a=1.0,b=0.0,x=29.0,y=0.0,r=1.12])Node2185[a=1.0,b=0.0,x=28.0,y=0.0,r=1.39])Node2031[a=1.0,b=-1.0,x=27.0,y=0.0,r=1.4])Node1876[a=1.0,b=1.0,x=26.0,y=1.0,r=1.07])Node1733[a=1.0,b=0.0,x=25.0,y=0.0,r=1.17],((((((((((((Node3681[a=1.0,b=1.0,x=35.0,y=-1.0,r=0.97])Node3518[a=1.0,b=-1.0,x=34.0,y=-2.0,r=1.1],(Node3680[a=1.0,b=1.0,x=34.0,y=-1.0,r=1.41])Node3517[a=0.0,b=-1.0,x=33.0,y=-2.0,r=1.34])Node3340[a=0.0,b=-1.0,x=33.0,y=-1.0,r=0.57])Node3166[a=1.0,b=-1.0,x=33.0,y=0.0,r=1.45])Node2994[a=1.0,b=0.0,x=32.0,y=1.0,r=0.76],(Node3165[a=-1.0,b=1.0,x=31.0,y=3.0,r=1.1],(Node3339[a=1.0,b=0.0,x=34.0,y=3.0,r=0.54],((Node3679[a=1.0,b=0.0,x=35.0,y=1.0,r=0.62])Node3516[a=1.0,b=-1.0,x=34.0,y=1.0,r=1.5])Node3338[a=0.0,b=-1.0,x=33.0,y=2.0,r=1.4])Node3164[a=1.0,b=1.0,x=33.0,y=3.0,r=1.09])Node2993[a=1.0,b=1.0,x=32.0,y=2.0,r=0.74])Node2821[a=1.0,b=1.0,x=31.0,y=1.0,r=1.45])Node2658[a=1.0,b=1.0,x=30.0,y=0.0,r=0.71],((Node3337[a=1.0,b=-1.0,x=32.0,y=-2.0,r=1.37])Node2820[a=1.0,b=0.0,x=31.0,y=-1.0,r=1.01],Node2819[a=1.0,b=1.0,x=31.0,y=0.0,r=0.73])Node2657[a=1.0,b=0.0,x=30.0,y=-1.0,r=0.52])Node2508[a=1.0,b=1.0,x=29.0,y=-1.0,r=0.61])Node2342[a=1.0,b=1.0,x=28.0,y=-2.0,r=1.24])Node2184[a=0.0,b=-1.0,x=27.0,y=-3.0,r=1.33],((((((((Node3678[a=1.0,b=1.0,x=35.0,y=-2.0,r=0.87],Node3677[a=1.0,b=-1.0,x=35.0,y=-4.0,r=0.58])Node3515[a=0.0,b=1.0,x=34.0,y=-3.0,r=1.39],(Node3676[a=1.0,b=1.0,x=36.0,y=-2.0,r=1.29])Node3514[a=1.0,b=1.0,x=35.0,y=-3.0,r=1.44])Node3163[a=1.0,b=0.0,x=34.0,y=-4.0,r=1.49])Node2992[a=1.0,b=-1.0,x=33.0,y=-4.0,r=0.96])Node2818[a=1.0,b=1.0,x=32.0,y=-3.0,r=0.68])Node2656[a=1.0,b=0.0,x=31.0,y=-4.0,r=1.09],((((Node3513[a=1.0,b=1.0,x=33.0,y=1.0,r=1.24])Node3162[a=0.0,b=1.0,x=32.0,y=0.0,r=0.98])Node2991[a=1.0,b=1.0,x=32.0,y=-1.0,r=0.95])Node2817[a=1.0,b=1.0,x=31.0,y=-2.0,r=0.95])Node2655[a=0.0,b=1.0,x=30.0,y=-3.0,r=0.8])Node2507[a=1.0,b=0.0,x=30.0,y=-4.0,r=1.42])Node2341[a=1.0,b=-1.0,x=29.0,y=-4.0,r=1.17],Node2340[a=1.0,b=1.0,x=29.0,y=-2.0,r=0.85])Node2183[a=1.0,b=-1.0,x=28.0,y=-3.0,r=1.45])Node2030[a=1.0,b=-1.0,x=27.0,y=-2.0,r=0.9])Node1875[a=1.0,b=0.0,x=26.0,y=-1.0,r=1.45])Node1732[a=1.0,b=-1.0,x=25.0,y=-1.0,r=0.73])Node1594[a=1.0,b=1.0,x=24.0,y=0.0,r=1.28],(((Node2029[a=1.0,b=-1.0,x=26.0,y=-3.0,r=1.22],Node2028[a=-1.0,b=1.0,x=24.0,y=-1.0,r=1.06])Node1874[a=1.0,b=0.0,x=25.0,y=-2.0,r=0.73])Node1731[a=1.0,b=0.0,x=24.0,y=-2.0,r=1.16])Node1593[a=0.0,b=-1.0,x=23.0,y=-2.0,r=1.41])Node1461[a=1.0,b=0.0,x=23.0,y=-1.0,r=0.99])Node1351[a=1.0,b=0.0,x=22.0,y=-1.0,r=1.35])Node1246[a=1.0,b=-1.0,x=21.0,y=-1.0,r=0.83])Node1048[a=1.0,b=-1.0,x=20.0,y=0.0,r=0.5])Node951[a=1.0,b=-1.0,x=19.0,y=1.0,r=0.7],((((Node1873[a=1.0,b=1.0,x=23.0,y=6.0,r=1.34])Node1730[a=1.0,b=1.0,x=22.0,y=5.0,r=0.79])Node1460[a=1.0,b=1.0,x=21.0,y=4.0,r=0.96])Node1245[a=1.0,b=1.0,x=20.0,y=3.0,r=1.29],(((((Node1872[a=1.0,b=1.0,x=24.0,y=5.0,r=1.19])Node1729[a=0.0,b=1.0,x=23.0,y=4.0,r=0.75],(((((Node2816[a=1.0,b=-1.0,x=29.0,y=5.0,r=0.69],Node2815[a=1.0,b=1.0,x=29.0,y=7.0,r=0.74])Node2654[a=1.0,b=1.0,x=28.0,y=6.0,r=0.91],((((((Node3675[a=1.0,b=1.0,x=34.0,y=7.0,r=0.6])Node3512[a=1.0,b=1.0,x=33.0,y=6.0,r=0.91])Node3336[a=1.0,b=1.0,x=32.0,y=5.0,r=1.3],((Node3674[a=1.0,b=-1.0,x=34.0,y=4.0,r=0.94])Node3511[a=1.0,b=1.0,x=33.0,y=5.0,r=0.59])Node3335[a=1.0,b=0.0,x=32.0,y=4.0,r=0.65])Node3161[a=1.0,b=0.0,x=31.0,y=4.0,r=0.62])Node2990[a=1.0,b=1.0,x=30.0,y=4.0,r=0.91],Node2989[a=1.0,b=0.0,x=30.0,y=3.0,r=1.04])Node2814[a=1.0,b=-1.0,x=29.0,y=3.0,r=1.27],Node2813[a=1.0,b=0.0,x=29.0,y=4.0,r=0.95])Node2653[a=1.0,b=-1.0,x=28.0,y=4.0,r=0.75])Node2506[a=1.0,b=0.0,x=27.0,y=5.0,r=1.47])Node2339[a=1.0,b=1.0,x=26.0,y=5.0,r=1.16])Node2027[a=1.0,b=0.0,x=25.0,y=4.0,r=0.64],(Node2182[a=1.0,b=1.0,x=26.0,y=6.0,r=0.66])Node2026[a=1.0,b=1.0,x=25.0,y=5.0,r=0.63])Node1728[a=1.0,b=1.0,x=24.0,y=4.0,r=0.65])Node1592[a=1.0,b=0.0,x=23.0,y=3.0,r=1.34],(((((Node2652[a=1.0,b=-1.0,x=27.0,y=6.0,r=0.53],Node2651[a=1.0,b=0.0,x=27.0,y=7.0,r=0.53])Node2505[a=1.0,b=1.0,x=26.0,y=7.0,r=0.83])Node2181[a=1.0,b=0.0,x=25.0,y=6.0,r=0.68])Node2025[a=1.0,b=1.0,x=24.0,y=6.0,r=1.33])Node1871[a=1.0,b=1.0,x=23.0,y=5.0,r=1.31])Node1591[a=0.0,b=1.0,x=22.0,y=4.0,r=1.25])Node1459[a=1.0,b=1.0,x=22.0,y=3.0,r=1.42],Node1458[a=0.0,b=1.0,x=21.0,y=3.0,r=0.74])Node1350[a=1.0,b=0.0,x=21.0,y=2.0,r=1.45])Node1244[a=1.0,b=0.0,x=20.0,y=2.0,r=0.94])Node950[a=1.0,b=0.0,x=19.0,y=2.0,r=1.14])Node854[a=1.0,b=1.0,x=18.0,y=2.0,r=1.22],(Node1047[a=1.0,b=0.0,x=19.0,y=0.0,r=0.59])Node853[a=1.0,b=-1.0,x=18.0,y=0.0,r=1.01])Node767[a=1.0,b=0.0,x=17.0,y=1.0,r=1.28])Node694[a=1.0,b=-1.0,x=16.0,y=1.0,r=1.26])Node620[a=1.0,b=1.0,x=15.0,y=2.0,r=0.91])Node554[a=1.0,b=1.0,x=14.0,y=1.0,r=0.58])Node478[a=0.0,b=1.0,x=13.0,y=0.0,r=1.07])Node403[a=1.0,b=1.0,x=13.0,y=-1.0,r=0.81])Node342[a=1.0,b=0.0,x=12.0,y=-2.0,r=1.23],(Node477[a=-1.0,b=0.0,x=10.0,y=-1.0,r=0.51],Node476[a=1.0,b=1.0,x=12.0,y=0.0,r=1.22])Node341[a=0.0,b=1.0,x=11.0,y=-1.0,r=0.81])Node285[a=1.0,b=1.0,x=11.0,y=-2.0,r=0.8])Node190[a=1.0,b=-1.0,x=10.0,y=-3.0,r=0.73],(Node553[a=-1.0,b=1.0,x=9.0,y=-1.0,r=1.13])Node189[a=1.0,b=0.0,x=10.0,y=-2.0,r=1.32])Node127[a=1.0,b=-1.0,x=9.0,y=-2.0,r=1.28])Node104[a=0.0,b=-1.0,x=8.0,y=-1.0,r=1.1])Node88[a=1.0,b=1.0,x=8.0,y=0.0,r=0.79])Node70[a=1.0,b=0.0,x=7.0,y=-1.0,r=0.69])Node57[a=1.0,b=-1.0,x=6.0,y=-1.0,r=1.16])Node44[a=1.0,b=0.0,x=5.0,y=0.0,r=0.62],((Node87[a=-1.0,b=0.0,x=4.0,y=-2.0,r=0.54],((((Node188[a=-1.0,b=1.0,x=0.0,y=-1.0,r=0.94],Node187[a=0.0,b=1.0,x=1.0,y=-1.0,r=1.06])Node152[a=-1.0,b=1.0,x=1.0,y=-2.0,r=1.44])Node126[a=-1.0,b=0.0,x=2.0,y=-3.0,r=1.47],(Node233[a=0.0,b=-1.0,x=2.0,y=-5.0,r=0.61])Node125[a=-1.0,b=-1.0,x=2.0,y=-4.0,r=1.22])Node103[a=-1.0,b=0.0,x=3.0,y=-3.0,r=1.26])Node86[a=-1.0,b=-1.0,x=4.0,y=-3.0,r=1.01])Node56[a=1.0,b=-1.0,x=5.0,y=-2.0,r=0.91],(((((Node151[a=0.0,b=-1.0,x=3.0,y=-5.0,r=0.53])Node124[a=-1.0,b=0.0,x=3.0,y=-4.0,r=0.84])Node102[a=-1.0,b=-1.0,x=4.0,y=-4.0,r=1.38],(((Node186[a=0.0,b=-1.0,x=8.0,y=-5.0,r=1.29],(((((((Node693[a=-1.0,b=-1.0,x=11.0,y=-11.0,r=1.29])Node552[a=1.0,b=-1.0,x=12.0,y=-10.0,r=1.18],((((Node1153[a=1.0,b=0.0,x=13.0,y=-9.0,r=1.34])Node766[a=-1.0,b=1.0,x=12.0,y=-9.0,r=0.82],((Node1152[a=1.0,b=-1.0,x=15.0,y=-12.0,r=1.42],(Node1243[a=1.0,b=-1.0,x=16.0,y=-12.0,r=0.61])Node1151[a=1.0,b=0.0,x=15.0,y=-11.0,r=1.11])Node1046[a=1.0,b=0.0,x=14.0,y=-11.0,r=0.56],(Node1150[a=0.0,b=1.0,x=14.0,y=-9.0,r=0.61],((((Node1590[a=1.0,b=0.0,x=19.0,y=-11.0,r=1.33])Node1457[a=1.0,b=1.0,x=18.0,y=-11.0,r=0.79])Node1349[a=1.0,b=-1.0,x=17.0,y=-12.0,r=0.9])Node1242[a=1.0,b=-1.0,x=16.0,y=-11.0,r=0.78])Node1149[a=1.0,b=0.0,x=15.0,y=-10.0,r=1.03])Node1045[a=1.0,b=1.0,x=14.0,y=-10.0,r=1.42])Node765[a=0.0,b=-1.0,x=13.0,y=-11.0,r=0.91])Node692[a=1.0,b=1.0,x=13.0,y=-10.0,r=1.49],((((Node1148[a=1.0,b=1.0,x=14.0,y=-12.0,r=1.5])Node949[a=1.0,b=1.0,x=13.0,y=-13.0,r=0.71],(Node1147[a=1.0,b=1.0,x=14.0,y=-14.0,r=1.32],(Node1241[a=0.0,b=1.0,x=14.0,y=-15.0,r=1.31])Node1146[a=1.0,b=-1.0,x=14.0,y=-16.0,r=0.96])Node948[a=1.0,b=-1.0,x=13.0,y=-15.0,r=0.94])Node852[a=0.0,b=-1.0,x=12.0,y=-14.0,r=1.42],(((((Node1589[a=0.0,b=-1.0,x=15.0,y=-15.0,r=1.19],(((((Node2338[a=-1.0,b=-1.0,x=19.0,y=-19.0,r=0.52],(Node2504[a=0.0,b=-1.0,x=21.0,y=-20.0,r=0.75],((Node2812[a=-1.0,b=-1.0,x=22.0,y=-22.0,r=0.91],((Node3673[a=1.0,b=-1.0,x=25.0,y=-24.0,r=0.57])Node3334[a=0.0,b=-1.0,x=24.0,y=-23.0,r=0.9],Node3333[a=1.0,b=-1.0,x=25.0,y=-23.0,r=1.25])Node2811[a=1.0,b=-1.0,x=24.0,y=-22.0,r=1.4])Node2650[a=1.0,b=-1.0,x=23.0,y=-21.0,r=0.71],(((Node3332[a=1.0,b=-1.0,x=24.0,y=-24.0,r=1.04])Node2988[a=0.0,b=-1.0,x=23.0,y=-23.0,r=1.15])Node2810[a=1.0,b=-1.0,x=23.0,y=-22.0,r=1.43])Node2649[a=0.0,b=-1.0,x=22.0,y=-21.0,r=0.57])Node2503[a=1.0,b=-1.0,x=22.0,y=-20.0,r=0.65])Node2337[a=1.0,b=-1.0,x=21.0,y=-19.0,r=0.85])Node2180[a=1.0,b=-1.0,x=20.0,y=-18.0,r=0.54])Node2024[a=1.0,b=-1.0,x=19.0,y=-17.0,r=0.57])Node1870[a=1.0,b=0.0,x=18.0,y=-16.0,r=1.05])Node1727[a=1.0,b=-1.0,x=17.0,y=-16.0,r=0.66],Node1726[a=-1.0,b=-1.0,x=15.0,y=-16.0,r=0.58])Node1588[a=1.0,b=-1.0,x=16.0,y=-15.0,r=0.74])Node1456[a=-1.0,b=-1.0,x=15.0,y=-14.0,r=0.94])Node1240[a=1.0,b=0.0,x=16.0,y=-13.0,r=0.73])Node1145[a=1.0,b=0.0,x=15.0,y=-13.0,r=1.17])Node1044[a=1.0,b=1.0,x=14.0,y=-13.0,r=1.05])Node851[a=1.0,b=-1.0,x=13.0,y=-14.0,r=1.16])Node764[a=-1.0,b=-1.0,x=12.0,y=-13.0,r=1.38])Node691[a=1.0,b=-1.0,x=13.0,y=-12.0,r=1.4])Node619[a=1.0,b=-1.0,x=12.0,y=-11.0,r=1.23])Node551[a=0.0,b=-1.0,x=11.0,y=-10.0,r=1.06])Node475[a=0.0,b=-1.0,x=11.0,y=-9.0,r=0.62])Node402[a=-1.0,b=0.0,x=11.0,y=-8.0,r=0.86])Node340[a=1.0,b=-1.0,x=12.0,y=-8.0,r=0.52])Node284[a=1.0,b=-1.0,x=11.0,y=-7.0,r=0.88],(((((((Node1043[a=0.0,b=-1.0,x=16.0,y=-8.0,r=1.04],(Node1144[a=1.0,b=-1.0,x=18.0,y=-9.0,r=1.18],Node1143[a=1.0,b=0.0,x=18.0,y=-8.0,r=1.37])Node1042[a=1.0,b=-1.0,x=17.0,y=-8.0,r=0.73])Node850[a=1.0,b=0.0,x=16.0,y=-7.0,r=1.33])Node763[a=0.0,b=-1.0,x=15.0,y=-7.0,r=1.24])Node690[a=1.0,b=-1.0,x=15.0,y=-6.0,r=0.81])Node474[a=1.0,b=1.0,x=14.0,y=-5.0,r=1.3])Node401[a=1.0,b=1.0,x=13.0,y=-6.0,r=1.47],(((((((((Node1587[a=1.0,b=-1.0,x=18.0,y=-14.0,r=0.9],(((Node2023[a=1.0,b=0.0,x=19.0,y=-15.0,r=1.36],((((((Node2987[a=1.0,b=0.0,x=24.0,y=-20.0,r=1.38],((Node3331[a=1.0,b=0.0,x=26.0,y=-21.0,r=1.3],(Node3510[a=0.0,b=-1.0,x=26.0,y=-23.0,r=0.69])Node3330[a=1.0,b=-1.0,x=26.0,y=-22.0,r=0.91])Node3160[a=1.0,b=0.0,x=25.0,y=-21.0,r=1.36],Node3159[a=1.0,b=-1.0,x=25.0,y=-22.0,r=1.45])Node2986[a=1.0,b=-1.0,x=24.0,y=-21.0,r=1.22])Node2809[a=1.0,b=-1.0,x=23.0,y=-20.0,r=0.94])Node2648[a=0.0,b=-1.0,x=22.0,y=-19.0,r=0.85])Node2502[a=1.0,b=-1.0,x=22.0,y=-18.0,r=1.44])Node2336[a=1.0,b=-1.0,x=21.0,y=-17.0,r=0.87])Node2179[a=1.0,b=0.0,x=20.0,y=-16.0,r=1.38])Node2022[a=1.0,b=-1.0,x=19.0,y=-16.0,r=1.11])Node1869[a=1.0,b=-1.0,x=18.0,y=-15.0,r=0.73],Node1868[a=0.0,b=-1.0,x=17.0,y=-15.0,r=1.31])Node1725[a=1.0,b=0.0,x=17.0,y=-14.0,r=1.4])Node1586[a=-1.0,b=-1.0,x=16.0,y=-14.0,r=1.22])Node1348[a=-1.0,b=-1.0,x=17.0,y=-13.0,r=1.32])Node1142[a=1.0,b=-1.0,x=18.0,y=-12.0,r=1.08])Node947[a=1.0,b=-1.0,x=17.0,y=-11.0,r=1.19])Node849[a=0.0,b=-1.0,x=16.0,y=-10.0,r=1.25],(Node946[a=0.0,b=1.0,x=17.0,y=-9.0,r=0.93],((Node1347[a=1.0,b=1.0,x=20.0,y=-8.0,r=0.9])Node1041[a=1.0,b=1.0,x=19.0,y=-9.0,r=0.89],(((Node1585[a=1.0,b=1.0,x=21.0,y=-9.0,r=1.36])Node1346[a=0.0,b=-1.0,x=20.0,y=-10.0,r=0.64],((((((Node2178[a=1.0,b=0.0,x=26.0,y=-11.0,r=1.4],(Node2335[a=1.0,b=0.0,x=26.0,y=-12.0,r=1.18],((Node2808[a=1.0,b=1.0,x=28.0,y=-12.0,r=1.27])Node2647[a=1.0,b=0.0,x=27.0,y=-13.0,r=1.3],(Node2807[a=1.0,b=0.0,x=28.0,y=-14.0,r=1.28])Node2646[a=1.0,b=-1.0,x=27.0,y=-14.0,r=0.55])Node2334[a=1.0,b=-1.0,x=26.0,y=-13.0,r=0.53])Node2177[a=0.0,b=-1.0,x=25.0,y=-12.0,r=0.69])Node2021[a=1.0,b=-1.0,x=25.0,y=-11.0,r=0.64])Node1867[a=1.0,b=1.0,x=24.0,y=-10.0,r=1.36],((((((Node3158[a=0.0,b=-1.0,x=28.0,y=-17.0,r=0.92],(((Node3672[a=1.0,b=-1.0,x=31.0,y=-20.0,r=1.45])Node3509[a=1.0,b=-1.0,x=30.0,y=-19.0,r=0.53])Node3329[a=0.0,b=-1.0,x=29.0,y=-18.0,r=0.68],(Node3508[a=1.0,b=1.0,x=31.0,y=-17.0,r=1.04])Node3328[a=1.0,b=-1.0,x=30.0,y=-18.0,r=1.06])Node3157[a=1.0,b=-1.0,x=29.0,y=-17.0,r=0.66])Node2985[a=1.0,b=-1.0,x=28.0,y=-16.0,r=1.44],((((Node3671[a=1.0,b=-1.0,x=32.0,y=-19.0,r=0.8],Node3670[a=0.0,b=-1.0,x=31.0,y=-19.0,r=1.37])Node3507[a=1.0,b=-1.0,x=31.0,y=-18.0,r=0.98])Node3327[a=1.0,b=-1.0,x=30.0,y=-17.0,r=0.59],(Node3506[a=1.0,b=0.0,x=31.0,y=-16.0,r=1.11],Node3505[a=0.0,b=1.0,x=30.0,y=-15.0,r=1.09])Node3326[a=1.0,b=0.0,x=30.0,y=-16.0,r=0.63])Node3156[a=1.0,b=-1.0,x=29.0,y=-16.0,r=1.31],((Node3669[a=1.0,b=-1.0,x=31.0,y=-15.0,r=0.68])Node3504[a=1.0,b=1.0,x=30.0,y=-14.0,r=1.17])Node3155[a=1.0,b=0.0,x=29.0,y=-15.0,r=0.69])Node2984[a=1.0,b=0.0,x=28.0,y=-15.0,r=1.18])Node2806[a=1.0,b=-1.0,x=27.0,y=-15.0,r=1.22])Node2501[a=1.0,b=-1.0,x=26.0,y=-14.0,r=1.36])Node2333[a=1.0,b=-1.0,x=25.0,y=-13.0,r=0.92])Node2020[a=0.0,b=-1.0,x=24.0,y=-12.0,r=0.59])Node1866[a=1.0,b=0.0,x=24.0,y=-11.0,r=1.35])Node1724[a=1.0,b=1.0,x=23.0,y=-11.0,r=1.22],((((Node2500[a=0.0,b=-1.0,x=24.0,y=-14.0,r=1.04],(Node2645[a=1.0,b=-1.0,x=26.0,y=-15.0,r=1.17])Node2499[a=1.0,b=-1.0,x=25.0,y=-14.0,r=0.61])Node2332[a=1.0,b=-1.0,x=24.0,y=-13.0,r=1.36])Node2176[a=1.0,b=1.0,x=23.0,y=-12.0,r=0.71],Node2175[a=1.0,b=0.0,x=23.0,y=-13.0,r=0.69])Node2019[a=1.0,b=0.0,x=22.0,y=-13.0,r=1.47])Node1723[a=-1.0,b=-1.0,x=21.0,y=-13.0,r=0.88])Node1584[a=1.0,b=-1.0,x=22.0,y=-12.0,r=1.19],(Node1722[a=1.0,b=1.0,x=23.0,y=-9.0,r=1.43])Node1583[a=1.0,b=1.0,x=22.0,y=-10.0,r=1.42])Node1455[a=0.0,b=-1.0,x=21.0,y=-11.0,r=1.25],((Node1865[a=-1.0,b=-1.0,x=18.0,y=-13.0,r=1.38])Node1582[a=-1.0,b=-1.0,x=19.0,y=-12.0,r=0.97],((((Node2174[a=1.0,b=-1.0,x=20.0,y=-15.0,r=1.36])Node2018[a=0.0,b=-1.0,x=19.0,y=-14.0,r=1.4])Node1864[a=-1.0,b=-1.0,x=19.0,y=-13.0,r=1.32])Node1721[a=-1.0,b=0.0,x=20.0,y=-12.0,r=1.08],((((Node2644[a=1.0,b=-1.0,x=24.0,y=-15.0,r=0.92])Node2331[a=1.0,b=0.0,x=23.0,y=-14.0,r=0.63])Node2017[a=1.0,b=0.0,x=22.0,y=-14.0,r=1.44],((Node2330[a=0.0,b=1.0,x=23.0,y=-15.0,r=0.99],(((Node2983[a=1.0,b=-1.0,x=27.0,y=-17.0,r=0.79],Node2982[a=1.0,b=0.0,x=27.0,y=-16.0,r=1.24])Node2805[a=1.0,b=-1.0,x=26.0,y=-16.0,r=0.71])Node2643[a=1.0,b=1.0,x=25.0,y=-15.0,r=1.47])Node2329[a=1.0,b=0.0,x=24.0,y=-16.0,r=0.9])Node2173[a=1.0,b=-1.0,x=23.0,y=-16.0,r=0.85],(((((Node3154[a=1.0,b=-1.0,x=25.0,y=-20.0,r=1.44],(((Node3668[a=0.0,b=-1.0,x=27.0,y=-22.0,r=0.57],Node3667[a=1.0,b=-1.0,x=28.0,y=-22.0,r=0.97])Node3503[a=1.0,b=-1.0,x=27.0,y=-21.0,r=1.0])Node3325[a=1.0,b=-1.0,x=26.0,y=-20.0,r=0.74])Node3153[a=1.0,b=0.0,x=25.0,y=-19.0,r=0.78])Node2981[a=1.0,b=0.0,x=24.0,y=-19.0,r=0.9])Node2642[a=0.0,b=-1.0,x=23.0,y=-19.0,r=1.31])Node2498[a=0.0,b=-1.0,x=23.0,y=-18.0,r=1.13],((Node2804[a=1.0,b=1.0,x=25.0,y=-16.0,r=0.84],((Node3324[a=1.0,b=-1.0,x=27.0,y=-20.0,r=0.91])Node3152[a=1.0,b=-1.0,x=26.0,y=-19.0,r=0.89])Node2803[a=1.0,b=-1.0,x=25.0,y=-18.0,r=0.75])Node2641[a=0.0,b=1.0,x=24.0,y=-17.0,r=0.95],(((((Node3666[a=1.0,b=-1.0,x=29.0,y=-21.0,r=1.39],Node3665[a=0.0,b=-1.0,x=28.0,y=-21.0,r=0.54])Node3502[a=1.0,b=-1.0,x=28.0,y=-20.0,r=0.83],(Node3664[a=1.0,b=-1.0,x=29.0,y=-20.0,r=0.93])Node3501[a=1.0,b=0.0,x=28.0,y=-19.0,r=0.81])Node3323[a=1.0,b=-1.0,x=27.0,y=-19.0,r=0.73])Node3151[a=0.0,b=-1.0,x=26.0,y=-18.0,r=0.74],(((Node3663[a=1.0,b=-1.0,x=30.0,y=-20.0,r=1.17])Node3500[a=1.0,b=-1.0,x=29.0,y=-19.0,r=0.75])Node3322[a=1.0,b=0.0,x=28.0,y=-18.0,r=1.16])Node3150[a=1.0,b=-1.0,x=27.0,y=-18.0,r=0.86])Node2802[a=1.0,b=0.0,x=26.0,y=-17.0,r=1.38])Node2640[a=1.0,b=1.0,x=25.0,y=-17.0,r=1.04])Node2497[a=1.0,b=-1.0,x=24.0,y=-18.0,r=1.09])Node2328[a=1.0,b=-1.0,x=23.0,y=-17.0,r=1.17])Node2172[a=0.0,b=-1.0,x=22.0,y=-16.0,r=1.19])Node2016[a=1.0,b=-1.0,x=22.0,y=-15.0,r=0.68])Node1863[a=1.0,b=-1.0,x=21.0,y=-14.0,r=1.21],(((Node2496[a=1.0,b=-1.0,x=22.0,y=-17.0,r=1.24])Node2327[a=0.0,b=-1.0,x=21.0,y=-16.0,r=1.21])Node2171[a=1.0,b=-1.0,x=21.0,y=-15.0,r=0.91])Node1862[a=0.0,b=-1.0,x=20.0,y=-14.0,r=1.02])Node1720[a=-1.0,b=-1.0,x=20.0,y=-13.0,r=0.74])Node1581[a=1.0,b=-1.0,x=21.0,y=-12.0,r=0.64])Node1454[a=-1.0,b=-1.0,x=20.0,y=-11.0,r=0.65])Node1345[a=1.0,b=-1.0,x=21.0,y=-10.0,r=1.11])Node1141[a=1.0,b=1.0,x=20.0,y=-9.0,r=1.06])Node1040[a=1.0,b=0.0,x=19.0,y=-10.0,r=1.06])Node945[a=1.0,b=0.0,x=18.0,y=-10.0,r=1.01])Node848[a=1.0,b=-1.0,x=17.0,y=-10.0,r=1.36])Node762[a=1.0,b=-1.0,x=16.0,y=-9.0,r=1.44])Node618[a=0.0,b=1.0,x=15.0,y=-8.0,r=0.98])Node550[a=1.0,b=-1.0,x=15.0,y=-9.0,r=0.99])Node473[a=1.0,b=0.0,x=14.0,y=-8.0,r=1.42])Node400[a=1.0,b=-1.0,x=13.0,y=-8.0,r=1.41])Node339[a=1.0,b=-1.0,x=12.0,y=-7.0,r=1.39])Node283[a=1.0,b=0.0,x=11.0,y=-6.0,r=0.77])Node232[a=1.0,b=-1.0,x=10.0,y=-6.0,r=1.19],(Node282[a=1.0,b=-1.0,x=10.0,y=-7.0,r=0.83])Node231[a=0.0,b=-1.0,x=9.0,y=-6.0,r=0.79])Node185[a=1.0,b=-1.0,x=9.0,y=-5.0,r=0.91])Node150[a=1.0,b=0.0,x=8.0,y=-4.0,r=0.58],(Node184[a=-1.0,b=1.0,x=7.0,y=-2.0,r=1.07],(((((Node472[a=1.0,b=1.0,x=14.0,y=-3.0,r=1.01],((Node617[a=0.0,b=1.0,x=15.0,y=-2.0,r=0.59],Node616[a=1.0,b=-1.0,x=16.0,y=-4.0,r=1.37])Node549[a=1.0,b=1.0,x=15.0,y=-3.0,r=1.05],((((((Node1239[a=1.0,b=-1.0,x=19.0,y=-8.0,r=0.56],(((((Node2326[a=-1.0,b=-1.0,x=22.0,y=-11.0,r=1.04])Node1861[a=1.0,b=-1.0,x=23.0,y=-10.0,r=0.55])Node1719[a=1.0,b=-1.0,x=22.0,y=-9.0,r=1.33])Node1580[a=1.0,b=-1.0,x=21.0,y=-8.0,r=0.83])Node1344[a=1.0,b=0.0,x=20.0,y=-7.0,r=0.58])Node1238[a=1.0,b=0.0,x=19.0,y=-7.0,r=1.33])Node1140[a=1.0,b=-1.0,x=18.0,y=-7.0,r=1.39])Node944[a=-1.0,b=-1.0,x=17.0,y=-6.0,r=1.43],(((((Node1453[a=1.0,b=0.0,x=22.0,y=-6.0,r=1.45],((((((((((((Node3499[a=0.0,b=-1.0,x=31.0,y=-13.0,r=1.05],(Node3662[a=1.0,b=0.0,x=33.0,y=-13.0,r=1.17],Node3661[a=1.0,b=1.0,x=33.0,y=-12.0,r=0.64])Node3498[a=1.0,b=-1.0,x=32.0,y=-13.0,r=1.41])Node3321[a=1.0,b=0.0,x=31.0,y=-12.0,r=1.05],(Node3497[a=1.0,b=-1.0,x=32.0,y=-12.0,r=0.82],Node3496[a=1.0,b=0.0,x=32.0,y=-11.0,r=1.48])Node3320[a=1.0,b=1.0,x=31.0,y=-11.0,r=1.43])Node3149[a=1.0,b=1.0,x=30.0,y=-12.0,r=1.22],(((Node3660[a=1.0,b=0.0,x=32.0,y=-14.0,r=1.17])Node3495[a=1.0,b=-1.0,x=31.0,y=-14.0,r=0.95])Node3319[a=1.0,b=1.0,x=30.0,y=-13.0,r=1.49])Node3148[a=0.0,b=-1.0,x=29.0,y=-14.0,r=0.69])Node2980[a=1.0,b=0.0,x=29.0,y=-13.0,r=1.17])Node2801[a=1.0,b=-1.0,x=28.0,y=-13.0,r=0.69])Node2495[a=0.0,b=-1.0,x=27.0,y=-12.0,r=1.28],(Node2979[a=1.0,b=1.0,x=29.0,y=-10.0,r=0.5])Node2494[a=1.0,b=0.0,x=28.0,y=-11.0,r=0.58])Node2325[a=1.0,b=-1.0,x=27.0,y=-11.0,r=1.19])Node2170[a=1.0,b=0.0,x=26.0,y=-10.0,r=0.51])Node2015[a=1.0,b=-1.0,x=25.0,y=-10.0,r=1.38])Node1860[a=1.0,b=-1.0,x=24.0,y=-9.0,r=1.27],(Node2014[a=1.0,b=-1.0,x=25.0,y=-9.0,r=0.67])Node1859[a=1.0,b=0.0,x=24.0,y=-8.0,r=1.39])Node1718[a=0.0,b=-1.0,x=23.0,y=-8.0,r=1.14])Node1579[a=1.0,b=0.0,x=23.0,y=-7.0,r=0.77],(Node1717[a=1.0,b=-1.0,x=24.0,y=-7.0,r=0.83],(Node1858[a=1.0,b=0.0,x=25.0,y=-5.0,r=1.42])Node1716[a=1.0,b=1.0,x=24.0,y=-5.0,r=1.11])Node1578[a=1.0,b=1.0,x=23.0,y=-6.0,r=0.93])Node1452[a=1.0,b=-1.0,x=22.0,y=-7.0,r=0.56])Node1343[a=1.0,b=-1.0,x=21.0,y=-6.0,r=1.28])Node1237[a=0.0,b=-1.0,x=20.0,y=-5.0,r=1.38],(((((((((Node2800[a=1.0,b=-1.0,x=30.0,y=-7.0,r=0.73])Node2493[a=1.0,b=-1.0,x=29.0,y=-6.0,r=0.59])Node2324[a=1.0,b=-1.0,x=28.0,y=-5.0,r=1.07],((((((Node3659[a=1.0,b=-1.0,x=34.0,y=-7.0,r=1.16])Node3494[a=1.0,b=-1.0,x=33.0,y=-6.0,r=0.69])Node3318[a=1.0,b=0.0,x=32.0,y=-5.0,r=0.72])Node2978[a=1.0,b=0.0,x=31.0,y=-5.0,r=1.05])Node2799[a=1.0,b=0.0,x=30.0,y=-5.0,r=0.99])Node2492[a=1.0,b=-1.0,x=29.0,y=-5.0,r=0.72],((((Node3493[a=1.0,b=1.0,x=33.0,y=-3.0,r=1.19],Node3492[a=1.0,b=-1.0,x=33.0,y=-5.0,r=0.54])Node3317[a=1.0,b=-1.0,x=32.0,y=-4.0,r=1.46])Node2977[a=1.0,b=-1.0,x=31.0,y=-3.0,r=1.23])Node2798[a=1.0,b=1.0,x=30.0,y=-2.0,r=1.43])Node2491[a=1.0,b=1.0,x=29.0,y=-3.0,r=0.88])Node2323[a=1.0,b=0.0,x=28.0,y=-4.0,r=1.04])Node2169[a=1.0,b=1.0,x=27.0,y=-4.0,r=0.69])Node2013[a=1.0,b=1.0,x=26.0,y=-5.0,r=1.15])Node1857[a=1.0,b=0.0,x=25.0,y=-6.0,r=1.22],(((Node2639[a=1.0,b=1.0,x=27.0,y=-6.0,r=0.78],Node2638[a=0.0,b=1.0,x=26.0,y=-6.0,r=1.21])Node2322[a=1.0,b=1.0,x=26.0,y=-7.0,r=1.1])Node2012[a=0.0,b=-1.0,x=25.0,y=-8.0,r=1.2],(((Node2637[a=1.0,b=1.0,x=28.0,y=-9.0,r=0.85])Node2321[a=1.0,b=-1.0,x=27.0,y=-10.0,r=0.69])Node2168[a=0.0,b=-1.0,x=26.0,y=-9.0,r=0.73],(((Node3147[a=1.0,b=-1.0,x=30.0,y=-10.0,r=1.33])Node2976[a=1.0,b=-1.0,x=29.0,y=-9.0,r=1.33])Node2490[a=1.0,b=1.0,x=28.0,y=-8.0,r=0.9],((Node3146[a=0.0,b=-1.0,x=29.0,y=-12.0,r=1.21],Node3145[a=1.0,b=0.0,x=30.0,y=-11.0,r=1.26])Node2975[a=1.0,b=-1.0,x=29.0,y=-11.0,r=1.36])Node2489[a=1.0,b=-1.0,x=28.0,y=-10.0,r=0.97])Node2167[a=1.0,b=-1.0,x=27.0,y=-9.0,r=1.25])Node2011[a=1.0,b=-1.0,x=26.0,y=-8.0,r=0.79])Node1856[a=1.0,b=-1.0,x=25.0,y=-7.0,r=1.26])Node1715[a=1.0,b=-1.0,x=24.0,y=-6.0,r=0.85])Node1577[a=1.0,b=0.0,x=23.0,y=-5.0,r=0.62])Node1342[a=1.0,b=0.0,x=22.0,y=-5.0,r=0.94])Node1236[a=1.0,b=-1.0,x=21.0,y=-5.0,r=0.9])Node1139[a=1.0,b=1.0,x=20.0,y=-4.0,r=1.42],(((Node1714[a=1.0,b=-1.0,x=22.0,y=-8.0,r=1.29])Node1576[a=1.0,b=-1.0,x=21.0,y=-7.0,r=0.97])Node1341[a=1.0,b=0.0,x=20.0,y=-6.0,r=1.2])Node1138[a=0.0,b=-1.0,x=19.0,y=-6.0,r=0.59])Node1039[a=0.0,b=-1.0,x=19.0,y=-5.0,r=1.13])Node943[a=1.0,b=1.0,x=19.0,y=-4.0,r=1.38])Node847[a=1.0,b=-1.0,x=18.0,y=-5.0,r=1.24],Node846[a=0.0,b=-1.0,x=17.0,y=-5.0,r=0.68])Node689[a=1.0,b=-1.0,x=17.0,y=-4.0,r=0.86],((((((Node1340[a=1.0,b=-1.0,x=21.0,y=-4.0,r=1.29])Node1235[a=1.0,b=-1.0,x=20.0,y=-3.0,r=1.35])Node1038[a=1.0,b=0.0,x=19.0,y=-2.0,r=1.05],Node1037[a=0.0,b=-1.0,x=18.0,y=-3.0,r=1.2])Node942[a=-1.0,b=1.0,x=18.0,y=-2.0,r=0.62])Node845[a=1.0,b=1.0,x=19.0,y=-3.0,r=0.65])Node761[a=1.0,b=-1.0,x=18.0,y=-4.0,r=0.84])Node688[a=1.0,b=0.0,x=17.0,y=-3.0,r=0.97])Node615[a=1.0,b=1.0,x=16.0,y=-3.0,r=0.96])Node548[a=1.0,b=0.0,x=15.0,y=-4.0,r=1.26])Node471[a=1.0,b=0.0,x=14.0,y=-4.0,r=1.49])Node399[a=1.0,b=0.0,x=13.0,y=-4.0,r=1.08])Node338[a=1.0,b=0.0,x=12.0,y=-4.0,r=1.44])Node281[a=1.0,b=1.0,x=11.0,y=-4.0,r=0.56],((((((((Node1234[a=1.0,b=1.0,x=18.0,y=-6.0,r=1.26])Node1036[a=1.0,b=-1.0,x=17.0,y=-7.0,r=0.83])Node941[a=0.0,b=-1.0,x=16.0,y=-6.0,r=1.17])Node760[a=1.0,b=0.0,x=16.0,y=-5.0,r=1.3])Node687[a=1.0,b=1.0,x=15.0,y=-5.0,r=0.55],(Node759[a=-1.0,b=0.0,x=13.0,y=-7.0,r=1.17])Node686[a=0.0,b=-1.0,x=14.0,y=-7.0,r=0.56])Node470[a=1.0,b=-1.0,x=14.0,y=-6.0,r=0.64])Node398[a=1.0,b=1.0,x=13.0,y=-5.0,r=1.14])Node337[a=1.0,b=-1.0,x=12.0,y=-6.0,r=1.38],Node336[a=1.0,b=0.0,x=12.0,y=-5.0,r=0.99])Node280[a=1.0,b=0.0,x=11.0,y=-5.0,r=1.12])Node230[a=1.0,b=-1.0,x=10.0,y=-5.0,r=1.11],((((Node547[a=1.0,b=1.0,x=14.0,y=-2.0,r=0.67])Node469[a=1.0,b=0.0,x=13.0,y=-3.0,r=1.39],(Node614[a=1.0,b=1.0,x=14.0,y=-1.0,r=0.65])Node468[a=1.0,b=1.0,x=13.0,y=-2.0,r=0.83])Node397[a=1.0,b=0.0,x=12.0,y=-3.0,r=0.64])Node335[a=1.0,b=1.0,x=11.0,y=-3.0,r=1.21])Node229[a=1.0,b=0.0,x=10.0,y=-4.0,r=1.01])Node183[a=1.0,b=-1.0,x=9.0,y=-4.0,r=0.73])Node149[a=1.0,b=1.0,x=8.0,y=-3.0,r=0.85])Node123[a=1.0,b=0.0,x=7.0,y=-4.0,r=0.73],((((Node334[a=1.0,b=0.0,x=10.0,y=-8.0,r=1.09])Node279[a=1.0,b=-1.0,x=9.0,y=-8.0,r=1.46],Node278[a=1.0,b=0.0,x=9.0,y=-7.0,r=0.79])Node228[a=0.0,b=-1.0,x=8.0,y=-7.0,r=0.71])Node182[a=1.0,b=-1.0,x=8.0,y=-6.0,r=1.28])Node122[a=1.0,b=-1.0,x=7.0,y=-5.0,r=0.62])Node101[a=1.0,b=-1.0,x=6.0,y=-4.0,r=1.39])Node85[a=-1.0,b=-1.0,x=5.0,y=-3.0,r=1.06],(((Node181[a=1.0,b=-1.0,x=9.0,y=-3.0,r=1.1])Node148[a=1.0,b=1.0,x=8.0,y=-2.0,r=0.83])Node100[a=1.0,b=0.0,x=7.0,y=-3.0,r=1.2],((Node180[a=1.0,b=-1.0,x=7.0,y=-6.0,r=0.64],((((((((((((((((((Node2166[a=1.0,b=-1.0,x=18.0,y=-21.0,r=1.0])Node2010[a=1.0,b=-1.0,x=17.0,y=-20.0,r=0.76],(((Node2488[a=1.0,b=-1.0,x=20.0,y=-22.0,r=1.39],Node2487[a=0.0,b=-1.0,x=19.0,y=-22.0,r=1.07])Node2320[a=1.0,b=-1.0,x=19.0,y=-21.0,r=0.69],(((((Node3658[a=1.0,b=-1.0,x=23.0,y=-25.0,r=1.05])Node3144[a=0.0,b=-1.0,x=22.0,y=-24.0,r=0.7],(Node3491[a=1.0,b=-1.0,x=24.0,y=-25.0,r=0.94])Node3143[a=1.0,b=-1.0,x=23.0,y=-24.0,r=1.29])Node2974[a=1.0,b=-1.0,x=22.0,y=-23.0,r=0.84])Node2797[a=1.0,b=-1.0,x=21.0,y=-22.0,r=1.32])Node2486[a=1.0,b=-1.0,x=20.0,y=-21.0,r=0.99])Node2319[a=1.0,b=0.0,x=19.0,y=-20.0,r=1.08])Node2165[a=1.0,b=-1.0,x=18.0,y=-20.0,r=1.24])Node2009[a=1.0,b=0.0,x=17.0,y=-19.0,r=1.22])Node1713[a=1.0,b=-1.0,x=16.0,y=-19.0,r=1.28],Node1712[a=-1.0,b=-1.0,x=14.0,y=-19.0,r=1.35])Node1575[a=1.0,b=0.0,x=15.0,y=-18.0,r=1.2],(((((((Node2973[a=1.0,b=0.0,x=21.0,y=-23.0,r=0.83],((Node3316[a=-1.0,b=-1.0,x=20.0,y=-26.0,r=1.22])Node3142[a=0.0,b=-1.0,x=21.0,y=-25.0,r=1.12],(((Node3657[a=0.0,b=-1.0,x=23.0,y=-28.0,r=1.49],Node3656[a=1.0,b=-1.0,x=24.0,y=-28.0,r=0.83])Node3490[a=1.0,b=-1.0,x=23.0,y=-27.0,r=0.83])Node3315[a=0.0,b=-1.0,x=22.0,y=-26.0,r=0.51])Node3141[a=1.0,b=-1.0,x=22.0,y=-25.0,r=1.42])Node2972[a=1.0,b=-1.0,x=21.0,y=-24.0,r=1.35])Node2796[a=1.0,b=0.0,x=20.0,y=-23.0,r=1.14])Node2636[a=1.0,b=-1.0,x=19.0,y=-23.0,r=1.23])Node2485[a=1.0,b=-1.0,x=18.0,y=-22.0,r=0.84])Node2164[a=1.0,b=0.0,x=17.0,y=-21.0,r=1.22])Node2008[a=1.0,b=-1.0,x=16.0,y=-21.0,r=1.46])Node1855[a=0.0,b=-1.0,x=15.0,y=-20.0,r=0.86],(((Node2318[a=0.0,b=-1.0,x=16.0,y=-23.0,r=1.41],((Node2635[a=1.0,b=-1.0,x=18.0,y=-24.0,r=1.43])Node2484[a=0.0,b=-1.0,x=17.0,y=-23.0,r=1.01],(((((Node3489[a=1.0,b=-1.0,x=20.0,y=-28.0,r=1.1],Node3488[a=1.0,b=0.0,x=20.0,y=-27.0,r=1.43])Node3140[a=1.0,b=-1.0,x=19.0,y=-27.0,r=1.15],(((Node3655[a=1.0,b=-1.0,x=20.0,y=-29.0,r=1.49],Node3654[a=0.0,b=-1.0,x=19.0,y=-29.0,r=0.63])Node3487[a=1.0,b=-1.0,x=19.0,y=-28.0,r=1.28])Node3314[a=-1.0,b=-1.0,x=18.0,y=-27.0,r=1.1])Node3139[a=1.0,b=0.0,x=19.0,y=-26.0,r=1.24])Node2971[a=0.0,b=-1.0,x=18.0,y=-26.0,r=1.5],(Node3138[a=1.0,b=0.0,x=20.0,y=-24.0,r=1.49],(Node3313[a=-1.0,b=0.0,x=19.0,y=-25.0,r=1.09],((Node3653[a=-1.0,b=-1.0,x=21.0,y=-28.0,r=1.22])Node3486[a=1.0,b=-1.0,x=22.0,y=-27.0,r=0.63],(Node3652[a=1.0,b=-1.0,x=22.0,y=-28.0,r=0.76])Node3485[a=0.0,b=-1.0,x=21.0,y=-27.0,r=1.34])Node3312[a=1.0,b=-1.0,x=21.0,y=-26.0,r=0.56])Node3137[a=1.0,b=-1.0,x=20.0,y=-25.0,r=0.82])Node2970[a=1.0,b=1.0,x=19.0,y=-24.0,r=1.48])Node2795[a=1.0,b=-1.0,x=18.0,y=-25.0,r=1.21])Node2634[a=-1.0,b=-1.0,x=17.0,y=-24.0,r=0.88])Node2483[a=1.0,b=-1.0,x=18.0,y=-23.0,r=1.44])Node2317[a=1.0,b=0.0,x=17.0,y=-22.0,r=1.34])Node2163[a=1.0,b=-1.0,x=16.0,y=-22.0,r=1.17],Node2162[a=0.0,b=-1.0,x=15.0,y=-22.0,r=0.54])Node2007[a=-1.0,b=-1.0,x=15.0,y=-21.0,r=0.97])Node1854[a=1.0,b=-1.0,x=16.0,y=-20.0,r=1.1])Node1574[a=1.0,b=-1.0,x=15.0,y=-19.0,r=1.19])Node1451[a=1.0,b=0.0,x=14.0,y=-18.0,r=0.84])Node1339[a=-1.0,b=-1.0,x=13.0,y=-18.0,r=1.36],((Node1711[a=0.0,b=1.0,x=16.0,y=-17.0,r=1.35],((((Node2482[a=1.0,b=-1.0,x=21.0,y=-18.0,r=1.32])Node2316[a=1.0,b=1.0,x=20.0,y=-17.0,r=1.25],((Node2633[a=1.0,b=-1.0,x=21.0,y=-21.0,r=1.41])Node2481[a=0.0,b=-1.0,x=20.0,y=-20.0,r=1.04])Node2315[a=1.0,b=-1.0,x=20.0,y=-19.0,r=0.74])Node2161[a=1.0,b=-1.0,x=19.0,y=-18.0,r=1.41])Node2006[a=1.0,b=1.0,x=18.0,y=-17.0,r=1.13],Node2005[a=1.0,b=-1.0,x=18.0,y=-19.0,r=1.49])Node1710[a=1.0,b=0.0,x=17.0,y=-18.0,r=1.07])Node1573[a=1.0,b=-1.0,x=16.0,y=-18.0,r=1.2],((Node2004[a=1.0,b=-1.0,x=18.0,y=-18.0,r=0.94])Node1853[a=1.0,b=-1.0,x=17.0,y=-17.0,r=1.0])Node1572[a=1.0,b=1.0,x=16.0,y=-16.0,r=1.22])Node1338[a=1.0,b=0.0,x=15.0,y=-17.0,r=1.18])Node1233[a=1.0,b=-1.0,x=14.0,y=-17.0,r=0.67])Node1137[a=1.0,b=-1.0,x=13.0,y=-16.0,r=1.47],(Node1450[a=1.0,b=-1.0,x=13.0,y=-17.0,r=1.41])Node1136[a=0.0,b=-1.0,x=12.0,y=-16.0,r=1.2])Node1035[a=1.0,b=-1.0,x=12.0,y=-15.0,r=0.83])Node844[a=1.0,b=0.0,x=11.0,y=-14.0,r=0.52])Node685[a=1.0,b=-1.0,x=10.0,y=-14.0,r=0.89])Node613[a=1.0,b=-1.0,x=9.0,y=-13.0,r=1.4])Node546[a=1.0,b=-1.0,x=8.0,y=-12.0,r=1.12])Node467[a=1.0,b=-1.0,x=7.0,y=-11.0,r=1.22],(Node545[a=0.0,b=-1.0,x=6.0,y=-12.0,r=1.21],(Node758[a=1.0,b=-1.0,x=8.0,y=-13.0,r=1.46],((((((((Node1852[a=1.0,b=-1.0,x=14.0,y=-20.0,r=1.43],((Node2160[a=-1.0,b=-1.0,x=12.0,y=-22.0,r=1.15])Node2003[a=0.0,b=-1.0,x=13.0,y=-21.0,r=1.26],((((Node2632[a=0.0,b=-1.0,x=14.0,y=-25.0,r=1.3])Node2480[a=-1.0,b=-1.0,x=14.0,y=-24.0,r=1.23],(((((Node3651[a=0.0,b=-1.0,x=18.0,y=-29.0,r=0.94])Node3484[a=1.0,b=-1.0,x=18.0,y=-28.0,r=0.71],Node3483[a=0.0,b=-1.0,x=17.0,y=-28.0,r=0.63])Node3136[a=1.0,b=-1.0,x=17.0,y=-27.0,r=0.63])Node2969[a=-1.0,b=-1.0,x=16.0,y=-26.0,r=0.93])Node2794[a=1.0,b=-1.0,x=17.0,y=-25.0,r=0.55])Node2479[a=1.0,b=-1.0,x=16.0,y=-24.0,r=0.88])Node2314[a=1.0,b=-1.0,x=15.0,y=-23.0,r=1.14],((((Node3135[a=1.0,b=-1.0,x=17.0,y=-26.0,r=0.74])Node2968[a=1.0,b=0.0,x=16.0,y=-25.0,r=0.88],(((Node3650[a=0.0,b=-1.0,x=16.0,y=-29.0,r=0.99],Node3649[a=1.0,b=-1.0,x=17.0,y=-29.0,r=0.97])Node3482[a=1.0,b=-1.0,x=16.0,y=-28.0,r=1.09])Node3134[a=0.0,b=-1.0,x=15.0,y=-27.0,r=1.14],(((Node3648[a=1.0,b=-1.0,x=16.0,y=-30.0,r=0.66])Node3481[a=0.0,b=-1.0,x=15.0,y=-29.0,r=1.01])Node3311[a=-1.0,b=-1.0,x=15.0,y=-28.0,r=0.53])Node3133[a=1.0,b=-1.0,x=16.0,y=-27.0,r=1.12])Node2967[a=0.0,b=-1.0,x=15.0,y=-26.0,r=0.95])Node2793[a=0.0,b=-1.0,x=15.0,y=-25.0,r=0.56])Node2631[a=1.0,b=-1.0,x=15.0,y=-24.0,r=0.69])Node2313[a=0.0,b=-1.0,x=14.0,y=-23.0,r=1.22])Node2159[a=0.0,b=-1.0,x=14.0,y=-22.0,r=0.86],(((Node2630[a=1.0,b=0.0,x=13.0,y=-24.0,r=1.39],(Node2966[a=1.0,b=-1.0,x=14.0,y=-26.0,r=0.7])Node2629[a=1.0,b=-1.0,x=13.0,y=-25.0,r=0.65])Node2478[a=-1.0,b=-1.0,x=12.0,y=-24.0,r=0.88])Node2312[a=0.0,b=-1.0,x=13.0,y=-23.0,r=1.42])Node2158[a=-1.0,b=-1.0,x=13.0,y=-22.0,r=1.37])Node2002[a=1.0,b=-1.0,x=14.0,y=-21.0,r=0.58])Node1851[a=0.0,b=-1.0,x=13.0,y=-20.0,r=0.89])Node1571[a=1.0,b=-1.0,x=13.0,y=-19.0,r=1.33])Node1449[a=1.0,b=-1.0,x=12.0,y=-18.0,r=0.66],Node1448[a=1.0,b=0.0,x=12.0,y=-17.0,r=1.02])Node1337[a=1.0,b=-1.0,x=11.0,y=-17.0,r=1.12])Node1135[a=1.0,b=0.0,x=10.0,y=-16.0,r=0.94])Node1034[a=1.0,b=-1.0,x=9.0,y=-16.0,r=0.84])Node940[a=0.0,b=-1.0,x=8.0,y=-15.0,r=1.04])Node843[a=1.0,b=-1.0,x=8.0,y=-14.0,r=0.87])Node757[a=0.0,b=-1.0,x=7.0,y=-13.0,r=0.91])Node544[a=1.0,b=-1.0,x=7.0,y=-12.0,r=1.16])Node466[a=0.0,b=-1.0,x=6.0,y=-11.0,r=0.89])Node396[a=-1.0,b=-1.0,x=6.0,y=-10.0,r=0.95],((((Node842[a=1.0,b=-1.0,x=11.0,y=-13.0,r=0.93],(Node939[a=1.0,b=0.0,x=12.0,y=-12.0,r=1.08])Node841[a=1.0,b=0.0,x=11.0,y=-12.0,r=1.23])Node684[a=1.0,b=0.0,x=10.0,y=-12.0,r=0.61],(((((((Node1570[a=1.0,b=-1.0,x=12.0,y=-19.0,r=0.89],(Node2001[a=1.0,b=-1.0,x=12.0,y=-20.0,r=1.36])Node1569[a=0.0,b=-1.0,x=11.0,y=-19.0,r=0.95])Node1336[a=1.0,b=-1.0,x=11.0,y=-18.0,r=1.42])Node1232[a=-1.0,b=-1.0,x=10.0,y=-17.0,r=0.58])Node1134[a=1.0,b=-1.0,x=11.0,y=-16.0,r=0.76],Node1133[a=1.0,b=0.0,x=11.0,y=-15.0,r=1.22])Node1033[a=1.0,b=0.0,x=10.0,y=-15.0,r=1.3])Node938[a=0.0,b=-1.0,x=9.0,y=-15.0,r=1.09])Node756[a=-1.0,b=-1.0,x=9.0,y=-14.0,r=0.58])Node683[a=1.0,b=-1.0,x=10.0,y=-13.0,r=0.96])Node612[a=0.0,b=-1.0,x=9.0,y=-12.0,r=0.5])Node465[a=1.0,b=-1.0,x=9.0,y=-11.0,r=0.76],(Node543[a=1.0,b=-1.0,x=8.0,y=-11.0,r=0.68])Node464[a=-1.0,b=0.0,x=7.0,y=-10.0,r=0.62])Node395[a=1.0,b=-1.0,x=8.0,y=-10.0,r=0.93])Node333[a=-1.0,b=-1.0,x=7.0,y=-9.0,r=1.24],(Node463[a=0.0,b=-1.0,x=9.0,y=-10.0,r=0.75],(Node542[a=0.0,b=-1.0,x=10.0,y=-11.0,r=0.72],Node541[a=0.0,b=1.0,x=10.0,y=-9.0,r=1.39])Node462[a=1.0,b=-1.0,x=10.0,y=-10.0,r=1.48])Node332[a=1.0,b=-1.0,x=9.0,y=-9.0,r=0.57])Node277[a=1.0,b=-1.0,x=8.0,y=-8.0,r=1.17],(Node331[a=1.0,b=-1.0,x=8.0,y=-9.0,r=1.48],((Node461[a=-1.0,b=-1.0,x=4.0,y=-11.0,r=0.51],((((((((((((((((((((Node3480[a=0.0,b=-1.0,x=14.0,y=-29.0,r=0.8])Node3310[a=1.0,b=-1.0,x=14.0,y=-28.0,r=0.51])Node3132[a=0.0,b=-1.0,x=13.0,y=-27.0,r=0.65],Node3131[a=1.0,b=-1.0,x=14.0,y=-27.0,r=1.03])Node2965[a=1.0,b=0.0,x=13.0,y=-26.0,r=1.33])Node2792[a=0.0,b=-1.0,x=12.0,y=-26.0,r=1.39])Node2628[a=1.0,b=-1.0,x=12.0,y=-25.0,r=0.94])Node2477[a=1.0,b=-1.0,x=11.0,y=-24.0,r=1.5],(Node2627[a=1.0,b=-1.0,x=11.0,y=-25.0,r=0.55])Node2476[a=0.0,b=-1.0,x=10.0,y=-24.0,r=1.33])Node2157[a=1.0,b=-1.0,x=10.0,y=-23.0,r=0.54])Node2000[a=1.0,b=-1.0,x=9.0,y=-22.0,r=0.91])Node1850[a=0.0,b=-1.0,x=8.0,y=-21.0,r=0.97])Node1709[a=0.0,b=-1.0,x=8.0,y=-20.0,r=0.54])Node1568[a=0.0,b=-1.0,x=8.0,y=-19.0,r=1.21])Node1231[a=1.0,b=-1.0,x=8.0,y=-18.0,r=1.23])Node1132[a=-1.0,b=-1.0,x=7.0,y=-17.0,r=0.52],(((Node1708[a=0.0,b=-1.0,x=10.0,y=-19.0,r=1.39])Node1335[a=1.0,b=-1.0,x=10.0,y=-18.0,r=1.1],((((Node2156[a=1.0,b=-1.0,x=10.0,y=-22.0,r=1.06])Node1849[a=-1.0,b=-1.0,x=9.0,y=-21.0,r=1.24],(Node1999[a=0.0,b=1.0,x=11.0,y=-20.0,r=1.27],Node1998[a=1.0,b=0.0,x=12.0,y=-21.0,r=0.84])Node1848[a=1.0,b=-1.0,x=11.0,y=-21.0,r=1.04])Node1707[a=1.0,b=-1.0,x=10.0,y=-20.0,r=0.82],(((Node2311[a=0.0,b=-1.0,x=11.0,y=-23.0,r=0.66],Node2310[a=1.0,b=-1.0,x=12.0,y=-23.0,r=1.37])Node2155[a=1.0,b=-1.0,x=11.0,y=-22.0,r=1.29])Node1997[a=1.0,b=-1.0,x=10.0,y=-21.0,r=0.6])Node1706[a=0.0,b=-1.0,x=9.0,y=-20.0,r=0.6])Node1447[a=0.0,b=-1.0,x=9.0,y=-19.0,r=1.21])Node1334[a=0.0,b=-1.0,x=9.0,y=-18.0,r=0.85])Node1230[a=1.0,b=0.0,x=9.0,y=-17.0,r=0.55])Node1131[a=0.0,b=-1.0,x=8.0,y=-17.0,r=0.72])Node1032[a=1.0,b=-1.0,x=8.0,y=-16.0,r=0.67],(((((Node1567[a=0.0,b=-1.0,x=7.0,y=-21.0,r=1.2])Node1446[a=0.0,b=-1.0,x=7.0,y=-20.0,r=0.65])Node1333[a=0.0,b=-1.0,x=7.0,y=-19.0,r=1.15])Node1229[a=1.0,b=-1.0,x=7.0,y=-18.0,r=1.44])Node1130[a=-1.0,b=-1.0,x=6.0,y=-17.0,r=0.58])Node1031[a=0.0,b=-1.0,x=7.0,y=-16.0,r=0.61])Node937[a=1.0,b=-1.0,x=7.0,y=-15.0,r=1.15],(Node1030[a=1.0,b=-1.0,x=6.0,y=-16.0,r=1.45],Node1029[a=0.0,b=-1.0,x=5.0,y=-16.0,r=0.78])Node936[a=-1.0,b=-1.0,x=5.0,y=-15.0,r=1.05])Node840[a=1.0,b=-1.0,x=6.0,y=-14.0,r=0.69],Node839[a=-1.0,b=-1.0,x=4.0,y=-14.0,r=0.76])Node682[a=-1.0,b=0.0,x=5.0,y=-13.0,r=0.92],(((Node1028[a=-1.0,b=-1.0,x=4.0,y=-15.0,r=0.85])Node838[a=-1.0,b=1.0,x=5.0,y=-14.0,r=1.34])Node755[a=-1.0,b=-1.0,x=6.0,y=-15.0,r=1.25])Node681[a=1.0,b=-1.0,x=7.0,y=-14.0,r=0.68])Node611[a=1.0,b=-1.0,x=6.0,y=-13.0,r=1.04])Node540[a=0.0,b=-1.0,x=5.0,y=-12.0,r=0.66],(Node610[a=0.0,b=-1.0,x=4.0,y=-13.0,r=1.2],((((((Node1228[a=0.0,b=-1.0,x=5.0,y=-18.0,r=0.76],(Node1445[a=0.0,b=-1.0,x=6.0,y=-19.0,r=0.55])Node1227[a=1.0,b=-1.0,x=6.0,y=-18.0,r=1.22])Node1129[a=1.0,b=-1.0,x=5.0,y=-17.0,r=0.87],((((((Node1847[a=0.0,b=-1.0,x=4.0,y=-22.0,r=0.56])Node1705[a=-1.0,b=-1.0,x=4.0,y=-21.0,r=1.04])Node1566[a=1.0,b=-1.0,x=5.0,y=-20.0,r=0.69],(((Node1996[a=1.0,b=-1.0,x=4.0,y=-23.0,r=1.04])Node1846[a=0.0,b=-1.0,x=3.0,y=-22.0,r=1.25])Node1704[a=-1.0,b=-1.0,x=3.0,y=-21.0,r=1.03])Node1565[a=0.0,b=-1.0,x=4.0,y=-20.0,r=0.53])Node1444[a=0.0,b=-1.0,x=4.0,y=-19.0,r=0.68],(((((Node2154[a=0.0,b=-1.0,x=5.0,y=-24.0,r=0.76])Node1995[a=-1.0,b=-1.0,x=5.0,y=-23.0,r=0.8])Node1845[a=0.0,b=-1.0,x=6.0,y=-22.0,r=1.01],((((((((Node3130[a=1.0,b=-1.0,x=13.0,y=-28.0,r=0.75])Node2964[a=1.0,b=-1.0,x=12.0,y=-27.0,r=0.55])Node2791[a=1.0,b=-1.0,x=11.0,y=-26.0,r=1.41])Node2626[a=1.0,b=1.0,x=10.0,y=-25.0,r=1.36])Node2475[a=1.0,b=-1.0,x=9.0,y=-26.0,r=0.7],(((((Node3647[a=1.0,b=-1.0,x=11.0,y=-30.0,r=1.11])Node3309[a=-1.0,b=-1.0,x=10.0,y=-29.0,r=0.58])Node3129[a=0.0,b=-1.0,x=11.0,y=-28.0,r=1.36],(Node3646[a=1.0,b=-1.0,x=13.0,y=-29.0,r=0.99])Node3128[a=1.0,b=-1.0,x=12.0,y=-28.0,r=1.18])Node2963[a=1.0,b=-1.0,x=11.0,y=-27.0,r=0.65])Node2790[a=1.0,b=-1.0,x=10.0,y=-26.0,r=0.87])Node2474[a=1.0,b=0.0,x=9.0,y=-25.0,r=1.05])Node2309[a=1.0,b=-1.0,x=8.0,y=-25.0,r=1.21],Node2308[a=1.0,b=0.0,x=8.0,y=-24.0,r=0.98])Node2153[a=0.0,b=-1.0,x=7.0,y=-24.0,r=0.88])Node1994[a=0.0,b=-1.0,x=7.0,y=-23.0,r=1.22],(Node2152[a=1.0,b=-1.0,x=9.0,y=-23.0,r=0.78],(Node2307[a=1.0,b=-1.0,x=9.0,y=-24.0,r=1.06])Node2151[a=0.0,b=-1.0,x=8.0,y=-23.0,r=1.05])Node1993[a=1.0,b=0.0,x=8.0,y=-22.0,r=0.81])Node1844[a=1.0,b=-1.0,x=7.0,y=-22.0,r=0.97])Node1703[a=0.0,b=-1.0,x=6.0,y=-21.0,r=0.85],(((((((((((Node3645[a=1.0,b=0.0,x=9.0,y=-31.0,r=1.29],Node3644[a=1.0,b=-1.0,x=9.0,y=-32.0,r=1.35])Node3479[a=1.0,b=-1.0,x=8.0,y=-31.0,r=0.52],(Node3643[a=1.0,b=-1.0,x=7.0,y=-32.0,r=1.31])Node3478[a=-1.0,b=-1.0,x=6.0,y=-31.0,r=0.78])Node3308[a=1.0,b=-1.0,x=7.0,y=-30.0,r=0.7],((Node3642[a=1.0,b=-1.0,x=5.0,y=-32.0,r=1.27])Node3477[a=-1.0,b=-1.0,x=4.0,y=-31.0,r=1.49])Node3307[a=-1.0,b=-1.0,x=5.0,y=-30.0,r=1.19])Node3127[a=1.0,b=-1.0,x=6.0,y=-29.0,r=1.05],(Node3306[a=-1.0,b=-1.0,x=4.0,y=-30.0,r=0.73],(Node3641[a=-1.0,b=-1.0,x=5.0,y=-31.0,r=1.42],Node3640[a=1.0,b=-1.0,x=7.0,y=-31.0,r=0.91])Node3305[a=1.0,b=-1.0,x=6.0,y=-30.0,r=0.58])Node3126[a=0.0,b=-1.0,x=5.0,y=-29.0,r=1.21])Node2962[a=-1.0,b=-1.0,x=5.0,y=-28.0,r=0.99])Node2625[a=0.0,b=-1.0,x=6.0,y=-27.0,r=1.39])Node2473[a=0.0,b=-1.0,x=6.0,y=-26.0,r=0.79])Node2306[a=0.0,b=-1.0,x=6.0,y=-25.0,r=1.46],(((Node2961[a=1.0,b=0.0,x=10.0,y=-27.0,r=1.23])Node2624[a=1.0,b=-1.0,x=9.0,y=-27.0,r=0.76])Node2472[a=1.0,b=-1.0,x=8.0,y=-26.0,r=0.62],((((Node3639[a=1.0,b=-1.0,x=8.0,y=-30.0,r=0.6])Node3125[a=1.0,b=-1.0,x=7.0,y=-29.0,r=1.19])Node2960[a=-1.0,b=-1.0,x=6.0,y=-28.0,r=0.55])Node2623[a=0.0,b=-1.0,x=7.0,y=-27.0,r=0.71],(((Node3304[a=1.0,b=-1.0,x=8.0,y=-29.0,r=0.87])Node2959[a=-1.0,b=0.0,x=7.0,y=-28.0,r=1.41])Node2789[a=0.0,b=-1.0,x=8.0,y=-28.0,r=1.38],(Node2958[a=1.0,b=0.0,x=10.0,y=-28.0,r=1.29],(Node3476[a=0.0,b=-1.0,x=9.0,y=-30.0,r=0.77],(Node3638[a=1.0,b=1.0,x=11.0,y=-29.0,r=1.05],Node3637[a=0.0,b=-1.0,x=10.0,y=-31.0,r=1.23])Node3475[a=1.0,b=-1.0,x=10.0,y=-30.0,r=1.47])Node2957[a=0.0,b=-1.0,x=9.0,y=-29.0,r=1.46])Node2788[a=1.0,b=-1.0,x=9.0,y=-28.0,r=1.43])Node2622[a=1.0,b=-1.0,x=8.0,y=-27.0,r=1.24])Node2471[a=0.0,b=-1.0,x=7.0,y=-26.0,r=1.08])Node2305[a=1.0,b=-1.0,x=7.0,y=-25.0,r=1.29])Node2150[a=0.0,b=-1.0,x=6.0,y=-24.0,r=1.19])Node1992[a=1.0,b=-1.0,x=6.0,y=-23.0,r=1.35])Node1843[a=0.0,b=-1.0,x=5.0,y=-22.0,r=0.63])Node1702[a=-1.0,b=-1.0,x=5.0,y=-21.0,r=0.79])Node1564[a=1.0,b=-1.0,x=6.0,y=-20.0,r=0.94])Node1443[a=1.0,b=-1.0,x=5.0,y=-19.0,r=0.54])Node1332[a=1.0,b=0.0,x=4.0,y=-18.0,r=1.01])Node1226[a=0.0,b=-1.0,x=3.0,y=-18.0,r=0.85])Node1128[a=-1.0,b=-1.0,x=3.0,y=-17.0,r=0.75])Node1027[a=1.0,b=-1.0,x=4.0,y=-16.0,r=0.94],(Node1331[a=1.0,b=-1.0,x=4.0,y=-17.0,r=1.26])Node1026[a=0.0,b=-1.0,x=3.0,y=-16.0,r=0.82])Node837[a=1.0,b=0.0,x=3.0,y=-15.0,r=1.33])Node754[a=-1.0,b=-1.0,x=2.0,y=-15.0,r=1.14])Node680[a=0.0,b=-1.0,x=3.0,y=-14.0,r=0.69])Node609[a=-1.0,b=-1.0,x=3.0,y=-13.0,r=1.39])Node539[a=-1.0,b=-1.0,x=4.0,y=-12.0,r=0.89])Node460[a=0.0,b=-1.0,x=5.0,y=-11.0,r=1.26])Node394[a=-1.0,b=-1.0,x=5.0,y=-10.0,r=0.83])Node330[a=-1.0,b=-1.0,x=6.0,y=-9.0,r=1.42])Node276[a=0.0,b=-1.0,x=7.0,y=-8.0,r=0.76])Node227[a=1.0,b=-1.0,x=7.0,y=-7.0,r=1.31])Node179[a=0.0,b=-1.0,x=6.0,y=-6.0,r=1.37])Node121[a=1.0,b=-1.0,x=6.0,y=-5.0,r=1.16],(((Node275[a=-1.0,b=0.0,x=2.0,y=-6.0,r=1.38],((Node393[a=-1.0,b=-1.0,x=0.0,y=-8.0,r=0.67],((((Node679[a=0.0,b=1.0,x=-1.0,y=-10.0,r=0.97],((Node836[a=-1.0,b=0.0,x=-3.0,y=-12.0,r=0.66])Node753[a=0.0,b=-1.0,x=-2.0,y=-12.0,r=0.84])Node678[a=-1.0,b=0.0,x=-2.0,y=-11.0,r=1.3])Node608[a=-1.0,b=-1.0,x=-1.0,y=-11.0,r=0.58])Node538[a=-1.0,b=-1.0,x=0.0,y=-10.0,r=1.27])Node459[a=0.0,b=-1.0,x=1.0,y=-9.0,r=1.13],(((((Node935[a=-1.0,b=-1.0,x=-5.0,y=-13.0,r=1.31],(((((((((Node2304[a=-1.0,b=-1.0,x=-13.0,y=-20.0,r=1.15])Node2149[a=-1.0,b=-1.0,x=-12.0,y=-19.0,r=1.34],((((Node2787[a=-1.0,b=-1.0,x=-14.0,y=-23.0,r=0.9])Node2621[a=-1.0,b=-1.0,x=-13.0,y=-22.0,r=1.09])Node2470[a=-1.0,b=-1.0,x=-12.0,y=-21.0,r=0.92])Node2303[a=-1.0,b=-1.0,x=-11.0,y=-20.0,r=0.73])Node2148[a=1.0,b=-1.0,x=-10.0,y=-19.0,r=0.65])Node1991[a=0.0,b=-1.0,x=-11.0,y=-18.0,r=1.11])Node1701[a=-1.0,b=-1.0,x=-11.0,y=-17.0,r=0.85],(((((Node2620[a=0.0,b=-1.0,x=-14.0,y=-21.0,r=1.13],(((Node3303[a=-1.0,b=-1.0,x=-18.0,y=-24.0,r=1.35])Node2956[a=-1.0,b=-1.0,x=-17.0,y=-23.0,r=1.31],(Node3302[a=0.0,b=-1.0,x=-16.0,y=-24.0,r=1.37],((Node3636[a=-1.0,b=-1.0,x=-18.0,y=-26.0,r=0.93],Node3635[a=1.0,b=-1.0,x=-16.0,y=-26.0,r=1.43])Node3474[a=0.0,b=-1.0,x=-17.0,y=-25.0,r=1.35],Node3473[a=-1.0,b=-1.0,x=-18.0,y=-25.0,r=1.26])Node3301[a=-1.0,b=-1.0,x=-17.0,y=-24.0,r=0.61])Node2955[a=0.0,b=-1.0,x=-16.0,y=-23.0,r=1.01])Node2786[a=-1.0,b=-1.0,x=-16.0,y=-22.0,r=0.76])Node2619[a=-1.0,b=-1.0,x=-15.0,y=-21.0,r=1.0])Node2469[a=-1.0,b=-1.0,x=-14.0,y=-20.0,r=0.81],((Node2785[a=1.0,b=-1.0,x=-12.0,y=-22.0,r=1.48],((((Node3472[a=1.0,b=-1.0,x=-13.0,y=-26.0,r=1.27])Node3300[a=-1.0,b=-1.0,x=-14.0,y=-25.0,r=1.12])Node3124[a=0.0,b=-1.0,x=-13.0,y=-24.0,r=1.06])Node2954[a=1.0,b=-1.0,x=-13.0,y=-23.0,r=0.76],(((Node3634[a=-1.0,b=-1.0,x=-16.0,y=-25.0,r=1.47])Node3471[a=-1.0,b=0.0,x=-15.0,y=-24.0,r=1.28],(Node3633[a=1.0,b=-1.0,x=-14.0,y=-26.0,r=0.71])Node3470[a=-1.0,b=-1.0,x=-15.0,y=-25.0,r=1.35])Node3123[a=1.0,b=-1.0,x=-14.0,y=-24.0,r=1.49])Node2953[a=-1.0,b=-1.0,x=-15.0,y=-23.0,r=1.05])Node2784[a=-1.0,b=-1.0,x=-14.0,y=-22.0,r=0.88])Node2618[a=-1.0,b=-1.0,x=-13.0,y=-21.0,r=1.32])Node2468[a=1.0,b=-1.0,x=-12.0,y=-20.0,r=0.96])Node2302[a=-1.0,b=-1.0,x=-13.0,y=-19.0,r=0.85])Node1990[a=0.0,b=-1.0,x=-12.0,y=-18.0,r=0.96])Node1842[a=-1.0,b=-1.0,x=-12.0,y=-17.0,r=0.81])Node1700[a=-1.0,b=0.0,x=-11.0,y=-16.0,r=1.02])Node1563[a=-1.0,b=-1.0,x=-10.0,y=-16.0,r=0.72])Node1330[a=-1.0,b=-1.0,x=-9.0,y=-15.0,r=0.52])Node1225[a=-1.0,b=0.0,x=-8.0,y=-14.0,r=1.36],((((Node1699[a=1.0,b=-1.0,x=-10.0,y=-15.0,r=0.62],(((((((((Node3299[a=0.0,b=-1.0,x=-19.0,y=-23.0,r=1.34],(Node3469[a=0.0,b=-1.0,x=-20.0,y=-24.0,r=0.66])Node3298[a=-1.0,b=-1.0,x=-20.0,y=-23.0,r=1.31])Node3122[a=-1.0,b=-1.0,x=-19.0,y=-22.0,r=0.55])Node2952[a=-1.0,b=0.0,x=-18.0,y=-21.0,r=0.57],Node2951[a=-1.0,b=-1.0,x=-18.0,y=-22.0,r=0.92])Node2783[a=-1.0,b=-1.0,x=-17.0,y=-21.0,r=1.07])Node2617[a=-1.0,b=-1.0,x=-16.0,y=-20.0,r=1.21],((Node2950[a=1.0,b=-1.0,x=-15.0,y=-22.0,r=0.6],((Node3468[a=-1.0,b=-1.0,x=-19.0,y=-24.0,r=0.96])Node3121[a=-1.0,b=-1.0,x=-18.0,y=-23.0,r=0.82])Node2949[a=-1.0,b=-1.0,x=-17.0,y=-22.0,r=0.84])Node2782[a=-1.0,b=-1.0,x=-16.0,y=-21.0,r=0.58])Node2616[a=0.0,b=-1.0,x=-15.0,y=-20.0,r=0.75])Node2467[a=0.0,b=-1.0,x=-15.0,y=-19.0,r=0.96])Node2147[a=-1.0,b=-1.0,x=-15.0,y=-18.0,r=1.16])Node1989[a=-1.0,b=-1.0,x=-14.0,y=-17.0,r=0.75])Node1841[a=-1.0,b=-1.0,x=-13.0,y=-16.0,r=1.41])Node1698[a=-1.0,b=-1.0,x=-12.0,y=-15.0,r=1.47])Node1562[a=-1.0,b=-1.0,x=-11.0,y=-14.0,r=0.67])Node1442[a=-1.0,b=1.0,x=-10.0,y=-13.0,r=1.12])Node1329[a=-1.0,b=-1.0,x=-9.0,y=-14.0,r=0.96],((Node1561[a=-1.0,b=1.0,x=-11.0,y=-13.0,r=1.01],(((((((((((Node3467[a=-1.0,b=-1.0,x=-21.0,y=-23.0,r=1.38],Node3466[a=-1.0,b=1.0,x=-21.0,y=-21.0,r=1.08])Node3297[a=-1.0,b=-1.0,x=-20.0,y=-22.0,r=0.58],((Node3632[a=-1.0,b=-1.0,x=-22.0,y=-23.0,r=0.72])Node3465[a=-1.0,b=-1.0,x=-21.0,y=-22.0,r=0.82])Node3296[a=-1.0,b=0.0,x=-20.0,y=-21.0,r=1.32])Node3120[a=-1.0,b=-1.0,x=-19.0,y=-21.0,r=1.41])Node2781[a=-1.0,b=0.0,x=-18.0,y=-20.0,r=1.44])Node2615[a=-1.0,b=-1.0,x=-17.0,y=-20.0,r=1.47])Node2466[a=0.0,b=-1.0,x=-16.0,y=-19.0,r=0.68])Node2301[a=-1.0,b=-1.0,x=-16.0,y=-18.0,r=1.11])Node2146[a=-1.0,b=-1.0,x=-15.0,y=-17.0,r=1.11])Node1988[a=-1.0,b=-1.0,x=-14.0,y=-16.0,r=1.41])Node1840[a=-1.0,b=-1.0,x=-13.0,y=-15.0,r=1.09])Node1697[a=-1.0,b=1.0,x=-12.0,y=-14.0,r=0.82],((Node2145[a=0.0,b=-1.0,x=-13.0,y=-18.0,r=0.83],(Node2465[a=0.0,b=-1.0,x=-14.0,y=-19.0,r=0.51])Node2144[a=-1.0,b=-1.0,x=-14.0,y=-18.0,r=1.24])Node1987[a=-1.0,b=-1.0,x=-13.0,y=-17.0,r=1.26])Node1696[a=-1.0,b=-1.0,x=-12.0,y=-16.0,r=1.26])Node1560[a=-1.0,b=-1.0,x=-11.0,y=-15.0,r=1.29])Node1441[a=-1.0,b=-1.0,x=-10.0,y=-14.0,r=0.92])Node1328[a=-1.0,b=0.0,x=-9.0,y=-13.0,r=1.31])Node1224[a=-1.0,b=1.0,x=-8.0,y=-13.0,r=1.27])Node1127[a=-1.0,b=-1.0,x=-7.0,y=-14.0,r=1.27])Node1025[a=-1.0,b=-1.0,x=-6.0,y=-13.0,r=0.51])Node934[a=-1.0,b=0.0,x=-5.0,y=-12.0,r=1.11])Node752[a=-1.0,b=-1.0,x=-4.0,y=-12.0,r=0.71])Node677[a=-1.0,b=-1.0,x=-3.0,y=-11.0,r=0.87],(((((Node1126[a=-1.0,b=-1.0,x=-7.0,y=-13.0,r=0.98],(Node1327[a=-1.0,b=0.0,x=-8.0,y=-12.0,r=1.08])Node1125[a=-1.0,b=0.0,x=-7.0,y=-12.0,r=1.13])Node1024[a=-1.0,b=-1.0,x=-6.0,y=-12.0,r=1.22])Node933[a=-1.0,b=-1.0,x=-5.0,y=-11.0,r=1.24])Node835[a=0.0,b=1.0,x=-4.0,y=-10.0,r=1.49],Node834[a=-1.0,b=1.0,x=-5.0,y=-10.0,r=1.37])Node751[a=-1.0,b=-1.0,x=-4.0,y=-11.0,r=1.04])Node676[a=-1.0,b=0.0,x=-3.0,y=-10.0,r=1.39])Node607[a=-1.0,b=-1.0,x=-2.0,y=-10.0,r=1.1])Node537[a=-1.0,b=0.0,x=-1.0,y=-9.0,r=1.22])Node458[a=-1.0,b=-1.0,x=0.0,y=-9.0,r=0.88])Node392[a=0.0,b=-1.0,x=1.0,y=-8.0,r=1.16])Node329[a=-1.0,b=0.0,x=1.0,y=-7.0,r=0.76],Node328[a=1.0,b=-1.0,x=3.0,y=-8.0,r=1.21])Node274[a=-1.0,b=-1.0,x=2.0,y=-7.0,r=1.48])Node226[a=-1.0,b=-1.0,x=3.0,y=-6.0,r=0.89],(((((Node606[a=0.0,b=-1.0,x=1.0,y=-11.0,r=0.76],(Node675[a=0.0,b=-1.0,x=0.0,y=-12.0,r=1.21],((((((((((((Node2464[a=-1.0,b=0.0,x=-8.0,y=-21.0,r=1.34],(Node2614[a=-1.0,b=-1.0,x=-9.0,y=-21.0,r=0.52])Node2463[a=-1.0,b=1.0,x=-8.0,y=-20.0,r=0.51])Node2300[a=-1.0,b=0.0,x=-7.0,y=-21.0,r=1.14],(((((((Node3631[a=-1.0,b=-1.0,x=-10.0,y=-28.0,r=1.32],Node3630[a=1.0,b=-1.0,x=-8.0,y=-28.0,r=0.58])Node3464[a=1.0,b=-1.0,x=-9.0,y=-27.0,r=1.21])Node3295[a=0.0,b=-1.0,x=-10.0,y=-26.0,r=1.25])Node3119[a=0.0,b=-1.0,x=-10.0,y=-25.0,r=0.84],(Node3294[a=0.0,b=-1.0,x=-11.0,y=-26.0,r=0.88])Node3118[a=-1.0,b=-1.0,x=-11.0,y=-25.0,r=0.96])Node2948[a=-1.0,b=0.0,x=-10.0,y=-24.0,r=1.44])Node2780[a=-1.0,b=-1.0,x=-9.0,y=-24.0,r=0.79])Node2613[a=-1.0,b=-1.0,x=-8.0,y=-23.0,r=0.7],Node2612[a=1.0,b=-1.0,x=-6.0,y=-23.0,r=0.81])Node2299[a=-1.0,b=-1.0,x=-7.0,y=-22.0,r=0.56])Node2143[a=0.0,b=-1.0,x=-6.0,y=-21.0,r=0.98])Node1839[a=-1.0,b=-1.0,x=-6.0,y=-20.0,r=1.11])Node1695[a=0.0,b=-1.0,x=-5.0,y=-19.0,r=1.11])Node1440[a=-1.0,b=-1.0,x=-5.0,y=-18.0,r=0.94],Node1439[a=1.0,b=0.0,x=-3.0,y=-17.0,r=0.74])Node1326[a=0.0,b=-1.0,x=-4.0,y=-17.0,r=1.32])Node1223[a=1.0,b=-1.0,x=-4.0,y=-16.0,r=1.31])Node1023[a=-1.0,b=-1.0,x=-5.0,y=-15.0,r=0.8])Node932[a=-1.0,b=-1.0,x=-4.0,y=-14.0,r=1.25],Node931[a=-1.0,b=0.0,x=-4.0,y=-13.0,r=0.88])Node833[a=-1.0,b=0.0,x=-3.0,y=-13.0,r=0.88],(((((((((Node2611[a=1.0,b=-1.0,x=-9.0,y=-22.0,r=0.82],(Node2779[a=-1.0,b=-1.0,x=-12.0,y=-23.0,r=1.06])Node2610[a=-1.0,b=-1.0,x=-11.0,y=-22.0,r=0.94])Node2298[a=-1.0,b=-1.0,x=-10.0,y=-21.0,r=0.85])Node2142[a=0.0,b=-1.0,x=-9.0,y=-20.0,r=0.93],(((((Node3293[a=-1.0,b=-1.0,x=-12.0,y=-25.0,r=1.32])Node3117[a=0.0,b=-1.0,x=-11.0,y=-24.0,r=0.65],((Node3629[a=1.0,b=-1.0,x=-12.0,y=-26.0,r=1.19])Node3292[a=-1.0,b=-1.0,x=-13.0,y=-25.0,r=0.65])Node3116[a=-1.0,b=-1.0,x=-12.0,y=-24.0,r=0.84])Node2947[a=-1.0,b=-1.0,x=-11.0,y=-23.0,r=1.3])Node2778[a=1.0,b=-1.0,x=-10.0,y=-22.0,r=1.49])Node2462[a=-1.0,b=-1.0,x=-11.0,y=-21.0,r=0.52])Node2141[a=-1.0,b=-1.0,x=-10.0,y=-20.0,r=1.28])Node1838[a=-1.0,b=0.0,x=-9.0,y=-19.0,r=0.8])Node1694[a=-1.0,b=-1.0,x=-8.0,y=-19.0,r=0.72])Node1325[a=-1.0,b=-1.0,x=-7.0,y=-18.0,r=1.45],(Node1438[a=-1.0,b=1.0,x=-6.0,y=-16.0,r=1.02],((Node1986[a=-1.0,b=-1.0,x=-7.0,y=-20.0,r=1.0])Node1559[a=0.0,b=-1.0,x=-6.0,y=-19.0,r=1.45])Node1437[a=-1.0,b=-1.0,x=-6.0,y=-18.0,r=0.72])Node1324[a=1.0,b=0.0,x=-5.0,y=-17.0,r=1.3])Node1124[a=-1.0,b=-1.0,x=-6.0,y=-17.0,r=1.23])Node1022[a=-1.0,b=-1.0,x=-5.0,y=-16.0,r=0.86],((Node1222[a=-1.0,b=-1.0,x=-7.0,y=-15.0,r=1.13])Node1123[a=-1.0,b=0.0,x=-6.0,y=-14.0,r=0.7],((((((Node1985[a=1.0,b=-1.0,x=-7.0,y=-19.0,r=1.25])Node1837[a=-1.0,b=-1.0,x=-8.0,y=-18.0,r=1.1])Node1558[a=1.0,b=-1.0,x=-7.0,y=-17.0,r=1.2],((Node2140[a=-1.0,b=-1.0,x=-11.0,y=-19.0,r=1.47])Node1836[a=-1.0,b=-1.0,x=-10.0,y=-18.0,r=0.8])Node1557[a=-1.0,b=-1.0,x=-9.0,y=-17.0,r=1.24])Node1436[a=0.0,b=-1.0,x=-8.0,y=-16.0,r=1.04],(((Node1835[a=-1.0,b=1.0,x=-10.0,y=-17.0,r=0.74])Node1693[a=-1.0,b=-1.0,x=-9.0,y=-18.0,r=0.9])Node1556[a=1.0,b=-1.0,x=-8.0,y=-17.0,r=0.78])Node1435[a=-1.0,b=-1.0,x=-9.0,y=-16.0,r=1.09])Node1323[a=-1.0,b=1.0,x=-8.0,y=-15.0,r=1.48])Node1221[a=-1.0,b=-1.0,x=-7.0,y=-16.0,r=1.34])Node1122[a=-1.0,b=-1.0,x=-6.0,y=-15.0,r=1.01])Node1021[a=-1.0,b=1.0,x=-5.0,y=-14.0,r=1.06])Node930[a=-1.0,b=-1.0,x=-4.0,y=-15.0,r=1.01])Node832[a=-1.0,b=-1.0,x=-3.0,y=-14.0,r=0.81])Node750[a=-1.0,b=-1.0,x=-2.0,y=-13.0,r=1.18],((((((Node1322[a=-1.0,b=-1.0,x=-2.0,y=-18.0,r=1.3])Node1220[a=1.0,b=0.0,x=-1.0,y=-17.0,r=0.72])Node1121[a=0.0,b=-1.0,x=-2.0,y=-17.0,r=0.75])Node1020[a=1.0,b=-1.0,x=-2.0,y=-16.0,r=1.46])Node929[a=-1.0,b=-1.0,x=-3.0,y=-15.0,r=1.24])Node831[a=-1.0,b=-1.0,x=-2.0,y=-14.0,r=0.77])Node749[a=0.0,b=-1.0,x=-1.0,y=-13.0,r=0.85])Node674[a=-1.0,b=-1.0,x=-1.0,y=-12.0,r=1.05])Node605[a=-1.0,b=-1.0,x=0.0,y=-11.0,r=1.24])Node536[a=-1.0,b=-1.0,x=1.0,y=-10.0,r=1.42])Node457[a=0.0,b=-1.0,x=2.0,y=-9.0,r=1.4])Node327[a=-1.0,b=-1.0,x=2.0,y=-8.0,r=0.78])Node273[a=-1.0,b=-1.0,x=3.0,y=-7.0,r=0.74])Node225[a=0.0,b=-1.0,x=4.0,y=-6.0,r=0.9])Node178[a=-1.0,b=0.0,x=4.0,y=-5.0,r=0.59],(((Node391[a=-1.0,b=-1.0,x=3.0,y=-9.0,r=0.53])Node272[a=0.0,b=-1.0,x=4.0,y=-8.0,r=1.07])Node224[a=-1.0,b=-1.0,x=4.0,y=-7.0,r=1.05],((((((((((Node1321[a=-1.0,b=-1.0,x=-3.0,y=-16.0,r=1.48])Node928[a=-1.0,b=-1.0,x=-2.0,y=-15.0,r=1.32])Node830[a=-1.0,b=-1.0,x=-1.0,y=-14.0,r=1.19])Node748[a=-1.0,b=-1.0,x=0.0,y=-13.0,r=1.25],((Node927[a=-1.0,b=-1.0,x=-1.0,y=-15.0,r=0.59])Node829[a=-1.0,b=-1.0,x=0.0,y=-14.0,r=1.22])Node747[a=0.0,b=-1.0,x=1.0,y=-13.0,r=1.42])Node604[a=-1.0,b=-1.0,x=1.0,y=-12.0,r=0.82],((Node746[a=-1.0,b=-1.0,x=1.0,y=-14.0,r=1.14],(((((Node1320[a=1.0,b=1.0,x=2.0,y=-16.0,r=0.54],(Node1434[a=-1.0,b=-1.0,x=1.0,y=-19.0,r=0.74],((((((Node2297[a=1.0,b=-1.0,x=5.0,y=-25.0,r=1.1])Node2139[a=1.0,b=-1.0,x=4.0,y=-24.0,r=1.47],(((((Node3291[a=0.0,b=-1.0,x=2.0,y=-29.0,r=1.31],(Node3463[a=0.0,b=-1.0,x=3.0,y=-30.0,r=1.31])Node3290[a=1.0,b=-1.0,x=3.0,y=-29.0,r=1.06])Node3115[a=1.0,b=-1.0,x=2.0,y=-28.0,r=0.64])Node2609[a=0.0,b=-1.0,x=1.0,y=-27.0,r=0.51],(((Node3462[a=-1.0,b=-1.0,x=-3.0,y=-30.0,r=1.26])Node2946[a=-1.0,b=-1.0,x=-2.0,y=-29.0,r=0.69],((((Node3628[a=1.0,b=-1.0,x=4.0,y=-32.0,r=0.6],Node3627[a=-1.0,b=0.0,x=2.0,y=-31.0,r=0.98])Node3461[a=1.0,b=-1.0,x=3.0,y=-31.0,r=0.7],Node3460[a=-1.0,b=-1.0,x=1.0,y=-31.0,r=1.4])Node3289[a=1.0,b=0.0,x=2.0,y=-30.0,r=1.1])Node3114[a=1.0,b=-1.0,x=1.0,y=-30.0,r=0.57],((Node3626[a=0.0,b=-1.0,x=0.0,y=-31.0,r=1.17])Node3288[a=1.0,b=-1.0,x=0.0,y=-30.0,r=0.8],Node3287[a=0.0,b=-1.0,x=-1.0,y=-30.0,r=1.4])Node3113[a=-1.0,b=0.0,x=-1.0,y=-29.0,r=1.41])Node2945[a=1.0,b=-1.0,x=0.0,y=-29.0,r=0.65])Node2777[a=-1.0,b=-1.0,x=-1.0,y=-28.0,r=0.61],((Node3286[a=1.0,b=-1.0,x=1.0,y=-29.0,r=1.11])Node2944[a=-1.0,b=0.0,x=0.0,y=-28.0,r=1.36])Node2776[a=1.0,b=-1.0,x=1.0,y=-28.0,r=0.77])Node2608[a=-1.0,b=-1.0,x=0.0,y=-27.0,r=0.66])Node2461[a=0.0,b=-1.0,x=1.0,y=-26.0,r=1.04])Node2296[a=-1.0,b=-1.0,x=1.0,y=-25.0,r=0.8],((((Node3459[a=1.0,b=-1.0,x=4.0,y=-29.0,r=1.26])Node3285[a=1.0,b=-1.0,x=3.0,y=-28.0,r=1.37])Node2607[a=-1.0,b=-1.0,x=2.0,y=-27.0,r=0.62])Node2460[a=0.0,b=-1.0,x=3.0,y=-26.0,r=1.47],((Node3284[a=1.0,b=-1.0,x=4.0,y=-28.0,r=0.77])Node3112[a=1.0,b=-1.0,x=3.0,y=-27.0,r=1.31])Node2459[a=-1.0,b=-1.0,x=2.0,y=-26.0,r=0.88])Node2295[a=1.0,b=-1.0,x=3.0,y=-25.0,r=0.56])Node2138[a=-1.0,b=-1.0,x=2.0,y=-24.0,r=1.14])Node1984[a=1.0,b=-1.0,x=3.0,y=-23.0,r=1.33],(((((Node2775[a=1.0,b=1.0,x=5.0,y=-26.0,r=0.52],Node2774[a=1.0,b=0.0,x=5.0,y=-27.0,r=1.35])Node2606[a=0.0,b=-1.0,x=4.0,y=-27.0,r=0.98])Node2458[a=0.0,b=-1.0,x=4.0,y=-26.0,r=0.99])Node2294[a=1.0,b=-1.0,x=4.0,y=-25.0,r=1.3])Node2137[a=1.0,b=-1.0,x=3.0,y=-24.0,r=1.41],(Node2293[a=1.0,b=-1.0,x=2.0,y=-25.0,r=0.56])Node2136[a=-1.0,b=-1.0,x=1.0,y=-24.0,r=1.2])Node1983[a=0.0,b=-1.0,x=2.0,y=-23.0,r=1.12])Node1834[a=0.0,b=-1.0,x=2.0,y=-22.0,r=0.51],(Node1982[a=-1.0,b=-1.0,x=0.0,y=-23.0,r=1.49],(((((((((Node3625[a=-1.0,b=-1.0,x=-6.0,y=-31.0,r=0.98],Node3624[a=1.0,b=-1.0,x=-4.0,y=-31.0,r=1.28])Node3458[a=-1.0,b=-1.0,x=-5.0,y=-30.0,r=0.79])Node3283[a=0.0,b=-1.0,x=-4.0,y=-29.0,r=1.27])Node3111[a=0.0,b=-1.0,x=-4.0,y=-28.0,r=1.15])Node2943[a=-1.0,b=-1.0,x=-4.0,y=-27.0,r=1.42])Node2773[a=-1.0,b=-1.0,x=-3.0,y=-26.0,r=1.35])Node2605[a=-1.0,b=-1.0,x=-2.0,y=-25.0,r=1.17])Node2457[a=-1.0,b=0.0,x=-1.0,y=-24.0,r=1.45],((Node2772[a=-1.0,b=-1.0,x=-1.0,y=-27.0,r=0.74])Node2604[a=0.0,b=-1.0,x=0.0,y=-26.0,r=1.05],(((Node3282[a=0.0,b=-1.0,x=-3.0,y=-28.0,r=1.12])Node2942[a=-1.0,b=0.0,x=-3.0,y=-27.0,r=0.77],(Node3281[a=-1.0,b=-1.0,x=-3.0,y=-29.0,r=1.11])Node2941[a=0.0,b=-1.0,x=-2.0,y=-28.0,r=0.61])Node2771[a=-1.0,b=-1.0,x=-2.0,y=-27.0,r=1.34])Node2603[a=-1.0,b=-1.0,x=-1.0,y=-26.0,r=1.42])Node2456[a=0.0,b=-1.0,x=0.0,y=-25.0,r=1.37])Node2292[a=-1.0,b=-1.0,x=0.0,y=-24.0,r=1.32])Node1981[a=0.0,b=-1.0,x=1.0,y=-23.0,r=0.97])Node1833[a=-1.0,b=-1.0,x=1.0,y=-22.0,r=1.11])Node1692[a=0.0,b=-1.0,x=2.0,y=-21.0,r=0.9])Node1555[a=-1.0,b=-1.0,x=2.0,y=-20.0,r=1.08],Node1554[a=0.0,b=-1.0,x=3.0,y=-20.0,r=0.74])Node1433[a=1.0,b=-1.0,x=3.0,y=-19.0,r=1.31])Node1319[a=1.0,b=-1.0,x=2.0,y=-18.0,r=1.2])Node1219[a=1.0,b=-1.0,x=1.0,y=-17.0,r=0.6])Node1120[a=0.0,b=-1.0,x=0.0,y=-16.0,r=1.26],Node1119[a=-1.0,b=-1.0,x=-1.0,y=-16.0,r=0.81])Node926[a=-1.0,b=0.0,x=0.0,y=-15.0,r=1.34],((Node1318[a=0.0,b=-1.0,x=0.0,y=-18.0,r=0.63],((((Node1832[a=-1.0,b=1.0,x=-3.0,y=-20.0,r=1.04])Node1691[a=0.0,b=-1.0,x=-2.0,y=-21.0,r=1.17],(((Node2455[a=-1.0,b=-1.0,x=-4.0,y=-24.0,r=0.76],(Node2770[a=1.0,b=-1.0,x=-1.0,y=-25.0,r=0.58])Node2454[a=1.0,b=-1.0,x=-2.0,y=-24.0,r=0.74])Node2291[a=1.0,b=-1.0,x=-3.0,y=-23.0,r=1.47])Node1980[a=-1.0,b=-1.0,x=-4.0,y=-22.0,r=0.68])Node1690[a=-1.0,b=-1.0,x=-3.0,y=-21.0,r=0.79])Node1553[a=-1.0,b=-1.0,x=-2.0,y=-20.0,r=1.29])Node1432[a=0.0,b=-1.0,x=-1.0,y=-19.0,r=0.55],(((Node1831[a=-1.0,b=-1.0,x=-5.0,y=-20.0,r=0.79])Node1689[a=-1.0,b=-1.0,x=-4.0,y=-19.0,r=1.23])Node1552[a=-1.0,b=1.0,x=-3.0,y=-18.0,r=1.26],(Node1688[a=-1.0,b=1.0,x=-4.0,y=-18.0,r=1.31],((((((Node2940[a=-1.0,b=0.0,x=-10.0,y=-23.0,r=0.88])Node2769[a=-1.0,b=-1.0,x=-9.0,y=-23.0,r=0.74])Node2453[a=-1.0,b=1.0,x=-8.0,y=-22.0,r=0.55])Node2290[a=-1.0,b=-1.0,x=-7.0,y=-23.0,r=1.42])Node1979[a=-1.0,b=-1.0,x=-6.0,y=-22.0,r=1.12])Node1830[a=-1.0,b=-1.0,x=-5.0,y=-21.0,r=0.56],(((((Node2939[a=1.0,b=-1.0,x=-2.0,y=-26.0,r=1.05])Node2768[a=0.0,b=-1.0,x=-3.0,y=-25.0,r=1.36])Node2602[a=1.0,b=-1.0,x=-3.0,y=-24.0,r=0.61])Node2289[a=1.0,b=-1.0,x=-4.0,y=-23.0,r=1.07],(((Node3280[a=0.0,b=-1.0,x=-6.0,y=-26.0,r=1.3],Node3279[a=-1.0,b=-1.0,x=-7.0,y=-26.0,r=1.28])Node2767[a=-1.0,b=-1.0,x=-6.0,y=-25.0,r=1.44])Node2452[a=0.0,b=-1.0,x=-5.0,y=-24.0,r=1.41],(((Node3110[a=-1.0,b=-1.0,x=-9.0,y=-25.0,r=0.63])Node2766[a=-1.0,b=1.0,x=-8.0,y=-24.0,r=0.57],((((Node3623[a=-1.0,b=-1.0,x=-9.0,y=-28.0,r=1.49])Node3457[a=1.0,b=-1.0,x=-8.0,y=-27.0,r=0.79],Node3456[a=1.0,b=0.0,x=-8.0,y=-26.0,r=1.19])Node3278[a=-1.0,b=-1.0,x=-9.0,y=-26.0,r=1.41])Node2938[a=-1.0,b=-1.0,x=-8.0,y=-25.0,r=0.95])Node2765[a=0.0,b=1.0,x=-7.0,y=-24.0,r=0.82])Node2601[a=-1.0,b=-1.0,x=-7.0,y=-25.0,r=1.02],((((Node3455[a=-1.0,b=0.0,x=-7.0,y=-27.0,r=0.75],Node3454[a=-1.0,b=-1.0,x=-7.0,y=-28.0,r=1.48])Node3277[a=-1.0,b=-1.0,x=-6.0,y=-27.0,r=0.99])Node2937[a=-1.0,b=-1.0,x=-5.0,y=-26.0,r=0.6],(((Node3622[a=-1.0,b=-1.0,x=-7.0,y=-29.0,r=0.91])Node3453[a=-1.0,b=-1.0,x=-6.0,y=-28.0,r=0.99],(Node3621[a=0.0,b=-1.0,x=-5.0,y=-29.0,r=1.04],Node3620[a=-1.0,b=-1.0,x=-6.0,y=-29.0,r=1.31])Node3452[a=0.0,b=-1.0,x=-5.0,y=-28.0,r=1.07])Node3109[a=-1.0,b=-1.0,x=-5.0,y=-27.0,r=0.69])Node2936[a=0.0,b=-1.0,x=-4.0,y=-26.0,r=0.78])Node2764[a=1.0,b=0.0,x=-4.0,y=-25.0,r=1.31])Node2600[a=1.0,b=-1.0,x=-5.0,y=-25.0,r=1.3])Node2451[a=-1.0,b=-1.0,x=-6.0,y=-24.0,r=1.47])Node2288[a=0.0,b=-1.0,x=-5.0,y=-23.0,r=0.63])Node2135[a=-1.0,b=-1.0,x=-5.0,y=-22.0,r=0.53],Node2134[a=1.0,b=-1.0,x=-3.0,y=-22.0,r=0.75])Node1829[a=0.0,b=-1.0,x=-4.0,y=-21.0,r=0.74])Node1687[a=-1.0,b=-1.0,x=-4.0,y=-20.0,r=1.45])Node1551[a=-1.0,b=0.0,x=-3.0,y=-19.0,r=1.36])Node1431[a=-1.0,b=-1.0,x=-2.0,y=-19.0,r=0.94])Node1317[a=-1.0,b=-1.0,x=-1.0,y=-18.0,r=0.54])Node1218[a=-1.0,b=-1.0,x=0.0,y=-17.0,r=1.47],(((Node1550[a=0.0,b=-1.0,x=0.0,y=-20.0,r=0.8],(((Node2287[a=-1.0,b=0.0,x=-2.0,y=-22.0,r=0.93])Node1978[a=-1.0,b=-1.0,x=-1.0,y=-22.0,r=1.43])Node1686[a=1.0,b=-1.0,x=0.0,y=-21.0,r=1.22],(((Node2286[a=-1.0,b=0.0,x=-2.0,y=-23.0,r=0.96])Node2133[a=-1.0,b=-1.0,x=-1.0,y=-23.0,r=1.06])Node1977[a=1.0,b=-1.0,x=0.0,y=-22.0,r=1.45])Node1685[a=0.0,b=-1.0,x=-1.0,y=-21.0,r=1.13])Node1549[a=-1.0,b=-1.0,x=-1.0,y=-20.0,r=0.86])Node1430[a=-1.0,b=-1.0,x=0.0,y=-19.0,r=1.12],((Node1828[a=0.0,b=-1.0,x=1.0,y=-21.0,r=0.81])Node1548[a=-1.0,b=-1.0,x=1.0,y=-20.0,r=0.74])Node1429[a=1.0,b=-1.0,x=2.0,y=-19.0,r=0.84])Node1316[a=-1.0,b=-1.0,x=1.0,y=-18.0,r=0.75])Node1217[a=1.0,b=-1.0,x=2.0,y=-17.0,r=0.61])Node925[a=0.0,b=-1.0,x=1.0,y=-16.0,r=1.34])Node828[a=-1.0,b=-1.0,x=1.0,y=-15.0,r=1.26])Node745[a=0.0,b=-1.0,x=2.0,y=-14.0,r=1.15])Node673[a=-1.0,b=-1.0,x=2.0,y=-13.0,r=1.39])Node603[a=1.0,b=-1.0,x=3.0,y=-12.0,r=0.54])Node535[a=-1.0,b=-1.0,x=2.0,y=-11.0,r=1.38],Node534[a=-1.0,b=0.0,x=2.0,y=-10.0,r=1.12])Node456[a=-1.0,b=-1.0,x=3.0,y=-10.0,r=0.64])Node390[a=-1.0,b=-1.0,x=4.0,y=-9.0,r=0.5])Node326[a=-1.0,b=-1.0,x=5.0,y=-8.0,r=0.72],((((Node672[a=-1.0,b=-1.0,x=2.0,y=-12.0,r=0.71])Node533[a=-1.0,b=-1.0,x=3.0,y=-11.0,r=0.86])Node455[a=-1.0,b=-1.0,x=4.0,y=-10.0,r=0.55])Node389[a=-1.0,b=-1.0,x=5.0,y=-9.0,r=0.76])Node325[a=0.0,b=-1.0,x=6.0,y=-8.0,r=1.4])Node271[a=1.0,b=0.0,x=6.0,y=-7.0,r=1.37])Node223[a=0.0,b=-1.0,x=5.0,y=-7.0,r=0.72])Node177[a=0.0,b=-1.0,x=5.0,y=-6.0,r=1.11])Node120[a=0.0,b=-1.0,x=5.0,y=-5.0,r=0.92])Node99[a=-1.0,b=-1.0,x=5.0,y=-4.0,r=1.1])Node84[a=0.0,b=-1.0,x=6.0,y=-3.0,r=0.83])Node69[a=1.0,b=-1.0,x=6.0,y=-2.0,r=1.14])Node55[a=1.0,b=0.0,x=5.0,y=-1.0,r=1.09])Node43[a=0.0,b=-1.0,x=4.0,y=-1.0,r=1.44])Node24[a=1.0,b=0.0,x=4.0,y=0.0,r=1.07],(((((((Node324[a=-1.0,b=0.0,x=-1.0,y=-5.0,r=1.36])Node270[a=-1.0,b=-1.0,x=0.0,y=-5.0,r=1.22],((Node388[a=-1.0,b=0.0,x=0.0,y=-6.0,r=1.18],((((Node671[a=-1.0,b=0.0,x=-3.0,y=-9.0,r=0.88])Node602[a=0.0,b=-1.0,x=-2.0,y=-9.0,r=1.25])Node532[a=-1.0,b=-1.0,x=-2.0,y=-8.0,r=0.61],Node531[a=0.0,b=-1.0,x=-1.0,y=-8.0,r=0.51])Node454[a=-1.0,b=0.0,x=-1.0,y=-7.0,r=1.03],Node453[a=-1.0,b=1.0,x=-1.0,y=-6.0,r=0.84])Node387[a=-1.0,b=-1.0,x=0.0,y=-7.0,r=0.66])Node323[a=0.0,b=-1.0,x=1.0,y=-6.0,r=0.79])Node269[a=0.0,b=-1.0,x=1.0,y=-5.0,r=1.41])Node222[a=0.0,b=-1.0,x=1.0,y=-4.0,r=0.75],(((Node452[a=-1.0,b=-1.0,x=-3.0,y=-6.0,r=1.2],((Node601[a=-1.0,b=-1.0,x=-3.0,y=-8.0,r=0.99])Node530[a=0.0,b=-1.0,x=-2.0,y=-7.0,r=1.4],(Node744[a=-1.0,b=-1.0,x=-4.0,y=-8.0,r=0.85])Node529[a=-1.0,b=-1.0,x=-3.0,y=-7.0,r=0.7])Node451[a=0.0,b=-1.0,x=-2.0,y=-6.0,r=1.34])Node386[a=-1.0,b=-1.0,x=-2.0,y=-5.0,r=1.1])Node322[a=-1.0,b=0.0,x=-1.0,y=-4.0,r=0.96],Node321[a=0.0,b=1.0,x=0.0,y=-3.0,r=1.48])Node221[a=-1.0,b=-1.0,x=0.0,y=-4.0,r=0.68])Node176[a=-1.0,b=-1.0,x=1.0,y=-3.0,r=1.17])Node119[a=-1.0,b=0.0,x=2.0,y=-2.0,r=0.88])Node68[a=1.0,b=-1.0,x=3.0,y=-2.0,r=1.39])Node54[a=-1.0,b=0.0,x=2.0,y=-1.0,r=0.74])Node23[a=0.0,b=-1.0,x=3.0,y=-1.0,r=0.7])Node14[a=1.0,b=0.0,x=3.0,y=0.0,r=1.38])Node8[a=1.0,b=-1.0,x=2.0,y=0.0,r=1.44])Node6[a=1.0,b=0.0,x=1.0,y=1.0,r=1.11],((((((((((Node220[a=1.0,b=1.0,x=2.0,y=12.0,r=1.42])Node175[a=0.0,b=1.0,x=1.0,y=11.0,r=0.59])Node147[a=0.0,b=1.0,x=1.0,y=10.0,r=1.12],((((((Node450[a=1.0,b=1.0,x=5.0,y=16.0,r=1.35])Node385[a=1.0,b=1.0,x=4.0,y=15.0,r=0.96],((((((((((Node1547[a=-1.0,b=0.0,x=4.0,y=23.0,r=0.59],((Node1976[a=1.0,b=0.0,x=7.0,y=25.0,r=0.83])Node1827[a=1.0,b=1.0,x=6.0,y=25.0,r=0.95])Node1546[a=0.0,b=1.0,x=5.0,y=24.0,r=1.5])Node1428[a=-1.0,b=0.0,x=5.0,y=23.0,r=1.44])Node1118[a=1.0,b=1.0,x=6.0,y=23.0,r=0.75])Node1019[a=1.0,b=1.0,x=5.0,y=22.0,r=1.13])Node827[a=0.0,b=1.0,x=4.0,y=21.0,r=0.69],((((Node1427[a=-1.0,b=1.0,x=0.0,y=24.0,r=1.23],((((Node2285[a=1.0,b=1.0,x=6.0,y=28.0,r=0.81])Node1975[a=1.0,b=1.0,x=5.0,y=27.0,r=1.38])Node1826[a=1.0,b=1.0,x=4.0,y=26.0,r=1.25])Node1545[a=1.0,b=1.0,x=3.0,y=25.0,r=1.41],((((((Node2450[a=0.0,b=1.0,x=2.0,y=30.0,r=1.35])Node2284[a=-1.0,b=1.0,x=2.0,y=29.0,r=1.05])Node2132[a=-1.0,b=0.0,x=3.0,y=28.0,r=1.18],(((Node2599[a=-1.0,b=1.0,x=2.0,y=31.0,r=0.78])Node2449[a=-1.0,b=1.0,x=3.0,y=30.0,r=1.46])Node2283[a=1.0,b=0.0,x=4.0,y=29.0,r=1.33])Node2131[a=-1.0,b=1.0,x=3.0,y=29.0,r=0.78])Node1974[a=1.0,b=1.0,x=4.0,y=28.0,r=1.12])Node1825[a=0.0,b=1.0,x=3.0,y=27.0,r=1.42])Node1684[a=1.0,b=1.0,x=3.0,y=26.0,r=1.31])Node1544[a=0.0,b=1.0,x=2.0,y=25.0,r=1.1])Node1426[a=1.0,b=1.0,x=2.0,y=24.0,r=1.45])Node1315[a=-1.0,b=1.0,x=1.0,y=23.0,r=0.95])Node1018[a=-1.0,b=0.0,x=2.0,y=22.0,r=1.35])Node924[a=0.0,b=1.0,x=3.0,y=22.0,r=0.62],((((Node1824[a=0.0,b=1.0,x=4.0,y=25.0,r=0.54])Node1683[a=1.0,b=0.0,x=4.0,y=24.0,r=1.0])Node1314[a=0.0,b=1.0,x=3.0,y=24.0,r=0.71])Node1017[a=-1.0,b=1.0,x=3.0,y=23.0,r=0.85])Node923[a=1.0,b=1.0,x=4.0,y=22.0,r=1.14])Node826[a=-1.0,b=1.0,x=3.0,y=21.0,r=0.92])Node743[a=0.0,b=1.0,x=4.0,y=20.0,r=0.58])Node670[a=-1.0,b=1.0,x=4.0,y=19.0,r=0.84],((((Node1016[a=1.0,b=1.0,x=7.0,y=22.0,r=0.67],((((((Node1973[a=1.0,b=0.0,x=6.0,y=26.0,r=0.79],(((((Node2763[a=0.0,b=1.0,x=3.0,y=32.0,r=0.54])Node2598[a=-1.0,b=1.0,x=3.0,y=31.0,r=0.99])Node2448[a=-1.0,b=1.0,x=4.0,y=30.0,r=0.64],(Node2597[a=-1.0,b=1.0,x=4.0,y=31.0,r=1.3])Node2447[a=0.0,b=1.0,x=5.0,y=30.0,r=1.1])Node2282[a=0.0,b=1.0,x=5.0,y=29.0,r=0.85],Node2281[a=-1.0,b=-1.0,x=4.0,y=27.0,r=0.78])Node2130[a=-1.0,b=1.0,x=5.0,y=28.0,r=1.14],Node2129[a=1.0,b=-1.0,x=7.0,y=26.0,r=0.68])Node1972[a=1.0,b=1.0,x=6.0,y=27.0,r=1.01])Node1823[a=0.0,b=1.0,x=5.0,y=26.0,r=0.84])Node1682[a=-1.0,b=1.0,x=5.0,y=25.0,r=0.66])Node1313[a=-1.0,b=0.0,x=6.0,y=24.0,r=0.73])Node1216[a=0.0,b=1.0,x=7.0,y=24.0,r=0.56])Node1117[a=1.0,b=1.0,x=7.0,y=23.0,r=0.58])Node1015[a=0.0,b=1.0,x=6.0,y=22.0,r=1.37])Node922[a=0.0,b=1.0,x=6.0,y=21.0,r=0.53],Node921[a=-1.0,b=1.0,x=5.0,y=21.0,r=1.49])Node825[a=1.0,b=0.0,x=6.0,y=20.0,r=0.88])Node742[a=-1.0,b=1.0,x=5.0,y=20.0,r=0.57])Node669[a=1.0,b=1.0,x=6.0,y=19.0,r=1.48])Node600[a=0.0,b=1.0,x=5.0,y=18.0,r=1.24],((((Node1312[a=1.0,b=0.0,x=9.0,y=21.0,r=0.58])Node1014[a=1.0,b=1.0,x=8.0,y=21.0,r=1.0],(((((((((Node2446[a=1.0,b=1.0,x=11.0,y=30.0,r=1.09])Node2280[a=-1.0,b=1.0,x=10.0,y=29.0,r=0.83],((((((Node3619[a=1.0,b=1.0,x=13.0,y=35.0,r=0.72])Node3276[a=-1.0,b=1.0,x=12.0,y=34.0,r=1.35])Node3108[a=1.0,b=1.0,x=13.0,y=33.0,r=0.54])Node2935[a=1.0,b=1.0,x=12.0,y=32.0,r=1.04],(Node3107[a=1.0,b=1.0,x=11.0,y=33.0,r=1.37],Node3106[a=0.0,b=1.0,x=10.0,y=33.0,r=1.28])Node2934[a=-1.0,b=1.0,x=10.0,y=32.0,r=1.03])Node2596[a=1.0,b=1.0,x=11.0,y=31.0,r=0.92])Node2445[a=-1.0,b=1.0,x=10.0,y=30.0,r=0.95],((((((Node3451[a=-1.0,b=1.0,x=13.0,y=34.0,r=1.02],(Node3618[a=-1.0,b=1.0,x=14.0,y=35.0,r=1.33])Node3450[a=1.0,b=1.0,x=15.0,y=34.0,r=0.76])Node3275[a=1.0,b=1.0,x=14.0,y=33.0,r=1.15])Node3105[a=-1.0,b=1.0,x=13.0,y=32.0,r=0.74])Node2933[a=1.0,b=1.0,x=14.0,y=31.0,r=0.95])Node2762[a=1.0,b=-1.0,x=13.0,y=30.0,r=1.4])Node2595[a=0.0,b=1.0,x=12.0,y=31.0,r=0.85])Node2444[a=1.0,b=1.0,x=12.0,y=30.0,r=0.54])Node2279[a=0.0,b=1.0,x=11.0,y=29.0,r=1.17])Node2128[a=0.0,b=1.0,x=11.0,y=28.0,r=1.2])Node1971[a=1.0,b=1.0,x=11.0,y=27.0,r=0.9])Node1681[a=1.0,b=1.0,x=10.0,y=26.0,r=0.89])Node1543[a=1.0,b=1.0,x=9.0,y=25.0,r=1.33],((((Node2443[a=1.0,b=1.0,x=9.0,y=29.0,r=0.99])Node2278[a=1.0,b=1.0,x=8.0,y=28.0,r=1.33])Node2127[a=-1.0,b=1.0,x=7.0,y=27.0,r=1.07])Node1680[a=0.0,b=1.0,x=8.0,y=26.0,r=0.58])Node1542[a=0.0,b=1.0,x=8.0,y=25.0,r=0.7])Node1425[a=0.0,b=1.0,x=8.0,y=24.0,r=0.71],(((((((((Node2932[a=0.0,b=-1.0,x=15.0,y=29.0,r=1.28],(Node3104[a=-1.0,b=1.0,x=13.0,y=31.0,r=1.0])Node2931[a=-1.0,b=0.0,x=14.0,y=30.0,r=0.59])Node2761[a=1.0,b=1.0,x=15.0,y=30.0,r=1.47])Node2594[a=1.0,b=1.0,x=14.0,y=29.0,r=0.83],Node2593[a=-1.0,b=1.0,x=12.0,y=29.0,r=1.04])Node2442[a=1.0,b=1.0,x=13.0,y=28.0,r=0.75])Node2277[a=1.0,b=1.0,x=12.0,y=27.0,r=1.3])Node1970[a=-1.0,b=0.0,x=11.0,y=26.0,r=0.52])Node1822[a=1.0,b=1.0,x=12.0,y=26.0,r=0.97])Node1679[a=1.0,b=0.0,x=11.0,y=25.0,r=0.68],(Node1821[a=1.0,b=1.0,x=10.0,y=27.0,r=0.71],((Node2126[a=0.0,b=1.0,x=9.0,y=28.0,r=0.71],Node2125[a=1.0,b=1.0,x=10.0,y=28.0,r=1.43])Node1969[a=1.0,b=0.0,x=9.0,y=27.0,r=1.04],(((((((((Node3617[a=-1.0,b=1.0,x=7.0,y=37.0,r=0.83])Node3449[a=0.0,b=1.0,x=8.0,y=36.0,r=0.71])Node3274[a=-1.0,b=1.0,x=8.0,y=35.0,r=1.27],(Node3448[a=0.0,b=1.0,x=10.0,y=35.0,r=0.6],(Node3616[a=0.0,b=1.0,x=9.0,y=36.0,r=1.05],Node3615[a=1.0,b=1.0,x=10.0,y=36.0,r=1.38])Node3447[a=-1.0,b=1.0,x=9.0,y=35.0,r=1.11])Node3273[a=1.0,b=0.0,x=10.0,y=34.0,r=1.16])Node3103[a=0.0,b=1.0,x=9.0,y=34.0,r=1.48])Node2930[a=1.0,b=1.0,x=9.0,y=33.0,r=0.91])Node2592[a=-1.0,b=1.0,x=8.0,y=32.0,r=0.82],(Node2929[a=-1.0,b=1.0,x=9.0,y=32.0,r=0.93],(((Node3614[a=0.0,b=1.0,x=11.0,y=35.0,r=0.81])Node3272[a=-1.0,b=1.0,x=11.0,y=34.0,r=1.3])Node3102[a=1.0,b=1.0,x=12.0,y=33.0,r=1.23])Node2928[a=1.0,b=1.0,x=11.0,y=32.0,r=0.84])Node2591[a=1.0,b=0.0,x=10.0,y=31.0,r=0.68])Node2441[a=0.0,b=1.0,x=9.0,y=31.0,r=1.31])Node2276[a=1.0,b=1.0,x=9.0,y=30.0,r=0.57])Node2124[a=1.0,b=1.0,x=8.0,y=29.0,r=0.71],((Node2440[a=1.0,b=1.0,x=8.0,y=30.0,r=1.4],((((((Node3613[a=0.0,b=1.0,x=3.0,y=36.0,r=0.63])Node3446[a=-1.0,b=1.0,x=3.0,y=35.0,r=1.2])Node3271[a=-1.0,b=1.0,x=4.0,y=34.0,r=1.17])Node2927[a=0.0,b=1.0,x=5.0,y=33.0,r=0.84])Node2760[a=-1.0,b=1.0,x=5.0,y=32.0,r=1.26])Node2590[a=0.0,b=1.0,x=6.0,y=31.0,r=1.31],((Node2926[a=0.0,b=1.0,x=4.0,y=33.0,r=1.09])Node2759[a=-1.0,b=1.0,x=4.0,y=32.0,r=0.98],((Node3101[a=0.0,b=1.0,x=6.0,y=34.0,r=1.24],Node3100[a=-1.0,b=1.0,x=5.0,y=34.0,r=0.68])Node2925[a=0.0,b=1.0,x=6.0,y=33.0,r=1.44])Node2758[a=1.0,b=1.0,x=6.0,y=32.0,r=0.62])Node2589[a=-1.0,b=1.0,x=5.0,y=31.0,r=0.97])Node2439[a=-1.0,b=1.0,x=6.0,y=30.0,r=1.5])Node2275[a=1.0,b=0.0,x=7.0,y=29.0,r=0.9],((((Node3270[a=0.0,b=1.0,x=8.0,y=34.0,r=0.71])Node2924[a=1.0,b=1.0,x=8.0,y=33.0,r=0.57],((((Node3612[a=-1.0,b=0.0,x=5.0,y=35.0,r=1.42],Node3611[a=1.0,b=1.0,x=7.0,y=36.0,r=0.61])Node3445[a=-1.0,b=0.0,x=6.0,y=35.0,r=1.14])Node3269[a=0.0,b=1.0,x=7.0,y=35.0,r=1.32])Node3099[a=0.0,b=1.0,x=7.0,y=34.0,r=0.63])Node2923[a=0.0,b=1.0,x=7.0,y=33.0,r=1.37])Node2757[a=-1.0,b=1.0,x=7.0,y=32.0,r=1.42],Node2756[a=-1.0,b=0.0,x=7.0,y=31.0,r=1.41])Node2438[a=1.0,b=1.0,x=8.0,y=31.0,r=0.85])Node2274[a=1.0,b=1.0,x=7.0,y=30.0,r=0.53])Node2123[a=-1.0,b=1.0,x=6.0,y=29.0,r=0.53])Node1968[a=-1.0,b=1.0,x=7.0,y=28.0,r=0.97])Node1820[a=-1.0,b=1.0,x=8.0,y=27.0,r=1.37])Node1678[a=-1.0,b=1.0,x=9.0,y=26.0,r=1.35])Node1541[a=1.0,b=1.0,x=10.0,y=25.0,r=0.77])Node1424[a=1.0,b=1.0,x=9.0,y=24.0,r=0.57])Node1215[a=0.0,b=1.0,x=8.0,y=23.0,r=1.5],(((Node1540[a=0.0,b=1.0,x=10.0,y=24.0,r=0.86])Node1423[a=0.0,b=1.0,x=10.0,y=23.0,r=0.94],Node1422[a=-1.0,b=1.0,x=9.0,y=23.0,r=0.79])Node1311[a=1.0,b=0.0,x=10.0,y=22.0,r=0.73])Node1214[a=1.0,b=0.0,x=9.0,y=22.0,r=1.35])Node1116[a=1.0,b=1.0,x=8.0,y=22.0,r=0.78])Node1013[a=0.0,b=1.0,x=7.0,y=21.0,r=0.87])Node920[a=0.0,b=1.0,x=7.0,y=20.0,r=1.44])Node741[a=1.0,b=1.0,x=7.0,y=19.0,r=0.93])Node599[a=1.0,b=1.0,x=6.0,y=18.0,r=1.3])Node528[a=1.0,b=1.0,x=5.0,y=17.0,r=1.31],((((((((Node1421[a=1.0,b=-1.0,x=2.0,y=23.0,r=0.77],(((((((Node2755[a=-1.0,b=0.0,x=-1.0,y=31.0,r=0.9],(((Node3610[a=0.0,b=1.0,x=-2.0,y=35.0,r=0.69],Node3609[a=-1.0,b=1.0,x=-3.0,y=35.0,r=1.31])Node3444[a=-1.0,b=1.0,x=-2.0,y=34.0,r=1.05])Node2922[a=-1.0,b=1.0,x=-1.0,y=33.0,r=1.33])Node2754[a=0.0,b=1.0,x=0.0,y=32.0,r=0.91])Node2588[a=0.0,b=1.0,x=0.0,y=31.0,r=0.75],(((((Node3608[a=-1.0,b=1.0,x=2.0,y=35.0,r=1.14],Node3607[a=1.0,b=1.0,x=4.0,y=35.0,r=0.77])Node3268[a=1.0,b=1.0,x=3.0,y=34.0,r=0.59])Node3098[a=1.0,b=0.0,x=2.0,y=33.0,r=1.13],((Node3606[a=-1.0,b=1.0,x=0.0,y=36.0,r=0.91])Node3267[a=-1.0,b=1.0,x=1.0,y=35.0,r=0.97])Node3097[a=1.0,b=1.0,x=2.0,y=34.0,r=0.73])Node2921[a=0.0,b=1.0,x=1.0,y=33.0,r=1.48])Node2753[a=0.0,b=1.0,x=1.0,y=32.0,r=0.63],(Node3266[a=1.0,b=1.0,x=3.0,y=33.0,r=1.43])Node2752[a=1.0,b=1.0,x=2.0,y=32.0,r=1.27])Node2587[a=1.0,b=1.0,x=1.0,y=31.0,r=0.62])Node2273[a=-1.0,b=1.0,x=0.0,y=30.0,r=1.22],(Node2437[a=1.0,b=1.0,x=1.0,y=30.0,r=1.08])Node2272[a=-1.0,b=0.0,x=0.0,y=29.0,r=0.85])Node2122[a=1.0,b=1.0,x=1.0,y=29.0,r=1.15])Node1967[a=0.0,b=1.0,x=0.0,y=28.0,r=0.66],((((((Node3096[a=-1.0,b=1.0,x=-1.0,y=34.0,r=0.61],((Node3443[a=-1.0,b=1.0,x=0.0,y=35.0,r=1.39])Node3265[a=1.0,b=0.0,x=1.0,y=34.0,r=1.47])Node3095[a=0.0,b=1.0,x=0.0,y=34.0,r=0.52])Node2920[a=1.0,b=1.0,x=0.0,y=33.0,r=1.05])Node2751[a=1.0,b=1.0,x=-1.0,y=32.0,r=1.5],((Node3442[a=1.0,b=1.0,x=-2.0,y=33.0,r=1.06])Node2919[a=-1.0,b=0.0,x=-3.0,y=32.0,r=1.27])Node2750[a=0.0,b=1.0,x=-2.0,y=32.0,r=1.26])Node2586[a=0.0,b=1.0,x=-2.0,y=31.0,r=0.86])Node2436[a=0.0,b=1.0,x=-2.0,y=30.0,r=1.15])Node2121[a=-1.0,b=1.0,x=-2.0,y=29.0,r=1.42])Node1966[a=-1.0,b=1.0,x=-1.0,y=28.0,r=0.73])Node1819[a=-1.0,b=1.0,x=0.0,y=27.0,r=1.02],(Node1965[a=-1.0,b=0.0,x=1.0,y=27.0,r=1.14],(Node2120[a=1.0,b=0.0,x=2.0,y=28.0,r=0.5])Node1964[a=-1.0,b=1.0,x=1.0,y=28.0,r=1.37])Node1818[a=1.0,b=1.0,x=2.0,y=27.0,r=1.15])Node1539[a=1.0,b=1.0,x=1.0,y=26.0,r=0.61],(((Node2119[a=0.0,b=1.0,x=-1.0,y=27.0,r=0.73])Node1817[a=-1.0,b=0.0,x=-1.0,y=26.0,r=1.49])Node1677[a=-1.0,b=1.0,x=0.0,y=26.0,r=0.56],Node1676[a=1.0,b=1.0,x=2.0,y=26.0,r=1.18])Node1538[a=1.0,b=0.0,x=1.0,y=25.0,r=0.56])Node1420[a=-1.0,b=1.0,x=0.0,y=25.0,r=0.57])Node1310[a=1.0,b=1.0,x=1.0,y=24.0,r=1.23])Node1115[a=-1.0,b=1.0,x=0.0,y=23.0,r=0.72])Node1012[a=-1.0,b=1.0,x=1.0,y=22.0,r=1.45],(((Node1537[a=-1.0,b=1.0,x=-2.0,y=23.0,r=0.79],Node1536[a=0.0,b=1.0,x=-1.0,y=23.0,r=0.82])Node1213[a=-1.0,b=0.0,x=-1.0,y=22.0,r=1.15])Node1114[a=-1.0,b=1.0,x=0.0,y=22.0,r=1.22])Node1011[a=-1.0,b=0.0,x=1.0,y=21.0,r=0.91])Node919[a=-1.0,b=1.0,x=2.0,y=21.0,r=1.18])Node824[a=0.0,b=1.0,x=3.0,y=20.0,r=1.45],(Node918[a=-1.0,b=0.0,x=1.0,y=20.0,r=0.8])Node823[a=-1.0,b=1.0,x=2.0,y=20.0,r=1.32])Node740[a=-1.0,b=1.0,x=3.0,y=19.0,r=0.71],Node739[a=1.0,b=1.0,x=5.0,y=19.0,r=0.64])Node668[a=0.0,b=1.0,x=4.0,y=18.0,r=1.34])Node527[a=0.0,b=1.0,x=4.0,y=17.0,r=0.62])Node449[a=1.0,b=1.0,x=4.0,y=16.0,r=0.74])Node384[a=0.0,b=1.0,x=3.0,y=15.0,r=1.04])Node320[a=1.0,b=1.0,x=3.0,y=14.0,r=0.88],((Node448[a=-1.0,b=1.0,x=1.0,y=15.0,r=0.78])Node383[a=-1.0,b=1.0,x=2.0,y=14.0,r=1.39])Node319[a=1.0,b=0.0,x=3.0,y=13.0,r=0.87])Node268[a=-1.0,b=1.0,x=2.0,y=13.0,r=0.53])Node219[a=1.0,b=1.0,x=3.0,y=12.0,r=0.76],Node218[a=-1.0,b=1.0,x=1.0,y=12.0,r=1.08])Node174[a=0.0,b=1.0,x=2.0,y=11.0,r=0.7])Node146[a=1.0,b=1.0,x=2.0,y=10.0,r=1.47])Node118[a=-1.0,b=1.0,x=1.0,y=9.0,r=0.85],Node117[a=0.0,b=1.0,x=2.0,y=9.0,r=0.61])Node83[a=0.0,b=1.0,x=2.0,y=8.0,r=1.16])Node53[a=1.0,b=1.0,x=2.0,y=7.0,r=0.87],(((((Node173[a=1.0,b=1.0,x=5.0,y=8.0,r=1.44])Node145[a=0.0,b=1.0,x=4.0,y=7.0,r=1.47],Node144[a=1.0,b=0.0,x=5.0,y=6.0,r=1.43])Node116[a=1.0,b=0.0,x=4.0,y=6.0,r=0.91])Node98[a=0.0,b=-1.0,x=3.0,y=6.0,r=1.4])Node67[a=1.0,b=1.0,x=3.0,y=7.0,r=1.22])Node52[a=1.0,b=0.0,x=2.0,y=6.0,r=0.87])Node42[a=0.0,b=1.0,x=1.0,y=6.0,r=1.3])Node33[a=1.0,b=1.0,x=1.0,y=5.0,r=1.2],(((((((((((((Node822[a=-1.0,b=1.0,x=-7.0,y=16.0,r=1.1])Node598[a=-1.0,b=1.0,x=-6.0,y=15.0,r=0.75])Node447[a=-1.0,b=1.0,x=-5.0,y=14.0,r=1.22])Node382[a=-1.0,b=1.0,x=-4.0,y=13.0,r=1.3])Node318[a=-1.0,b=1.0,x=-3.0,y=12.0,r=1.0])Node267[a=-1.0,b=1.0,x=-2.0,y=11.0,r=1.25])Node172[a=-1.0,b=0.0,x=-1.0,y=10.0,r=0.96],((((((Node526[a=-1.0,b=1.0,x=-1.0,y=16.0,r=0.74],((Node667[a=-1.0,b=0.0,x=-1.0,y=17.0,r=0.6])Node597[a=0.0,b=1.0,x=0.0,y=17.0,r=0.78],Node596[a=1.0,b=0.0,x=1.0,y=16.0,r=0.84])Node525[a=0.0,b=1.0,x=0.0,y=16.0,r=0.6])Node446[a=1.0,b=1.0,x=0.0,y=15.0,r=1.02],Node445[a=-1.0,b=-1.0,x=-2.0,y=13.0,r=1.45])Node381[a=-1.0,b=1.0,x=-1.0,y=14.0,r=1.44])Node317[a=1.0,b=1.0,x=0.0,y=13.0,r=1.46],(((((Node738[a=1.0,b=1.0,x=-4.0,y=18.0,r=0.52],(((((((Node1963[a=-1.0,b=1.0,x=-10.0,y=24.0,r=0.8])Node1816[a=-1.0,b=1.0,x=-9.0,y=23.0,r=1.33])Node1535[a=1.0,b=1.0,x=-8.0,y=22.0,r=1.46])Node1309[a=-1.0,b=0.0,x=-9.0,y=21.0,r=1.21])Node1113[a=0.0,b=1.0,x=-8.0,y=21.0,r=0.69])Node1010[a=-1.0,b=1.0,x=-8.0,y=20.0,r=1.34])Node917[a=-1.0,b=1.0,x=-7.0,y=19.0,r=0.96])Node737[a=-1.0,b=1.0,x=-6.0,y=18.0,r=1.17])Node666[a=-1.0,b=1.0,x=-5.0,y=17.0,r=0.6])Node524[a=-1.0,b=1.0,x=-4.0,y=16.0,r=1.23],(((((((Node1212[a=0.0,b=1.0,x=-6.0,y=21.0,r=0.59])Node1009[a=0.0,b=1.0,x=-6.0,y=20.0,r=1.2],(((((((Node1962[a=-1.0,b=1.0,x=-9.0,y=27.0,r=0.88],(((((Node3094[a=1.0,b=1.0,x=-10.0,y=31.0,r=0.98],Node3093[a=0.0,b=1.0,x=-11.0,y=31.0,r=1.46])Node2918[a=0.0,b=1.0,x=-11.0,y=30.0,r=0.67])Node2749[a=-1.0,b=1.0,x=-11.0,y=29.0,r=1.06])Node2271[a=0.0,b=1.0,x=-10.0,y=28.0,r=1.1],(((Node2748[a=1.0,b=1.0,x=-12.0,y=30.0,r=1.24],((((Node3441[a=-1.0,b=1.0,x=-13.0,y=33.0,r=1.17])Node3264[a=1.0,b=1.0,x=-12.0,y=32.0,r=1.46])Node3092[a=1.0,b=1.0,x=-13.0,y=31.0,r=1.13])Node2917[a=0.0,b=1.0,x=-14.0,y=30.0,r=1.05])Node2747[a=-1.0,b=0.0,x=-14.0,y=29.0,r=0.89])Node2585[a=-1.0,b=1.0,x=-13.0,y=29.0,r=1.12],(((((Node3605[a=-1.0,b=1.0,x=-13.0,y=34.0,r=0.52])Node3440[a=-1.0,b=1.0,x=-12.0,y=33.0,r=1.29])Node3263[a=1.0,b=1.0,x=-11.0,y=32.0,r=1.27],((Node3604[a=0.0,b=-1.0,x=-14.0,y=31.0,r=0.54])Node3439[a=-1.0,b=0.0,x=-14.0,y=32.0,r=1.3])Node3262[a=-1.0,b=1.0,x=-13.0,y=32.0,r=0.52])Node3091[a=1.0,b=1.0,x=-12.0,y=31.0,r=0.87])Node2916[a=-1.0,b=1.0,x=-13.0,y=30.0,r=0.72])Node2584[a=0.0,b=1.0,x=-12.0,y=29.0,r=0.84])Node2435[a=-1.0,b=0.0,x=-12.0,y=28.0,r=1.29])Node2270[a=-1.0,b=1.0,x=-11.0,y=28.0,r=0.72])Node2118[a=-1.0,b=1.0,x=-10.0,y=27.0,r=1.49])Node1961[a=-1.0,b=0.0,x=-9.0,y=26.0,r=0.83])Node1815[a=-1.0,b=1.0,x=-8.0,y=26.0,r=1.2])Node1534[a=-1.0,b=1.0,x=-7.0,y=25.0,r=1.45])Node1419[a=0.0,b=1.0,x=-6.0,y=24.0,r=0.7])Node1308[a=0.0,b=1.0,x=-6.0,y=23.0,r=0.59],Node1307[a=-1.0,b=1.0,x=-7.0,y=23.0,r=1.07])Node1211[a=1.0,b=1.0,x=-6.0,y=22.0,r=1.11],((((((Node1960[a=0.0,b=-1.0,x=-9.0,y=24.0,r=1.43],((Node2269[a=-1.0,b=1.0,x=-11.0,y=27.0,r=1.24])Node2117[a=0.0,b=1.0,x=-10.0,y=26.0,r=0.99])Node1959[a=-1.0,b=0.0,x=-10.0,y=25.0,r=0.83])Node1814[a=-1.0,b=0.0,x=-9.0,y=25.0,r=1.09])Node1675[a=0.0,b=1.0,x=-8.0,y=25.0,r=0.58])Node1533[a=-1.0,b=0.0,x=-8.0,y=24.0,r=1.34])Node1418[a=1.0,b=1.0,x=-7.0,y=24.0,r=0.86],(((Node1958[a=-1.0,b=1.0,x=-12.0,y=25.0,r=1.33],((Node2268[a=-1.0,b=1.0,x=-12.0,y=27.0,r=1.13])Node2116[a=0.0,b=1.0,x=-11.0,y=26.0,r=1.15])Node1957[a=0.0,b=1.0,x=-11.0,y=25.0,r=1.34])Node1813[a=-1.0,b=1.0,x=-11.0,y=24.0,r=0.82])Node1532[a=-1.0,b=1.0,x=-10.0,y=23.0,r=0.53],((((((((((Node3438[a=-1.0,b=1.0,x=-16.0,y=31.0,r=1.17])Node3090[a=1.0,b=0.0,x=-15.0,y=30.0,r=0.83])Node2915[a=-1.0,b=1.0,x=-16.0,y=30.0,r=1.49],Node2914[a=-1.0,b=0.0,x=-16.0,y=29.0,r=1.23])Node2746[a=0.0,b=1.0,x=-15.0,y=29.0,r=0.82],(((Node3603[a=-1.0,b=1.0,x=-19.0,y=30.0,r=1.05])Node3437[a=-1.0,b=1.0,x=-18.0,y=29.0,r=1.02])Node3089[a=-1.0,b=0.0,x=-17.0,y=28.0,r=0.89],((Node3602[a=0.0,b=1.0,x=-17.0,y=31.0,r=1.39],Node3601[a=-1.0,b=0.0,x=-18.0,y=30.0,r=0.54])Node3261[a=0.0,b=1.0,x=-17.0,y=30.0,r=1.18])Node3088[a=-1.0,b=1.0,x=-17.0,y=29.0,r=1.39])Node2745[a=-1.0,b=0.0,x=-16.0,y=28.0,r=0.8])Node2583[a=-1.0,b=1.0,x=-15.0,y=28.0,r=1.35])Node2434[a=-1.0,b=1.0,x=-14.0,y=27.0,r=0.7],(Node2582[a=-1.0,b=1.0,x=-14.0,y=28.0,r=0.74],Node2581[a=0.0,b=1.0,x=-13.0,y=28.0,r=0.75])Node2433[a=0.0,b=1.0,x=-13.0,y=27.0,r=0.94])Node2267[a=0.0,b=1.0,x=-13.0,y=26.0,r=0.74],Node2266[a=1.0,b=1.0,x=-12.0,y=26.0,r=1.39])Node2115[a=-1.0,b=1.0,x=-13.0,y=25.0,r=0.63])Node1956[a=-1.0,b=1.0,x=-12.0,y=24.0,r=0.77])Node1674[a=-1.0,b=1.0,x=-11.0,y=23.0,r=0.74])Node1531[a=-1.0,b=0.0,x=-10.0,y=22.0,r=1.41])Node1417[a=-1.0,b=-1.0,x=-9.0,y=22.0,r=1.26])Node1306[a=-1.0,b=1.0,x=-8.0,y=23.0,r=1.37])Node1210[a=0.0,b=1.0,x=-7.0,y=22.0,r=1.28])Node1112[a=0.0,b=1.0,x=-7.0,y=21.0,r=1.08])Node1008[a=-1.0,b=1.0,x=-7.0,y=20.0,r=0.99])Node916[a=-1.0,b=0.0,x=-6.0,y=19.0,r=1.05])Node821[a=0.0,b=1.0,x=-5.0,y=19.0,r=1.47],Node820[a=-1.0,b=-1.0,x=-6.0,y=17.0,r=0.57])Node736[a=-1.0,b=1.0,x=-5.0,y=18.0,r=0.93],((((((((((Node1955[a=0.0,b=1.0,x=-2.0,y=27.0,r=0.87])Node1812[a=1.0,b=1.0,x=-2.0,y=26.0,r=1.43])Node1673[a=-1.0,b=0.0,x=-3.0,y=25.0,r=1.47],Node1672[a=-1.0,b=1.0,x=-3.0,y=26.0,r=1.28])Node1530[a=1.0,b=1.0,x=-2.0,y=25.0,r=1.48])Node1416[a=1.0,b=1.0,x=-3.0,y=24.0,r=0.87],(((((((Node2432[a=1.0,b=1.0,x=-8.0,y=29.0,r=0.75])Node2265[a=0.0,b=-1.0,x=-9.0,y=28.0,r=1.2],((Node2580[a=0.0,b=1.0,x=-10.0,y=30.0,r=0.83])Node2431[a=-1.0,b=-1.0,x=-10.0,y=29.0,r=1.27])Node2264[a=0.0,b=1.0,x=-9.0,y=30.0,r=0.7])Node2114[a=-1.0,b=1.0,x=-9.0,y=29.0,r=1.16])Node1954[a=0.0,b=1.0,x=-8.0,y=28.0,r=0.65])Node1811[a=-1.0,b=1.0,x=-8.0,y=27.0,r=0.91])Node1671[a=-1.0,b=1.0,x=-7.0,y=26.0,r=0.6],Node1670[a=0.0,b=1.0,x=-6.0,y=26.0,r=1.03])Node1529[a=-1.0,b=1.0,x=-6.0,y=25.0,r=0.99])Node1415[a=-1.0,b=1.0,x=-5.0,y=24.0,r=0.53])Node1305[a=-1.0,b=1.0,x=-4.0,y=23.0,r=0.71])Node1209[a=0.0,b=1.0,x=-3.0,y=22.0,r=0.53])Node1007[a=0.0,b=1.0,x=-3.0,y=21.0,r=1.18],Node1006[a=1.0,b=1.0,x=-2.0,y=21.0,r=1.41])Node915[a=1.0,b=1.0,x=-3.0,y=20.0,r=1.38],(((Node1304[a=-1.0,b=1.0,x=-5.0,y=23.0,r=0.56])Node1111[a=0.0,b=1.0,x=-4.0,y=22.0,r=0.58])Node1005[a=1.0,b=1.0,x=-4.0,y=21.0,r=0.69])Node914[a=-1.0,b=1.0,x=-5.0,y=20.0,r=0.83])Node819[a=-1.0,b=1.0,x=-4.0,y=19.0,r=0.57],(((Node1303[a=0.0,b=1.0,x=-5.0,y=22.0,r=0.92])Node1208[a=-1.0,b=1.0,x=-5.0,y=21.0,r=0.94])Node913[a=-1.0,b=1.0,x=-4.0,y=20.0,r=0.59])Node818[a=0.0,b=1.0,x=-3.0,y=19.0,r=1.21])Node735[a=1.0,b=1.0,x=-3.0,y=18.0,r=1.02])Node665[a=1.0,b=1.0,x=-4.0,y=17.0,r=0.88])Node595[a=-1.0,b=1.0,x=-5.0,y=16.0,r=0.73])Node523[a=-1.0,b=0.0,x=-4.0,y=15.0,r=1.31])Node444[a=-1.0,b=1.0,x=-3.0,y=15.0,r=1.48],(Node594[a=0.0,b=1.0,x=-2.0,y=16.0,r=1.04],((((Node1004[a=0.0,b=1.0,x=-2.0,y=20.0,r=1.49])Node912[a=-1.0,b=1.0,x=-2.0,y=19.0,r=0.78])Node817[a=1.0,b=1.0,x=-1.0,y=18.0,r=1.15])Node664[a=1.0,b=1.0,x=-2.0,y=17.0,r=0.97],(Node816[a=1.0,b=1.0,x=-2.0,y=18.0,r=0.87])Node663[a=0.0,b=1.0,x=-3.0,y=17.0,r=0.67])Node593[a=-1.0,b=1.0,x=-3.0,y=16.0,r=1.44])Node443[a=0.0,b=1.0,x=-2.0,y=15.0,r=0.96])Node380[a=-1.0,b=1.0,x=-2.0,y=14.0,r=1.43])Node316[a=0.0,b=1.0,x=-1.0,y=13.0,r=1.1])Node266[a=-1.0,b=0.0,x=-1.0,y=12.0,r=0.67],((Node522[a=-1.0,b=1.0,x=-1.0,y=15.0,r=1.0])Node379[a=-1.0,b=1.0,x=0.0,y=14.0,r=1.39],(((((Node815[a=0.0,b=1.0,x=2.0,y=19.0,r=0.99],(Node1003[a=-1.0,b=1.0,x=0.0,y=20.0,r=0.52])Node814[a=-1.0,b=1.0,x=1.0,y=19.0,r=1.46])Node662[a=0.0,b=1.0,x=2.0,y=18.0,r=1.23],Node661[a=1.0,b=1.0,x=3.0,y=18.0,r=1.24])Node592[a=-1.0,b=1.0,x=2.0,y=17.0,r=0.58],Node591[a=0.0,b=1.0,x=3.0,y=17.0,r=1.12])Node521[a=1.0,b=1.0,x=3.0,y=16.0,r=1.17],(((((((((Node1528[a=1.0,b=0.0,x=-1.0,y=24.0,r=0.81],Node1527[a=1.0,b=1.0,x=-1.0,y=25.0,r=1.02])Node1414[a=1.0,b=1.0,x=-2.0,y=24.0,r=1.02],(((((Node2113[a=-1.0,b=1.0,x=-7.0,y=28.0,r=0.89],(((((Node3087[a=-1.0,b=1.0,x=-9.0,y=32.0,r=1.49],(((Node3600[a=-1.0,b=1.0,x=-11.0,y=34.0,r=1.0])Node3436[a=0.0,b=1.0,x=-10.0,y=33.0,r=0.7],(Node3599[a=-1.0,b=1.0,x=-12.0,y=34.0,r=1.37])Node3435[a=-1.0,b=1.0,x=-11.0,y=33.0,r=1.32])Node3260[a=-1.0,b=1.0,x=-10.0,y=32.0,r=1.1])Node3086[a=-1.0,b=0.0,x=-9.0,y=31.0,r=1.06])Node2913[a=0.0,b=1.0,x=-8.0,y=31.0,r=0.65],((((Node3598[a=1.0,b=1.0,x=-8.0,y=35.0,r=1.18],Node3597[a=-1.0,b=1.0,x=-10.0,y=35.0,r=1.33])Node3434[a=-1.0,b=1.0,x=-9.0,y=34.0,r=1.16])Node3259[a=-1.0,b=1.0,x=-8.0,y=33.0,r=1.05])Node3085[a=0.0,b=1.0,x=-7.0,y=32.0,r=0.51],((Node3596[a=-1.0,b=1.0,x=-10.0,y=34.0,r=0.62])Node3258[a=-1.0,b=1.0,x=-9.0,y=33.0,r=1.05])Node3084[a=-1.0,b=1.0,x=-8.0,y=32.0,r=1.12])Node2912[a=1.0,b=1.0,x=-7.0,y=31.0,r=0.94])Node2744[a=-1.0,b=1.0,x=-8.0,y=30.0,r=1.41],Node2743[a=0.0,b=1.0,x=-7.0,y=30.0,r=0.65])Node2430[a=-1.0,b=1.0,x=-7.0,y=29.0,r=0.7])Node2263[a=1.0,b=1.0,x=-6.0,y=28.0,r=1.25])Node2112[a=-1.0,b=0.0,x=-7.0,y=27.0,r=1.12])Node1953[a=-1.0,b=0.0,x=-6.0,y=27.0,r=0.95],(((((((Node3595[a=1.0,b=1.0,x=-6.0,y=35.0,r=0.92],Node3594[a=0.0,b=1.0,x=-7.0,y=35.0,r=1.43])Node3433[a=-1.0,b=1.0,x=-7.0,y=34.0,r=0.58],(Node3593[a=-1.0,b=1.0,x=-6.0,y=34.0,r=0.73])Node3432[a=1.0,b=0.0,x=-5.0,y=33.0,r=0.89])Node3257[a=0.0,b=1.0,x=-6.0,y=33.0,r=0.84],(Node3431[a=-1.0,b=1.0,x=-8.0,y=34.0,r=1.27])Node3256[a=-1.0,b=1.0,x=-7.0,y=33.0,r=0.77])Node3083[a=-1.0,b=1.0,x=-6.0,y=32.0,r=1.19])Node2742[a=1.0,b=1.0,x=-5.0,y=31.0,r=1.0])Node2429[a=-1.0,b=1.0,x=-6.0,y=30.0,r=1.04],Node2428[a=1.0,b=1.0,x=-4.0,y=30.0,r=0.95])Node2262[a=-1.0,b=1.0,x=-5.0,y=29.0,r=0.69])Node1952[a=1.0,b=1.0,x=-4.0,y=28.0,r=0.78])Node1810[a=0.0,b=1.0,x=-5.0,y=27.0,r=0.88])Node1669[a=0.0,b=1.0,x=-5.0,y=26.0,r=1.04])Node1526[a=-1.0,b=1.0,x=-5.0,y=25.0,r=1.48],(((((((((Node3255[a=1.0,b=1.0,x=-3.0,y=34.0,r=0.79],(Node3430[a=-1.0,b=0.0,x=-5.0,y=34.0,r=0.94])Node3254[a=0.0,b=1.0,x=-4.0,y=34.0,r=0.8])Node3082[a=1.0,b=1.0,x=-4.0,y=33.0,r=0.97])Node2911[a=-1.0,b=1.0,x=-5.0,y=32.0,r=1.42],(Node3253[a=1.0,b=1.0,x=-3.0,y=33.0,r=1.37])Node2910[a=0.0,b=1.0,x=-4.0,y=32.0,r=0.56])Node2741[a=-1.0,b=1.0,x=-4.0,y=31.0,r=1.3],Node2740[a=0.0,b=1.0,x=-3.0,y=31.0,r=1.42])Node2427[a=1.0,b=1.0,x=-3.0,y=30.0,r=0.52])Node2261[a=1.0,b=1.0,x=-4.0,y=29.0,r=0.9],((Node2739[a=-1.0,b=1.0,x=-6.0,y=31.0,r=1.2])Node2426[a=1.0,b=1.0,x=-5.0,y=30.0,r=1.3])Node2260[a=-1.0,b=1.0,x=-6.0,y=29.0,r=0.68])Node2111[a=-1.0,b=1.0,x=-5.0,y=28.0,r=0.56])Node1951[a=0.0,b=1.0,x=-4.0,y=27.0,r=1.34],((Node2425[a=0.0,b=1.0,x=-3.0,y=29.0,r=0.55])Node2110[a=0.0,b=1.0,x=-3.0,y=28.0,r=1.28],((Node2738[a=0.0,b=1.0,x=-1.0,y=30.0,r=1.01])Node2424[a=1.0,b=1.0,x=-1.0,y=29.0,r=0.59])Node2109[a=1.0,b=1.0,x=-2.0,y=28.0,r=0.95])Node1950[a=1.0,b=1.0,x=-3.0,y=27.0,r=0.63])Node1809[a=0.0,b=1.0,x=-4.0,y=26.0,r=1.02])Node1525[a=0.0,b=1.0,x=-4.0,y=25.0,r=0.79])Node1413[a=-1.0,b=1.0,x=-4.0,y=24.0,r=1.37])Node1302[a=-1.0,b=1.0,x=-3.0,y=23.0,r=1.26])Node1207[a=-1.0,b=1.0,x=-2.0,y=22.0,r=0.66])Node1110[a=0.0,b=1.0,x=-1.0,y=21.0,r=1.3],Node1109[a=1.0,b=1.0,x=0.0,y=21.0,r=0.98])Node1002[a=-1.0,b=1.0,x=-1.0,y=20.0,r=1.36],Node1001[a=-1.0,b=0.0,x=-1.0,y=19.0,r=0.65])Node911[a=-1.0,b=1.0,x=0.0,y=19.0,r=1.02])Node813[a=0.0,b=1.0,x=1.0,y=18.0,r=1.15],Node812[a=-1.0,b=1.0,x=0.0,y=18.0,r=0.82])Node660[a=-1.0,b=1.0,x=1.0,y=17.0,r=0.91])Node520[a=0.0,b=1.0,x=2.0,y=16.0,r=1.16])Node442[a=1.0,b=1.0,x=2.0,y=15.0,r=1.48])Node378[a=0.0,b=1.0,x=1.0,y=14.0,r=1.2])Node265[a=1.0,b=1.0,x=1.0,y=13.0,r=1.41])Node217[a=0.0,b=1.0,x=0.0,y=12.0,r=0.97],(((Node441[a=-1.0,b=-1.0,x=-4.0,y=12.0,r=1.31],((((Node734[a=-1.0,b=-1.0,x=-7.0,y=15.0,r=1.21],(((((Node1412[a=-1.0,b=0.0,x=-10.0,y=20.0,r=0.58])Node1301[a=-1.0,b=1.0,x=-9.0,y=20.0,r=0.95])Node1000[a=0.0,b=1.0,x=-8.0,y=19.0,r=0.51],(Node1108[a=-1.0,b=-1.0,x=-10.0,y=18.0,r=0.74])Node999[a=-1.0,b=1.0,x=-9.0,y=19.0,r=1.46])Node910[a=-1.0,b=0.0,x=-8.0,y=18.0,r=0.6])Node811[a=0.0,b=1.0,x=-7.0,y=18.0,r=1.42])Node733[a=-1.0,b=1.0,x=-7.0,y=17.0,r=0.76])Node659[a=-1.0,b=1.0,x=-6.0,y=16.0,r=0.64])Node590[a=-1.0,b=1.0,x=-5.0,y=15.0,r=1.43])Node519[a=-1.0,b=0.0,x=-4.0,y=14.0,r=0.85])Node440[a=0.0,b=1.0,x=-3.0,y=14.0,r=0.76])Node315[a=-1.0,b=1.0,x=-3.0,y=13.0,r=0.57])Node264[a=-1.0,b=1.0,x=-2.0,y=12.0,r=1.24])Node216[a=-1.0,b=0.0,x=-1.0,y=11.0,r=0.8])Node171[a=0.0,b=1.0,x=0.0,y=11.0,r=1.29])Node143[a=0.0,b=1.0,x=0.0,y=10.0,r=1.26])Node115[a=-1.0,b=1.0,x=0.0,y=9.0,r=0.65],((((Node314[a=-1.0,b=1.0,x=-3.0,y=11.0,r=1.01])Node263[a=-1.0,b=1.0,x=-2.0,y=10.0,r=0.71])Node170[a=-1.0,b=1.0,x=-1.0,y=9.0,r=1.32],((Node262[a=0.0,b=1.0,x=-2.0,y=9.0,r=0.59],Node261[a=1.0,b=0.0,x=-1.0,y=8.0,r=1.04])Node215[a=-1.0,b=1.0,x=-2.0,y=8.0,r=0.68])Node169[a=-1.0,b=-1.0,x=-1.0,y=7.0,r=1.36])Node142[a=-1.0,b=1.0,x=0.0,y=8.0,r=1.42])Node114[a=0.0,b=-1.0,x=1.0,y=7.0,r=0.68])Node97[a=1.0,b=1.0,x=1.0,y=8.0,r=1.2])Node82[a=0.0,b=1.0,x=0.0,y=7.0,r=1.19])Node66[a=1.0,b=1.0,x=0.0,y=6.0,r=1.06])Node41[a=0.0,b=1.0,x=-1.0,y=5.0,r=0.66])Node32[a=-1.0,b=0.0,x=-1.0,y=4.0,r=0.93])Node22[a=1.0,b=1.0,x=0.0,y=4.0,r=0.63],((((((((((((((Node658[a=0.0,b=-1.0,x=-9.0,y=10.0,r=0.8],(((Node998[a=-1.0,b=1.0,x=-13.0,y=13.0,r=1.06])Node909[a=-1.0,b=1.0,x=-12.0,y=12.0,r=0.63])Node732[a=-1.0,b=1.0,x=-11.0,y=11.0,r=0.98],((((((Node1300[a=0.0,b=1.0,x=-14.0,y=15.0,r=0.66],((((((((Node2737[a=-1.0,b=1.0,x=-22.0,y=21.0,r=0.52])Node2423[a=-1.0,b=1.0,x=-21.0,y=20.0,r=0.77])Node2259[a=-1.0,b=1.0,x=-20.0,y=19.0,r=0.78])Node2108[a=0.0,b=-1.0,x=-19.0,y=18.0,r=1.35],((Node2579[a=0.0,b=1.0,x=-20.0,y=21.0,r=0.51])Node2258[a=-1.0,b=0.0,x=-20.0,y=20.0,r=0.53])Node2107[a=0.0,b=1.0,x=-19.0,y=20.0,r=1.36])Node1949[a=-1.0,b=1.0,x=-19.0,y=19.0,r=1.4],(((Node2422[a=0.0,b=1.0,x=-19.0,y=22.0,r=0.81],(((((((Node3592[a=-1.0,b=0.0,x=-25.0,y=26.0,r=0.99])Node3429[a=-1.0,b=0.0,x=-24.0,y=26.0,r=1.36])Node3252[a=0.0,b=1.0,x=-23.0,y=26.0,r=1.35])Node3081[a=-1.0,b=1.0,x=-23.0,y=25.0,r=0.89])Node2909[a=-1.0,b=1.0,x=-22.0,y=24.0,r=1.32])Node2736[a=-1.0,b=0.0,x=-21.0,y=23.0,r=1.13],((((Node3591[a=-1.0,b=1.0,x=-24.0,y=28.0,r=1.36])Node3428[a=-1.0,b=1.0,x=-23.0,y=27.0,r=0.99])Node3251[a=0.0,b=1.0,x=-22.0,y=26.0,r=1.24])Node3080[a=-1.0,b=1.0,x=-22.0,y=25.0,r=1.22])Node2735[a=-1.0,b=1.0,x=-21.0,y=24.0,r=0.95])Node2578[a=0.0,b=1.0,x=-20.0,y=23.0,r=0.87],((Node2908[a=-1.0,b=1.0,x=-23.0,y=23.0,r=1.41],Node2907[a=-1.0,b=0.0,x=-23.0,y=22.0,r=0.6])Node2734[a=-1.0,b=1.0,x=-22.0,y=22.0,r=0.95],((((Node3427[a=-1.0,b=0.0,x=-25.0,y=23.0,r=1.45])Node3250[a=-1.0,b=-1.0,x=-24.0,y=23.0,r=1.39],((Node3590[a=-1.0,b=1.0,x=-26.0,y=26.0,r=1.39])Node3426[a=-1.0,b=1.0,x=-25.0,y=25.0,r=0.93])Node3249[a=-1.0,b=0.0,x=-24.0,y=24.0,r=0.68])Node3079[a=-1.0,b=1.0,x=-23.0,y=24.0,r=1.4])Node2906[a=-1.0,b=1.0,x=-22.0,y=23.0,r=1.12])Node2733[a=0.0,b=1.0,x=-21.0,y=22.0,r=0.77])Node2577[a=-1.0,b=-1.0,x=-21.0,y=21.0,r=1.45])Node2421[a=-1.0,b=1.0,x=-20.0,y=22.0,r=1.47])Node2257[a=-1.0,b=1.0,x=-19.0,y=21.0,r=0.63])Node2106[a=-1.0,b=1.0,x=-18.0,y=20.0,r=1.07])Node1948[a=1.0,b=1.0,x=-17.0,y=19.0,r=0.98])Node1808[a=-1.0,b=1.0,x=-18.0,y=18.0,r=0.62])Node1668[a=-1.0,b=1.0,x=-17.0,y=17.0,r=1.07])Node1411[a=-1.0,b=1.0,x=-16.0,y=16.0,r=0.91],(((Node2105[a=-1.0,b=1.0,x=-18.0,y=19.0,r=0.83])Node1947[a=-1.0,b=1.0,x=-17.0,y=18.0,r=0.66])Node1667[a=-1.0,b=1.0,x=-16.0,y=17.0,r=1.45])Node1410[a=0.0,b=1.0,x=-15.0,y=16.0,r=0.93])Node1299[a=-1.0,b=1.0,x=-15.0,y=15.0,r=1.19])Node1206[a=-1.0,b=0.0,x=-14.0,y=14.0,r=1.37])Node1107[a=-1.0,b=0.0,x=-13.0,y=14.0,r=0.72])Node997[a=-1.0,b=1.0,x=-12.0,y=14.0,r=1.36])Node908[a=-1.0,b=1.0,x=-11.0,y=13.0,r=0.69])Node810[a=0.0,b=1.0,x=-10.0,y=12.0,r=1.47])Node731[a=0.0,b=1.0,x=-10.0,y=11.0,r=1.49])Node657[a=-1.0,b=-1.0,x=-10.0,y=10.0,r=1.13])Node518[a=-1.0,b=1.0,x=-9.0,y=11.0,r=0.7])Node439[a=0.0,b=1.0,x=-8.0,y=10.0,r=1.1],((((((Node1106[a=-1.0,b=1.0,x=-12.0,y=13.0,r=0.86])Node907[a=1.0,b=1.0,x=-11.0,y=12.0,r=0.99])Node730[a=-1.0,b=1.0,x=-12.0,y=11.0,r=1.3])Node656[a=0.0,b=1.0,x=-11.0,y=10.0,r=1.09])Node589[a=-1.0,b=1.0,x=-11.0,y=9.0,r=0.74])Node517[a=-1.0,b=-1.0,x=-10.0,y=8.0,r=0.9])Node438[a=-1.0,b=0.0,x=-9.0,y=9.0,r=1.45])Node377[a=-1.0,b=0.0,x=-8.0,y=9.0,r=0.54])Node313[a=-1.0,b=1.0,x=-7.0,y=9.0,r=1.03])Node260[a=-1.0,b=1.0,x=-6.0,y=8.0,r=1.18])Node214[a=-1.0,b=1.0,x=-5.0,y=7.0,r=0.56])Node113[a=-1.0,b=1.0,x=-4.0,y=6.0,r=0.94])Node96[a=0.0,b=1.0,x=-3.0,y=5.0,r=1.41])Node81[a=1.0,b=0.0,x=-3.0,y=4.0,r=1.37],((((((((((((Node1105[a=-1.0,b=-1.0,x=-15.0,y=0.0,r=0.88])Node906[a=-1.0,b=-1.0,x=-14.0,y=1.0,r=0.77],Node905[a=-1.0,b=0.0,x=-14.0,y=2.0,r=0.79])Node729[a=-1.0,b=1.0,x=-13.0,y=2.0,r=0.72])Node655[a=0.0,b=-1.0,x=-12.0,y=1.0,r=1.04],((Node904[a=-1.0,b=-1.0,x=-15.0,y=3.0,r=0.87])Node809[a=-1.0,b=1.0,x=-14.0,y=4.0,r=1.2])Node654[a=-1.0,b=1.0,x=-13.0,y=3.0,r=1.31])Node588[a=-1.0,b=-1.0,x=-12.0,y=2.0,r=1.43])Node437[a=-1.0,b=0.0,x=-11.0,y=3.0,r=0.6],(((((Node1104[a=-1.0,b=-1.0,x=-16.0,y=1.0,r=1.17])Node996[a=-1.0,b=-1.0,x=-15.0,y=2.0,r=1.35])Node903[a=-1.0,b=-1.0,x=-14.0,y=3.0,r=1.27])Node587[a=-1.0,b=1.0,x=-13.0,y=4.0,r=1.14],Node586[a=0.0,b=1.0,x=-12.0,y=4.0,r=0.79])Node516[a=-1.0,b=1.0,x=-12.0,y=3.0,r=0.87])Node436[a=-1.0,b=-1.0,x=-11.0,y=2.0,r=0.97])Node376[a=-1.0,b=-1.0,x=-10.0,y=3.0,r=0.95],((((((Node902[a=0.0,b=1.0,x=-14.0,y=8.0,r=1.14],(((Node1298[a=-1.0,b=0.0,x=-17.0,y=10.0,r=0.83],(((Node1666[a=-1.0,b=1.0,x=-20.0,y=10.0,r=0.69],(((((((((Node3425[a=-1.0,b=0.0,x=-28.0,y=17.0,r=1.29])Node3078[a=-1.0,b=1.0,x=-27.0,y=17.0,r=1.05])Node2905[a=-1.0,b=1.0,x=-26.0,y=16.0,r=0.8],((Node3589[a=-1.0,b=1.0,x=-28.0,y=16.0,r=0.64])Node3077[a=-1.0,b=0.0,x=-27.0,y=15.0,r=1.5],Node3076[a=-1.0,b=1.0,x=-27.0,y=16.0,r=0.7])Node2904[a=-1.0,b=0.0,x=-26.0,y=15.0,r=1.4])Node2732[a=0.0,b=1.0,x=-25.0,y=15.0,r=1.5])Node2576[a=-1.0,b=1.0,x=-25.0,y=14.0,r=1.3])Node2420[a=-1.0,b=1.0,x=-24.0,y=13.0,r=1.02])Node2104[a=-1.0,b=1.0,x=-23.0,y=12.0,r=1.27])Node1946[a=-1.0,b=1.0,x=-22.0,y=11.0,r=1.27])Node1807[a=-1.0,b=1.0,x=-21.0,y=10.0,r=1.2])Node1665[a=-1.0,b=0.0,x=-20.0,y=9.0,r=0.66])Node1524[a=-1.0,b=-1.0,x=-19.0,y=9.0,r=0.89])Node1409[a=-1.0,b=1.0,x=-18.0,y=10.0,r=1.49])Node1297[a=-1.0,b=-1.0,x=-17.0,y=9.0,r=0.82])Node1205[a=0.0,b=1.0,x=-16.0,y=10.0,r=0.77])Node995[a=-1.0,b=1.0,x=-16.0,y=9.0,r=0.92],Node994[a=-1.0,b=-1.0,x=-16.0,y=7.0,r=0.74])Node901[a=-1.0,b=1.0,x=-15.0,y=8.0,r=0.72])Node808[a=-1.0,b=0.0,x=-14.0,y=7.0,r=1.01])Node728[a=-1.0,b=0.0,x=-13.0,y=7.0,r=1.35])Node653[a=-1.0,b=1.0,x=-12.0,y=7.0,r=1.01])Node515[a=-1.0,b=0.0,x=-11.0,y=6.0,r=0.98],(((Node807[a=1.0,b=1.0,x=-12.0,y=10.0,r=0.79])Node727[a=-1.0,b=1.0,x=-13.0,y=9.0,r=1.28],(((((((Node1408[a=0.0,b=-1.0,x=-17.0,y=13.0,r=1.29],((((((((((Node3248[a=-1.0,b=-1.0,x=-27.0,y=21.0,r=1.22])Node3075[a=-1.0,b=1.0,x=-26.0,y=22.0,r=0.97])Node2903[a=-1.0,b=1.0,x=-25.0,y=21.0,r=0.57],Node2902[a=0.0,b=1.0,x=-24.0,y=21.0,r=0.58])Node2731[a=-1.0,b=1.0,x=-24.0,y=20.0,r=0.64])Node2575[a=-1.0,b=1.0,x=-23.0,y=19.0,r=1.42])Node2419[a=-1.0,b=1.0,x=-22.0,y=18.0,r=0.67])Node2256[a=-1.0,b=1.0,x=-21.0,y=17.0,r=0.6])Node2103[a=-1.0,b=1.0,x=-20.0,y=16.0,r=0.86])Node1806[a=-1.0,b=1.0,x=-19.0,y=15.0,r=1.32],((Node2255[a=-1.0,b=1.0,x=-21.0,y=16.0,r=1.1])Node1945[a=-1.0,b=1.0,x=-20.0,y=15.0,r=0.51])Node1805[a=-1.0,b=0.0,x=-19.0,y=14.0,r=1.35])Node1523[a=-1.0,b=-1.0,x=-18.0,y=14.0,r=0.75])Node1407[a=0.0,b=1.0,x=-17.0,y=15.0,r=0.92])Node1296[a=-1.0,b=1.0,x=-17.0,y=14.0,r=0.59],((((Node1944[a=0.0,b=-1.0,x=-18.0,y=16.0,r=0.92])Node1804[a=-1.0,b=1.0,x=-18.0,y=17.0,r=0.69],(((((((((Node3588[a=-1.0,b=-1.0,x=-26.0,y=21.0,r=1.23],Node3587[a=-1.0,b=1.0,x=-26.0,y=23.0,r=1.39])Node3424[a=-1.0,b=0.0,x=-25.0,y=22.0,r=1.16])Node3247[a=-1.0,b=1.0,x=-24.0,y=22.0,r=1.35])Node2901[a=-1.0,b=1.0,x=-23.0,y=21.0,r=0.93])Node2574[a=-1.0,b=1.0,x=-22.0,y=20.0,r=1.31])Node2418[a=-1.0,b=1.0,x=-21.0,y=19.0,r=0.65])Node2254[a=-1.0,b=1.0,x=-20.0,y=18.0,r=0.86],(((Node2900[a=-1.0,b=1.0,x=-23.0,y=20.0,r=0.99])Node2573[a=-1.0,b=1.0,x=-22.0,y=19.0,r=1.35])Node2417[a=-1.0,b=1.0,x=-21.0,y=18.0,r=0.72])Node2253[a=-1.0,b=0.0,x=-20.0,y=17.0,r=0.82])Node2102[a=0.0,b=1.0,x=-19.0,y=17.0,r=0.81])Node1943[a=-1.0,b=1.0,x=-19.0,y=16.0,r=1.28])Node1803[a=-1.0,b=-1.0,x=-18.0,y=15.0,r=0.8])Node1664[a=-1.0,b=1.0,x=-17.0,y=16.0,r=0.8])Node1406[a=-1.0,b=1.0,x=-16.0,y=15.0,r=1.08])Node1295[a=1.0,b=1.0,x=-15.0,y=14.0,r=0.58])Node1204[a=0.0,b=1.0,x=-16.0,y=13.0,r=0.56])Node1103[a=-1.0,b=1.0,x=-16.0,y=12.0,r=0.75],(((Node1802[a=-1.0,b=1.0,x=-19.0,y=13.0,r=1.22])Node1663[a=-1.0,b=0.0,x=-18.0,y=12.0,r=0.99],Node1662[a=-1.0,b=1.0,x=-18.0,y=13.0,r=0.91])Node1405[a=-1.0,b=1.0,x=-17.0,y=12.0,r=1.28],((((((Node2252[a=-1.0,b=1.0,x=-23.0,y=14.0,r=0.83])Node2101[a=-1.0,b=0.0,x=-22.0,y=13.0,r=0.76])Node1942[a=-1.0,b=1.0,x=-21.0,y=13.0,r=1.1])Node1801[a=-1.0,b=0.0,x=-20.0,y=12.0,r=1.19],((((((((((Node3423[a=-1.0,b=0.0,x=-28.0,y=18.0,r=1.11],(Node3586[a=-1.0,b=-1.0,x=-29.0,y=18.0,r=0.63])Node3422[a=-1.0,b=1.0,x=-28.0,y=19.0,r=1.44])Node3246[a=-1.0,b=1.0,x=-27.0,y=18.0,r=0.68])Node3074[a=-1.0,b=1.0,x=-26.0,y=17.0,r=0.77])Node2899[a=-1.0,b=0.0,x=-25.0,y=16.0,r=1.42])Node2730[a=0.0,b=1.0,x=-24.0,y=16.0,r=1.35])Node2572[a=-1.0,b=0.0,x=-24.0,y=15.0,r=1.32])Node2416[a=-1.0,b=1.0,x=-23.0,y=15.0,r=1.25])Node2251[a=-1.0,b=-1.0,x=-22.0,y=14.0,r=0.97],(((Node2898[a=-1.0,b=-1.0,x=-25.0,y=17.0,r=1.43],((((Node3585[a=-1.0,b=1.0,x=-28.0,y=20.0,r=0.93],Node3584[a=0.0,b=1.0,x=-27.0,y=20.0,r=1.23])Node3421[a=-1.0,b=1.0,x=-27.0,y=19.0,r=0.72])Node3245[a=0.0,b=-1.0,x=-26.0,y=18.0,r=0.53],Node3244[a=0.0,b=1.0,x=-26.0,y=20.0,r=0.76])Node3073[a=-1.0,b=0.0,x=-26.0,y=19.0,r=1.13])Node2897[a=-1.0,b=1.0,x=-25.0,y=19.0,r=1.3])Node2571[a=-1.0,b=1.0,x=-24.0,y=18.0,r=1.48])Node2415[a=-1.0,b=1.0,x=-23.0,y=17.0,r=0.53],(((Node3072[a=-1.0,b=1.0,x=-25.0,y=20.0,r=0.86])Node2896[a=-1.0,b=1.0,x=-24.0,y=19.0,r=0.82])Node2570[a=-1.0,b=1.0,x=-23.0,y=18.0,r=0.51])Node2414[a=0.0,b=1.0,x=-22.0,y=17.0,r=1.4])Node2250[a=-1.0,b=1.0,x=-22.0,y=16.0,r=0.56])Node2100[a=-1.0,b=1.0,x=-21.0,y=15.0,r=1.17])Node1941[a=0.0,b=1.0,x=-20.0,y=14.0,r=0.64],((((Node3071[a=-1.0,b=1.0,x=-25.0,y=18.0,r=1.12])Node2895[a=-1.0,b=1.0,x=-24.0,y=17.0,r=0.58])Node2569[a=-1.0,b=1.0,x=-23.0,y=16.0,r=0.97])Node2413[a=-1.0,b=1.0,x=-22.0,y=15.0,r=0.87])Node1940[a=-1.0,b=1.0,x=-21.0,y=14.0,r=1.02])Node1800[a=-1.0,b=1.0,x=-20.0,y=13.0,r=1.08])Node1661[a=-1.0,b=1.0,x=-19.0,y=12.0,r=0.56],Node1660[a=-1.0,b=0.0,x=-19.0,y=11.0,r=0.79])Node1522[a=-1.0,b=0.0,x=-18.0,y=11.0,r=1.23])Node1404[a=-1.0,b=0.0,x=-17.0,y=11.0,r=1.14])Node1102[a=-1.0,b=0.0,x=-16.0,y=11.0,r=0.93])Node993[a=-1.0,b=1.0,x=-15.0,y=11.0,r=0.99])Node900[a=0.0,b=1.0,x=-14.0,y=10.0,r=1.4],(Node992[a=0.0,b=1.0,x=-15.0,y=10.0,r=1.35])Node899[a=-1.0,b=0.0,x=-15.0,y=9.0,r=1.2])Node806[a=-1.0,b=1.0,x=-14.0,y=9.0,r=0.99])Node726[a=-1.0,b=0.0,x=-13.0,y=8.0,r=0.88])Node585[a=-1.0,b=1.0,x=-12.0,y=8.0,r=1.34])Node514[a=-1.0,b=1.0,x=-11.0,y=7.0,r=1.03])Node435[a=-1.0,b=1.0,x=-10.0,y=6.0,r=1.14])Node375[a=0.0,b=1.0,x=-9.0,y=5.0,r=0.65])Node312[a=-1.0,b=-1.0,x=-9.0,y=4.0,r=1.35])Node259[a=0.0,b=1.0,x=-8.0,y=5.0,r=0.52],((((((Node725[a=-1.0,b=1.0,x=-13.0,y=6.0,r=1.05])Node652[a=0.0,b=-1.0,x=-12.0,y=5.0,r=0.96],((((((((((((Node2568[a=-1.0,b=1.0,x=-24.0,y=14.0,r=0.83])Node2249[a=-1.0,b=1.0,x=-23.0,y=13.0,r=1.25])Node2099[a=-1.0,b=1.0,x=-22.0,y=12.0,r=1.41])Node1939[a=-1.0,b=0.0,x=-21.0,y=11.0,r=1.48],Node1938[a=-1.0,b=1.0,x=-21.0,y=12.0,r=1.06])Node1799[a=-1.0,b=1.0,x=-20.0,y=11.0,r=0.75])Node1521[a=-1.0,b=1.0,x=-19.0,y=10.0,r=1.24])Node1403[a=-1.0,b=1.0,x=-18.0,y=9.0,r=1.01])Node1203[a=-1.0,b=0.0,x=-17.0,y=8.0,r=0.73])Node991[a=-1.0,b=1.0,x=-16.0,y=8.0,r=1.49])Node898[a=0.0,b=1.0,x=-15.0,y=7.0,r=1.37])Node805[a=-1.0,b=1.0,x=-15.0,y=6.0,r=0.51],((Node990[a=-1.0,b=1.0,x=-17.0,y=6.0,r=0.64],(((((((((Node2248[a=-1.0,b=-1.0,x=-26.0,y=6.0,r=0.57])Node2098[a=-1.0,b=0.0,x=-25.0,y=7.0,r=0.74],(((Node2894[a=-1.0,b=1.0,x=-28.0,y=8.0,r=1.06])Node2567[a=-1.0,b=-1.0,x=-27.0,y=7.0,r=0.82])Node2412[a=-1.0,b=0.0,x=-26.0,y=8.0,r=1.45],((((((Node3420[a=-1.0,b=0.0,x=-31.0,y=11.0,r=0.52],Node3419[a=-1.0,b=1.0,x=-31.0,y=12.0,r=0.93])Node3243[a=-1.0,b=1.0,x=-30.0,y=11.0,r=1.0])Node3070[a=0.0,b=1.0,x=-29.0,y=10.0,r=1.07])Node2893[a=-1.0,b=0.0,x=-29.0,y=9.0,r=0.94])Node2729[a=-1.0,b=-1.0,x=-28.0,y=9.0,r=0.61])Node2566[a=-1.0,b=1.0,x=-27.0,y=10.0,r=0.8])Node2411[a=-1.0,b=1.0,x=-26.0,y=9.0,r=0.59])Node2097[a=-1.0,b=1.0,x=-25.0,y=8.0,r=1.3])Node1937[a=-1.0,b=0.0,x=-24.0,y=7.0,r=0.92])Node1798[a=-1.0,b=1.0,x=-23.0,y=7.0,r=0.88])Node1659[a=-1.0,b=1.0,x=-22.0,y=6.0,r=0.62])Node1402[a=-1.0,b=1.0,x=-21.0,y=5.0,r=0.88],(((Node1797[a=-1.0,b=-1.0,x=-24.0,y=1.0,r=1.1],((((((Node2892[a=-1.0,b=-1.0,x=-28.0,y=-4.0,r=1.14])Node2565[a=-1.0,b=-1.0,x=-27.0,y=-3.0,r=1.4])Node2410[a=-1.0,b=-1.0,x=-26.0,y=-2.0,r=1.39],(Node2564[a=-1.0,b=0.0,x=-27.0,y=-1.0,r=1.21],((((Node3583[a=-1.0,b=-1.0,x=-31.0,y=-4.0,r=0.97])Node3069[a=-1.0,b=0.0,x=-30.0,y=-3.0,r=0.59],(((Node3582[a=0.0,b=-1.0,x=-31.0,y=-7.0,r=1.32],Node3581[a=-1.0,b=-1.0,x=-32.0,y=-7.0,r=0.97])Node3418[a=-1.0,b=-1.0,x=-31.0,y=-6.0,r=0.53])Node3242[a=-1.0,b=-1.0,x=-30.0,y=-5.0,r=0.56],((Node3580[a=-1.0,b=0.0,x=-32.0,y=-5.0,r=1.06])Node3417[a=-1.0,b=-1.0,x=-31.0,y=-5.0,r=0.54])Node3241[a=-1.0,b=0.0,x=-30.0,y=-4.0,r=0.61])Node3068[a=0.0,b=-1.0,x=-29.0,y=-4.0,r=0.93])Node2891[a=-1.0,b=-1.0,x=-29.0,y=-3.0,r=1.19],Node2890[a=0.0,b=-1.0,x=-28.0,y=-3.0,r=0.58])Node2728[a=-1.0,b=0.0,x=-28.0,y=-2.0,r=0.8])Node2563[a=-1.0,b=-1.0,x=-27.0,y=-2.0,r=1.06])Node2409[a=-1.0,b=0.0,x=-26.0,y=-1.0,r=0.64])Node2247[a=0.0,b=-1.0,x=-25.0,y=-1.0,r=0.97],((Node2562[a=-1.0,b=1.0,x=-28.0,y=2.0,r=0.66])Node2408[a=-1.0,b=1.0,x=-27.0,y=1.0,r=0.57])Node2246[a=-1.0,b=0.0,x=-26.0,y=0.0,r=1.36])Node2096[a=0.0,b=-1.0,x=-25.0,y=0.0,r=1.34],Node2095[a=1.0,b=-1.0,x=-24.0,y=0.0,r=0.6])Node1936[a=-1.0,b=-1.0,x=-25.0,y=1.0,r=0.61])Node1796[a=-1.0,b=0.0,x=-24.0,y=2.0,r=0.7])Node1658[a=-1.0,b=0.0,x=-23.0,y=2.0,r=1.29])Node1520[a=-1.0,b=-1.0,x=-22.0,y=2.0,r=0.56],(((Node2094[a=-1.0,b=0.0,x=-25.0,y=5.0,r=0.9])Node1795[a=-1.0,b=0.0,x=-24.0,y=5.0,r=1.12],(((Node2727[a=-1.0,b=1.0,x=-27.0,y=8.0,r=1.14])Node2407[a=-1.0,b=1.0,x=-26.0,y=7.0,r=0.86])Node2093[a=-1.0,b=0.0,x=-25.0,y=6.0,r=0.61])Node1794[a=-1.0,b=1.0,x=-24.0,y=6.0,r=0.76])Node1657[a=-1.0,b=1.0,x=-23.0,y=5.0,r=0.86],(((((((((((Node3579[a=-1.0,b=0.0,x=-32.0,y=-2.0,r=1.29],Node3578[a=-1.0,b=1.0,x=-32.0,y=-1.0,r=0.91])Node3416[a=-1.0,b=0.0,x=-31.0,y=-2.0,r=1.49],Node3415[a=-1.0,b=-1.0,x=-31.0,y=-3.0,r=0.7])Node3067[a=0.0,b=-1.0,x=-30.0,y=-2.0,r=0.59])Node2889[a=-1.0,b=-1.0,x=-30.0,y=-1.0,r=1.01])Node2726[a=0.0,b=1.0,x=-29.0,y=0.0,r=1.21])Node2561[a=-1.0,b=-1.0,x=-29.0,y=-1.0,r=1.3])Node2406[a=-1.0,b=0.0,x=-28.0,y=0.0,r=0.92],(Node3066[a=-1.0,b=-1.0,x=-29.0,y=-2.0,r=1.49])Node2405[a=-1.0,b=-1.0,x=-28.0,y=-1.0,r=1.23])Node2245[a=-1.0,b=-1.0,x=-27.0,y=0.0,r=1.2])Node2092[a=-1.0,b=-1.0,x=-26.0,y=1.0,r=1.37])Node1935[a=-1.0,b=-1.0,x=-25.0,y=2.0,r=0.81],((((((((Node3240[a=-1.0,b=1.0,x=-32.0,y=9.0,r=1.31])Node3065[a=-1.0,b=1.0,x=-31.0,y=8.0,r=1.32])Node2888[a=-1.0,b=1.0,x=-30.0,y=7.0,r=0.68])Node2725[a=-1.0,b=1.0,x=-29.0,y=6.0,r=0.9],((((Node3414[a=-1.0,b=0.0,x=-33.0,y=7.0,r=0.62],(Node3577[a=-1.0,b=-1.0,x=-34.0,y=7.0,r=0.76],Node3576[a=-1.0,b=0.0,x=-34.0,y=8.0,r=1.43])Node3413[a=-1.0,b=1.0,x=-33.0,y=8.0,r=0.78])Node3239[a=-1.0,b=0.0,x=-32.0,y=7.0,r=0.61])Node3064[a=-1.0,b=1.0,x=-31.0,y=7.0,r=1.29])Node2887[a=-1.0,b=1.0,x=-30.0,y=6.0,r=0.95])Node2724[a=-1.0,b=0.0,x=-29.0,y=5.0,r=1.21])Node2560[a=-1.0,b=1.0,x=-28.0,y=5.0,r=0.65])Node2404[a=-1.0,b=1.0,x=-27.0,y=4.0,r=1.35],Node2403[a=0.0,b=1.0,x=-26.0,y=4.0,r=1.1])Node2244[a=0.0,b=1.0,x=-26.0,y=3.0,r=0.97],((((((Node3412[a=-1.0,b=-1.0,x=-33.0,y=5.0,r=1.29])Node3238[a=-1.0,b=0.0,x=-32.0,y=6.0,r=0.52])Node3063[a=-1.0,b=1.0,x=-31.0,y=6.0,r=0.96])Node2886[a=-1.0,b=1.0,x=-30.0,y=5.0,r=1.41],((((Node3575[a=-1.0,b=0.0,x=-34.0,y=4.0,r=0.76],Node3574[a=-1.0,b=1.0,x=-34.0,y=5.0,r=0.77])Node3411[a=-1.0,b=0.0,x=-33.0,y=4.0,r=1.47])Node3237[a=-1.0,b=0.0,x=-32.0,y=4.0,r=0.61])Node3062[a=-1.0,b=0.0,x=-31.0,y=4.0,r=0.97],(Node3410[a=-1.0,b=0.0,x=-32.0,y=5.0,r=1.01])Node3061[a=-1.0,b=1.0,x=-31.0,y=5.0,r=0.57])Node2885[a=-1.0,b=0.0,x=-30.0,y=4.0,r=1.4])Node2723[a=-1.0,b=1.0,x=-29.0,y=4.0,r=0.71])Node2402[a=-1.0,b=0.0,x=-28.0,y=3.0,r=0.98],((Node3236[a=-1.0,b=1.0,x=-29.0,y=2.0,r=0.97])Node2559[a=-1.0,b=-1.0,x=-28.0,y=1.0,r=0.64])Node2401[a=0.0,b=-1.0,x=-27.0,y=2.0,r=1.11])Node2243[a=-1.0,b=1.0,x=-27.0,y=3.0,r=1.19])Node2091[a=-1.0,b=-1.0,x=-26.0,y=2.0,r=0.84])Node1934[a=-1.0,b=0.0,x=-25.0,y=3.0,r=1.14])Node1793[a=-1.0,b=-1.0,x=-24.0,y=3.0,r=1.02],(((Node2558[a=-1.0,b=1.0,x=-27.0,y=6.0,r=0.8],((((Node3235[a=-1.0,b=1.0,x=-30.0,y=9.0,r=1.42])Node3060[a=-1.0,b=1.0,x=-29.0,y=8.0,r=0.7])Node2884[a=0.0,b=1.0,x=-28.0,y=7.0,r=1.21],(((Node3573[a=-1.0,b=-1.0,x=-32.0,y=8.0,r=1.12],Node3572[a=0.0,b=1.0,x=-31.0,y=10.0,r=1.05])Node3234[a=-1.0,b=1.0,x=-31.0,y=9.0,r=0.87])Node3059[a=-1.0,b=1.0,x=-30.0,y=8.0,r=0.63])Node2883[a=-1.0,b=1.0,x=-29.0,y=7.0,r=1.41])Node2722[a=-1.0,b=1.0,x=-28.0,y=6.0,r=1.46],(((((Node3571[a=1.0,b=0.0,x=-31.0,y=1.0,r=1.05],Node3570[a=-1.0,b=0.0,x=-33.0,y=1.0,r=0.94])Node3409[a=-1.0,b=-1.0,x=-32.0,y=1.0,r=1.15],(Node3569[a=1.0,b=1.0,x=-31.0,y=3.0,r=1.15])Node3408[a=-1.0,b=0.0,x=-32.0,y=2.0,r=0.93])Node3233[a=-1.0,b=-1.0,x=-31.0,y=2.0,r=0.52])Node3058[a=-1.0,b=0.0,x=-30.0,y=3.0,r=1.24],(((Node3568[a=0.0,b=1.0,x=-30.0,y=1.0,r=0.79])Node3407[a=-1.0,b=-1.0,x=-30.0,y=0.0,r=0.62])Node3232[a=1.0,b=-1.0,x=-29.0,y=1.0,r=1.02])Node3057[a=-1.0,b=-1.0,x=-30.0,y=2.0,r=0.67])Node2882[a=-1.0,b=-1.0,x=-29.0,y=3.0,r=1.11])Node2721[a=-1.0,b=-1.0,x=-28.0,y=4.0,r=1.3])Node2557[a=-1.0,b=0.0,x=-27.0,y=5.0,r=1.06])Node2400[a=-1.0,b=1.0,x=-26.0,y=5.0,r=1.48])Node2090[a=-1.0,b=0.0,x=-25.0,y=4.0,r=1.4])Node1792[a=-1.0,b=0.0,x=-24.0,y=4.0,r=0.95])Node1656[a=-1.0,b=0.0,x=-23.0,y=4.0,r=0.93])Node1519[a=-1.0,b=1.0,x=-22.0,y=4.0,r=1.11])Node1401[a=-1.0,b=-1.0,x=-21.0,y=3.0,r=1.11])Node1294[a=-1.0,b=-1.0,x=-20.0,y=4.0,r=1.14])Node1202[a=-1.0,b=0.0,x=-19.0,y=5.0,r=0.97],(((Node1518[a=-1.0,b=1.0,x=-21.0,y=7.0,r=0.8])Node1400[a=-1.0,b=0.0,x=-20.0,y=6.0,r=0.61])Node1293[a=-1.0,b=0.0,x=-19.0,y=6.0,r=0.97])Node1201[a=0.0,b=1.0,x=-18.0,y=6.0,r=1.38])Node1101[a=-1.0,b=1.0,x=-18.0,y=5.0,r=0.65],(((Node1517[a=0.0,b=1.0,x=-20.0,y=3.0,r=0.66],(Node1655[a=0.0,b=-1.0,x=-21.0,y=0.0,r=0.68])Node1516[a=-1.0,b=-1.0,x=-21.0,y=1.0,r=0.95])Node1399[a=-1.0,b=-1.0,x=-20.0,y=2.0,r=0.74])Node1200[a=-1.0,b=0.0,x=-19.0,y=3.0,r=1.09])Node1100[a=-1.0,b=-1.0,x=-18.0,y=3.0,r=1.08])Node989[a=-1.0,b=-1.0,x=-17.0,y=4.0,r=1.5])Node897[a=-1.0,b=1.0,x=-16.0,y=5.0,r=1.01],((((((Node1791[a=-1.0,b=-1.0,x=-21.0,y=-2.0,r=1.17])Node1515[a=-1.0,b=0.0,x=-20.0,y=-1.0,r=0.83],Node1514[a=-1.0,b=-1.0,x=-20.0,y=-2.0,r=0.83])Node1292[a=-1.0,b=-1.0,x=-19.0,y=-1.0,r=1.02])Node1199[a=-1.0,b=-1.0,x=-18.0,y=0.0,r=1.42],((Node1398[a=0.0,b=-1.0,x=-17.0,y=-2.0,r=1.35],(((((((Node2399[a=-1.0,b=-1.0,x=-25.0,y=-4.0,r=1.38])Node2242[a=-1.0,b=-1.0,x=-24.0,y=-3.0,r=1.18])Node2089[a=-1.0,b=-1.0,x=-23.0,y=-2.0,r=0.55],(Node2241[a=-1.0,b=-1.0,x=-23.0,y=-3.0,r=1.09])Node2088[a=0.0,b=-1.0,x=-22.0,y=-2.0,r=0.93])Node1933[a=-1.0,b=0.0,x=-22.0,y=-1.0,r=0.53])Node1790[a=-1.0,b=-1.0,x=-21.0,y=-1.0,r=1.29])Node1654[a=-1.0,b=0.0,x=-20.0,y=0.0,r=0.78])Node1513[a=-1.0,b=1.0,x=-19.0,y=0.0,r=1.06])Node1397[a=-1.0,b=0.0,x=-18.0,y=-1.0,r=1.43])Node1291[a=0.0,b=-1.0,x=-17.0,y=-1.0,r=1.33])Node1198[a=0.0,b=-1.0,x=-17.0,y=0.0,r=1.26])Node1099[a=-1.0,b=-1.0,x=-17.0,y=1.0,r=0.86],((Node1396[a=-1.0,b=1.0,x=-19.0,y=2.0,r=1.35])Node1197[a=-1.0,b=-1.0,x=-18.0,y=1.0,r=0.85])Node1098[a=-1.0,b=0.0,x=-17.0,y=2.0,r=1.15])Node988[a=0.0,b=-1.0,x=-16.0,y=2.0,r=0.56])Node896[a=-1.0,b=-1.0,x=-16.0,y=3.0,r=0.96])Node804[a=-1.0,b=-1.0,x=-15.0,y=4.0,r=0.85])Node724[a=-1.0,b=0.0,x=-14.0,y=5.0,r=1.13],(((((((((((((((Node3056[a=1.0,b=1.0,x=-26.0,y=14.0,r=0.92],(Node3231[a=-1.0,b=1.0,x=-28.0,y=15.0,r=1.41],((Node3567[a=-1.0,b=1.0,x=-30.0,y=16.0,r=0.95])Node3406[a=-1.0,b=1.0,x=-29.0,y=15.0,r=1.05])Node3230[a=-1.0,b=0.0,x=-28.0,y=14.0,r=1.24])Node3055[a=0.0,b=1.0,x=-27.0,y=14.0,r=1.43])Node2720[a=-1.0,b=0.0,x=-27.0,y=13.0,r=1.42])Node2556[a=-1.0,b=0.0,x=-26.0,y=13.0,r=0.8],((((Node3405[a=-1.0,b=1.0,x=-30.0,y=14.0,r=0.93])Node3229[a=-1.0,b=1.0,x=-29.0,y=13.0,r=1.08],(Node3404[a=-1.0,b=1.0,x=-29.0,y=14.0,r=1.41])Node3228[a=0.0,b=1.0,x=-28.0,y=13.0,r=1.31])Node2881[a=-1.0,b=0.0,x=-28.0,y=12.0,r=1.41])Node2719[a=-1.0,b=0.0,x=-27.0,y=12.0,r=1.49])Node2555[a=-1.0,b=-1.0,x=-26.0,y=12.0,r=0.67])Node2398[a=-1.0,b=1.0,x=-25.0,y=13.0,r=1.37])Node2240[a=-1.0,b=1.0,x=-24.0,y=12.0,r=1.1])Node2087[a=-1.0,b=1.0,x=-23.0,y=11.0,r=0.92],(((Node2554[a=0.0,b=-1.0,x=-25.0,y=11.0,r=0.71])Node2397[a=-1.0,b=1.0,x=-25.0,y=12.0,r=1.24])Node2239[a=-1.0,b=1.0,x=-24.0,y=11.0,r=1.45])Node2086[a=-1.0,b=0.0,x=-23.0,y=10.0,r=0.62])Node1932[a=-1.0,b=1.0,x=-22.0,y=10.0,r=0.79])Node1789[a=-1.0,b=1.0,x=-21.0,y=9.0,r=1.2],(Node1931[a=-1.0,b=1.0,x=-22.0,y=9.0,r=0.56])Node1788[a=-1.0,b=0.0,x=-21.0,y=8.0,r=0.87])Node1653[a=0.0,b=1.0,x=-20.0,y=8.0,r=0.6])Node1512[a=-1.0,b=0.0,x=-20.0,y=7.0,r=0.94])Node1290[a=-1.0,b=-1.0,x=-19.0,y=7.0,r=1.08])Node1196[a=-1.0,b=1.0,x=-18.0,y=8.0,r=1.23],(Node1652[a=-1.0,b=1.0,x=-19.0,y=8.0,r=1.35])Node1195[a=-1.0,b=0.0,x=-18.0,y=7.0,r=0.79])Node1097[a=-1.0,b=1.0,x=-17.0,y=7.0,r=0.94])Node987[a=-1.0,b=1.0,x=-16.0,y=6.0,r=1.13],((((((((((((Node2718[a=-1.0,b=-1.0,x=-27.0,y=-4.0,r=1.29])Node2553[a=-1.0,b=0.0,x=-26.0,y=-3.0,r=1.24],Node2552[a=-1.0,b=-1.0,x=-26.0,y=-4.0,r=0.74])Node2396[a=-1.0,b=-1.0,x=-25.0,y=-3.0,r=1.35])Node2238[a=-1.0,b=-1.0,x=-24.0,y=-2.0,r=1.22])Node2085[a=-1.0,b=-1.0,x=-23.0,y=-1.0,r=0.53])Node1930[a=0.0,b=-1.0,x=-22.0,y=0.0,r=1.13],(((Node2395[a=-1.0,b=-1.0,x=-25.0,y=-2.0,r=0.89])Node2237[a=-1.0,b=-1.0,x=-24.0,y=-1.0,r=0.91])Node2084[a=0.0,b=-1.0,x=-23.0,y=0.0,r=1.36])Node1929[a=-1.0,b=0.0,x=-23.0,y=1.0,r=1.12])Node1787[a=-1.0,b=-1.0,x=-22.0,y=1.0,r=1.34])Node1651[a=-1.0,b=1.0,x=-21.0,y=2.0,r=0.54])Node1511[a=-1.0,b=0.0,x=-20.0,y=1.0,r=1.47])Node1289[a=-1.0,b=-1.0,x=-19.0,y=1.0,r=0.63])Node1194[a=-1.0,b=-1.0,x=-18.0,y=2.0,r=0.75],((((((Node2236[a=-1.0,b=0.0,x=-24.0,y=8.0,r=1.42])Node1928[a=-1.0,b=1.0,x=-23.0,y=8.0,r=0.88],(((((((((Node3566[a=-1.0,b=1.0,x=-31.0,y=14.0,r=0.5])Node3403[a=-1.0,b=1.0,x=-30.0,y=13.0,r=1.3])Node3227[a=-1.0,b=1.0,x=-29.0,y=12.0,r=0.9])Node3054[a=-1.0,b=0.0,x=-28.0,y=11.0,r=1.12])Node2880[a=-1.0,b=0.0,x=-27.0,y=11.0,r=0.68])Node2717[a=-1.0,b=1.0,x=-26.0,y=11.0,r=1.46])Node2394[a=-1.0,b=1.0,x=-25.0,y=10.0,r=0.77])Node2235[a=-1.0,b=0.0,x=-24.0,y=9.0,r=1.48],((((((Node3402[a=-1.0,b=-1.0,x=-30.0,y=10.0,r=1.47],(Node3565[a=-1.0,b=1.0,x=-31.0,y=13.0,r=1.16])Node3401[a=-1.0,b=1.0,x=-30.0,y=12.0,r=1.23])Node3226[a=-1.0,b=1.0,x=-29.0,y=11.0,r=0.51])Node2879[a=-1.0,b=1.0,x=-28.0,y=10.0,r=0.77])Node2716[a=-1.0,b=-1.0,x=-27.0,y=9.0,r=1.24])Node2551[a=-1.0,b=1.0,x=-26.0,y=10.0,r=0.56])Node2393[a=-1.0,b=-1.0,x=-25.0,y=9.0,r=0.56])Node2234[a=-1.0,b=1.0,x=-24.0,y=10.0,r=1.05])Node2083[a=-1.0,b=1.0,x=-23.0,y=9.0,r=1.18])Node1927[a=0.0,b=1.0,x=-22.0,y=8.0,r=0.6])Node1786[a=-1.0,b=1.0,x=-22.0,y=7.0,r=0.94])Node1510[a=-1.0,b=1.0,x=-21.0,y=6.0,r=1.42],((Node1785[a=-1.0,b=1.0,x=-23.0,y=6.0,r=1.26])Node1650[a=-1.0,b=1.0,x=-22.0,y=5.0,r=1.01],(Node1784[a=-1.0,b=0.0,x=-23.0,y=3.0,r=1.21])Node1649[a=-1.0,b=-1.0,x=-22.0,y=3.0,r=0.91])Node1509[a=-1.0,b=-1.0,x=-21.0,y=4.0,r=0.51])Node1395[a=-1.0,b=1.0,x=-20.0,y=5.0,r=1.33])Node1288[a=-1.0,b=0.0,x=-19.0,y=4.0,r=1.18])Node1193[a=-1.0,b=1.0,x=-18.0,y=4.0,r=1.03])Node1096[a=-1.0,b=-1.0,x=-17.0,y=3.0,r=0.62],Node1095[a=-1.0,b=1.0,x=-17.0,y=5.0,r=1.35])Node986[a=-1.0,b=-1.0,x=-16.0,y=4.0,r=0.99])Node895[a=-1.0,b=-1.0,x=-15.0,y=5.0,r=1.01])Node723[a=-1.0,b=1.0,x=-14.0,y=6.0,r=1.21])Node651[a=-1.0,b=-1.0,x=-13.0,y=5.0,r=1.38])Node584[a=-1.0,b=1.0,x=-12.0,y=6.0,r=1.29])Node513[a=0.0,b=1.0,x=-11.0,y=5.0,r=1.47])Node434[a=-1.0,b=0.0,x=-11.0,y=4.0,r=1.12],Node433[a=0.0,b=1.0,x=-10.0,y=5.0,r=1.38])Node374[a=-1.0,b=1.0,x=-10.0,y=4.0,r=1.03])Node258[a=-1.0,b=-1.0,x=-9.0,y=3.0,r=0.68])Node213[a=-1.0,b=1.0,x=-8.0,y=4.0,r=1.14])Node141[a=-1.0,b=-1.0,x=-7.0,y=3.0,r=0.6],(((Node257[a=-1.0,b=1.0,x=-4.0,y=7.0,r=0.8],(Node311[a=0.0,b=1.0,x=-2.0,y=6.0,r=0.74])Node256[a=1.0,b=-1.0,x=-2.0,y=5.0,r=1.4])Node212[a=1.0,b=1.0,x=-3.0,y=6.0,r=1.27])Node168[a=1.0,b=1.0,x=-4.0,y=5.0,r=0.68],(((Node310[a=-1.0,b=-1.0,x=-7.0,y=5.0,r=0.57],((Node512[a=-1.0,b=1.0,x=-8.0,y=8.0,r=1.29])Node373[a=0.0,b=1.0,x=-7.0,y=7.0,r=1.14],((Node511[a=0.0,b=-1.0,x=-9.0,y=6.0,r=1.1],(((((Node1094[a=-1.0,b=1.0,x=-15.0,y=12.0,r=0.65],(Node1192[a=0.0,b=1.0,x=-14.0,y=13.0,r=0.77],(Node1394[a=-1.0,b=1.0,x=-16.0,y=14.0,r=1.43])Node1191[a=-1.0,b=1.0,x=-15.0,y=13.0,r=0.56])Node1093[a=0.0,b=1.0,x=-14.0,y=12.0,r=0.69])Node985[a=-1.0,b=1.0,x=-14.0,y=11.0,r=1.35],(Node1190[a=0.0,b=1.0,x=-13.0,y=12.0,r=0.62])Node984[a=0.0,b=1.0,x=-13.0,y=11.0,r=0.54])Node894[a=-1.0,b=1.0,x=-13.0,y=10.0,r=1.23])Node650[a=-1.0,b=1.0,x=-12.0,y=9.0,r=0.94],Node649[a=1.0,b=1.0,x=-10.0,y=9.0,r=1.03])Node583[a=-1.0,b=1.0,x=-11.0,y=8.0,r=1.05])Node510[a=-1.0,b=0.0,x=-10.0,y=7.0,r=0.85])Node432[a=-1.0,b=1.0,x=-9.0,y=7.0,r=1.24])Node372[a=-1.0,b=0.0,x=-8.0,y=6.0,r=0.97])Node309[a=-1.0,b=0.0,x=-7.0,y=6.0,r=1.3])Node255[a=-1.0,b=0.0,x=-6.0,y=6.0,r=1.39])Node211[a=1.0,b=1.0,x=-5.0,y=6.0,r=1.02])Node167[a=-1.0,b=1.0,x=-6.0,y=5.0,r=0.61])Node140[a=1.0,b=0.0,x=-5.0,y=4.0,r=1.12])Node95[a=-1.0,b=-1.0,x=-6.0,y=4.0,r=0.7])Node80[a=-1.0,b=1.0,x=-5.0,y=5.0,r=1.46])Node65[a=-1.0,b=1.0,x=-4.0,y=4.0,r=0.7])Node51[a=0.0,b=1.0,x=-3.0,y=3.0,r=1.12],((Node139[a=0.0,b=-1.0,x=-3.0,y=-1.0,r=0.92],(((((((((((Node893[a=-1.0,b=-1.0,x=-11.0,y=-8.0,r=1.24],(((Node1287[a=-1.0,b=0.0,x=-13.0,y=-9.0,r=1.07],(Node1393[a=-1.0,b=-1.0,x=-13.0,y=-11.0,r=0.51],(((Node1783[a=0.0,b=-1.0,x=-15.0,y=-13.0,r=0.57],((((Node2392[a=-1.0,b=-1.0,x=-19.0,y=-17.0,r=1.18])Node2233[a=-1.0,b=-1.0,x=-18.0,y=-16.0,r=0.73])Node2082[a=0.0,b=-1.0,x=-17.0,y=-15.0,r=0.66],((((Node3053[a=1.0,b=0.0,x=-20.0,y=-17.0,r=1.0],(Node3400[a=-1.0,b=-1.0,x=-23.0,y=-19.0,r=0.54],Node3399[a=-1.0,b=0.0,x=-23.0,y=-18.0,r=1.41])Node3052[a=-1.0,b=-1.0,x=-22.0,y=-18.0,r=0.97])Node2878[a=-1.0,b=-1.0,x=-21.0,y=-17.0,r=1.29])Node2550[a=-1.0,b=-1.0,x=-20.0,y=-16.0,r=1.02],Node2549[a=-1.0,b=1.0,x=-20.0,y=-14.0,r=1.0])Node2391[a=-1.0,b=0.0,x=-19.0,y=-15.0,r=0.69],(((Node2877[a=-1.0,b=1.0,x=-22.0,y=-15.0,r=0.6])Node2715[a=-1.0,b=-1.0,x=-21.0,y=-16.0,r=1.42],((Node3225[a=0.0,b=-1.0,x=-22.0,y=-17.0,r=1.16])Node3051[a=-1.0,b=-1.0,x=-22.0,y=-16.0,r=0.67])Node2714[a=-1.0,b=0.0,x=-21.0,y=-15.0,r=0.78])Node2548[a=-1.0,b=1.0,x=-20.0,y=-15.0,r=0.52])Node2390[a=-1.0,b=-1.0,x=-19.0,y=-16.0,r=0.56])Node2081[a=-1.0,b=-1.0,x=-18.0,y=-15.0,r=1.08])Node1926[a=-1.0,b=-1.0,x=-17.0,y=-14.0,r=0.7],(Node2080[a=-1.0,b=-1.0,x=-18.0,y=-14.0,r=1.08],(((Node2713[a=-1.0,b=-1.0,x=-21.0,y=-14.0,r=0.58])Node2547[a=-1.0,b=-1.0,x=-20.0,y=-13.0,r=0.84],Node2546[a=0.0,b=-1.0,x=-19.0,y=-13.0,r=1.17])Node2232[a=-1.0,b=0.0,x=-19.0,y=-12.0,r=1.46])Node2079[a=-1.0,b=1.0,x=-18.0,y=-12.0,r=1.25])Node1925[a=-1.0,b=0.0,x=-17.0,y=-13.0,r=1.28])Node1782[a=-1.0,b=-1.0,x=-16.0,y=-13.0,r=1.19])Node1648[a=-1.0,b=-1.0,x=-15.0,y=-12.0,r=0.52])Node1508[a=-1.0,b=-1.0,x=-14.0,y=-11.0,r=1.17])Node1392[a=-1.0,b=0.0,x=-13.0,y=-10.0,r=0.58])Node1286[a=0.0,b=-1.0,x=-12.0,y=-10.0,r=0.77])Node1189[a=-1.0,b=0.0,x=-12.0,y=-9.0,r=1.14])Node1092[a=-1.0,b=-1.0,x=-11.0,y=-9.0,r=1.36])Node892[a=0.0,b=-1.0,x=-10.0,y=-8.0,r=1.2])Node803[a=0.0,b=-1.0,x=-10.0,y=-7.0,r=1.07])Node722[a=-1.0,b=-1.0,x=-10.0,y=-6.0,r=0.68])Node648[a=-1.0,b=-1.0,x=-9.0,y=-5.0,r=1.04],(Node721[a=-1.0,b=0.0,x=-10.0,y=-4.0,r=0.57])Node647[a=-1.0,b=0.0,x=-9.0,y=-4.0,r=1.45])Node509[a=-1.0,b=-1.0,x=-8.0,y=-4.0,r=0.97],((((((Node1091[a=-1.0,b=-1.0,x=-9.0,y=-10.0,r=1.26],Node1090[a=0.0,b=-1.0,x=-8.0,y=-10.0,r=1.13])Node891[a=0.0,b=-1.0,x=-8.0,y=-9.0,r=0.71])Node802[a=1.0,b=-1.0,x=-8.0,y=-8.0,r=0.92])Node720[a=-1.0,b=-1.0,x=-9.0,y=-7.0,r=0.68],(Node890[a=0.0,b=-1.0,x=-7.0,y=-8.0,r=1.29])Node719[a=1.0,b=-1.0,x=-7.0,y=-7.0,r=1.42])Node646[a=0.0,b=-1.0,x=-8.0,y=-6.0,r=1.38],(((((((((Node2078[a=-1.0,b=0.0,x=-16.0,y=-14.0,r=0.71],((((((Node3224[a=-1.0,b=-1.0,x=-21.0,y=-20.0,r=0.94])Node3050[a=-1.0,b=0.0,x=-20.0,y=-19.0,r=0.95],((Node3398[a=-1.0,b=-1.0,x=-22.0,y=-19.0,r=1.03])Node3223[a=-1.0,b=0.0,x=-21.0,y=-18.0,r=1.15],((Node3564[a=0.0,b=-1.0,x=-22.0,y=-21.0,r=0.81],Node3563[a=-1.0,b=0.0,x=-23.0,y=-20.0,r=1.46])Node3397[a=-1.0,b=-1.0,x=-22.0,y=-20.0,r=1.08])Node3222[a=-1.0,b=-1.0,x=-21.0,y=-19.0,r=1.32])Node3049[a=-1.0,b=1.0,x=-20.0,y=-18.0,r=0.57])Node2876[a=0.0,b=-1.0,x=-19.0,y=-19.0,r=1.48])Node2712[a=-1.0,b=-1.0,x=-19.0,y=-18.0,r=1.1])Node2389[a=-1.0,b=-1.0,x=-18.0,y=-17.0,r=0.76])Node2231[a=-1.0,b=-1.0,x=-17.0,y=-16.0,r=0.9])Node2077[a=-1.0,b=-1.0,x=-16.0,y=-15.0,r=0.85])Node1924[a=-1.0,b=-1.0,x=-15.0,y=-14.0,r=0.77])Node1781[a=-1.0,b=-1.0,x=-14.0,y=-13.0,r=1.2])Node1507[a=-1.0,b=-1.0,x=-13.0,y=-12.0,r=0.53])Node1285[a=-1.0,b=-1.0,x=-12.0,y=-11.0,r=0.91],((((((((((((Node3221[a=-1.0,b=0.0,x=-20.0,y=-20.0,r=0.89])Node3048[a=-1.0,b=-1.0,x=-19.0,y=-20.0,r=1.27])Node2875[a=-1.0,b=0.0,x=-18.0,y=-19.0,r=0.94])Node2711[a=0.0,b=-1.0,x=-17.0,y=-19.0,r=1.38])Node2545[a=-1.0,b=-1.0,x=-17.0,y=-18.0,r=0.71])Node2230[a=-1.0,b=-1.0,x=-16.0,y=-17.0,r=0.8])Node2076[a=-1.0,b=-1.0,x=-15.0,y=-16.0,r=0.96])Node1923[a=-1.0,b=-1.0,x=-14.0,y=-15.0,r=0.52])Node1780[a=-1.0,b=-1.0,x=-13.0,y=-14.0,r=1.21])Node1647[a=-1.0,b=-1.0,x=-12.0,y=-13.0,r=0.85])Node1506[a=-1.0,b=0.0,x=-11.0,y=-12.0,r=1.29])Node1391[a=0.0,b=-1.0,x=-10.0,y=-12.0,r=1.26])Node1284[a=1.0,b=-1.0,x=-10.0,y=-11.0,r=1.45])Node1188[a=-1.0,b=-1.0,x=-11.0,y=-10.0,r=0.86])Node1089[a=-1.0,b=-1.0,x=-10.0,y=-9.0,r=1.01],(((((((((Node2710[a=-1.0,b=-1.0,x=-18.0,y=-18.0,r=0.69])Node2388[a=-1.0,b=-1.0,x=-17.0,y=-17.0,r=0.65])Node2229[a=-1.0,b=-1.0,x=-16.0,y=-16.0,r=0.95])Node2075[a=-1.0,b=-1.0,x=-15.0,y=-15.0,r=1.13])Node1922[a=-1.0,b=-1.0,x=-14.0,y=-14.0,r=0.57])Node1646[a=-1.0,b=-1.0,x=-13.0,y=-13.0,r=0.68])Node1505[a=-1.0,b=-1.0,x=-12.0,y=-12.0,r=1.21])Node1390[a=-1.0,b=-1.0,x=-11.0,y=-11.0,r=0.75])Node1187[a=-1.0,b=-1.0,x=-10.0,y=-10.0,r=1.03])Node1088[a=0.0,b=-1.0,x=-9.0,y=-9.0,r=1.15])Node801[a=-1.0,b=-1.0,x=-9.0,y=-8.0,r=1.23])Node718[a=1.0,b=-1.0,x=-8.0,y=-7.0,r=0.74],(((Node1087[a=-1.0,b=-1.0,x=-12.0,y=-8.0,r=0.84],(((Node1504[a=0.0,b=-1.0,x=-14.0,y=-10.0,r=1.03],((((Node2387[a=-1.0,b=-1.0,x=-19.0,y=-14.0,r=1.22])Node2228[a=-1.0,b=-1.0,x=-18.0,y=-13.0,r=1.13])Node1779[a=-1.0,b=-1.0,x=-17.0,y=-12.0,r=1.49])Node1645[a=-1.0,b=-1.0,x=-16.0,y=-11.0,r=0.5],(Node1778[a=1.0,b=-1.0,x=-14.0,y=-12.0,r=0.72],(Node1921[a=-1.0,b=1.0,x=-17.0,y=-11.0,r=0.95])Node1777[a=-1.0,b=-1.0,x=-16.0,y=-12.0,r=1.47])Node1644[a=0.0,b=-1.0,x=-15.0,y=-11.0,r=0.59])Node1503[a=-1.0,b=-1.0,x=-15.0,y=-10.0,r=1.1])Node1389[a=-1.0,b=-1.0,x=-14.0,y=-9.0,r=0.73])Node1186[a=-1.0,b=-1.0,x=-13.0,y=-8.0,r=0.74],((((((Node2074[a=0.0,b=-1.0,x=-18.0,y=-11.0,r=1.38],(((((Node3220[a=-1.0,b=0.0,x=-24.0,y=-13.0,r=0.91])Node3047[a=-1.0,b=1.0,x=-23.0,y=-13.0,r=0.94],((Node3562[a=0.0,b=-1.0,x=-23.0,y=-17.0,r=1.36])Node3219[a=0.0,b=-1.0,x=-23.0,y=-16.0,r=1.31],(Node3396[a=0.0,b=-1.0,x=-24.0,y=-16.0,r=0.81],(Node3561[a=-1.0,b=0.0,x=-26.0,y=-14.0,r=1.42],Node3560[a=-1.0,b=-1.0,x=-26.0,y=-15.0,r=0.67])Node3395[a=-1.0,b=1.0,x=-25.0,y=-14.0,r=1.16])Node3218[a=-1.0,b=0.0,x=-24.0,y=-15.0,r=0.93])Node3046[a=-1.0,b=-1.0,x=-23.0,y=-15.0,r=0.89])Node2874[a=-1.0,b=-1.0,x=-22.0,y=-14.0,r=0.99])Node2386[a=-1.0,b=-1.0,x=-21.0,y=-13.0,r=1.21])Node2227[a=-1.0,b=-1.0,x=-20.0,y=-12.0,r=0.52])Node2073[a=-1.0,b=-1.0,x=-19.0,y=-11.0,r=1.45])Node1920[a=-1.0,b=-1.0,x=-18.0,y=-10.0,r=1.16])Node1776[a=-1.0,b=1.0,x=-17.0,y=-9.0,r=0.59])Node1643[a=-1.0,b=-1.0,x=-16.0,y=-10.0,r=0.74])Node1502[a=-1.0,b=-1.0,x=-15.0,y=-9.0,r=0.86])Node1283[a=-1.0,b=-1.0,x=-14.0,y=-8.0,r=0.57])Node1185[a=-1.0,b=0.0,x=-13.0,y=-7.0,r=0.87])Node1086[a=-1.0,b=0.0,x=-12.0,y=-7.0,r=1.47])Node889[a=0.0,b=-1.0,x=-11.0,y=-7.0,r=1.43])Node800[a=-1.0,b=-1.0,x=-11.0,y=-6.0,r=0.59],(((Node1085[a=-1.0,b=-1.0,x=-14.0,y=-7.0,r=1.21])Node983[a=-1.0,b=0.0,x=-13.0,y=-6.0,r=0.78])Node888[a=-1.0,b=-1.0,x=-12.0,y=-6.0,r=1.26])Node799[a=-1.0,b=0.0,x=-11.0,y=-5.0,r=0.79])Node717[a=-1.0,b=1.0,x=-10.0,y=-5.0,r=1.24])Node645[a=-1.0,b=-1.0,x=-9.0,y=-6.0,r=1.13])Node582[a=-1.0,b=-1.0,x=-8.0,y=-5.0,r=0.84])Node508[a=0.0,b=-1.0,x=-7.0,y=-4.0,r=0.68])Node431[a=-1.0,b=0.0,x=-7.0,y=-3.0,r=0.56],((Node644[a=1.0,b=-1.0,x=-6.0,y=-6.0,r=0.56],Node643[a=0.0,b=-1.0,x=-7.0,y=-6.0,r=0.96])Node581[a=-1.0,b=-1.0,x=-7.0,y=-5.0,r=0.78])Node430[a=0.0,b=-1.0,x=-6.0,y=-4.0,r=0.68])Node371[a=-1.0,b=0.0,x=-6.0,y=-3.0,r=1.05],((((((((Node982[a=0.0,b=-1.0,x=-7.0,y=-10.0,r=0.97])Node887[a=-1.0,b=0.0,x=-7.0,y=-9.0,r=1.3],((((Node1388[a=-1.0,b=0.0,x=-9.0,y=-11.0,r=0.6],Node1387[a=-1.0,b=-1.0,x=-9.0,y=-12.0,r=0.6])Node1184[a=-1.0,b=0.0,x=-8.0,y=-11.0,r=1.41])Node1084[a=-1.0,b=0.0,x=-7.0,y=-11.0,r=0.9])Node981[a=0.0,b=-1.0,x=-6.0,y=-11.0,r=1.32])Node886[a=0.0,b=-1.0,x=-6.0,y=-10.0,r=0.87])Node798[a=0.0,b=-1.0,x=-6.0,y=-9.0,r=0.61])Node716[a=-1.0,b=-1.0,x=-6.0,y=-8.0,r=0.52],(Node797[a=-1.0,b=1.0,x=-6.0,y=-7.0,r=0.89],(Node885[a=-1.0,b=0.0,x=-5.0,y=-9.0,r=1.26])Node796[a=1.0,b=-1.0,x=-4.0,y=-9.0,r=1.45])Node715[a=0.0,b=-1.0,x=-5.0,y=-8.0,r=1.21])Node642[a=-1.0,b=0.0,x=-5.0,y=-7.0,r=1.48])Node580[a=1.0,b=-1.0,x=-4.0,y=-7.0,r=0.98],Node579[a=-1.0,b=1.0,x=-6.0,y=-5.0,r=0.57])Node507[a=-1.0,b=-1.0,x=-5.0,y=-6.0,r=1.4])Node429[a=1.0,b=-1.0,x=-4.0,y=-5.0,r=1.27])Node370[a=0.0,b=-1.0,x=-5.0,y=-4.0,r=0.86])Node308[a=0.0,b=-1.0,x=-5.0,y=-3.0,r=0.63],Node307[a=1.0,b=-1.0,x=-4.0,y=-3.0,r=0.97])Node254[a=-1.0,b=0.0,x=-5.0,y=-2.0,r=1.26])Node210[a=1.0,b=-1.0,x=-4.0,y=-2.0,r=0.97])Node166[a=-1.0,b=0.0,x=-5.0,y=-1.0,r=1.16])Node138[a=-1.0,b=-1.0,x=-4.0,y=-1.0,r=1.28])Node112[a=-1.0,b=-1.0,x=-3.0,y=0.0,r=1.04],((((((Node578[a=-1.0,b=-1.0,x=-4.0,y=-6.0,r=0.52])Node428[a=-1.0,b=-1.0,x=-3.0,y=-5.0,r=0.83])Node306[a=0.0,b=-1.0,x=-2.0,y=-4.0,r=1.19])Node253[a=0.0,b=-1.0,x=-2.0,y=-3.0,r=1.24])Node209[a=0.0,b=-1.0,x=-2.0,y=-2.0,r=1.49],(((Node506[a=-1.0,b=-1.0,x=-5.0,y=-5.0,r=1.1])Node305[a=-1.0,b=-1.0,x=-4.0,y=-4.0,r=1.01],Node304[a=0.0,b=-1.0,x=-3.0,y=-4.0,r=1.41])Node252[a=0.0,b=-1.0,x=-3.0,y=-3.0,r=0.88])Node208[a=-1.0,b=-1.0,x=-3.0,y=-2.0,r=0.5])Node165[a=-1.0,b=-1.0,x=-2.0,y=-1.0,r=0.96])Node111[a=1.0,b=-1.0,x=-1.0,y=0.0,r=1.37])Node50[a=1.0,b=-1.0,x=-2.0,y=1.0,r=0.71])Node40[a=-1.0,b=-1.0,x=-3.0,y=2.0,r=0.5])Node31[a=0.0,b=-1.0,x=-2.0,y=3.0,r=0.6])Node21[a=-1.0,b=1.0,x=-2.0,y=4.0,r=0.79])Node13[a=0.0,b=1.0,x=-1.0,y=3.0,r=0.62],((((((((((((Node577[a=-1.0,b=1.0,x=-9.0,y=8.0,r=1.1])Node427[a=-1.0,b=-1.0,x=-8.0,y=7.0,r=0.8])Node303[a=-1.0,b=1.0,x=-7.0,y=8.0,r=1.28])Node251[a=-1.0,b=-1.0,x=-6.0,y=7.0,r=1.43])Node207[a=-1.0,b=-1.0,x=-5.0,y=8.0,r=0.97],((((Node505[a=1.0,b=1.0,x=-5.0,y=13.0,r=0.86])Node426[a=1.0,b=1.0,x=-6.0,y=12.0,r=1.37])Node369[a=-1.0,b=1.0,x=-7.0,y=11.0,r=1.17],Node368[a=1.0,b=1.0,x=-5.0,y=11.0,r=0.73])Node250[a=-1.0,b=0.0,x=-6.0,y=10.0,r=0.65],((Node425[a=1.0,b=1.0,x=-6.0,y=11.0,r=0.63],((((((Node1083[a=-1.0,b=1.0,x=-11.0,y=15.0,r=0.57],Node1082[a=1.0,b=0.0,x=-9.0,y=14.0,r=0.89])Node980[a=-1.0,b=1.0,x=-10.0,y=14.0,r=1.24])Node884[a=0.0,b=1.0,x=-9.0,y=13.0,r=0.74],(((Node1282[a=-1.0,b=0.0,x=-13.0,y=15.0,r=1.03],(((((Node1919[a=0.0,b=1.0,x=-16.0,y=19.0,r=0.85])Node1775[a=-1.0,b=0.0,x=-16.0,y=18.0,r=1.0])Node1642[a=-1.0,b=1.0,x=-15.0,y=18.0,r=1.44],Node1641[a=-1.0,b=0.0,x=-15.0,y=17.0,r=1.07])Node1501[a=0.0,b=1.0,x=-14.0,y=17.0,r=0.77])Node1386[a=-1.0,b=0.0,x=-14.0,y=16.0,r=0.55])Node1281[a=-1.0,b=1.0,x=-13.0,y=16.0,r=0.88])Node1183[a=-1.0,b=1.0,x=-12.0,y=15.0,r=0.83])Node979[a=-1.0,b=1.0,x=-11.0,y=14.0,r=1.34])Node883[a=-1.0,b=1.0,x=-10.0,y=13.0,r=0.56])Node714[a=-1.0,b=-1.0,x=-9.0,y=12.0,r=0.87],(((Node978[a=-1.0,b=1.0,x=-9.0,y=17.0,r=0.91],((((((((((((Node2709[a=-1.0,b=1.0,x=-15.0,y=27.0,r=1.35])Node2544[a=1.0,b=1.0,x=-14.0,y=26.0,r=0.53],(Node2708[a=1.0,b=0.0,x=-15.0,y=26.0,r=1.31])Node2543[a=-1.0,b=1.0,x=-16.0,y=26.0,r=0.81])Node2385[a=-1.0,b=0.0,x=-15.0,y=25.0,r=1.18])Node2226[a=-1.0,b=1.0,x=-14.0,y=25.0,r=1.27])Node2072[a=-1.0,b=1.0,x=-13.0,y=24.0,r=0.74])Node1774[a=0.0,b=1.0,x=-12.0,y=23.0,r=0.6],Node1773[a=0.0,b=-1.0,x=-12.0,y=21.0,r=1.2])Node1640[a=-1.0,b=0.0,x=-12.0,y=22.0,r=0.9])Node1500[a=-1.0,b=1.0,x=-11.0,y=22.0,r=0.58])Node1385[a=1.0,b=1.0,x=-10.0,y=21.0,r=1.26],(((((((((((Node3559[a=-1.0,b=1.0,x=-19.0,y=29.0,r=0.82])Node3217[a=-1.0,b=1.0,x=-18.0,y=28.0,r=0.81])Node3045[a=-1.0,b=0.0,x=-17.0,y=27.0,r=1.1])Node2707[a=1.0,b=1.0,x=-16.0,y=27.0,r=0.54])Node2542[a=-1.0,b=1.0,x=-17.0,y=26.0,r=1.48])Node2384[a=0.0,b=1.0,x=-16.0,y=25.0,r=0.5])Node2225[a=-1.0,b=1.0,x=-16.0,y=24.0,r=1.42],(Node2383[a=-1.0,b=1.0,x=-16.0,y=23.0,r=1.01])Node2224[a=0.0,b=-1.0,x=-15.0,y=22.0,r=1.04])Node2071[a=-1.0,b=1.0,x=-15.0,y=23.0,r=1.45])Node1772[a=0.0,b=1.0,x=-14.0,y=22.0,r=1.24],((Node2070[a=-1.0,b=0.0,x=-17.0,y=20.0,r=0.83],(((Node2706[a=-1.0,b=0.0,x=-19.0,y=23.0,r=1.15],((Node3044[a=0.0,b=1.0,x=-20.0,y=25.0,r=0.95],((Node3394[a=-1.0,b=1.0,x=-21.0,y=27.0,r=1.32])Node3216[a=1.0,b=1.0,x=-20.0,y=26.0,r=0.69],((Node3558[a=-1.0,b=1.0,x=-23.0,y=28.0,r=1.16])Node3393[a=-1.0,b=1.0,x=-22.0,y=27.0,r=1.37])Node3215[a=0.0,b=1.0,x=-21.0,y=26.0,r=0.91])Node3043[a=-1.0,b=1.0,x=-21.0,y=25.0,r=1.19])Node2873[a=-1.0,b=0.0,x=-20.0,y=24.0,r=1.12])Node2705[a=-1.0,b=1.0,x=-19.0,y=24.0,r=0.78])Node2541[a=-1.0,b=1.0,x=-18.0,y=23.0,r=0.77])Node2223[a=0.0,b=1.0,x=-17.0,y=22.0,r=1.05],(Node2382[a=0.0,b=-1.0,x=-18.0,y=21.0,r=0.62])Node2222[a=-1.0,b=1.0,x=-18.0,y=22.0,r=0.82])Node2069[a=-1.0,b=1.0,x=-17.0,y=21.0,r=1.32])Node1918[a=-1.0,b=0.0,x=-16.0,y=20.0,r=1.25])Node1771[a=-1.0,b=-1.0,x=-15.0,y=20.0,r=1.29])Node1639[a=-1.0,b=1.0,x=-14.0,y=21.0,r=0.98])Node1499[a=-1.0,b=1.0,x=-13.0,y=20.0,r=1.06],((((Node2381[a=0.0,b=-1.0,x=-16.0,y=21.0,r=0.51],((((Node3214[a=0.0,b=1.0,x=-18.0,y=27.0,r=0.51],((Node3557[a=1.0,b=1.0,x=-19.0,y=28.0,r=1.21],Node3556[a=-1.0,b=1.0,x=-21.0,y=28.0,r=1.49])Node3392[a=-1.0,b=1.0,x=-20.0,y=27.0,r=1.37],Node3391[a=0.0,b=1.0,x=-19.0,y=27.0,r=0.71])Node3213[a=-1.0,b=0.0,x=-19.0,y=26.0,r=1.26])Node2872[a=-1.0,b=1.0,x=-18.0,y=26.0,r=1.43])Node2704[a=0.0,b=1.0,x=-17.0,y=25.0,r=1.17])Node2540[a=0.0,b=1.0,x=-17.0,y=24.0,r=0.71],((Node3042[a=-1.0,b=0.0,x=-19.0,y=25.0,r=1.29])Node2703[a=0.0,b=1.0,x=-18.0,y=25.0,r=0.51])Node2539[a=-1.0,b=1.0,x=-18.0,y=24.0,r=1.03])Node2380[a=-1.0,b=1.0,x=-17.0,y=23.0,r=0.6])Node2221[a=-1.0,b=1.0,x=-16.0,y=22.0,r=0.72])Node1917[a=-1.0,b=1.0,x=-15.0,y=21.0,r=0.96])Node1638[a=-1.0,b=1.0,x=-14.0,y=20.0,r=0.54])Node1498[a=-1.0,b=0.0,x=-13.0,y=19.0,r=1.2])Node1384[a=-1.0,b=-1.0,x=-12.0,y=19.0,r=1.11])Node1280[a=-1.0,b=1.0,x=-11.0,y=20.0,r=1.17],((Node1637[a=1.0,b=1.0,x=-11.0,y=21.0,r=1.16],(((Node2220[a=-1.0,b=1.0,x=-15.0,y=24.0,r=1.36])Node2068[a=-1.0,b=1.0,x=-14.0,y=23.0,r=1.24],(Node2219[a=-1.0,b=1.0,x=-14.0,y=24.0,r=1.1])Node2067[a=0.0,b=1.0,x=-13.0,y=23.0,r=0.76])Node1770[a=0.0,b=1.0,x=-13.0,y=22.0,r=0.92])Node1636[a=-1.0,b=1.0,x=-13.0,y=21.0,r=0.59])Node1383[a=-1.0,b=1.0,x=-12.0,y=20.0,r=0.79])Node1279[a=-1.0,b=0.0,x=-11.0,y=19.0,r=0.51])Node1182[a=-1.0,b=1.0,x=-10.0,y=19.0,r=0.66])Node1081[a=-1.0,b=1.0,x=-9.0,y=18.0,r=0.85])Node977[a=0.0,b=1.0,x=-8.0,y=17.0,r=1.35])Node882[a=0.0,b=1.0,x=-8.0,y=16.0,r=1.42],(((((Node1635[a=-1.0,b=1.0,x=-14.0,y=19.0,r=1.34])Node1497[a=-1.0,b=1.0,x=-13.0,y=18.0,r=1.19],Node1496[a=0.0,b=1.0,x=-12.0,y=18.0,r=1.19])Node1382[a=-1.0,b=0.0,x=-12.0,y=17.0,r=0.75])Node1181[a=-1.0,b=0.0,x=-11.0,y=17.0,r=1.14],Node1180[a=-1.0,b=1.0,x=-11.0,y=18.0,r=0.74])Node1080[a=-1.0,b=1.0,x=-10.0,y=17.0,r=1.22])Node881[a=-1.0,b=1.0,x=-9.0,y=16.0,r=1.01])Node795[a=0.0,b=1.0,x=-8.0,y=15.0,r=0.92],(((((((Node1769[a=-1.0,b=1.0,x=-15.0,y=19.0,r=1.24])Node1634[a=-1.0,b=1.0,x=-14.0,y=18.0,r=1.41])Node1495[a=-1.0,b=1.0,x=-13.0,y=17.0,r=1.15])Node1278[a=-1.0,b=0.0,x=-12.0,y=16.0,r=1.17])Node1179[a=-1.0,b=1.0,x=-11.0,y=16.0,r=0.93])Node1079[a=0.0,b=-1.0,x=-10.0,y=15.0,r=1.47])Node976[a=-1.0,b=1.0,x=-10.0,y=16.0,r=1.45])Node794[a=-1.0,b=1.0,x=-9.0,y=15.0,r=0.76])Node713[a=0.0,b=1.0,x=-8.0,y=14.0,r=1.09])Node641[a=-1.0,b=1.0,x=-8.0,y=13.0,r=1.17])Node504[a=1.0,b=1.0,x=-7.0,y=12.0,r=0.66])Node424[a=-1.0,b=1.0,x=-8.0,y=11.0,r=0.86])Node367[a=-1.0,b=1.0,x=-7.0,y=10.0,r=1.26])Node249[a=-1.0,b=-1.0,x=-6.0,y=9.0,r=0.91])Node206[a=-1.0,b=1.0,x=-5.0,y=10.0,r=0.91])Node164[a=-1.0,b=1.0,x=-4.0,y=9.0,r=0.63],(((((((Node793[a=-1.0,b=0.0,x=-7.0,y=14.0,r=0.96],(Node880[a=-1.0,b=-1.0,x=-8.0,y=12.0,r=0.52])Node792[a=-1.0,b=-1.0,x=-7.0,y=13.0,r=1.05])Node640[a=0.0,b=1.0,x=-6.0,y=14.0,r=0.57])Node576[a=-1.0,b=1.0,x=-6.0,y=13.0,r=0.65])Node503[a=-1.0,b=1.0,x=-5.0,y=12.0,r=1.43])Node423[a=-1.0,b=1.0,x=-4.0,y=11.0,r=0.71],(Node502[a=-1.0,b=-1.0,x=-5.0,y=9.0,r=0.76])Node422[a=-1.0,b=0.0,x=-4.0,y=10.0,r=1.07])Node302[a=0.0,b=1.0,x=-3.0,y=10.0,r=0.71])Node248[a=1.0,b=1.0,x=-3.0,y=9.0,r=1.14])Node163[a=-1.0,b=0.0,x=-4.0,y=8.0,r=1.04])Node137[a=0.0,b=1.0,x=-3.0,y=8.0,r=1.1])Node110[a=-1.0,b=0.0,x=-3.0,y=7.0,r=0.78])Node94[a=-1.0,b=1.0,x=-2.0,y=7.0,r=1.27])Node79[a=-1.0,b=1.0,x=-1.0,y=6.0,r=1.48])Node39[a=-1.0,b=1.0,x=0.0,y=5.0,r=0.99])Node20[a=1.0,b=1.0,x=1.0,y=4.0,r=1.24],(Node30[a=1.0,b=0.0,x=1.0,y=2.0,r=0.91])Node19[a=0.0,b=-1.0,x=0.0,y=2.0,r=0.66])Node12[a=1.0,b=1.0,x=0.0,y=3.0,r=1.37])Node5[a=-1.0,b=1.0,x=-1.0,y=2.0,r=0.64])Node3[a=1.0,b=0.0,x=0.0,y=1.0,r=0.52])Node1[a=-1.0,b=1.0,x=-1.0,y=1.0,r=1.12])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 3726\n",
      "\n",
      "--- Generation 1/7003, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7003, Best fitness 0.88463 ---\n",
      "\n",
      "--- Generation 2001/7003, Best fitness 0.89139 ---\n",
      "\n",
      "--- Generation 3001/7003, Best fitness 0.89304 ---\n",
      "\n",
      "--- Generation 4001/7003, Best fitness 0.89628 ---\n",
      "\n",
      "--- Generation 5001/7003, Best fitness 0.89728 ---\n",
      "\n",
      "--- Generation 6001/7003, Best fitness 0.89968 ---\n",
      "\n",
      "--- Generation 7001/7003, Best fitness 0.90041 ---\n",
      "draw_all_historiesk4(fitness_histories, lengths_of_target_sequence)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Execution time: 5 hours, 8 minutes, 36 seconds\n"
     ]
    }
   ],
   "execution_count": 3
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Observations from three experiments.**\n",
    "1. Three problems were given to Evolution, the first with 18 nodes, the second with 375 and the third with 3726. The easiest one for Evolution was that with 18 nodes, followed by that with 3726. At last, the problem with 375 resulted to be the most difficult for Evolution during a period of observation of 7000 generations.\n",
    "2. No difference of the fitness behaviour over generations for 1273 and 2073 nodes. These curves were both over the curve of 69 nodes during the registered 7000 generations. This contradicts our expectation.\n",
    "3. There is no difference between the fitness curves of 11 and 454 nodes. And, the complex case, with 3254 nodes, resulted to be the easiest one for Evolution. This is a frontal contradiction against our expectation that said: when complexity, given by the number of nodes grows, the fitness curve must be delayed and tend to a lower equilibrium value. This type of result is the norm for globular morpho-trees.\n",
    "\n",
    "**Exercise.** Study the effect of decreasing resources over the silhouette and relative position of the fitness function over generations. \n",
    ">\n",
    "> *Answer.* In the following program we depict the fitness function over generations for various values of population sizes."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2026-10-06T11:49:13.239480Z",
     "start_time": "2026-10-06T11:30:26.587757Z"
    }
   },
   "source": [
    "# Program evolution_of_newick_morphological_trees14.py\n",
    "\n",
    "# To measure the effect of decreasing resources,\n",
    "# we gave to Evolution a problem that must be solved with\n",
    "# various population sizes. Concretely:\n",
    "# Evolution uses different population sizes\n",
    "# to restore various target morpho-trees with different number of nodes.\n",
    "#\n",
    "# Morphological trees considered here are like lighting trees:\n",
    "# an electrical thread in the form of tree covers an area\n",
    "# and there is lamp at each node.\n",
    "# Each lamp has a given power and a circle of illumination,\n",
    "# whose radius is determined by a threshold intensity.\n",
    "# In morphology, this corresponds with a threshold concentration of a messenger.\n",
    "# Evolution is given the task of illuminating\n",
    "# the area determined by a random target tree.\n",
    "# Trees are encoded in Newick Notation and\n",
    "# everything is done over the correspond strings\n",
    "# without resorting to the Node class.\n",
    "# Thus, it is possible to use the Newick strings as a genotype and\n",
    "# the corresponding trees as a phenotype.\n",
    "# \n",
    "# In this version:\n",
    "#   1. Mutation has been inbuilt with the power\n",
    "#       to have children in the immediate neighborhood of the father and    \n",
    "#       to change radius and the topology of trees\n",
    "#       by means of insertion and deletion of leaves.\n",
    "#    2. Recombination has been enabled with the power \n",
    "#       to exchange leaves between trees.\n",
    "#       We expect a good proportion of the population to \n",
    "#       be able to successfully recombine, mutate and reproduce.\n",
    "#    3. A cut-off for the length of the Newick string has been introduced \n",
    "#       to avoid overgrowth of trees.\n",
    "#    4. The seed for the random number generator has been canceled \n",
    "#        to allow different histories for different runs.\n",
    "#\n",
    "# A bug was corrected in the function that inserts a node.\n",
    "# The criterion for insertion was changed from \"a leaf is just after a left parenthesis\" \n",
    "# to \"a leaf begins with `N` that is preceded by a left parenthesis\".\n",
    "#\n",
    "# Purpose: to study the effect of the decreasing of resources over Evolution.\n",
    "# To that aim, we depict various fitness functions for diverse\n",
    "# values of population sizes.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# We reuse pieces of code made with the help of Colab and Gemini 2.5 Flash.\n",
    "# With the  assistance of the AI of Visual Studio Code.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "from datetime import datetime, timedelta\n",
    "\n",
    "# trace memory allocation \n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc \n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False \n",
    "recombination_of_leaves = False\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start() \n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 10,\n",
    "  'max_number_children': 2,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "   #'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 70,\n",
    "  'generations': 100,\n",
    "  'max_depth': target_tree_params['max_depth'],\n",
    "  'max_number_children': target_tree_params['max_number_children'],\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001, \n",
    "  'crossover_rate': 0.001  \n",
    "}\n",
    "\n",
    " \n",
    "def print_parameters14(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    #print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"INITIAL TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"INITIAL GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=14.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence14(original_str, start_idx, end_idx, new_subsequence):\n",
    "    \"\"\" Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google\"\"\"\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length14(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups14(newick_string):\n",
    "    \"\"\"Al substrings that encodes for the info of a node, step from father, center and radius are detected.\"\"\"\n",
    "\n",
    "    #print(\"detect_all_groups14(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    \"\"\"\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        \"\"\"\n",
    "    return groups\n",
    "\n",
    "def count_groups14(newick_string):\n",
    "    \"\"\"The number of groups is counted.\"\"\"\n",
    "    groups = detect_all_groups14(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info14(group):\n",
    "  \"\"\"The info of each group is extracted by tokenizers from the string.\"\"\"\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos14(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups14(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info14(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates14(cell):\n",
    "  \"\"\"Immediate neighboring coordinates of a cell are generated\"\"\"\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "def find_father_center14(newick_string, j):\n",
    "  \"\"\" Finds the address of the father of a node at j\"\"\"\n",
    "  #print(\"find_father_center14(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups14(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info14(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator14(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  \"\"\"For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      \"\"\"\n",
    "  #print(\"node_info_generator14(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates14(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children14(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  \"\"\" Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n \"\"\"\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator14(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator14(max_depth, max_numb_children, max_node_radius):\n",
    "  \"\"\" A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.\"\"\"\n",
    "  #print(\"complete_tree_generator14(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = max_depth + random.randint(-5,5) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion. \n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center14(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children14(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence14(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# === VALIDATOR ====\n",
    "\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# Connectivity issues are not checked.\n",
    "\n",
    "# A bug in the drawing procedure has been corrected, and the drawing of trees is now correct.\n",
    "# The bug was related to the function that finds the father of a node.\n",
    "\n",
    "# With the help of Gemini, Google and the AI of Visual Studio Code.\n",
    "\n",
    "\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- NodeB_3_x_2[a=1,b=0,x=4,y=5,r=1.2]\n",
    "# --- where a nad b are -1,0,1 except (0,0)\n",
    "# --- because they represent a step awya from the father.\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick14(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=1,b=-1,x=2,y=4,r=3.2], 22 tokens\n",
    "def examine_subsequence14(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 14][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 15][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 16][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 17][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 18][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 19][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 20][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 21][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"Tokens: {tracker}\")\n",
    "    #print(f\"tracker2: {tracker2}\")\n",
    "    master_pattern = \"7375627562756275627564\"\n",
    "                     #7375627562756275627564\n",
    "    #print(f\"master pattern:  {master_pattern}\")\n",
    "    if tracker2 == master_pattern:\n",
    "        return True, \"Valid Newick sub-string.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string.\"\n",
    "\n",
    "\n",
    "def simplify14(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    # print(\"\\nsimplify(text)\")\n",
    "    # print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,x=3,y=7,r=2.3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_strig_of_length14(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    # print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        #print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        #print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "\n",
    "def validate_newick_syntax14(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    #print(\"Validating Newick syntax\")\n",
    "    tokens = []\n",
    "    try:\n",
    "        tokens = tokenize_newick14(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    l = len(tokens)\n",
    "    #print(f\"Length of tokens: {l}\")\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 22: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 22:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-20):\n",
    "            #print(f\"tokens[{j}]: {tokens[j]}\")\n",
    "            #print(f\"tokens[{j+1}]: {tokens[j+1]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid14, message14 = examine_subsequence14(tokens, j)\n",
    "                if is_valid14:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid14, message14 = simplify14(newick_str)\n",
    "    if is_valid14:\n",
    "        return True, \"Valid morpho-tree.\"\n",
    "    else:\n",
    "        return False, \"Invalid morpho-tree.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "def test_validator14(max_depth, max_numb_children, max_node_radius):\n",
    "    # Specific test\n",
    "    model = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]\"\n",
    "    #print(\"Simple test\")\n",
    "    #print(f\"Model of Newick String: {model}\")\n",
    "    is_valid, message = validate_newick_syntax14(model)\n",
    "    #print(f\"message: {message}\")\n",
    "    invalid_string = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]]\"\n",
    "    #print(f\"\\nInvalid_string: {invalid_string}\")\n",
    "    is_valid, message = validate_newick_syntax14(invalid_string)\n",
    "    #print(f\"message: {message}\")\n",
    "    #print(\"\\n\")\n",
    "\n",
    "\n",
    "    #print(\"\\nMassive test of Newick formulas encoding for morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 3\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        p, s = complete_tree_generator14(max_depth, max_numb_children, max_node_radius)\n",
    "        #print(f\"pattern {p}\")\n",
    "        #print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax14(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        #print(f\"Morpho-tree {i}:: {status} - {message}\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# ======== DRAWING ================\n",
    "\n",
    "def get_illuminated_area14(x,y,r):\n",
    "    \"\"\"\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    \"\"\"\n",
    "    #print(\"get_illuminated_area14\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick14(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles14(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves(newick_string):\n",
    "    \"\"\"Detect leaves in a Newick string.\"\"\"\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups14(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father14(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    \"\"\"Draw lines connecting leaves to fathers\"\"\"\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father14\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info14(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups14(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info14(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    #is_valid, message = validate_newick_syntax14(newick_string)\n",
    "    #print(f\"is valid at connect_leaves_to_father14(...) : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    groups = detect_all_groups14(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links14(newick_string, ax,   diff_color='red' ):\n",
    "    \"\"\"Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       \"\"\"\n",
    "\n",
    "    #print(\"draw_tree_links14\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups14(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links14\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father14(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups14(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info14(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick14(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos14(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 15))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles14(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "\n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area14(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick14(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links14(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree, test and draw it\n",
    "# def generate_test_and_draw_morpho_tree(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] ):\n",
    "def generate_and_test_morpho_tree14(ga_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    newick_tree = complete_tree_generator14(ga_params['max_depth'], ga_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #newick_tree = complete_tree_generator14(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    is_valid, message = validate_newick_syntax14(newick_tree)\n",
    "    illuminated_coords = set()\n",
    "    \n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos14(newick_tree)\n",
    "        illuminated_coords = get_illuminated_area14(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "    \"\"\"\n",
    "    is_valid, message = validate_newick_syntax14(newick_tree)\n",
    "    print(f\"is the Newick String valid?: {is_valid}, message: {message}\")\n",
    "    status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    \"\"\"\n",
    "    return newick_tree, illuminated_coords\n",
    "\n",
    "\n",
    "# --- Evolutionary functions ---\n",
    "\n",
    "def create_initial_population_newick14(pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],  max_node_radius=ga_params['max_node_radius'] ):\n",
    "    population = []\n",
    "    for _ in range(pop_size):\n",
    "        new_tree = complete_tree_generator14(max_depth, max_children, max_node_radius)\n",
    "        population.append(new_tree)\n",
    "    return population\n",
    "\n",
    "def get_illuminated_coordinates14(newick_string):\n",
    "  \"\"\"Coordinates of illuminated cells are extracted from the Newick string\"\"\"\n",
    "  a,b,x,y,r = extract_all_infos14(newick_string)\n",
    "  # Illuminated area is calculated\n",
    "  illuminated_coords = get_illuminated_area14(x,y,r)\n",
    "  ##print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "  ##print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "  return illuminated_coords\n",
    "\n",
    "def calculate_fitness_illumination14(candidate_tree_root, target_illuminated_area):\n",
    "    \"\"\"\n",
    "    Calculates fitness based on the symmetric difference between illuminated areas.\n",
    "    Fitness is 1.0 for a perfect match, and decreases as symmetric difference increases.\n",
    "    Reuse of a previous code by Gemini 2.5 Flash\n",
    "    \"\"\"\n",
    "    if candidate_tree_root is None:\n",
    "        # If the tree generation failed, assign a very low fitness\n",
    "        return 0.0001 # A small non-zero value to avoid division by zero issues later\n",
    "\n",
    "    candidate_illuminated_area = get_illuminated_coordinates14(candidate_tree_root)\n",
    "\n",
    "    # Symmetric difference: (A U B) - (A intersect B)\n",
    "    # Or, the elements in A but not B, plus elements in B but not A.\n",
    "    symmetric_difference = candidate_illuminated_area.symmetric_difference(target_illuminated_area)\n",
    "\n",
    "    # Union size: used for normalization\n",
    "    union_size = len(candidate_illuminated_area.union(target_illuminated_area))\n",
    "\n",
    "    if union_size == 0:\n",
    "        if not target_illuminated_area and not candidate_illuminated_area:\n",
    "            return 1.0 # Perfect match if both are empty\n",
    "        else:\n",
    "            return 0.0001 # Should not happen if target is non-empty, but handles cases where both are empty but expected non-empty\n",
    "\n",
    "    # Fitness is 1.0 - (len(symmetric_difference) / union_size)\n",
    "    # This gives 1.0 for a perfect match (symmetric_difference_area = 0)\n",
    "    # and approaches 0.0 for large differences.\n",
    "    fitness = 1.0 - (len(symmetric_difference) / union_size)\n",
    "    return max(0.0001, fitness) # Ensure fitness is always positive\n",
    "\n",
    "\n",
    "def select_parents_newick(population, fitness_scores, num_parents):\n",
    "    parents = []\n",
    "    # Use roulette wheel selection or tournament selection. Tournament is generally robust.\n",
    "    for _ in range(num_parents):\n",
    "        tournament_size = min(5, len(population))\n",
    "        if tournament_size == 0:\n",
    "            break\n",
    "        tournament_candidates = random.sample(list(zip(population, fitness_scores)), tournament_size)\n",
    "        winner = max(tournament_candidates, key=lambda x: x[1])[0]\n",
    "        parents.append(winner)\n",
    "    return parents\n",
    "\n",
    "def find_recombinant_branch14(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  #print(\"\\nfind_branch\")\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  pattern_left_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_left_par, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  #print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  #print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      #print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_position_branch_recombination14(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_position_branch_recombination14\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_recombinant_branch14(newick_string1)\n",
    "  branch2 = find_recombinant_branch14(newick_string2)\n",
    "  #print(f\"\\nbranch1: {branch1}\")\n",
    "  #print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "def newick_leaves_recombination14(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_leaves_recombination14\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  leaves1 = find_leaves(newick_string1)\n",
    "  leaves2 = find_leaves(newick_string2)\n",
    "  if not leaves1 or not leaves2:\n",
    "    return newick_string1, newick_string2\n",
    "  # Select a leaf at random from each tree\n",
    "  leaf1 = random.choice(leaves1)\n",
    "  leaf2 = random.choice(leaves2)\n",
    "  #print(f\"\\nleaf1: {leaf1}\")\n",
    "  #print(f\"leaf2: {leaf2}\")\n",
    "  # Leaves are interchanged\n",
    "  newick_string1 = newick_string1.replace(leaf1, leaf2)\n",
    "  newick_string2 = newick_string2.replace(leaf2, leaf1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "def find_occupied_squares14(newick_string):\n",
    "    \"\"\"Detects all the occupied squares in a tree\"\"\"\n",
    "    occupied_squares_set = set()\n",
    "    groups = detect_all_groups14(newick_string)\n",
    "    for group in groups:\n",
    "        [a,b,x,y,r] = extract_info14(group)\n",
    "        occupied_squares_set.add((x, y))\n",
    "    return occupied_squares_set\n",
    "\n",
    "def newick_mutation_of_radius14(newick_string):\n",
    "  # The pattern of the radius of illumination, r = 0.2\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  #print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  #print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  #print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence14(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    " \n",
    "def newick_find_insertion_patterns14(newick_string):\n",
    "  \"\"\" All insertion patterns are found and one is chosen at random\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    " \n",
    "\n",
    "def insertion_of_branch14(newick_string):\n",
    "  #original_newick_string = newick_string\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_insertion_patterns14(newick_string)\n",
    "  # String to be inserted\n",
    "  # child_string = \"(Node15[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node14[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  child_string = complete_tree_generator14(max_depth = 2, max_numb_children = 2, max_node_radius= 1.5)\n",
    "  if group:\n",
    "    #print(f\"Group (main): {group}\")\n",
    "    #print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    #char_before = newick_string[start-1]\n",
    "    #print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {original_newick_string}\")\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_left_parenthesis_14(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns (N  are found and one is chosen at random\n",
    "      The new info will be inserted to the right of the parenthesis\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[(][N]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group140: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center14(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares14(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator14(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \"(\" + child_string +  \")\" + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "def select_one_insertion_pattern_comma_14(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All  commas are found and one is chosen at random,\n",
    "  the child will be inserted after the comma\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][,]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group140: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center14(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares14(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator14(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+2] + \"(\" + child_string + \")\" + newick_string[start+2:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_parentheses_14(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns ]) are found and one is chosen at random\n",
    "      The new info will be inserted between ] and ) as a brother\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][)]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group140: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center14(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares14(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator14(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info \n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \",\" + child_string + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "  \n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def insertion_of_leaf14(newick_string, counter, max_illumination_radius):    #original_newick_string = newick_string\n",
    "    \"\"\" All insertion patterns are found and one is chosen at random\n",
    "        for the new info to be inserted \"\"\"\n",
    "    case = random.choice([1, 2, 3])  # Randomly choose between three insertion methods\n",
    "    match case:\n",
    "        case 1:\n",
    "            newick_string = select_one_insertion_pattern_comma_14(newick_string, counter, max_illumination_radius)\n",
    "        case 2:\n",
    "            newick_string = select_one_insertion_pattern_parentheses_14(newick_string, counter, max_illumination_radius)\n",
    "        case 3:\n",
    "            newick_string = select_one_insertion_pattern_left_parenthesis_14(newick_string, counter, max_illumination_radius)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    newick_string = newick_string.replace(\" \", \"\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    return newick_string\n",
    "\n",
    "\n",
    "\n",
    "def deletion_of_leaf14(newick_string):\n",
    "    \"\"\"A leaf is deleted at random from the Newick string. \n",
    "        If there are no leaves, the original string is returned.\"\"\"\n",
    "    # All leaves are detected\n",
    "    leaves = find_leaves(newick_string)\n",
    "    if not leaves:\n",
    "        return newick_string  # No leaves to delete\n",
    "    # Select a leaf at random\n",
    "    leaf_to_delete = random.choice(leaves)\n",
    "    # Remove the selected leaf from the Newick string\n",
    "    newick_string = newick_string.replace(leaf_to_delete, \"\")\n",
    "    # Clean up any potential formatting issues (like double commas)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    return newick_string\n",
    "\n",
    "def find_branch14(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_find_all_groups14(newick_string):\n",
    "  \"\"\" All groups are found and one is chosen at random and returned\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "\n",
    "def deletion_of_branch14(newick_string ):\n",
    "  group, start =  newick_find_all_groups14(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch14(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def newick_mutation_branches14(newick_string):\n",
    "  # Mutation of radius of illumination and of complete branches\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    newick_string = newick_mutation_of_radius14(newick_string)\n",
    "    newick_string = insertion_of_branch14(newick_string)\n",
    "    newick_string = deletion_of_branch14(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "def newick_mutation_leaves14(newick_string, ga_params):\n",
    "  \"\"\"Radius is mutated, and only leaves can be inserted or deleted\"\"\"\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    # Mutation of radius of illumination and of complete leaves\n",
    "    newick_string = newick_mutation_of_radius14(newick_string)\n",
    "    newick_string = insertion_of_leaf14(newick_string, counter=random.randint(0, 1000), max_illumination_radius=ga_params['max_node_radius'])\n",
    "    newick_string = deletion_of_leaf14(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def plot_illuminated_area14(ax, illuminated_coords, title, color='blue', alpha=0.5):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "# --- MAIN EVOLUTIONARY SIMULATION LOOP ---\n",
    "\n",
    "def evolutionaryProcess14(target_tree_params, ga_params):\n",
    "    # A previous code by Gemini was reused.\n",
    "\n",
    "    # 1. Generate Target Tree and its Illuminated Area\n",
    "    #print(\"\\n--- Generating Target Tree ---\")\n",
    "    #random.seed(ga_params['seed'] + 1) # Use a different seed for target generation\n",
    "    target_tree, target_illuminated_area =  generate_and_test_morpho_tree14( ga_params)#926\n",
    "    print(f\"target_tree: {target_tree} \\n\\n\")\n",
    "    number_of_groups = count_groups14(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    length_of_target_tree = len(target_tree)\n",
    "    #draw_newick_string14(target_tree, \"Target Tree\")\n",
    "    # target_area = get_illuminated_coordinates14(target_tree)\n",
    "    #print(f\"Target illuminated area: {target_illuminated_area}\")\n",
    "\n",
    "    # 2. Initialize Population\n",
    "    #random.seed(ga_params['seed']) # Reset seed for GA population generation\n",
    "    #print(f\"\\n--- Initializing Population of {ga_params['pop_size']} Trees ---\")\n",
    "    population = create_initial_population_newick14(\n",
    "        pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],\n",
    "        max_node_radius=ga_params['max_node_radius']  )\n",
    "    #print(f\"Population initialized with {len(population)} individuals.\")\n",
    "    #print(f\"Population: {population}\")\n",
    "\n",
    "    best_tree_overall = \"\"\n",
    "    best_fitness_overall = -1.0\n",
    "    history = []\n",
    "\n",
    "    # 3. Evolutionary Loop\n",
    "    #print(f\"\\n--- Starting Evolutionary Loop for {ga_params['generations']} Generations ---\")\n",
    "    for generation in range(ga_params['generations']):\n",
    "        if generation % 1000 == 0:\n",
    "            print(f\"\\n--- Generation {generation+1}/{ga_params['generations']}, Best fitness {round(best_fitness_overall, 5)} ---\")\n",
    "        fitness_scores = [calculate_fitness_illumination14(tree, target_illuminated_area)for tree in population]\n",
    "\n",
    "        current_best_fitness = max(fitness_scores)\n",
    "        current_best_tree = population[np.argmax(fitness_scores)]\n",
    "\n",
    "        if current_best_fitness > best_fitness_overall:\n",
    "            best_fitness_overall = current_best_fitness\n",
    "            best_tree_overall = copy.deepcopy(current_best_tree) # Deepcopy to save the best tree\n",
    "\n",
    "        history.append(current_best_fitness)\n",
    "\n",
    "        #print(f\"Generation {generation+1}/{ga_params['generations']}: Best Fitness = {current_best_fitness:.4f} (Overall Best: {best_fitness_overall:.4f})\")\n",
    "\n",
    "        if best_fitness_overall >= 0.999: # Almost perfect match\n",
    "            #print(\"Target illumination achieved (or very close)! Stopping evolution.\")\n",
    "            return history, number_of_groups\n",
    "\n",
    "        # Selection\n",
    "        parents = select_parents_newick(population, fitness_scores, ga_params['pop_size'] // 2)\n",
    "\n",
    "        # Create next generation\n",
    "        next_population = []\n",
    "        # Elitism: Keep the best individual from the current generation\n",
    "        if best_tree_overall and current_best_fitness == best_fitness_overall: # Only if it's the current best in this generation\n",
    "            next_population.append(copy.deepcopy(current_best_tree))\n",
    "\n",
    "        while len(next_population) < ga_params['pop_size']:\n",
    "            if len(parents) < 2: # Not enough parents for crossover, fill with new random trees\n",
    "                new_tree =  complete_tree_generator14(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "                if new_tree:\n",
    "                    next_population.append(new_tree)\n",
    "                continue\n",
    "\n",
    "            # Randomly pick two parents (can be the same parent multiple times with replacement for simplicity)\n",
    "            p1 = random.choice(parents)\n",
    "            p2 = random.choice(parents)\n",
    "            child1, child2 = p1,p2 # No crossover, just pass parents to children for mutation\n",
    "            if recombination_of_leaves:\n",
    "                # Crossover newick_position_branch_recombination14\n",
    "                # child1, child2 = newick_position_branch_recombination14(p1, p2)\n",
    "                # Crossover newick_leaves_recombination14\n",
    "                child1, child2 =newick_leaves_recombination14(p1,p2)\n",
    "            # Mutation: Apply mutation to both children\n",
    "            mutated_child1 = newick_mutation_leaves14(child1, ga_params)\n",
    "            mutated_child2 = newick_mutation_leaves14(child2, ga_params)\n",
    "\n",
    "\n",
    "            next_population.append(mutated_child1)\n",
    "            if len(next_population) < ga_params['pop_size']:\n",
    "                next_population.append(mutated_child2)\n",
    "\n",
    "        population = next_population[:ga_params['pop_size']]\n",
    "        # print(f\"Population size for next generation: {len(population)}\")\n",
    "        # print(f\"Best fitness this generation: {current_best_fitness:.4f}, Overall best fitness: {best_fitness_overall:.4f}\")\n",
    "        # print(f\"Best tree this generation: {current_best_tree}\")\n",
    "        # If you want to see the entire population, uncomment the following line:\n",
    "        # print(f\"Population: {population}\")\n",
    "        # Cutt-off for the length of the Newick string to avoid excessive growth\n",
    "        population = [tree for tree in population if len(tree) <= 2 * length_of_target_tree]  # Allow some growth but limit it\n",
    "        #print(f\"Population size after length cut-off: {len(population)}\")\n",
    "        # If the population is too small, refill\n",
    "        while len(population) < ga_params['pop_size']:\n",
    "            new_tree = complete_tree_generator14(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'])\n",
    "            if new_tree:\n",
    "                population.append(new_tree) \n",
    "    #print(\"\\n--- Evolution Finished ---\")\n",
    "    #print(f\"Final Best Fitness: {best_fitness_overall:.4f}\")\n",
    "    #return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history, number_of_groups\n",
    "    \n",
    "    return history, number_of_groups\n",
    "        \n",
    "\n",
    "def draw_all_histories14(fitness_histories, numbers_of_nodes, population_sizes):\n",
    "    print(\"draw_all_historiesk4(fitness_histories, lengths_of_target_sequence)\")\n",
    "    # Plot all the fitness histories together\n",
    "    # By the AI of VSCode. \n",
    "    for i in range(len(fitness_histories)):\n",
    "        # x_range contains all numbers from 0 to the length of the fitness history for the current length of target sequence.\n",
    "        x_range = range(len(fitness_histories[i]))\n",
    "        plt.plot(x_range, fitness_histories[i], label=f'pop_size {population_sizes[i]}, Number of nodes {numbers_of_nodes[i]}')\n",
    "    plt.xlabel('Generation')\n",
    "    plt.ylabel('Best Fitness')\n",
    "    plt.title('GA: Fitness of the best morpho-tree over Generations for Different numbers of pop-sizes and nodes')\n",
    "    plt.grid(True)\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "\n",
    " \n",
    "def main14(target_tree_params, ga_params):\n",
    "    ''' An Evolutionary process is triggered for each pop-size value.\n",
    "    The number of nodes is not predefined, \n",
    "    but results from interation with random generation.\n",
    "    The fitness history is stored in a list, \n",
    "    and then all the histories are plotted together.\n",
    "    '''\n",
    "    population_sizes = [12, 25, 50, 100, 200]   \n",
    "    numbers_of_generations = [7001, 7002, 7003, 7004, 7005 ]  # Example numbers of generations for different lengths of target sequence\n",
    "    # List to store the normalized best fitness history for each length of target sequence   \n",
    "    fitness_histories = []\n",
    "    numbers_of_nodes = []  # Example numbers of generations for different lengths of target sequence\n",
    "    for i in range(len(population_sizes)):\n",
    "        target_tree_params['pop_size'] = population_sizes[i]\n",
    "        ga_params['generations'] =  numbers_of_generations[i]\n",
    "        print(f\"\\nRunning evolutionary process for max_depth = {target_tree_params['max_depth']} and generations = {ga_params['generations']}\")\n",
    "        history14, number_of_groups14 = evolutionaryProcess14(target_tree_params, ga_params)\n",
    "        fitness_histories.append(history14)\n",
    "        numbers_of_nodes.append(number_of_groups14)\n",
    "    draw_all_histories14(fitness_histories, numbers_of_nodes, population_sizes)\n",
    "     \n",
    "    \n",
    "# Run an evolutionary process for each value of target tree and GA parameters\n",
    "# Produces a comparative graphic\n",
    "if __name__ == \"__main__\":\n",
    "    print_parameters14(target_tree_params, ga_params)\n",
    "    main14(target_tree_params, ga_params)\n",
    " \n",
    "    end_time = time.time()\n",
    "    Execution_time = end_time - start_time\n",
    "    # print(f\"Execution time: {Execution_time:.2f} seconds\")\n",
    "    # Execution time in hours, minutes and seconds:\n",
    "    hours = int(Execution_time // 3600)\n",
    "    minutes = int((Execution_time % 3600) // 60)\n",
    "    seconds = int(Execution_time % 60)\n",
    "    print(f\"Execution time: {hours} hours, {minutes} minutes, {seconds} seconds\")\n",
    "    if memory_monitoring:\n",
    "        # displaying the allocated memory\n",
    "        print(tracemalloc.get_traced_memory())\n",
    "        # stopping the memory allocation library\n",
    "        tracemalloc.stop()\n",
    "    \n",
    "# End of program evolution_of_newick_morphological_trees14.py"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LAB: EVOLUTION OF NEWICK MORPHO-TREES\n",
      "PURPOSE: \n",
      " A random morpho-tree T is generated.\n",
      " Evolution tries to restore the tree T\n",
      " beginning from a population of random trees.\n",
      "EXPERIMENT 1791286226.727942\n",
      "RECOMBINATION OF LEAVES: False\n",
      "INITIAL TARGET TREE PARAMETERS: {'max_depth': 10, 'max_number_children': 2, 'max_node_radius': 1.5}\n",
      "INITIAL GENETIC ALGORITHM PARAMETERS: {'pop_size': 70, 'generations': 100, 'max_depth': 10, 'max_number_children': 2, 'max_node_radius': 1.5, 'mutation_rate': 0.001, 'crossover_rate': 0.001}\n",
      "\n",
      "\n",
      "Running evolutionary process for max_depth = 10 and generations = 7001\n",
      "target_tree: ((((Node5[a=-1.0,b=1.0,x=1.0,y=0.0,r=0.69],(Node6[a=0.0,b=-1.0,x=1.0,y=-3.0,r=1.4])Node4[a=-1.0,b=-1.0,x=1.0,y=-2.0,r=0.58])Node3[a=0.0,b=-1.0,x=2.0,y=-1.0,r=0.65])Node2[a=1.0,b=1.0,x=2.0,y=0.0,r=1.4])Node1[a=1.0,b=-1.0,x=1.0,y=-1.0,r=0.62])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 7\n",
      "\n",
      "--- Generation 1/7001, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7001, Best fitness 0.80769 ---\n",
      "\n",
      "--- Generation 2001/7001, Best fitness 0.80769 ---\n",
      "\n",
      "--- Generation 3001/7001, Best fitness 0.80769 ---\n",
      "\n",
      "--- Generation 4001/7001, Best fitness 0.80769 ---\n",
      "\n",
      "--- Generation 5001/7001, Best fitness 0.80769 ---\n",
      "\n",
      "--- Generation 6001/7001, Best fitness 0.80769 ---\n",
      "\n",
      "--- Generation 7001/7001, Best fitness 0.80769 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 10 and generations = 7002\n",
      "target_tree: (((((Node27[a=1.0,b=-1.0,x=1.0,y=-2.0,r=1.07])Node19[a=-1.0,b=-1.0,x=0.0,y=-1.0,r=1.43],((((Node63[a=0.0,b=-1.0,x=4.0,y=-3.0,r=1.19])Node50[a=0.0,b=-1.0,x=4.0,y=-2.0,r=1.23])Node37[a=1.0,b=1.0,x=4.0,y=-1.0,r=0.93])Node26[a=1.0,b=-1.0,x=3.0,y=-2.0,r=0.51])Node18[a=1.0,b=-1.0,x=2.0,y=-1.0,r=0.74])Node13[a=1.0,b=-1.0,x=1.0,y=0.0,r=1.35],(((Node49[a=1.0,b=0.0,x=2.0,y=3.0,r=1.29],Node48[a=1.0,b=1.0,x=2.0,y=4.0,r=0.9])Node36[a=0.0,b=1.0,x=1.0,y=3.0,r=0.78])Node17[a=0.0,b=1.0,x=1.0,y=2.0,r=0.84])Node12[a=1.0,b=0.0,x=1.0,y=1.0,r=0.86])Node6[a=1.0,b=0.0,x=0.0,y=1.0,r=1.47],((((Node35[a=-1.0,b=1.0,x=-1.0,y=4.0,r=0.91])Node25[a=0.0,b=1.0,x=0.0,y=3.0,r=1.48])Node11[a=1.0,b=0.0,x=0.0,y=2.0,r=1.47])Node9[a=1.0,b=0.0,x=-1.0,y=2.0,r=0.8],(((((Node62[a=0.0,b=-1.0,x=-3.0,y=5.0,r=1.39],Node61[a=-1.0,b=-1.0,x=-4.0,y=5.0,r=1.36])Node47[a=-1.0,b=1.0,x=-3.0,y=6.0,r=1.17],(Node60[a=1.0,b=-1.0,x=0.0,y=5.0,r=0.53],Node59[a=-1.0,b=0.0,x=-2.0,y=6.0,r=1.18])Node46[a=1.0,b=1.0,x=-1.0,y=6.0,r=1.31])Node34[a=0.0,b=1.0,x=-2.0,y=5.0,r=1.01],(Node45[a=1.0,b=1.0,x=0.0,y=4.0,r=0.75])Node33[a=1.0,b=-1.0,x=-1.0,y=3.0,r=1.44])Node24[a=1.0,b=0.0,x=-2.0,y=4.0,r=1.11])Node16[a=-1.0,b=1.0,x=-3.0,y=4.0,r=0.57],((Node44[a=-1.0,b=0.0,x=-5.0,y=1.0,r=1.41])Node23[a=-1.0,b=-1.0,x=-4.0,y=1.0,r=0.59],(((Node58[a=-1.0,b=-1.0,x=-6.0,y=1.0,r=1.15],Node57[a=-1.0,b=1.0,x=-6.0,y=3.0,r=1.0])Node43[a=-1.0,b=0.0,x=-5.0,y=2.0,r=1.48],(Node56[a=-1.0,b=-1.0,x=-6.0,y=2.0,r=1.2])Node42[a=-1.0,b=1.0,x=-5.0,y=3.0,r=1.25])Node32[a=-1.0,b=1.0,x=-4.0,y=2.0,r=1.09])Node22[a=0.0,b=-1.0,x=-3.0,y=1.0,r=1.15])Node15[a=-1.0,b=-1.0,x=-3.0,y=2.0,r=0.69])Node8[a=0.0,b=1.0,x=-2.0,y=3.0,r=1.42])Node5[a=-1.0,b=1.0,x=-2.0,y=2.0,r=1.48])Node2[a=-1.0,b=1.0,x=-1.0,y=1.0,r=0.5],((((((((Node41[a=-1.0,b=-1.0,x=1.0,y=-5.0,r=0.83],(Node55[a=-1.0,b=-1.0,x=0.0,y=-5.0,r=0.94],Node54[a=1.0,b=-1.0,x=2.0,y=-5.0,r=1.24])Node40[a=-1.0,b=0.0,x=1.0,y=-4.0,r=0.98])Node31[a=0.0,b=-1.0,x=2.0,y=-4.0,r=1.46],(Node53[a=-1.0,b=0.0,x=0.0,y=-3.0,r=0.87])Node30[a=-1.0,b=0.0,x=1.0,y=-3.0,r=1.3])Node21[a=0.0,b=-1.0,x=2.0,y=-3.0,r=0.59],((Node39[a=0.0,b=-1.0,x=3.0,y=-5.0,r=0.73])Node29[a=0.0,b=-1.0,x=3.0,y=-4.0,r=1.44],((Node52[a=0.0,b=1.0,x=5.0,y=-3.0,r=1.28],Node51[a=0.0,b=-1.0,x=5.0,y=-5.0,r=0.84])Node38[a=1.0,b=0.0,x=5.0,y=-4.0,r=0.95])Node28[a=1.0,b=-1.0,x=4.0,y=-4.0,r=1.11])Node20[a=1.0,b=-1.0,x=3.0,y=-3.0,r=1.19])Node14[a=1.0,b=-1.0,x=2.0,y=-2.0,r=1.42])Node10[a=1.0,b=1.0,x=1.0,y=-1.0,r=1.44])Node7[a=1.0,b=-1.0,x=0.0,y=-2.0,r=0.51])Node4[a=1.0,b=-1.0,x=-1.0,y=-1.0,r=0.6])Node3[a=-1.0,b=0.0,x=-2.0,y=0.0,r=0.71])Node1[a=-1.0,b=0.0,x=-1.0,y=0.0,r=1.45])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 64\n",
      "\n",
      "--- Generation 1/7002, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7002, Best fitness 0.72973 ---\n",
      "\n",
      "--- Generation 2001/7002, Best fitness 0.82143 ---\n",
      "\n",
      "--- Generation 3001/7002, Best fitness 0.82609 ---\n",
      "\n",
      "--- Generation 4001/7002, Best fitness 0.84058 ---\n",
      "\n",
      "--- Generation 5001/7002, Best fitness 0.84058 ---\n",
      "\n",
      "--- Generation 6001/7002, Best fitness 0.84058 ---\n",
      "\n",
      "--- Generation 7001/7002, Best fitness 0.84058 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 10 and generations = 7003\n",
      "target_tree: (((((((((Node56[a=-1.0,b=1.0,x=-7.0,y=-3.0,r=1.24])Node28[a=1.0,b=1.0,x=-6.0,y=-4.0,r=0.89])Node17[a=-1.0,b=1.0,x=-7.0,y=-5.0,r=1.16])Node15[a=-1.0,b=-1.0,x=-6.0,y=-6.0,r=1.42])Node11[a=-1.0,b=-1.0,x=-5.0,y=-5.0,r=1.37])Node8[a=-1.0,b=-1.0,x=-4.0,y=-4.0,r=1.34])Node5[a=-1.0,b=-1.0,x=-3.0,y=-3.0,r=1.06])Node3[a=-1.0,b=-1.0,x=-2.0,y=-2.0,r=0.84],(((((((((Node55[a=-1.0,b=0.0,x=-5.0,y=-8.0,r=0.89])Node45[a=1.0,b=-1.0,x=-4.0,y=-8.0,r=1.13],(Node54[a=-1.0,b=1.0,x=-7.0,y=-7.0,r=1.09])Node44[a=-1.0,b=-1.0,x=-6.0,y=-8.0,r=0.66])Node37[a=0.0,b=-1.0,x=-5.0,y=-7.0,r=0.81],Node36[a=-1.0,b=-1.0,x=-6.0,y=-7.0,r=1.22])Node27[a=-1.0,b=-1.0,x=-5.0,y=-6.0,r=1.3],(Node35[a=1.0,b=1.0,x=-2.0,y=-5.0,r=1.25],(Node53[a=0.0,b=-1.0,x=-2.0,y=-8.0,r=0.52])Node34[a=1.0,b=-1.0,x=-2.0,y=-7.0,r=1.28])Node26[a=1.0,b=-1.0,x=-3.0,y=-6.0,r=0.92])Node21[a=-1.0,b=-1.0,x=-4.0,y=-5.0,r=1.12])Node14[a=-1.0,b=0.0,x=-3.0,y=-4.0,r=1.18],(((((Node52[a=1.0,b=0.0,x=-2.0,y=-9.0,r=1.36],Node51[a=1.0,b=-1.0,x=-2.0,y=-10.0,r=1.44])Node43[a=0.0,b=-1.0,x=-3.0,y=-9.0,r=1.24],(Node50[a=0.0,b=-1.0,x=-4.0,y=-10.0,r=0.91])Node42[a=-1.0,b=-1.0,x=-4.0,y=-9.0,r=0.58])Node33[a=1.0,b=-1.0,x=-3.0,y=-8.0,r=0.88])Node25[a=0.0,b=-1.0,x=-4.0,y=-7.0,r=1.34],(((Node49[a=1.0,b=0.0,x=0.0,y=-6.0,r=1.36])Node41[a=1.0,b=0.0,x=-1.0,y=-6.0,r=0.64],(Node48[a=0.0,b=-1.0,x=-1.0,y=-8.0,r=1.03])Node40[a=1.0,b=-1.0,x=-1.0,y=-7.0,r=0.82])Node32[a=1.0,b=1.0,x=-2.0,y=-6.0,r=1.39])Node24[a=1.0,b=-1.0,x=-3.0,y=-7.0,r=0.56])Node20[a=-1.0,b=-1.0,x=-4.0,y=-6.0,r=0.94])Node13[a=-1.0,b=-1.0,x=-3.0,y=-5.0,r=0.85])Node10[a=-1.0,b=-1.0,x=-2.0,y=-4.0,r=1.43])Node7[a=-1.0,b=0.0,x=-1.0,y=-3.0,r=0.77],(((((((Node47[a=1.0,b=0.0,x=4.0,y=-4.0,r=0.99])Node31[a=1.0,b=-1.0,x=3.0,y=-4.0,r=1.36])Node23[a=1.0,b=1.0,x=2.0,y=-3.0,r=0.8],(((Node46[a=1.0,b=0.0,x=0.0,y=-5.0,r=1.13])Node39[a=0.0,b=-1.0,x=-1.0,y=-5.0,r=0.91])Node30[a=-1.0,b=0.0,x=-1.0,y=-4.0,r=0.81])Node22[a=-1.0,b=0.0,x=0.0,y=-4.0,r=1.16])Node19[a=0.0,b=-1.0,x=1.0,y=-4.0,r=0.71],((Node38[a=-1.0,b=1.0,x=2.0,y=-2.0,r=1.29])Node29[a=1.0,b=1.0,x=3.0,y=-3.0,r=0.79])Node18[a=1.0,b=-1.0,x=2.0,y=-4.0,r=0.76])Node16[a=0.0,b=-1.0,x=1.0,y=-3.0,r=1.46])Node12[a=1.0,b=-1.0,x=1.0,y=-2.0,r=0.52])Node9[a=1.0,b=1.0,x=0.0,y=-1.0,r=1.3])Node6[a=-1.0,b=1.0,x=-1.0,y=-2.0,r=0.91])Node4[a=0.0,b=-1.0,x=0.0,y=-3.0,r=1.09])Node2[a=1.0,b=-1.0,x=0.0,y=-2.0,r=1.31])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=1.44])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 57\n",
      "\n",
      "--- Generation 1/7003, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7003, Best fitness 0.71338 ---\n",
      "\n",
      "--- Generation 2001/7003, Best fitness 0.71795 ---\n",
      "\n",
      "--- Generation 3001/7003, Best fitness 0.71975 ---\n",
      "\n",
      "--- Generation 4001/7003, Best fitness 0.72152 ---\n",
      "\n",
      "--- Generation 5001/7003, Best fitness 0.72152 ---\n",
      "\n",
      "--- Generation 6001/7003, Best fitness 0.72611 ---\n",
      "\n",
      "--- Generation 7001/7003, Best fitness 0.72611 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 10 and generations = 7004\n",
      "target_tree: (((Node8[a=1.0,b=1.0,x=-1.0,y=1.0,r=0.55])Node5[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.41],(((Node19[a=1.0,b=-1.0,x=-2.0,y=-3.0,r=1.14],Node18[a=-1.0,b=1.0,x=-4.0,y=-1.0,r=0.71])Node14[a=0.0,b=-1.0,x=-3.0,y=-2.0,r=1.48],(Node17[a=1.0,b=0.0,x=-1.0,y=-2.0,r=0.87],Node16[a=-1.0,b=-1.0,x=-3.0,y=-3.0,r=1.0])Node13[a=1.0,b=-1.0,x=-2.0,y=-2.0,r=0.85])Node10[a=-1.0,b=0.0,x=-3.0,y=-1.0,r=0.65])Node4[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=1.02])Node2[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.71],(((Node15[a=1.0,b=0.0,x=2.0,y=1.0,r=0.79])Node7[a=0.0,b=1.0,x=1.0,y=1.0,r=0.7],((Node12[a=1.0,b=0.0,x=4.0,y=-1.0,r=0.63],Node11[a=-1.0,b=-1.0,x=2.0,y=-2.0,r=1.11])Node9[a=1.0,b=0.0,x=3.0,y=-1.0,r=1.15])Node6[a=1.0,b=-1.0,x=2.0,y=-1.0,r=1.23])Node3[a=1.0,b=1.0,x=1.0,y=0.0,r=0.64])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=1.22])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 20\n",
      "\n",
      "--- Generation 1/7004, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7004, Best fitness 0.85 ---\n",
      "\n",
      "--- Generation 2001/7004, Best fitness 0.88333 ---\n",
      "\n",
      "--- Generation 3001/7004, Best fitness 0.96429 ---\n",
      "\n",
      "--- Generation 4001/7004, Best fitness 0.96429 ---\n",
      "\n",
      "--- Generation 5001/7004, Best fitness 0.96429 ---\n",
      "\n",
      "--- Generation 6001/7004, Best fitness 0.96429 ---\n",
      "\n",
      "--- Generation 7001/7004, Best fitness 0.96429 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 10 and generations = 7005\n",
      "target_tree: (((((Node39[a=0.0,b=1.0,x=-2.0,y=3.0,r=0.72])Node20[a=0.0,b=1.0,x=-2.0,y=2.0,r=1.32])Node8[a=-1.0,b=1.0,x=-2.0,y=1.0,r=1.01])Node4[a=-1.0,b=-1.0,x=-1.0,y=0.0,r=1.33],(((((Node38[a=0.0,b=-1.0,x=2.0,y=-1.0,r=0.81])Node26[a=1.0,b=-1.0,x=2.0,y=0.0,r=1.46],(Node37[a=1.0,b=-1.0,x=3.0,y=0.0,r=0.51],Node36[a=-1.0,b=-1.0,x=1.0,y=0.0,r=1.32])Node25[a=1.0,b=0.0,x=2.0,y=1.0,r=1.16])Node19[a=1.0,b=-1.0,x=1.0,y=1.0,r=1.09],((Node35[a=0.0,b=1.0,x=-2.0,y=5.0,r=0.52],Node34[a=-1.0,b=-1.0,x=-3.0,y=3.0,r=0.76])Node24[a=-1.0,b=1.0,x=-2.0,y=4.0,r=0.67])Node18[a=-1.0,b=1.0,x=-1.0,y=3.0,r=1.28])Node12[a=1.0,b=1.0,x=0.0,y=2.0,r=1.22])Node7[a=0.0,b=-1.0,x=-1.0,y=1.0,r=0.57],(((Node33[a=1.0,b=1.0,x=3.0,y=5.0,r=1.12],Node32[a=0.0,b=1.0,x=2.0,y=5.0,r=1.31])Node17[a=1.0,b=0.0,x=2.0,y=4.0,r=0.88],Node16[a=-1.0,b=1.0,x=0.0,y=5.0,r=1.09])Node11[a=1.0,b=1.0,x=1.0,y=4.0,r=0.72],((Node23[a=1.0,b=0.0,x=2.0,y=3.0,r=1.25],(Node31[a=-1.0,b=0.0,x=-1.0,y=4.0,r=0.8],Node30[a=-1.0,b=1.0,x=-1.0,y=5.0,r=1.36])Node22[a=-1.0,b=1.0,x=0.0,y=4.0,r=1.48])Node15[a=0.0,b=1.0,x=1.0,y=3.0,r=0.97],((Node29[a=1.0,b=-1.0,x=4.0,y=1.0,r=0.56])Node21[a=1.0,b=0.0,x=3.0,y=2.0,r=1.49])Node14[a=1.0,b=0.0,x=2.0,y=2.0,r=1.34])Node10[a=1.0,b=-1.0,x=1.0,y=2.0,r=0.52])Node6[a=1.0,b=1.0,x=0.0,y=3.0,r=1.46])Node3[a=-1.0,b=1.0,x=-1.0,y=2.0,r=0.98])Node2[a=0.0,b=1.0,x=0.0,y=1.0,r=0.52],((((Node28[a=1.0,b=-1.0,x=-2.0,y=-4.0,r=1.31],Node27[a=-1.0,b=0.0,x=-4.0,y=-3.0,r=1.28])Node13[a=0.0,b=-1.0,x=-3.0,y=-3.0,r=1.26])Node9[a=-1.0,b=0.0,x=-3.0,y=-2.0,r=0.81])Node5[a=-1.0,b=-1.0,x=-2.0,y=-2.0,r=0.94])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.72])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 40\n",
      "\n",
      "--- Generation 1/7005, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7005, Best fitness 0.74783 ---\n",
      "\n",
      "--- Generation 2001/7005, Best fitness 0.77982 ---\n",
      "\n",
      "--- Generation 3001/7005, Best fitness 0.80952 ---\n",
      "\n",
      "--- Generation 4001/7005, Best fitness 0.8381 ---\n",
      "\n",
      "--- Generation 5001/7005, Best fitness 0.86275 ---\n",
      "\n",
      "--- Generation 6001/7005, Best fitness 0.86275 ---\n",
      "\n",
      "--- Generation 7001/7005, Best fitness 0.86275 ---\n",
      "draw_all_historiesk4(fitness_histories, lengths_of_target_sequence)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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6m4EvP32m6pJsaTwt0SuV2QcyZYtH0ViUpKmfc9s/bYs05TMykjGWBswoB9mzPhBBVJSi//ii8+bXZ5k7Da8IZDZMdSyDeaEhITg8Y4dEFiwoPre2bBho2qFJmNsfvrZeJs+E7rcDZI8S5JISACXkpKsEk1JkGPpxkttG9aV2XG2ZZscWeZ2CbiIKPfQBVz27A9BRESU3QyDozNnz+baZRJZw6o+XERERERERKQdAy4iIiIiIiIHsSppBhHlTtLxXvplERER5WW6sR2ln2puXiaRNdiHi4iIiIiIyEHYpJCIiIiIiMhBGHARERERERE5CPtwUb4kI4TLoMhERESUd8gYS9YOek2U2zHgonwZbB3YvzenN4OIiIhsUKdufQZdlK8w4KJ8R1ezJV/YjqjlktHLDxw4CGfF/Xfu4y94Djj3OeDsx184exk4av+ldktumLKFCuU3DLgo35Iv7MjISLsvNyYmxiHLzSu4/859/AXPAec+B5z9+AtnLwNn338iazFpBhERERERkYMw4CIiIiIiInIQBlxEREREREQOwoCLiIiIiIjIQRhwEREREREROQgDLiIiIiIiIgdhwEVEREREROQgDLiIiIiIiIgchAEXERERERGRgzDgIiIiIiIichAGXERERERERA7CgIuIiIiIiMhB3B21YCIiyiauLvAMKQEXL49sWV10CV94VS8DZ8X9d+7jL3gO+MKtiD+S7kbk9KEgyhMYcBER5XHetSsioF2dbFvfXQAFHy4BZ8X9d+7jL3gOAF53SyP67omcPhREeQIDLiKiPM7N31v9TQqPRuI9x99xDggIQHh4OJwV99+5j7/gORCAsLConD4MRHkGAy4iorzOJfVP7PHLiNxyyOGrq1S/Hi7t3Qdnxf137uMveA7Uw6Xjl3P6MBDlGUyaQUSU17mkRVwpKTm9JURERJQOAy4ioryOARcREVGuxYCLiCiPc0kLuFjBRURElPsw4CIiyuvSWhQCbFJIRESU2zDgIiLK69ikkIiIKNdiwEVElF8CrmTWcBEREeU2TAtPWeo30qNHd9StUwdh4eFYvmw5zpw9a/E9BQsWRO/evVCubFncun0bS5YswfXrN/SvlyhRAm+8PjrD+76fPh1nz57j0SIy+WFM+8t4i4iIKNdhDRfZbOYPM/DWm2/g5q1bKF06CL//vgENGzY0O3/58iH455+taNWyJS5cvIjyISH4Y9MmVK1a1SggGzhwAE6dPo39+/frHxERkTxSRObok2Yw4iIiIsptWMNFNmnVqhWeeOJxPPpYG5w6dSr1ZHJzx8cffYAOHZ8w+Z6RI1/D5UuX8dTgp/XTJgD4YNxYDBg4yGje5ctX4Pbt2zw6RFZkKWSaQiIiotyHNVxkk/bt2uLosWP6YEssX7ECjzzyCEqWLGnyPWXLlMHx48eNpskymjdvBh8fH6Ppr7w8Ah9+OA6DBz8FPz8/HiUiS9ikkIiIKNdiwEU2CQkJwZXLV4ymXbp0Wf+aKUePHkOTJo3h7e2tvyv/2KOPws3NDeXKldXPd+HCRURGReHmjZvo368ftv69RTVHNMfT01MFZbqHr68vjyo5GUZcREREuRWbFJJNChQogHv37hlNi4qK1L9myjcTJqJho4b4e8tf2LNnr+q7df36daP3XL16FW3atEVMbKx6Pn3GD1i1cgU++GAcnn56qMnlSm3Y6NGjMkyvU6c2YmJi7H6EK1QoD2fG/c99x/9u0SKIBlCmdDD86/s7fH08B3LfOZCdnP34C2cvA0ftv+6GLFF+w4CLbBIZGYHAgoFG0yThhe41UyRA69DhcTRo0EAl2Zj144/qPW3atMa9e6Fp7zVOjpGcnIy1a9dixMsjzG7Ld1OmYsYPM/XPpYbrwP69OHDgYIbl2cvevfvgzLj/2X/83YsFwjOkhMnXCrgUggeAy5cvI3rv6WzZHp4D/A5wdvwM2P8zwC4ElF8x4CKbnDhxEt26dTWaVrVKVSQlJeH06TNm3ycB1K5du/TPx455X6WFv3jxotn3SO2Xqy4pgAnx8fHqQZSfBfZoCvdClvszpiQkZtv2EBERkTbsw0U2WbV6NYKDg9G2bRv1XPphSYKLzVu2ICwsTE0LCiqFr7/6EhUrVlDPixQpgipVquiXUblyZQwaNBDTpk3TT2vWrKlRH6yiRYuqNPGbN2/hkSKn5urtqf7GnrqKmCMXMjyi9pxC7EnjfpVERESU81jDRTaRBBhffvU1vp82Ff/8sx3lypWDj483/tf3Nf08hQoVUsHS0mXL1KDFiYmJ+Oabr3A/9L6qkWrRojkWLFiIH2fP0b9HgrING9bh/PnziI+LR9OmTXDo0CGMGTuOR4qcW1otb+Tm/5B0Pyqnt4aIiIg0YsBFNvv22+9U/6patWohPDxcBV6xackuxNWr1/D662+oYEtIzVePHr3QrGlT1Xdr3Acf4soV4zvyq1atxl9/bUb9+vXh5+eLbyZMwPHjJ3iUiHQ4tjEREVGewoCLskSCKV1Ald79+/fx8y+/Gk2TWq6/t261uExJdLFlC5sQEpka3DglhREXERFRXsI+XEREeYEucQwDLiIiojyFARcRUV5gPlEnERER5WIMuIiI8gLWcBEREeVJDLiIiPICBlxERER5EgMuIqI8wMVVlzQjp7eEiIiIrMGAi4goL2HERURElKcw4CIiyksJMxhwERER5SkMuIiI8kr/LcEmhURERHkKAy4iojwVcDHiIiIiyksYcBER5XZsUkhERJRnMeAiIspDNVys4CIiIspb3HN6A4iI8oPAro3hVTnI8StixEVERJSnMOAiIrKDAtXLOLwcE27eB5KSHb4eIiIish8GXEREduxjdXf270iOjXdImSZHxjpkuUREROQ4DLiIiOwYcSVFRCMlNoFlSkRERAqTZhAR2ROzthMREZEBBlxERPZM205ERERkgAEXERERERGRgzDgIiKy4zhZTNtOREREhhhwEREREREROQgDLiIiIiIiIgdhwEVElFVMmkFERERmMOAiIsoy9uEiIiIi0xhwERHZEYfhIiIiIkMMuIiI7NmkkBEXERERGWDARUSURezCRUREROYw4CIisuc4XKziIiIiIgMMuIiI7IlNComIiMgAAy4iIiIiIiIHYcBFRERERETkIAy4iIjs2YcrhW0KiYiI6AEGXERERERERA7CgIuIyJ5YwUVEREQGGHAREWUVB+IiIiIiMxhwERFlGcfhIiIiItPczUwnypSrqyt69+6FOnXqIDwsDEuXLcepU6csvqdwoULo27cvypYri9u3bmHxb0tw9erVLC+XKNdgk0IiIiIywBoustmPs2Zi5Guv4vKlSyhatCg2bliHJk0am52/QoXy2LZtKxo3boRTJ0+hVKlS2PT7BlSvXi1LyyXKcWxSSERERGawhots8thjj6JDh/Zo2fJRnDl7Vk3z8PTAhx+MQ/sOj5t8z8jXXsOFCxcwZOgwo9qsD8aNRb/+A21eLhERERFRbsUaLrJJ2zZtcPToUX1QJFasWImHH34YpUqVNPme4OBgnDx50mja8RMn0LRpU/j6+tq8XKJcNQ4XERERkQEGXGSTkJAQXL58xWia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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Execution time: 0 hours, 18 minutes, 46 seconds\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Observations from three experiments.** As usually, the relations are entangled at the beginning, thus, we pay attention only to the final behaviour.\n",
    ">\n",
    ">  First Experiment:\n",
    ">>  1. The problem with 64 nodes and a population size of 25 was easier for Evolution than another with 57 nodes and a population size of 50. This is contrary to our expectations that predcits the cost of a problem in proportion to the number of nodes and in inverse relation to availbale resources.\n",
    ">\n",
    "> Second Experiment:\n",
    ">> 1. The number of nodes is not a good indicator of complexity because a problem with 8 nodes was easier than others with 11, 16, and 70.\n",
    ">> 2. The fitness rises by jumps with periods of ecstasy that are the larger the more advanced is the process.\n",
    ">\n",
    "> Third Experiment:\n",
    ">> 1. The results are incompatible with our expectations and criteria. According to our presuppositions, the easiest case is that with the minimum number of nodes, 23, which is solved by the most powerful team, a population size of 200. In consequence, the corresponding fitness curve must be the upper one because it is solved straightforwardly by Evolution. But, the graph shows that it is the lowest one.\n",
    ">>\n",
    ">> 2. The fitness advances by jumps and the periods of ecstasy are the larger the advanced is the Evolutionary Process. A possible explanation is that the fitness grows by making changes. Tiny productive changes are burnt at first and then, the size of changes must grow and that is why they become scarce.  This can be explained also by pleiotropy.\n",
    "\n",
    "\n",
    "\n",
    "It is clear that we lack a correct description of complexity for morpho-trees. If we had one, results would show that Evolution is smashed by complexity. We have failed. But, before throwing our presuppositions to the garbage, let us make a last effort that reflects the idea that there must be hidden variables that mesh everything.\n",
    "\n",
    "\n",
    "**Exercise.** Previous observations have induced us to believe that morpho-trees fall into two different complexity evolutionary classes: easy and difficult. Easy trees are globular. This is possibly due to the immense number of trees that can approximately generate the same frontier for the case of globular trees. Most generated trees are globular. On the other hand, complex trees have a rich distribution of holes and arms. To test this hypothesis, we need in first place, a procedure to create trees with a rich structure. Make a try.\n",
    ">\n",
    "> *Answer.* The following program creates trees with the following procedure: an ordinary target tree, presumably globular, is trimmed, i.e., subject to a number of branch deletions.  Resultant trees must have a rich structure.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "# Program morpho_trimmed_tree_generator_and_drawer.py\n",
    "# This program generates a globular morpho tree,\n",
    "# trims it, by deleting at random a good number of branches, and draws it.\n",
    "\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "#from datetime import datetime, timedelta\n",
    "\n",
    "# trace memory allocation \n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc \n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False \n",
    "recombination_of_leaves = False\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start() \n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 10,\n",
    "  'max_number_children': 2,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "   #'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 70,\n",
    "  'generations': 100,\n",
    "  'max_depth': target_tree_params['max_depth'],\n",
    "  'max_number_children': target_tree_params['max_number_children'],\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001, \n",
    "  'crossover_rate': 0.001  \n",
    "}\n",
    "\n",
    " \n",
    "def print_parameters15(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    #print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"INITIAL TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"INITIAL GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=14.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence15(original_str, start_idx, end_idx, new_subsequence):\n",
    "    \"\"\" Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google\"\"\"\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length15(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups15(newick_string):\n",
    "    \"\"\"Al substrings that encodes for the info of a node, step from father, center and radius are detected.\"\"\"\n",
    "\n",
    "    #print(\"detect_all_groups13(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    \"\"\"\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        \"\"\"\n",
    "    return groups\n",
    "\n",
    "def count_groups15(newick_string):\n",
    "    \"\"\"The number of groups is counted.\"\"\"\n",
    "    groups = detect_all_groups15(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info15(group):\n",
    "  \"\"\"The info of each group is extracted by tokenizers from the string.\"\"\"\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos15(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups15(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info15(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates15(cell):\n",
    "  \"\"\"Immediate neighboring coordinates of a cell are generated\"\"\"\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "def find_father_center15(newick_string, j):\n",
    "  \"\"\" Finds the address of the father of a node at j\"\"\"\n",
    "  #print(\"find_father_center13(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups15(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info15(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator15(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  \"\"\"For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      \"\"\"\n",
    "  #print(\"node_info_generator13(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates15(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children15(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  \"\"\" Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n \"\"\"\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator15(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator15(max_depth, max_numb_children, max_node_radius):\n",
    "  \"\"\" A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.\"\"\"\n",
    "  #print(\"complete_tree_generator13(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = max_depth - random.randint(0,5) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion of children. \n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center15(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children15(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence15(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "\n",
    "def find_branch15(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_find_all_groups15(newick_string):\n",
    "  \"\"\" All groups are found and one is chosen at random and returned\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "def deletion_of_branch15(newick_string ):\n",
    "  group, start =  newick_find_all_groups15(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch15(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "# =================================================================================\n",
    "# ==== Drawer ===\n",
    "# =================================================================================\n",
    "\n",
    "def get_neighboring_coordinates15(cell):\n",
    "  '''Immediate neighboring coordinates of a cell are generated'''\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    " \n",
    "\n",
    "\n",
    "def detect_all_groups15(newick_string):\n",
    "    '''Al substrings that encodes for the info of a node, step from father, center and radius are detected.'''\n",
    "\n",
    "    #print(\"detect_all_groups11b(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    '''\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        '''\n",
    "    return groups\n",
    "\n",
    "def extract_info11b(group):\n",
    "  '''The info of each group is extracted by tokenizers from the string.'''\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos15(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups15(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info15(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "def find_father_center15(newick_string, j):\n",
    "  ''' Finds the address of the father of a node at j'''\n",
    "  #print(\"find_father_center11(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups15(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info15(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def get_illuminated_area15(x,y,r):\n",
    "    '''\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    '''\n",
    "    #print(\"get_illuminated_area11\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick4(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles15(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves_newick15(newick_string):\n",
    "    '''Detect leaves in a Newick string.'''\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups15(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father15(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    '''Draw lines connecting leaves to fathers'''\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves_newick15(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info15(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=15],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups15(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info15(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    groups = detect_all_groups15(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")    \n",
    "     \n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links15(newick_string, ax,   diff_color='red' ):\n",
    "    '''Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       '''\n",
    "\n",
    "    #print(\"draw_tree_links11\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups15(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links11\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father15(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups15(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info15(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick15(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos15(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 15))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles15(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "     \n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area15(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick4(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links15(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    # Example Newick string\n",
    "    # newick_string = \"((((((()Node63[a=1.0,b=-1.0,x=5.0,y=-3.0,r=1.26])Node52[a=1.0,b=-1.0,x=4.0,y=-2.0,r=0.7])Node21[a=1.0,b=1.0,x=3.0,y=-1.0,r=1.9613197090647045],((()Node219[a=0.0,b=1.0,x=-2.0,y=3.0,r=1.06])((((Node156[a=-1.0,b=-1.0,x=-2.0,y=2.0,r=0.71])Node125[a=0.0,b=1.0,x=-1.0,y=3.0,r=1.37])Node103[a=-1.0,b=1.0,x=-1.0,y=2.0,r=1.36],(((Node198[a=-1.0,b=1.0,x=-4.0,y=1.0,r=0.75])Node155[a=-1.0,b=0.0,x=-3.0,y=0.0,r=0.58])Node124[a=-1.0,b=-1.0,x=-2.0,y=0.0,r=1.6749306080259698],((((()Node913[a=-1.0,b=0.0,x=-4.0,y=3.0,r=0.59]))Node698[a=0.0,b=1.0,x=-3.0,y=3.0,r=0.84])()Node600[a=-1.0,b=1.0,x=-3.0,y=2.0,r=1.25])()Node123[a=0.0,b=-1.0,x=-1.0,y=0.0,r=1.33])Node102[a=-1.0,b=0.0,x=-1.0,y=1.0,r=1.33])Node51[a=-1.0,b=1.0,x=0.0,y=1.0,r=0.54],(((()Node122[a=-1.0,b=0.0,x=0.0,y=3.0,r=1.17])Node81[a=-1.0,b=1.0,x=1.0,y=3.0,r=0.85])Node62[a=0.0,b=1.0,x=2.0,y=2.0,r=1.07],(((()Node153[a=-1.0,b=1.0,x=3.0,y=5.0,r=0.515683679559608],Node152[a=0.0,b=-1.0,x=4.0,y=3.0,r=1.03])Node101[a=1.0,b=1.0,x=4.0,y=4.0,r=0.5748403340449614])Node80[a=0.0,b=1.0,x=3.0,y=3.0,r=1.22],()Node79[a=1.0,b=0.0,x=4.0,y=2.0,r=1.36])Node61[a=1.0,b=1.0,x=3.0,y=2.0,r=0.5295884877970901])Node50[a=1.0,b=1.0,x=2.0,y=1.0,r=1.21])Node29[a=0.0,b=1.0,x=1.0,y=0.0,r=1.43])Node20[a=-1.0,b=1.0,x=1.0,y=-1.0,r=1.1])Node8[a=1.0,b=0.0,x=2.0,y=-2.0,r=0.64])Node3[a=1.0,b=-1.0,x=1.0,y=-2.0,r=1.37],((((((()Node100[a=0.0,b=1.0,x=-2.0,y=-2.0,r=1.05],((Node150[a=0.0,b=1.0,x=-4.0,y=-1.0,r=0.7334891191596699],(Node193[a=-1.0,b=1.0,x=-6.0,y=0.0,r=0.5820889162363478])Node149[a=-1.0,b=1.0,x=-5.0,y=-1.0,r=0.81])Node120[a=-1.0,b=0.0,x=-4.0,y=-2.0,r=1.36],()Node119[a=0.0,b=1.0,x=-3.0,y=-1.0,r=1.16])Node99[a=-1.0,b=1.0,x=-3.0,y=-2.0,r=1.47])Node49[a=-1.0,b=1.0,x=-2.0,y=-3.0,r=1.26],()((()Node118[a=0.0,b=-1.0,x=-3.0,y=-4.0,r=1.0],((()Node367[a=-1.0,b=-1.0,x=-7.0,y=-3.0,r=1.8764650499221425])()Node147[a=-1.0,b=0.0,x=-5.0,y=-3.0,r=0.82],Node146[a=-1.0,b=1.0,x=-5.0,y=-2.0,r=1.13])Node117[a=-1.0,b=0.0,x=-4.0,y=-3.0,r=1.13])Node78[a=-1.0,b=1.0,x=-3.0,y=-3.0,r=1.0329473493338008])Node48[a=-1.0,b=0.0,x=-2.0,y=-4.0,r=0.76])Node28[a=-1.0,b=0.0,x=-1.0,y=-4.0,r=1.46])Node14[a=1.0,b=-1.0,x=0.0,y=-4.0,r=1.06])Node7[a=0.0,b=-1.0,x=-1.0,y=-3.0,r=0.89])Node5[a=0.0,b=-1.0,x=-1.0,y=-2.0,r=0.71],(((((((()Node47[a=-1.0,b=1.0,x=4.0,y=-4.0,r=0.6058398421466735],((()Node441[a=0.0,b=-1.0,x=8.0,y=0.0,r=1.2970045651723827])((((()Node145[a=1.0,b=1.0,x=8.0,y=1.0,r=0.52],()Node144[a=0.0,b=1.0,x=7.0,y=1.0,r=0.96])Node116[a=1.0,b=1.0,x=7.0,y=0.0,r=1.235712154728331],()Node115[a=1.0,b=0.0,x=7.0,y=-1.0,r=0.95])Node98[a=1.0,b=1.0,x=6.0,y=-1.0,r=1.37],(()Node114[a=1.0,b=0.0,x=7.0,y=-2.0,r=0.62])Node97[a=1.0,b=0.0,x=6.0,y=-2.0,r=1.04])Node77[a=1.0,b=1.0,x=5.0,y=-2.0,r=1.01])Node59[a=-1.0,b=1.0,x=4.0,y=-3.0,r=0.62],(((Node185[a=1.0,b=0.0,x=9.0,y=-5.0,r=1.25],()Node476[a=1.0,b=-1.0,x=9.0,y=-6.0,r=0.87])Node142[a=1.0,b=-1.0,x=8.0,y=-5.0,r=1.7146586553405185])Node96[a=1.0,b=1.0,x=7.0,y=-4.0,r=1.49],((Node183[a=1.0,b=-1.0,x=8.0,y=-6.0,r=0.54])Node141[a=1.0,b=-1.0,x=7.0,y=-5.0,r=0.5185357042371559],(()Node303[a=1.0,b=-1.0,x=9.0,y=-4.0,r=0.69])(Node181[a=1.0,b=0.0,x=8.0,y=-3.0,r=1.16])Node140[a=1.0,b=1.0,x=7.0,y=-3.0,r=1.44])Node95[a=0.0,b=1.0,x=6.0,y=-4.0,r=1.1])Node58[a=1.0,b=-1.0,x=6.0,y=-5.0,r=0.72])Node46[a=0.0,b=1.0,x=5.0,y=-4.0,r=0.79])Node36[a=1.0,b=0.0,x=5.0,y=-5.0,r=1.02])Node27[a=1.0,b=-1.0,x=4.0,y=-5.0,r=0.71])Node19[a=1.0,b=0.0,x=3.0,y=-4.0,r=0.83],(Node57[a=0.0,b=-1.0,x=3.0,y=-6.0,r=0.83])Node18[a=1.0,b=-1.0,x=3.0,y=-5.0,r=1.36])Node13[a=0.0,b=-1.0,x=2.0,y=-4.0,r=1.9563373261553025],((((((()Node94[a=1.0,b=1.0,x=2.0,y=3.0,r=1.5714886013535794])Node76[a=1.0,b=0.0,x=1.0,y=2.0,r=1.7607046194653915])Node56[a=-1.0,b=1.0,x=0.0,y=2.0,r=1.43])Node45[a=-1.0,b=1.0,x=1.0,y=1.0,r=0.71])Node26[a=0.0,b=1.0,x=2.0,y=0.0,r=0.81],(((()Node55[a=1.0,b=0.0,x=5.0,y=-1.0,r=0.68])Node44[a=0.0,b=-1.0,x=4.0,y=-1.0,r=1.39])Node35[a=1.0,b=0.0,x=4.0,y=0.0,r=1.5450652146942652])Node25[a=1.0,b=1.0,x=3.0,y=0.0,r=0.8])Node17[a=-1.0,b=1.0,x=2.0,y=-1.0,r=0.84])Node12[a=1.0,b=1.0,x=3.0,y=-2.0,r=0.59])Node10[a=1.0,b=0.0,x=2.0,y=-3.0,r=1.31],((((((()Node74[a=0.0,b=1.0,x=-3.0,y=-5.0,r=0.97],(((()Node139[a=0.0,b=1.0,x=-5.0,y=-4.0,r=0.85])Node113[a=0.0,b=1.0,x=-5.0,y=-5.0,r=1.29],(Node138[a=-1.0,b=1.0,x=-7.0,y=-4.0,r=1.09])Node112[a=-1.0,b=1.0,x=-6.0,y=-5.0,r=0.69])Node92[a=-1.0,b=0.0,x=-5.0,y=-6.0,r=1.9891193529247717])Node73[a=-1.0,b=0.0,x=-4.0,y=-6.0,r=0.9])Node43[a=-1.0,b=-1.0,x=-3.0,y=-6.0,r=0.93])Node34[a=-1.0,b=0.0,x=-2.0,y=-5.0,r=1.7667232954270577],(()Node707[a=0.0,b=-1.0,x=-8.0,y=-11.0,r=1.2418125160543307])((((((Node176[a=-1.0,b=1.0,x=-8.0,y=-8.0,r=0.73])Node137[a=-1.0,b=-1.0,x=-7.0,y=-9.0,r=1.3],Node136[a=-1.0,b=0.0,x=-7.0,y=-8.0,r=0.59])Node111[a=-1.0,b=-1.0,x=-6.0,y=-8.0,r=0.53],(Node175[a=-1.0,b=1.0,x=-7.0,y=-6.0,r=1.8710079054235957])Node110[a=-1.0,b=0.0,x=-6.0,y=-7.0,r=0.81])Node91[a=-1.0,b=0.0,x=-5.0,y=-7.0,r=0.64])Node72[a=-1.0,b=0.0,x=-4.0,y=-7.0,r=1.35],(Node90[a=-1.0,b=0.0,x=-5.0,y=-8.0,r=1.48],(()Node109[a=-1.0,b=0.0,x=-6.0,y=-9.0,r=1.8236264836746388])Node89[a=-1.0,b=-1.0,x=-5.0,y=-9.0,r=0.94])Node71[a=-1.0,b=-1.0,x=-4.0,y=-8.0,r=0.91])Node42[a=-1.0,b=-1.0,x=-3.0,y=-7.0,r=0.58],(()Node46[a=-1.0,b=-1.0,x=-2.0,y=-7.0,r=0.93])()Node41[a=1.0,b=0.0,x=-1.0,y=-6.0,r=1.39])Node33[a=-1.0,b=-1.0,x=-2.0,y=-6.0,r=1.12])Node24[a=-1.0,b=0.0,x=-1.0,y=-5.0,r=1.47])Node16[a=-1.0,b=-1.0,x=0.0,y=-5.0,r=0.67],((Node32[a=0.0,b=-1.0,x=1.0,y=-6.0,r=1.9638918299741654],(((()Node841[a=-1.0,b=-1.0,x=-7.0,y=-11.0,r=0.58])((((()Node135[a=-1.0,b=-1.0,x=-5.0,y=-11.0,r=0.85])Node108[a=0.0,b=-1.0,x=-4.0,y=-10.0,r=1.0],(()Node630[a=-1.0,b=-1.0,x=-6.0,y=-13.0,r=0.77])(()Node134[a=-1.0,b=-1.0,x=-6.0,y=-11.0,r=1.0])Node107[a=-1.0,b=-1.0,x=-5.0,y=-10.0,r=1.14])Node88[a=-1.0,b=-1.0,x=-4.0,y=-9.0,r=0.65])Node69[a=-1.0,b=0.0,x=-3.0,y=-8.0,r=0.87],(((Node170[a=1.0,b=-1.0,x=-3.0,y=-12.0,r=1.9512384698512715],(()Node686[a=-1.0,b=-1.0,x=-4.0,y=-12.0,r=1.5])Node169[a=1.0,b=0.0,x=-3.0,y=-11.0,r=0.91])Node133[a=-1.0,b=-1.0,x=-4.0,y=-11.0,r=1.33])Node87[a=-1.0,b=-1.0,x=-3.0,y=-10.0,r=1.08],Node86[a=-1.0,b=0.0,x=-3.0,y=-9.0,r=1.33])Node68[a=0.0,b=-1.0,x=-2.0,y=-9.0,r=0.99])Node54[a=-1.0,b=-1.0,x=-2.0,y=-8.0,r=0.72])Node40[a=-1.0,b=-1.0,x=-1.0,y=-7.0,r=1.45],(()Node951[a=-1.0,b=-1.0,x=0.0,y=-11.0,r=1.7392926307253513])((()Node132[a=1.0,b=-1.0,x=2.0,y=-9.0,r=1.25],()Node131[a=1.0,b=0.0,x=2.0,y=-8.0,r=1.45])Node67[a=1.0,b=-1.0,x=1.0,y=-8.0,r=1.41],((()Node193[a=-1.0,b=0.0,x=-4.0,y=-14.0,r=1.22])()Node370[a=-1.0,b=-1.0,x=-3.0,y=-14.0,r=0.94])((()Node139[a=0.0,b=-1.0,x=-2.0,y=-13.0,r=1.33])(((Node166[a=0.0,b=-1.0,x=-2.0,y=-12.0,r=0.65],((()Node192[a=-1.0,b=0.0,x=0.0,y=-14.0,r=0.88])((()Node527[a=1.0,b=-1.0,x=1.0,y=-14.0,r=0.85])((()Node591[a=1.0,b=-1.0,x=0.0,y=-13.0,r=1.04])()Node169[a=0.0,b=-1.0,x=-1.0,y=-12.0,r=1.0099492850296317]))Node421[a=1.0,b=-1.0,x=-1.0,y=-11.0,r=1.29])Node165[a=0.0,b=1.0,x=-2.0,y=-10.0,r=1.23])Node130[a=-1.0,b=-1.0,x=-2.0,y=-11.0,r=1.45])Node106[a=0.0,b=-1.0,x=-1.0,y=-10.0,r=1.2592804255064793],Node105[a=1.0,b=0.0,x=0.0,y=-9.0,r=1.23])Node85[a=0.0,b=-1.0,x=-1.0,y=-9.0,r=1.49])Node66[a=-1.0,b=-1.0,x=-1.0,y=-8.0,r=1.38])Node39[a=0.0,b=-1.0,x=0.0,y=-7.0,r=1.13])Node31[a=-1.0,b=-1.0,x=0.0,y=-6.0,r=1.07])Node23[a=-1.0,b=0.0,x=1.0,y=-5.0,r=0.73],(((()Node952[a=1.0,b=-1.0,x=2.0,y=-10.0,r=1.18])(()Node84[a=-1.0,b=-1.0,x=0.0,y=-8.0,r=0.91])Node38[a=-1.0,b=0.0,x=1.0,y=-7.0,r=1.38],(((Node129[a=-1.0,b=-1.0,x=3.0,y=-8.0,r=1.27],()Node128[a=0.0,b=-1.0,x=4.0,y=-8.0,r=1.35])Node65[a=0.0,b=-1.0,x=4.0,y=-7.0,r=0.98],((((Node162[a=1.0,b=0.0,x=8.0,y=-7.0,r=1.2685669416870335],()Node283[a=1.0,b=-1.0,x=8.0,y=-8.0,r=0.9586343616711437])Node127[a=1.0,b=-1.0,x=7.0,y=-7.0,r=0.81],(()Node189[a=0.0,b=-1.0,x=6.0,y=-12.0,r=0.94])((()Node78[a=-1.0,b=-1.0,x=6.0,y=-11.0,r=0.66])((()Node537[a=0.0,b=-1.0,x=7.0,y=-11.0,r=1.22])()Node887[a=0.0,b=-1.0,x=7.0,y=-10.0,r=0.94])()Node473[a=0.0,b=-1.0,x=7.0,y=-9.0,r=0.81])()Node126[a=0.0,b=-1.0,x=6.0,y=-7.0,r=1.19],()Node93[a=1.0,b=0.0,x=7.0,y=-6.0,r=0.74])Node104[a=1.0,b=0.0,x=6.0,y=-6.0,r=1.4108167024543916])Node83[a=0.0,b=1.0,x=5.0,y=-6.0,r=1.32],((((()Node745[a=-1.0,b=-1.0,x=3.0,y=-14.0,r=0.62]))Node919[a=-1.0,b=-1.0,x=4.0,y=-13.0,r=1.15])()Node772[a=0.0,b=-1.0,x=5.0,y=-12.0,r=1.28])(()Node798[a=1.0,b=0.0,x=5.0,y=-11.0,r=0.8])(((()Node151[a=-1.0,b=-1.0,x=4.0,y=-11.0,r=0.96]))Node15[a=0.0,b=-1.0,x=5.0,y=-10.0,r=1.03])()Node82[a=1.0,b=-1.0,x=6.0,y=-8.0,r=0.96])Node64[a=1.0,b=-1.0,x=5.0,y=-7.0,r=1.37])Node53[a=1.0,b=1.0,x=4.0,y=-6.0,r=0.5])Node37[a=1.0,b=0.0,x=3.0,y=-7.0,r=1.28])Node30[a=0.0,b=-1.0,x=2.0,y=-7.0,r=0.75])Node22[a=0.0,b=-1.0,x=2.0,y=-6.0,r=0.83])Node15[a=1.0,b=-1.0,x=2.0,y=-5.0,r=1.41])Node11[a=1.0,b=-1.0,x=1.0,y=-4.0,r=0.68])Node9[a=-1.0,b=0.0,x=0.0,y=-3.0,r=1.224188604200087])Node6[a=1.0,b=-1.0,x=1.0,y=-3.0,r=0.95])Node4[a=1.0,b=-1.0,x=0.0,y=-2.0,r=0.82])Node2[a=-1.0,b=0.0,x=-1.0,y=-1.0,r=0.53])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.62])Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "    # Draw the tree and get the illuminated coordinates\n",
    "    newick_string = complete_tree_generator15(max_depth = 40, max_numb_children = 2, max_node_radius = 1.2)\n",
    "    number_of_groups = count_groups15(newick_string)\n",
    "    illuminated_coords = draw_tree_newick15(newick_string, title=f\"Globular morpho-tree with {number_of_groups} nodes\")\n",
    "    #print(f\"Illuminated coordinates: {illuminated_coords}\")\n",
    "    # The globular tree is trimmed here:\n",
    "    number_of_branch_deletions = 30\n",
    "    for i in range(number_of_branch_deletions):\n",
    "        newick_string = deletion_of_branch15(newick_string )\n",
    "    number_of_groups = count_groups15(newick_string)\n",
    "    illuminated_coords = draw_tree_newick15(newick_string, title=f\"Trimmed morpho-tree with {number_of_groups} nodes\")\n",
    "        \n",
    "    "
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise.** Run the previous program to assess what rich structure have the trimmed trees. \n",
    ">\n",
    "> *Answer.* The trimmed trees look more complex than the parental golobular ones.\n",
    "\n",
    "**Exercise.** Test how powerful is Evolution to solve trimmed trees.\n",
    ">\n",
    "> *Answer.* In the following program we depict the fitness function over generations for various values of population sizes that try to reproduce a trimmed globular tree that pressumibly has a rich structure.\n"
   ]
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# Program evolution_of_newick_morphological_trimmed_trees16.py\n",
    "\n",
    "# Purpose:\n",
    "# To explore the battle of Evolution against the complexity of trimmed morpho-trees.\n",
    "# More specifically:\n",
    "# An ordinary target morpho-tree is created. It is globular.\n",
    "# Some arms are trimmed in order to generate structure.\n",
    "# The resultant tree is given as a task to Evolution\n",
    "# that must reproduce an area associated to the target tree.\n",
    "\n",
    "# Morphological trees considered here are like lighting trees:\n",
    "# an electrical thread in the form of tree covers an area\n",
    "# and there is lamp at each node.\n",
    "# Each lamp has a given power and a circle of illumination,\n",
    "# whose radius is determined by a threshold intensity.\n",
    "# In morphology, this corresponds with a threshold concentration of a messenger.\n",
    "# Evolution is given the task of illuminating\n",
    "# the area determined by a random target tree.\n",
    "# Trees are encoded in Newick Notation and\n",
    "# everything is done over the correspond strings\n",
    "# without resorting to the Node class.\n",
    "# Thus, it is possible to use the Newick strings as a genotype and\n",
    "# the corresponding trees as a phenotype.\n",
    "#\n",
    "# In this version:\n",
    "#   1. Mutation has been inbuilt with the power\n",
    "#       to have children in the immediate neighborhood of the father and\n",
    "#       to change radius and the topology of trees\n",
    "#       by means of insertion and deletion of leaves.\n",
    "#    2. Recombination has been enabled with the power\n",
    "#       to exchange leaves between trees.\n",
    "#       We expect a good proportion of the population to\n",
    "#       be able to successfully recombine, mutate and reproduce.\n",
    "#    3. A cut-off for the length of the Newick string has been introduced\n",
    "#       to avoid overgrowth of trees.\n",
    "#    4. The seed for the random number generator has been canceled\n",
    "#        to allow different histories for different runs.\n",
    "#\n",
    "# A bug was corrected in the function that inserts a node.\n",
    "# The criterion for insertion was changed from \"a leaf is just after a left parenthesis\"\n",
    "# to \"a leaf begins with `N` that is preceded by a left parenthesis\".\n",
    "#\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# We reuse pieces of code made with the help of Colab and Gemini 2.5 Flash.\n",
    "# With the  assistance of the AI of Visual Studio Code.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "# from datetime import datetime, timedelta\n",
    "\n",
    "# trace memory allocation\n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc\n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False\n",
    "recombination_of_leaves = False\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start()\n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 10,\n",
    "  'max_number_children': 2,\n",
    "  'max_node_radius': 1.5,\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "   #'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 70,\n",
    "  'generations': 100,\n",
    "  'max_depth': target_tree_params['max_depth'],\n",
    "  'max_number_children': target_tree_params['max_number_children'],\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001,\n",
    "  'crossover_rate': 0.001\n",
    "}\n",
    "\n",
    "\n",
    "def print_parameters16(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    #print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"INITIAL TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"INITIAL GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=16.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence16(original_str, start_idx, end_idx, new_subsequence):\n",
    "    \"\"\" Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google\"\"\"\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length16(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups16(newick_string):\n",
    "    \"\"\"Al substrings that encodes for the info of a node, step from father, center and radius are detected.\"\"\"\n",
    "\n",
    "    #print(\"detect_all_groups16(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    \"\"\"\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        \"\"\"\n",
    "    return groups\n",
    "\n",
    "def count_groups16(newick_string):\n",
    "    \"\"\"The number of groups is counted.\"\"\"\n",
    "    groups = detect_all_groups16(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info16(group):\n",
    "  \"\"\"The info of each group is extracted by tokenizers from the string.\"\"\"\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos16(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups16(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info16(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates16(cell):\n",
    "  \"\"\"Immediate neighboring coordinates of a cell are generated\"\"\"\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    "\n",
    "\n",
    "def find_father_center16(newick_string, j):\n",
    "  \"\"\" Finds the address of the father of a node at j\"\"\"\n",
    "  #print(\"find_father_center16(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups16(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info16(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator16(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  \"\"\"For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      \"\"\"\n",
    "  #print(\"node_info_generator16(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates16(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children16(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  \"\"\" Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n \"\"\"\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator16(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator16(max_depth, max_numb_children, max_node_radius):\n",
    "  \"\"\" A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.\"\"\"\n",
    "  #print(\"complete_tree_generator16(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = max_depth + random.randint(-5,5) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion.\n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center16(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children16(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence16(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# === VALIDATOR ====\n",
    "\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# Connectivity issues are not checked.\n",
    "\n",
    "# A bug in the drawing procedure has been corrected, and the drawing of trees is now correct.\n",
    "# The bug was related to the function that finds the father of a node.\n",
    "\n",
    "# With the help of Gemini, Google and the AI of Visual Studio Code.\n",
    "\n",
    "\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- NodeB_3_x_2[a=1,b=0,x=4,y=5,r=1.2]\n",
    "# --- where a nad b are -1,0,1 except (0,0)\n",
    "# --- because they represent a step awya from the father.\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick16(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=1,b=-1,x=2,y=4,r=3.2], 22 tokens\n",
    "def examine_subsequence16(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 14][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 15][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 16][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 17][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 18][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 19][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 20][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 21][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"Tokens: {tracker}\")\n",
    "    #print(f\"tracker2: {tracker2}\")\n",
    "    master_pattern = \"7375627562756275627564\"\n",
    "                    # 7375627562756275627564\n",
    "    #print(f\"master pattern:  {master_pattern}\")\n",
    "    if tracker2 == master_pattern:\n",
    "        return True, \"Valid Newick sub-string at examine_subsequence16(tokens, j).\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string at examine_subsequence16(tokens, j).\"\n",
    "\n",
    "\n",
    "def simplify16(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    # print(\"\\nsimplify(text)\")\n",
    "    # print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,x=3,y=7,r=2.3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_strig_of_length16(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    # print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        print(\"Valid string at simplify16(), line 562\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        print(\"Invalid string at simplify16(), line 562\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "\n",
    "def validate_newick_syntax16(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    #print(\"Validating Newick syntax\")\n",
    "    tokens = []\n",
    "    try:\n",
    "        tokens = tokenize_newick16(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    l = len(tokens)\n",
    "    print(f\"Length of tokens at line 587: {l}\")\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string at validate_newick_syntax16_1.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string at validate_newick_syntax16_2.\"\n",
    "    elif 3 < l < 22: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string at validate_newick_syntax16_3.\"\n",
    "    elif l >= 22:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-20):\n",
    "            #print(f\"tokens[{j}]: {tokens[j]}\")\n",
    "            #print(f\"tokens[{j+1}]: {tokens[j+1]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid16, message16 = examine_subsequence16(tokens, j)\n",
    "                if is_valid16:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string inside validate_newick_syntax16_4.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid16, message16 = simplify16(newick_str)\n",
    "    if is_valid16:\n",
    "        return True, \"Valid morpho-tree at validate_newick_syntax16(newick_str).\"\n",
    "    else:\n",
    "        return False, \"Invalid morpho-tree at validate_newick_syntax16_5.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "#def test_validator16(max_depth, max_numb_children, max_node_radius):\n",
    "def test_validator16( ):\n",
    "    # Specific test\n",
    "    model = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]\"\n",
    "    #print(\"Simple test\")\n",
    "    #print(f\"Model of Newick String: {model}\")\n",
    "    is_valid, message = validate_newick_syntax16(model)\n",
    "    #print(f\"message: {message}\")\n",
    "    invalid_string = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]]\"\n",
    "    #print(f\"\\nInvalid_string: {invalid_string}\")\n",
    "    is_valid, message = validate_newick_syntax16(invalid_string)\n",
    "    #print(f\"message: {message}\")\n",
    "    #print(\"\\n\")\n",
    "\n",
    "\n",
    "    #print(\"\\nMassive test of Newick formulas encoding for morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 2\n",
    "    max_node_radius = 1.2\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        s = complete_tree_generator16(max_depth, max_numb_children, max_node_radius)\n",
    "        #print(f\"pattern {p}\")\n",
    "        #print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax16(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        print(f\"Morpho-tree {i}:: {status} - {message}\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# ======== DRAWING ================\n",
    "\n",
    "def get_illuminated_area16(x,y,r):\n",
    "    \"\"\"\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    \"\"\"\n",
    "    #print(\"get_illuminated_area16\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick16(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles16(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves(newick_string):\n",
    "    \"\"\"Detect leaves in a Newick string.\"\"\"\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups16(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father16(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    \"\"\"Draw lines connecting leaves to fathers\"\"\"\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father16\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info16(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=16],Node7[x=6,y=16,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups16(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info16(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    #is_valid, message = validate_newick_syntax16(newick_string)\n",
    "    #print(f\"is valid at connect_leaves_to_father16(...) : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    groups = detect_all_groups16(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links16(newick_string, ax,   diff_color='red' ):\n",
    "    \"\"\"Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       \"\"\"\n",
    "\n",
    "    #print(\"draw_tree_links16\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups16(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links16\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father16(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups16(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info16(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick16(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos16(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 16))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles16(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "\n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area16(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick16(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links16(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "def generate_and_test_target_trimmed__morpho_tree16(target_tree_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    target_tree = complete_tree_generator16(target_tree_params['max_depth'], target_tree_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #target_tree = complete_tree_generator16(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    # Trim tree\n",
    "    for i in range(2):\n",
    "         target_tree = deletion_of_branch16(target_tree)\n",
    "    print(f\"target_tree at generate_and_test_target_trimmed__morpho_tree16: {target_tree}\")\n",
    "    # Validate tree\n",
    "    is_valid, message = validate_newick_syntax16(target_tree)\n",
    "    illuminated_coords = set()\n",
    "\n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos16(target_tree)\n",
    "        illuminated_coords = get_illuminated_area16(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid at generate_and_test_target_trimmed__morpho_tree16(target_tree_params)\")\n",
    "\n",
    "    return target_tree, illuminated_coords\n",
    "\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree, test and draw it\n",
    "# def generate_test_and_draw_morpho_tree(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] ):\n",
    "def generate_and_test_morpho_tree16(ga_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    newick_tree = complete_tree_generator16(ga_params['max_depth'], ga_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #newick_tree = complete_tree_generator16(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    is_valid, message = validate_newick_syntax16(newick_tree)\n",
    "    illuminated_coords = set()\n",
    "\n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos16(newick_tree)\n",
    "        illuminated_coords = get_illuminated_area16(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "    \"\"\"\n",
    "    is_valid, message = validate_newick_syntax16(newick_tree)\n",
    "    print(f\"is the Newick String valid?: {is_valid}, message: {message}\")\n",
    "    status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    \"\"\"\n",
    "    return newick_tree, illuminated_coords\n",
    "\n",
    "\n",
    "# --- Evolutionary functions ---\n",
    "\n",
    "def create_initial_population_newick16(pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],  max_node_radius=ga_params['max_node_radius'] ):\n",
    "    population = []\n",
    "    for _ in range(pop_size):\n",
    "        new_tree = complete_tree_generator16(max_depth, max_children, max_node_radius)\n",
    "        population.append(new_tree)\n",
    "    return population\n",
    "\n",
    "def get_illuminated_coordinates16(newick_string):\n",
    "  \"\"\"Coordinates of illuminated cells are extracted from the Newick string\"\"\"\n",
    "  a,b,x,y,r = extract_all_infos16(newick_string)\n",
    "  # Illuminated area is calculated\n",
    "  illuminated_coords = get_illuminated_area16(x,y,r)\n",
    "  ##print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "  ##print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "  return illuminated_coords\n",
    "\n",
    "def calculate_fitness_illumination16(candidate_tree_root, target_illuminated_area):\n",
    "    \"\"\"\n",
    "    Calculates fitness based on the symmetric difference between illuminated areas.\n",
    "    Fitness is 1.0 for a perfect match, and decreases as symmetric difference increases.\n",
    "    Reuse of a previous code by Gemini 2.5 Flash\n",
    "    \"\"\"\n",
    "    if candidate_tree_root is None:\n",
    "        # If the tree generation failed, assign a very low fitness\n",
    "        return 0.0001 # A small non-zero value to avoid division by zero issues later\n",
    "\n",
    "    candidate_illuminated_area = get_illuminated_coordinates16(candidate_tree_root)\n",
    "\n",
    "    # Symmetric difference: (A U B) - (A intersect B)\n",
    "    # Or, the elements in A but not B, plus elements in B but not A.\n",
    "    symmetric_difference = candidate_illuminated_area.symmetric_difference(target_illuminated_area)\n",
    "\n",
    "    # Union size: used for normalization\n",
    "    union_size = len(candidate_illuminated_area.union(target_illuminated_area))\n",
    "\n",
    "    if union_size == 0:\n",
    "        if not target_illuminated_area and not candidate_illuminated_area:\n",
    "            return 1.0 # Perfect match if both are empty\n",
    "        else:\n",
    "            return 0.0001 # Should not happen if target is non-empty, but handles cases where both are empty but expected non-empty\n",
    "\n",
    "    # Fitness is 1.0 - (len(symmetric_difference) / union_size)\n",
    "    # This gives 1.0 for a perfect match (symmetric_difference_area = 0)\n",
    "    # and approaches 0.0 for large differences.\n",
    "    fitness = 1.0 - (len(symmetric_difference) / union_size)\n",
    "    return max(0.0001, fitness) # Ensure fitness is always positive\n",
    "\n",
    "\n",
    "def select_parents_newick(population, fitness_scores, num_parents):\n",
    "    parents = []\n",
    "    # Use roulette wheel selection or tournament selection. Tournament is generally robust.\n",
    "    for _ in range(num_parents):\n",
    "        tournament_size = min(5, len(population))\n",
    "        if tournament_size == 0:\n",
    "            break\n",
    "        tournament_candidates = random.sample(list(zip(population, fitness_scores)), tournament_size)\n",
    "        winner = max(tournament_candidates, key=lambda x: x[1])[0]\n",
    "        parents.append(winner)\n",
    "    return parents\n",
    "\n",
    "def find_recombinant_branch16(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  #print(\"\\nfind_branch\")\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  pattern_left_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_left_par, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  #print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  #print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      #print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_position_branch_recombination16(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_position_branch_recombination16\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_recombinant_branch16(newick_string1)\n",
    "  branch2 = find_recombinant_branch16(newick_string2)\n",
    "  #print(f\"\\nbranch1: {branch1}\")\n",
    "  #print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "def newick_leaves_recombination16(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_leaves_recombination16\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  leaves1 = find_leaves(newick_string1)\n",
    "  leaves2 = find_leaves(newick_string2)\n",
    "  if not leaves1 or not leaves2:\n",
    "    return newick_string1, newick_string2\n",
    "  # Select a leaf at random from each tree\n",
    "  leaf1 = random.choice(leaves1)\n",
    "  leaf2 = random.choice(leaves2)\n",
    "  #print(f\"\\nleaf1: {leaf1}\")\n",
    "  #print(f\"leaf2: {leaf2}\")\n",
    "  # Leaves are interchanged\n",
    "  newick_string1 = newick_string1.replace(leaf1, leaf2)\n",
    "  newick_string2 = newick_string2.replace(leaf2, leaf1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "def find_occupied_squares16(newick_string):\n",
    "    \"\"\"Detects all the occupied squares in a tree\"\"\"\n",
    "    occupied_squares_set = set()\n",
    "    groups = detect_all_groups16(newick_string)\n",
    "    for group in groups:\n",
    "        [a,b,x,y,r] = extract_info16(group)\n",
    "        occupied_squares_set.add((x, y))\n",
    "    return occupied_squares_set\n",
    "\n",
    "def newick_mutation_of_radius16(newick_string):\n",
    "  # The pattern of the radius of illumination, r = 0.2\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  #print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  #print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  #print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence16(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    "\n",
    "def newick_find_insertion_patterns16(newick_string):\n",
    "  \"\"\" All insertion patterns are found and one is chosen at random\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    "\n",
    "\n",
    "def insertion_of_branch16(newick_string):\n",
    "  #original_newick_string = newick_string\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_insertion_patterns16(newick_string)\n",
    "  # String to be inserted\n",
    "  # child_string = \"(Node16[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node16[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  child_string = complete_tree_generator16(max_depth = 2, max_numb_children = 2, max_node_radius= 1.5)\n",
    "  if group:\n",
    "    #print(f\"Group (main): {group}\")\n",
    "    #print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    #char_before = newick_string[start-1]\n",
    "    #print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {original_newick_string}\")\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_left_parenthesis_16(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns (N  are found and one is chosen at random\n",
    "      The new info will be inserted to the right of the parenthesis\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[(][N]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group160: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center16(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares16(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator16(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info\n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \"(\" + child_string +  \")\" + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def select_one_insertion_pattern_comma_16(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All  commas are found and one is chosen at random,\n",
    "  the child will be inserted after the comma\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][,]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group160: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center16(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares16(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator16(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info\n",
    "\n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+2] + \"(\" + child_string + \")\" + newick_string[start+2:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_parentheses_16(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns ]) are found and one is chosen at random\n",
    "      The new info will be inserted between ] and ) as a brother\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][)]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group160: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center16(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares16(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator16(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info\n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \",\" + child_string + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def insertion_of_leaf16(newick_string, counter, max_illumination_radius):    #original_newick_string = newick_string\n",
    "    \"\"\" All insertion patterns are found and one is chosen at random\n",
    "        for the new info to be inserted \"\"\"\n",
    "    case = random.choice([1, 2, 3])  # Randomly choose between three insertion methods\n",
    "    match case:\n",
    "        case 1:\n",
    "            newick_string = select_one_insertion_pattern_comma_16(newick_string, counter, max_illumination_radius)\n",
    "        case 2:\n",
    "            newick_string = select_one_insertion_pattern_parentheses_16(newick_string, counter, max_illumination_radius)\n",
    "        case 3:\n",
    "            newick_string = select_one_insertion_pattern_left_parenthesis_16(newick_string, counter, max_illumination_radius)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    newick_string = newick_string.replace(\" \", \"\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    return newick_string\n",
    "\n",
    "\n",
    "\n",
    "def deletion_of_leaf16(newick_string):\n",
    "    \"\"\"A leaf is deleted at random from the Newick string.\n",
    "        If there are no leaves, the original string is returned.\"\"\"\n",
    "    # All leaves are detected\n",
    "    leaves = find_leaves(newick_string)\n",
    "    if not leaves:\n",
    "        return newick_string  # No leaves to delete\n",
    "    # Select a leaf at random\n",
    "    leaf_to_delete = random.choice(leaves)\n",
    "    # Remove the selected leaf from the Newick string\n",
    "    newick_string = newick_string.replace(leaf_to_delete, \"\")\n",
    "    # Clean up any potential formatting issues (like double commas)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    return newick_string\n",
    "\n",
    "def find_branch16(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_find_all_groups16(newick_string):\n",
    "  \"\"\" All groups are found and one is chosen at random and returned\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "\n",
    "def deletion_of_branch16(newick_string ):\n",
    "  group, start =  newick_find_all_groups16(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch16(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def newick_mutation_branches16(newick_string):\n",
    "  # Mutation of radius of illumination and of complete branches\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    newick_string = newick_mutation_of_radius16(newick_string)\n",
    "    newick_string = insertion_of_branch16(newick_string)\n",
    "    newick_string = deletion_of_branch16(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "def newick_mutation_leaves16(newick_string, ga_params):\n",
    "  \"\"\"Radius is mutated, and only leaves can be inserted or deleted\"\"\"\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    # Mutation of radius of illumination and of complete leaves\n",
    "    newick_string = newick_mutation_of_radius16(newick_string)\n",
    "    newick_string = insertion_of_leaf16(newick_string, counter=random.randint(0, 1000), max_illumination_radius=ga_params['max_node_radius'])\n",
    "    newick_string = deletion_of_leaf16(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def plot_illuminated_area16(ax, illuminated_coords, title, color='blue', alpha=0.5):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "# --- MAIN EVOLUTIONARY SIMULATION LOOP ---\n",
    "\n",
    "# ======================\n",
    "\n",
    "def run_evolution_newick_morpho_trees16(target_tree_params, ga_params):\n",
    "    # A previous code by Gemini was reused.\n",
    "\n",
    "    # 1. Generate Target Tree and its Illuminated Area\n",
    "    #print(\"\\n--- Generating Target Tree ---\")\n",
    "    #random.seed(ga_params['seed'] + 1) # Use a different seed for target generation\n",
    "    target_tree, target_illuminated_area =  generate_and_test_target_trimmed__morpho_tree16(target_tree_params)#926\n",
    "    print(f\"target_tree: {target_tree} \\n\\n\")\n",
    "    number_of_groups = count_groups16(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    length_of_target_tree = len(target_tree)\n",
    "    #draw_newick_string16(target_tree, \"Target Tree\")\n",
    "    #target_area = get_illuminated_coordinates16(target_tree)\n",
    "    #print(f\"Target illuminated area: {target_illuminated_area}\")\n",
    "\n",
    "    # 2. Initialize Population\n",
    "    #random.seed(ga_params['seed']) # Reset seed for GA population generation\n",
    "    #print(f\"\\n--- Initializing Population of {ga_params['pop_size']} Trees ---\")\n",
    "    population = create_initial_population_newick16(\n",
    "        pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],\n",
    "        max_node_radius=ga_params['max_node_radius']  )\n",
    "    #print(f\"Population initialized with {len(population)} individuals.\")\n",
    "    #print(f\"Population: {population}\")\n",
    "\n",
    "\n",
    "\n",
    "    best_tree_overall = None\n",
    "    best_fitness_overall = -1.0\n",
    "    history = []\n",
    "\n",
    "    # 3. Evolutionary Loop\n",
    "    #print(f\"\\n--- Starting Evolutionary Loop for {ga_params['generations']} Generations ---\")\n",
    "    generation = 0\n",
    "    for generation in range(ga_params['generations']):\n",
    "        if generation % 10 == 0:\n",
    "            print(f\"\\n--- Generation {generation+1}/{ga_params['generations']}, Best fitness {round(best_fitness_overall, 5)} ---\")\n",
    "        fitness_scores = [calculate_fitness_illumination16(tree, target_illuminated_area)for tree in population]\n",
    "\n",
    "        current_best_fitness = max(fitness_scores)\n",
    "        current_best_tree = population[np.argmax(fitness_scores)]\n",
    "\n",
    "        if current_best_fitness > best_fitness_overall:\n",
    "            best_fitness_overall = current_best_fitness\n",
    "            best_tree_overall = copy.deepcopy(current_best_tree) # Deepcopy to save the best tree\n",
    "\n",
    "        history.append(current_best_fitness)\n",
    "\n",
    "        #print(f\"Generation {generation+1}/{ga_params['generations']}: Best Fitness = {current_best_fitness:.4f} (Overall Best: {best_fitness_overall:.4f})\")\n",
    "\n",
    "        if best_fitness_overall >= 0.999: # Almost perfect match\n",
    "            #print(\"Target illumination achieved (or very close)! Stopping evolution.\")\n",
    "            return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history, generation\n",
    "\n",
    "        # Selection\n",
    "        parents = select_parents_newick(population, fitness_scores, ga_params['pop_size'] // 2)\n",
    "\n",
    "        # Create next generation\n",
    "        next_population = []\n",
    "        # Elitism: Keep the best individual from the current generation\n",
    "        if best_tree_overall and current_best_fitness == best_fitness_overall: # Only if it's the current best in this generation\n",
    "            next_population.append(copy.deepcopy(current_best_tree))\n",
    "\n",
    "        while len(next_population) < ga_params['pop_size']:\n",
    "            if len(parents) < 2: # Not enough parents for crossover, fill with new random trees\n",
    "                new_tree =  complete_tree_generator16(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "                if new_tree:\n",
    "                    next_population.append(new_tree)\n",
    "                continue\n",
    "\n",
    "            # Randomly pick two parents (can be the same parent multiple times with replacement for simplicity)\n",
    "            p1 = random.choice(parents)\n",
    "            p2 = random.choice(parents)\n",
    "            child1, child2 = p1,p2 # No crossover, just pass parents to children for mutation\n",
    "            if recombination_of_leaves:\n",
    "                # Crossover newick_position_branch_recombination12\n",
    "                # child1, child2 = newick_position_branch_recombination12(p1, p2)\n",
    "                # Crossover newick_leaves_recombination12\n",
    "                child1, child2 =newick_leaves_recombination16(p1,p2)\n",
    "            # Mutation: Apply mutation to both children\n",
    "            mutated_child1 = newick_mutation_leaves16(child1, ga_params)\n",
    "            mutated_child2 = newick_mutation_leaves16(child2, ga_params)\n",
    "\n",
    "\n",
    "            next_population.append(mutated_child1)\n",
    "            if len(next_population) < ga_params['pop_size']:\n",
    "                next_population.append(mutated_child2)\n",
    "\n",
    "        population = next_population[:ga_params['pop_size']]\n",
    "        # print(f\"Population size for next generation: {len(population)}\")\n",
    "        # print(f\"Best fitness this generation: {current_best_fitness:.4f}, Overall best fitness: {best_fitness_overall:.4f}\")\n",
    "        # print(f\"Best tree this generation: {current_best_tree}\")\n",
    "        # If you want to see the entire population, uncomment the following line:\n",
    "        # print(f\"Population: {population}\")\n",
    "        # Cutt-off for the length of the Newick string to avoid excessive growth\n",
    "        population = [tree for tree in population if len(tree) <= 2 * length_of_target_tree]  # Allow some growth but limit it\n",
    "        #print(f\"Population size after length cut-off: {len(population)}\")\n",
    "        # If the population is too small, refill\n",
    "        while len(population) < ga_params['pop_size']:\n",
    "            new_tree = complete_tree_generator16(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'])\n",
    "            if new_tree:\n",
    "                population.append(new_tree)\n",
    "    generation += 1  # Increment generation count after the loop\n",
    "    #print(\"\\n--- Evolution Finished ---\")\n",
    "    #print(f\"Final Best Fitness: {best_fitness_overall:.4f}\")\n",
    "\n",
    "    return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history, generation\n",
    "\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree and draw it\n",
    "if __name__ == \"__main__\":\n",
    "    print_parameters16(target_tree_params, ga_params)\n",
    "    # Run the evolution loop\n",
    "    target_tree, target_illuminated_area, evolved_best_tree, evolved_best_fitness, history, generation = run_evolution_newick_morpho_trees16(target_tree_params, ga_params)\n",
    "    number_of_groups = count_groups16(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups}\")\n",
    "    title = \"Target Tree. Number of groups or nodes: \" + str(number_of_groups)\n",
    "    draw_tree_newick16(target_tree, title)\n",
    "    title = \"Evolved Best Tree\"\n",
    "    draw_tree_newick16(evolved_best_tree, title)\n",
    "\n",
    "    # Plot Symmetric Difference Area\n",
    "    evolved_best_area = get_illuminated_coordinates16(evolved_best_tree)\n",
    "    symmetric_diff_area = target_illuminated_area.symmetric_difference(evolved_best_area )\n",
    "    ##print(f\"Symmetric Difference Area: {symmetric_diff_area}\")\n",
    "    ##print(f\"Number of cells in symmetric difference area: {len(symmetric_diff_area)}\")\n",
    "\n",
    "\n",
    "    fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "\n",
    "    plot_illuminated_area16(axes[0], target_illuminated_area, title=f\"Target Area (number of cells: {len(target_illuminated_area)})\")\n",
    "    plot_illuminated_area16(axes[1], evolved_best_area, title=f\"Evolved Best Area (number of cells: {len(evolved_best_area)})\")\n",
    "    plot_illuminated_area16(axes[2], symmetric_diff_area, title=f\"Symmetric Difference (Error Area: {len(symmetric_diff_area)})\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "    # Plot Fitness History\n",
    "    plt.figure(figsize=(10, 6))\n",
    "    plt.plot(history, marker='o', linestyle='-', color='blue')\n",
    "    plt.title('Best Fitness Progression Over Generations')\n",
    "    plt.xlabel('Generation')\n",
    "    plt.ylabel('Fitness')\n",
    "    plt.grid(True)\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "    print(f\"Evolved best tree: {evolved_best_tree}\")\n",
    "    print(f\"Evolved best fitness: {evolved_best_fitness:.2}\")\n",
    "    print(f\"Generation: {generation}\")\n",
    "    print(f\"Number of nodes in target tree: {number_of_groups}\")\n",
    "    #test_validator16()\n",
    "    end_time = time.time()\n",
    "    Execution_time = end_time - start_time\n",
    "    # print(f\"Execution time: {Execution_time:.2f} seconds\")\n",
    "    # Execution time in hours, minutes and seconds:\n",
    "    hours = int(Execution_time // 3600)\n",
    "    minutes = int((Execution_time % 3600) // 60)\n",
    "    seconds = int(Execution_time % 60)\n",
    "    print(f\"Execution time: {hours} hours, {minutes} minutes, {seconds} seconds\")\n",
    "    if memory_monitoring:\n",
    "        # displaying the allocated memory\n",
    "        print(tracemalloc.get_traced_memory())\n",
    "        # stopping the memory allocation library\n",
    "        tracemalloc.stop()"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "**Observation.** Trimmed trees do not look more difficult to Evolution than ordinary ones.\n",
    "\n",
    "**Exercise.** Make a comparison of the behavior of Evolution for diverse values of population size. This measures the behavior of Evolution when resources diminish.\n",
    ">\n",
    "> *Answer.* The following program runs Evolution for diverse values of population size."
   ]
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2026-10-06T17:44:45.244380Z",
     "start_time": "2026-10-06T13:03:05.933823Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# Program evolution_of_newick_morphological_trimmed_trees17.py\n",
    "# Morphological trees considered here are like lighting trees:\n",
    "# an electrical thread in the form of tree covers an area\n",
    "# and there is lamp at each node.\n",
    "# Each lamp has a given power and a circle of illumination,\n",
    "# whose radius is determined by a threshold intensity.\n",
    "# In morphology, this corresponds with a threshold concentration of a messenger.\n",
    "# Evolution is given the task of illuminating\n",
    "# the area determined by a random target tree.\n",
    "# Trees are encoded in Newick Notation and\n",
    "# everything is done over the correspond strings\n",
    "# without resorting to the Node class.\n",
    "# Thus, it is possible to use the Newick strings as a genotype and\n",
    "# the corresponding trees as a phenotype.\n",
    "#\n",
    "# In this version:\n",
    "#   1. Mutation has been inbuilt with the power\n",
    "#       to have children in the immediate neighborhood of the father and\n",
    "#       to change radius and the topology of trees\n",
    "#       by means of insertion and deletion of leaves.\n",
    "#    2. Recombination has been enabled with the power\n",
    "#       to exchange leaves between trees.\n",
    "#       We expect a good proportion of the population to\n",
    "#       be able to successfully recombine, mutate and reproduce.\n",
    "#    3. A cut-off for the length of the Newick string has been introduced\n",
    "#       to avoid overgrowth of trees.\n",
    "#    4. The seed for the random number generator has been canceled\n",
    "#        to allow different histories for different runs.\n",
    "#\n",
    "# A bug was corrected in the function that inserts a node.\n",
    "# The criterion for insertion was changed from \"a leaf is just after a left parenthesis\"\n",
    "# to \"a leaf begins with `N` that is preceded by a left parenthesis\".\n",
    "#\n",
    "# Purpose:\n",
    "# To study the effect of the decreasing of resources over Evolution of morpho-trees.\n",
    "# To that aim, we depict various fitness functions for diverse\n",
    "# values of population sizes.\n",
    "# Target trees are gven a rich structure by deleting some arms.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# We reuse pieces of code made with the help of Colab and Gemini 2.5 Flash.\n",
    "# With the  assistance of the AI of Visual Studio Code.\n",
    "\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "import numpy as np\n",
    "import math\n",
    "import copy # For deep copying trees during reproduction and mutatio\n",
    "import re # Required for newick parsing\n",
    "#import itertools # Required for sequential replacement\n",
    "import sys # Import sys module to adjust recursion limit\n",
    "sys.setrecursionlimit(3000)\n",
    "import time\n",
    "# from datetime import datetime, timedelta\n",
    "\n",
    "# trace memory allocation\n",
    "#https://www.geeksforgeeks.org/python/monitoring-memory-usage-of-a-running-python-program/\n",
    "# this consumes too much cpu-time by a multiplicative factor, say 5 for 1000 lines.\n",
    "import tracemalloc\n",
    "\n",
    "\n",
    "#Activate  memory monitoring?\n",
    "memory_monitoring = False\n",
    "recombination_of_leaves = False\n",
    "\n",
    "# starting the memory allocation monitoring\n",
    "if memory_monitoring:\n",
    "    tracemalloc.start()\n",
    "start_time = time.time()\n",
    "\n",
    "# Parameters for the target tree generation\n",
    "target_tree_params = {\n",
    "  'max_depth': 15,\n",
    "  'max_number_children': 2,\n",
    "  'max_node_radius': 1.5,\n",
    "  'number_of_branch_deletions':  10\n",
    "}\n",
    "\n",
    "# Parameters for the Genetic Algorithm\n",
    "ga_params = {\n",
    "   #'seed': 47423648, #the seed of the target tree is this plus 1.\n",
    "  'pop_size': 70,\n",
    "  'generations': -1, # fake initialization\n",
    "  'max_depth': target_tree_params['max_depth'],\n",
    "  'max_number_children': target_tree_params['max_number_children'],\n",
    "  'max_node_radius': 1.5,\n",
    "  'mutation_rate': 0.001,\n",
    "  'crossover_rate': 0.001\n",
    "}\n",
    "\n",
    "\n",
    "def print_parameters17(target_tree_params, ga_params):\n",
    "    print(\"LAB: EVOLUTION OF NEWICK MORPHO-TREES\")\n",
    "    print(\"PURPOSE: \"\n",
    "          + \"\\n A random morpho-tree T is generated.\"\n",
    "          + \"\\n Evolution tries to restore the tree T\"\n",
    "          + \"\\n beginning from a population of random trees.\")\n",
    "    print(f\"EXPERIMENT {start_time}\")\n",
    "    print(f\"RECOMBINATION OF LEAVES: {recombination_of_leaves}\")\n",
    "    #print(f\"SEED FOR THE GENETIC ALGORITHM: {ga_params['seed']}\")\n",
    "    print(f\"INITIAL TARGET TREE PARAMETERS: {target_tree_params}\")\n",
    "    print(f\"INITIAL GENETIC ALGORITHM PARAMETERS: {ga_params}\\n\")\n",
    "\n",
    "\n",
    "# GENERATION OF A MORPHO-TREE\n",
    "\n",
    "# Program morpho_tree_drawer.py\n",
    "\n",
    "# The following program generates a Newick strings\n",
    "# that encodes for a morpho-tree  and draws it.\n",
    "# Children are located in the immediate neighborhood of the father.\n",
    "# If postions are occupied, no children.\n",
    "# Then, children are generated only when there is place for them.\n",
    "\n",
    "# ====   Grammar_generator =======\n",
    "\n",
    "# This program uses a hidden grammar to generate Newick expressions that encode for morphological trees.\n",
    "# The information of each node is generated on the image of\n",
    "#   Node25[a=18,b=18,x=19,y=0,r=17.3]\n",
    "# The rules of the grammar are:\n",
    "# 1. Initial string or seed: `s = ()n`\n",
    "# 2. Generate a random digit: x\n",
    "# 3. Replace in `s`, `()` by x copies of `(()n ` separated by a comma.\n",
    "# 4. Iterate.\n",
    "# 5. Replace each `n`by the info of a node whose values are generated at random but the index of the tag is a counter with the iterative process.\n",
    "# 6. Delete the tag \"()\" that appears in the last appended children.\n",
    "# An ordered set of rules like this is a Generative Grammar.\n",
    "# The grammmar is hidden because no n is generated,\n",
    "# because beforehand it is replaced by the info of a node.\n",
    "# With the assistance of Colab and reusing a previous code by Gemini.\n",
    "\n",
    "\n",
    "\n",
    "def replace_str_subsequence17(original_str, start_idx, end_idx, new_subsequence):\n",
    "    \"\"\" Replace a subsequence from start_idx to end_idx with another string.\n",
    "        By Google\"\"\"\n",
    "    # Concatenate the pieces together\n",
    "    return original_str[:start_idx] + new_subsequence + original_str[end_idx:]\n",
    "\n",
    "def replace_strig_of_length17(original_str, replacement, position, length_to_replace):\n",
    "    \"\"\"\n",
    "    Replaces a subsequence of given length.\n",
    "    :param original_str: The main text string\n",
    "    :param replacement: The new text you want to insert\n",
    "    :param position: The starting index of the old subsequence\n",
    "    :param length_to_replace: The length of the old subsequence being removed\n",
    "    \"\"\"\n",
    "    before = original_str[:position]\n",
    "    after = original_str[position + length_to_replace:]\n",
    "    return before + replacement + after\n",
    "\n",
    "\n",
    "def detect_all_groups17(newick_string):\n",
    "    \"\"\"Al substrings that encodes for the info of a node, step from father, center and radius are detected.\"\"\"\n",
    "\n",
    "    #print(\"detect_all_groups17(newick_string)\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=0,b=1,x=2,y=2,r=3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "                                                    #info_words = r'[a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, newick_string):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    #number_of_groups = len(starts)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    #print(f\"starts of gropus: {starts}\")\n",
    "    #print(f\"groups: {groups}\")\n",
    "\n",
    "\n",
    "    \"\"\"\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_at_position2(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        print(f\"new string = '{new_s}'\")\n",
    "        \"\"\"\n",
    "    return groups\n",
    "\n",
    "def count_groups17(newick_string):\n",
    "    \"\"\"The number of groups is counted.\"\"\"\n",
    "    groups = detect_all_groups17(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return number_of_groups\n",
    "\n",
    "def extract_info17(group):\n",
    "  \"\"\"The info of each group is extracted by tokenizers from the string.\"\"\"\n",
    "  patern_a = r'a=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_b = r'b=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_x = r'x=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_y = r'y=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  patern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  a = re.findall(patern_a, group)\n",
    "  b = re.findall(patern_b, group)\n",
    "  x = re.findall(patern_x, group)\n",
    "  y = re.findall(patern_y, group)\n",
    "  r = re.findall(patern_r, group)\n",
    "  a = float(a[0][2:])\n",
    "  b = float(b[0][2:])\n",
    "  x = float(x[0][2:])\n",
    "  y = float(y[0][2:])\n",
    "  r = float(r[0][2:])\n",
    "  return [a,b,x,y,r]\n",
    "\n",
    "\n",
    "def extract_all_infos17(newick_string):\n",
    "    #print(\"extract_all_infos\n",
    "    # Groups are detected. A group is the encoding of the parameters of a node in an info.\n",
    "    groups = detect_all_groups17(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "\n",
    "    # Info is extracted from each group and\n",
    "    # all infos are kept in corresponding arrays.\n",
    "    a = []\n",
    "    b = []\n",
    "    x = []\n",
    "    y = []\n",
    "    r = []\n",
    "    #print(\"\\nInfo is extracted form each group\")\n",
    "    for i in range(number_of_groups):\n",
    "      #print(f\"group[{i}]: {groups[i]}\")\n",
    "      #print(f\"len(group[{i}]): {len(groups[i])}\")\n",
    "      [ai,bi,xi,yi,ri] = extract_info17(groups[i])\n",
    "      #print(f\"a: {ai}, b: {bi}, x: {xi}, y: {yi}, r: {ri}\")\n",
    "      a.append(ai)\n",
    "      b.append(bi)\n",
    "      x.append(xi)\n",
    "      y.append(yi)\n",
    "      r.append(ri)\n",
    "    return a,b,x,y,r\n",
    "\n",
    "\n",
    "def get_neighboring_coordinates17(cell):\n",
    "  \"\"\"Immediate neighboring coordinates of a cell are generated\"\"\"\n",
    "  neighbors = []\n",
    "  for dx in [-1, 0, 1]:\n",
    "      for dy in [-1, 0, 1]:\n",
    "          if dx == 0 and dy == 0:\n",
    "              continue  # Exclude the current square itself\n",
    "          neighbors.append((cell[0] + dx, cell[1] + dy))\n",
    "  return neighbors\n",
    "\n",
    "\n",
    "\n",
    "def find_father_center17(newick_string, j):\n",
    "  \"\"\" Finds the address of the father of a node at j\"\"\"\n",
    "  #print(\"find_father_center17(s, j)\")\n",
    "  #print(f\"s: {newick_string}\")\n",
    "  #print(f\"j: {j}\")\n",
    "\n",
    "  #Right tail is recruited\n",
    "  tail = newick_string[j+1:]\n",
    "  father_group = detect_all_groups17(tail)\n",
    "  if father_group:\n",
    "    #print(f\"Father_group 1: {father_group}\")\n",
    "    [af,bf,xf,yf,rf] = extract_info17(father_group[0])\n",
    "    #print(f\"Info: a: {af}, b: {bf}, x: {xf}, y: {yf}, r: {rf}\")\n",
    "    father_center = [xf,yf]\n",
    "    return father_center\n",
    "  else:\n",
    "   return \"\"\n",
    "\n",
    "\n",
    "\n",
    "def node_info_generator17(father_center, counter,  occupied_squares_set, max_node_radius):\n",
    "  \"\"\"For each node, info is generated on the model\n",
    "     Node_26[a=1,b=-1,x=3,y=5,r=0.85]\n",
    "     by replacing n by the info of a node whose values are generated at random\n",
    "     but the index of the tag is a counter with the iterative process.\n",
    "      \"\"\"\n",
    "  #print(\"node_info_generator17(father_center, counter,  occupied_squares_set)\")\n",
    "  coordinates_neighbors = get_neighboring_coordinates17(father_center)\n",
    "  #print(f\"coordinates_neighbors: {coordinates_neighbors}\")\n",
    "  #print(f\"occupied_squares_set: {occupied_squares_set}\")\n",
    "  # First, filter for unoccupied grid squares within this tree\n",
    "  available_square_neighbors = [coord for coord in coordinates_neighbors if coord not in occupied_squares_set]\n",
    "  info = \"\" # future info of a node that represents a cell\n",
    "  if available_square_neighbors:\n",
    "    # Choose a random valid candidate\n",
    "    nx,  ny  = random.choice(available_square_neighbors)\n",
    "    na = nx - father_center[0]\n",
    "    nb = ny - father_center[1]\n",
    "    nr = random.uniform(0.5, max_node_radius)\n",
    "    nr = round(nr, 2)\n",
    "    info = \"Node\" +  str(counter)  + \"[\" + \"a=\" + str(na) + \",\" + \"b=\" + str(nb) + \",\"  +   \"x=\" + str(nx) + \",\" + \"y=\" + str(ny) + \",\" + \"r=\" + str(nr)+ \"]\"\n",
    "    info = \"()\"+ info\n",
    "    #print(f\"Generated Node info: {info}\")\n",
    "    occupied_squares_set.add((nx, ny))\n",
    "\n",
    "  else:\n",
    "    #All neighboring places are occupied\n",
    "    #print(\"All neighboring places are occupied\")\n",
    "    info = \"\"\n",
    "  return info, occupied_squares_set\n",
    "\n",
    "\n",
    "def generate_children17(father_center, numb_children, counter, occupied_squares_set, max_node_radius):\n",
    "  \"\"\" Generate children in the pattern of a Newick Tree.\n",
    "      Output in the form\n",
    "      n,n,n,n \"\"\"\n",
    "  #print(\"generate_children(max_numb_children)\")\n",
    "  #print(f\"Number of children: {numb_children}\")\n",
    "  s = \"\"\n",
    "  for i in range(numb_children):\n",
    "    if i == 0:\n",
    "      a = \"\"\n",
    "    else:\n",
    "      a = \",\"\n",
    "    info, occupied_squares_set = node_info_generator17(father_center, counter, occupied_squares_set, max_node_radius)\n",
    "    if not info:\n",
    "      continue\n",
    "    else:\n",
    "     s = info + a + s\n",
    "     counter = counter + 1\n",
    "  s =  \"(\" + s + \")\"\n",
    "  #print(f\"Children: {s}\")\n",
    "  return s, counter, occupied_squares_set\n",
    "\n",
    "\n",
    "def complete_tree_generator17(max_depth, max_numb_children, max_node_radius):\n",
    "  \"\"\" A tree is generated step by step\n",
    "   taking care of generating no child where there is no place for it.\"\"\"\n",
    "  #print(\"complete_tree_generator17(...)\")\n",
    "  occupied_squares_set = set() # Initialize a new set for this tree's square coordinates\n",
    "  actual_depth = max_depth + random.randint(-5,5) # Number of allowed divisions along each branch.\n",
    "  #print(f\"Actual depth: {actual_depth}\")\n",
    "  # () is used as a marker for insertion.\n",
    "  tree = \"()Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  occupied_squares_set.add((0,0))\n",
    "  #counter of defined nodes\n",
    "  counter = 1\n",
    "  for i in range(actual_depth):\n",
    "      #print(f\"depth: {i}\")\n",
    "      l = len(tree)\n",
    "      #print(f\"i : {i} l: {l}\")\n",
    "      # String s is scanned starting from the end\n",
    "      for j in range(l-1, 0, -1):\n",
    "        #print(f\"s: {s}\")\n",
    "        #print(f\"s[j-1] s[j]  :  {s[j-1]}{s[j]}\")\n",
    "        # Replace () by a list of children\n",
    "        if tree[j-1] == \"(\" and tree[j] == \")\":\n",
    "          father_center = find_father_center17(tree, j)\n",
    "          #print(f\"Father center: {father_center}\")\n",
    "          if not father_center:\n",
    "            continue\n",
    "          numb_children = random.randint(0, max_numb_children)\n",
    "          if numb_children == 0:\n",
    "            continue\n",
    "          else:\n",
    "            # Replacement\n",
    "            generated_children, counter, occupied_squares_set = generate_children17(father_center, numb_children, counter, occupied_squares_set, max_node_radius)\n",
    "            tree = replace_str_subsequence17(tree, j-1, j+1, generated_children)\n",
    "          #print(f\"{i} {j} Tree: {tree}\")\n",
    "  #print(f\"crude tree: {tree}\")\n",
    "  tree = tree.replace(\"()\", \"\")\n",
    "  #print(f\"final tree: {tree}\")\n",
    "  return tree\n",
    "\n",
    "# === VALIDATOR ====\n",
    "\n",
    "\n",
    "# Program validator_for_newick_morpho_trees.py\n",
    "# The task is to decide whether a Newick string encodes for a morpho tree.\n",
    "# To solve the task,\n",
    "# we simply go backwards over the procedure of creation of Newick strings.\n",
    "# The program has two sections.\n",
    "# In the first,\n",
    "# the string in divided in tokens, substrings of predefined content,\n",
    "# and all groups that fit into the pattern\n",
    "# info = NodeB_3_x_2[a=2,b=2,r=3] are detected.\n",
    "# Each found group undergoes a detailed test for correctness.\n",
    "# If some group is wrong, the whole string is rejected.\n",
    "# If all are correct, the test continues further on.\n",
    "# In the second section,\n",
    "# each info is replaced by \"n\",\n",
    "# then, each \"n\" is replaced by\"\"\n",
    "# then each \"()\" is replaced by \"\".\n",
    "# If a formula is correct,\n",
    "# the final product of this algorithm is the void sting \"\",\n",
    "# and its length is zero.\n",
    "# Connectivity issues are not checked.\n",
    "\n",
    "# A bug in the drawing procedure has been corrected, and the drawing of trees is now correct.\n",
    "# The bug was related to the function that finds the father of a node.\n",
    "\n",
    "# With the help of Gemini, Google and the AI of Visual Studio Code.\n",
    "\n",
    "\n",
    "\n",
    "# --- TOKENIZER FOR NEWICK STRINGS ---\n",
    "# --- Elements to create well-formed Newick info-s of Morpho_trees.---\n",
    "# --- Every info is modeled on the pattern\n",
    "# --- NodeB_3_x_2[a=1,b=0,x=4,y=5,r=1.2]\n",
    "# --- where a nad b are -1,0,1 except (0,0)\n",
    "# --- because they represent a step awya from the father.\n",
    "# --- If a substring fits into this pattern,\n",
    "# --- it must produce the sequence 73756275627564.\n",
    "# --- Say, each info begins with a noun = letters, number 7,\n",
    "# --- and ends with a right bracket number 4.\n",
    "# --- Assigned numbers are at the right of comments.\n",
    "# --- By Gemini\n",
    "TOKEN_SPECIFICATION_NEWICK = [\n",
    "    ('LPAREN',    r'\\('),          # Left Parenthesis, 0\n",
    "    ('RPAREN',    r'\\)'),          # Right Parenthesis, 1\n",
    "    ('COMMA',     r','),           # Comma separator for children, 2\n",
    "    ('LBRACKET',  r'\\['),          # Left Bracket for metadata, 3\n",
    "    ('RBRACKET',  r'\\]'),          # Right Bracket for metadata, 4\n",
    "    ('EQUALS',    r'='),           # Equals sign in metadata, 5\n",
    "    ('NUMBER',    r'-?\\d+(?:\\.\\d+)?'), # Numbers (integers or floats, possibly negative), 6\n",
    "    ('LETTERS',   r'[a-zA-Z_0-9]+'), # Node labels (e.g., 'Node0', 'Target_Root_26'), or variables (x, y, r), 7\n",
    "    ('SEMICOLON', r';'),           # Optional semicolon at end of Newick string, 8\n",
    "    ('SKIP',      r'[ \\t\\n]+'),  # Skip spaces, tabs, newlines, 9\n",
    "    ('MISMATCH',  r'.'),           # Any other illegal character, *\n",
    "]\n",
    "\n",
    "def tokenize_newick17(newick_str):\n",
    "    \"\"\"Converts a Newick string into a list of (token_type, value) tuples.\"\"\"\n",
    "    #print(\"\\ntokenize_newick\")\n",
    "    tokens = []\n",
    "    tok_regex = '|'.join(f'(?P<{name}>{pattern})' for name, pattern in TOKEN_SPECIFICATION_NEWICK)\n",
    "    tokens = []\n",
    "    for mo in re.finditer(tok_regex, newick_str):\n",
    "        kind = mo.lastgroup\n",
    "        value = mo.group()\n",
    "        if kind == 'SKIP':\n",
    "            continue\n",
    "        elif kind == 'MISMATCH':\n",
    "            raise SyntaxError(f\"Newick Grammar Violation: Illegal character '{value}' in '{newick_str}'\")\n",
    "        tokens.append((kind, value))\n",
    "    return tokens\n",
    "\n",
    "# --- VALIDATOR FOR INFO SUBSTRINGS THAT MUST FIT INTO THE PATTERN ---\n",
    "# --- info = NodeB_3_x_2[a=1,b=-1,x=2,y=4,r=3.2], 22 tokens\n",
    "def examine_subsequence17(tokens, j):\n",
    "    #print(\"\\nexamine_subsequence\")\n",
    "    # Every info must begin with a letter, whose index is 7.\n",
    "    tracker = [\"LETTERS\"]\n",
    "    tracker2 = \"7\"\n",
    "    if tokens[j + 1][0] == 'LBRACKET':\n",
    "        tracker.append('LBRACKET')\n",
    "        tracker2 += \"3\"\n",
    "    if tokens[j + 2][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 3][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 4][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 5][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 6][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 7][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 8][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 9][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 10][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 11][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 12][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 13][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 14][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 15][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 16][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 17][0] == 'COMMA':\n",
    "        tracker.append('COMMA')\n",
    "        tracker2 += \"2\"\n",
    "    if tokens[j + 18][0] == 'LETTERS':\n",
    "        tracker.append('LETTERS')\n",
    "        tracker2 += \"7\"\n",
    "    if tokens[j + 19][0] == 'EQUALS':\n",
    "        tracker.append('EQUALS')\n",
    "        tracker2 += \"5\"\n",
    "    if tokens[j + 20][0] == 'NUMBER':\n",
    "        tracker.append('NUMBER')\n",
    "        tracker2 += \"6\"\n",
    "    if tokens[j + 21][0] == 'RBRACKET':\n",
    "        tracker.append('RBRACKET')\n",
    "        tracker2 += \"4\"\n",
    "    #print(f\"Tokens: {tracker}\")\n",
    "    #print(f\"tracker2: {tracker2}\")\n",
    "    master_pattern = \"7375627562756275627564\"\n",
    "                    # 7375627562756275627564\n",
    "    #print(f\"master pattern:  {master_pattern}\")\n",
    "    if tracker2 == master_pattern:\n",
    "        return True, \"Valid Newick sub-string.\"\n",
    "    else:\n",
    "        return False, \"Invalid Newick sub-string.\"\n",
    "\n",
    "\n",
    "def simplify17(text):\n",
    "    # Assuming that all infos of a string have been declared correct,\n",
    "    # the string is further tested for the balance of parentheses.\n",
    "    # print(\"\\nsimplify(text)\")\n",
    "    # print(f\"text: {text}\")\n",
    "    # Detect a pattern on the model  info = NodeB_3_x_2[a=2,b=2,x=3,y=7,r=2.3]\n",
    "    #info_words = r'[\\a-zA-Z_0-9_[_=_,\\] ]+'\n",
    "    #info_words = r'[a-zA-Z_][a-zA-Z_0-9_]*\\[x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]$'\n",
    "    info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "    starts = []\n",
    "    groups = []\n",
    "    for match in re.finditer(info_words, text):\n",
    "        #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "        #print(f\"    starts at index: {match.start()}\")\n",
    "        starts.append(match.start())\n",
    "        groups.append(match.group())\n",
    "    number_of_infos = len(starts)\n",
    "    #print(f\"number_of_infos = {number_of_infos}\")\n",
    "    #print(f\"starts of infos: {starts}\")\n",
    "    #print(f\"groups or infos: {groups}\")\n",
    "    new_s = text\n",
    "    # All infos are replaced by the dumb variable n\n",
    "    for j in range(number_of_infos - 1, -1, -1):\n",
    "        #print(f\"start_of_info[{j}]:  {starts[j]},  len(groups[{j}]): {len(groups[j])}\")\n",
    "        new_s = replace_strig_of_length17(new_s, \"n\", starts[j], len(groups[j]))\n",
    "        #print(f\"new string = '{new_s}'\")\n",
    "    # Balance of parentheses is inquired.\n",
    "    new_s = new_s.replace(\"n,\", \"\")\n",
    "    new_s = new_s.replace(\"n\", \"\")\n",
    "    #print(f\"Simplified string = {new_s} \")\n",
    "    l = len(new_s)\n",
    "    #print(f\"Length of Simplified string = {l}\")\n",
    "    for i in range(l):\n",
    "      new_s = new_s.replace(\"()\", \"\")\n",
    "    final_length = len(new_s)\n",
    "    # print(f\"Final string = {new_s}, final_length = {final_length}\")\n",
    "    if final_length == 0:\n",
    "        #print(\"Valid string at simplify\")\n",
    "        return True,  \"Valid Newick string.\"\n",
    "    else:\n",
    "        #print(\"Invalid string at simplify\")\n",
    "        return False, \"Invalid Newick string.\"\n",
    "\n",
    "\n",
    "\n",
    "def validate_newick_syntax17(newick_str):\n",
    "    \"\"\"\n",
    "    Validates if a Newick string is syntactically correct.\n",
    "    This function checks for balanced parentheses, proper comma usage for children,\n",
    "    and correct metadata format, without building a tree object.\n",
    "    \"\"\"\n",
    "    #print(\"Validating Newick syntax\")\n",
    "    tokens = []\n",
    "    try:\n",
    "        tokens = tokenize_newick17(newick_str)\n",
    "        #print(f\"newick_str: {newick_str}\")\n",
    "        #print(f\"Tokens: {tokens}\")\n",
    "    except SyntaxError as e:\n",
    "        return False, str(e)\n",
    "    if not tokens:\n",
    "        return False, \"Empty Newick string.\"\n",
    "    l = len(tokens)\n",
    "    #print(f\"Length of tokens: {l}\")\n",
    "    j = 0\n",
    "    indexes_of_tokens = []\n",
    "    if l == 1:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS': # NodeA\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif l == 2:\n",
    "        kind, value = tokens[j]\n",
    "        if kind == 'LETTERS' and tokens[1][0] == 'SEMICOLON': #NodeC;\n",
    "            return True, \"Valid Newick string.\"\n",
    "        else:\n",
    "            return False, \"Invalid Newick string.\"\n",
    "    elif 3 < l < 22: # No redundancy is assumed\n",
    "        return False, \"Invalid Newick string.\"\n",
    "    elif l >= 22:\n",
    "        #print(f\"Length of string: {l}\")\n",
    "        for j in range(l-20):\n",
    "            #print(f\"tokens[{j}]: {tokens[j]}\")\n",
    "            #print(f\"tokens[{j+1}]: {tokens[j+1]}\")\n",
    "            if tokens[j][0] == 'LETTERS' and tokens[j+1][0] == 'LBRACKET':\n",
    "                #print(f\"Starting index : {j}\".format(j=j))\n",
    "                indexes_of_tokens.append(j)\n",
    "                # info that starts at j is examined for correctness\n",
    "                is_valid17, message17 = examine_subsequence17(tokens, j)\n",
    "                if is_valid17:\n",
    "                    pass\n",
    "                else:\n",
    "                    return False, \"Invalid Newick string.\"\n",
    "        #print(f\"Starting indexes of tokens: {indexes_of_tokens }\")\n",
    "    is_valid17, message17 = simplify17(newick_str)\n",
    "    if is_valid17:\n",
    "        return True, \"Valid morpho-tree.\"\n",
    "    else:\n",
    "        return False, \"Invalid morpho-tree.\"\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Generate a sample of Newick strings that are immediately tested by a validator\n",
    "def test_validator17(max_depth, max_numb_children, max_node_radius):\n",
    "    # Specific test\n",
    "    model = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]\"\n",
    "    #print(\"Simple test\")\n",
    "    #print(f\"Model of Newick String: {model}\")\n",
    "    is_valid, message = validate_newick_syntax17(model)\n",
    "    #print(f\"message: {message}\")\n",
    "    invalid_string = \"NodeB_3_x_2[a=-1,b=0,x=-4,y=5,r=1.2]]\"\n",
    "    #print(f\"\\nInvalid_string: {invalid_string}\")\n",
    "    is_valid, message = validate_newick_syntax17(invalid_string)\n",
    "    #print(f\"message: {message}\")\n",
    "    #print(\"\\n\")\n",
    "\n",
    "\n",
    "    #print(\"\\nMassive test of Newick formulas encoding for morpho-trees:\\n\" + \"=\"*47)\n",
    "    max_depth = 7\n",
    "    max_numb_children = 3\n",
    "    #print(f\"max_depth: {max_depth}\")\n",
    "    #print(f\"max_numb_children: {max_numb_children} \\n\"+ \"=\"*20)\n",
    "    for i in range(1, 100):\n",
    "        p, s = complete_tree_generator17(max_depth, max_numb_children, max_node_radius)\n",
    "        #print(f\"pattern {p}\")\n",
    "        #print(f\"Morpho-tree {i}: {s}\")\n",
    "        is_valid, message = validate_newick_syntax17(s)\n",
    "        #print(f\"is valid at main : {is_valid}, message: {message}\")\n",
    "        #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "        #print(f\"Morpho-tree {i}:: {status} - {message}\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# ======== DRAWING ================\n",
    "\n",
    "def get_illuminated_area17(x,y,r):\n",
    "    \"\"\"\n",
    "      The illuminated area enclosess all unitary squares that intersetcs the circles of illumination.\n",
    "      Each square is denoted by its left botton corner. These will be found in the set illuminated_coords.\n",
    "    \"\"\"\n",
    "    #print(\"get_illuminated_area17\")\n",
    "    #print(f\"x: {x}, y: {y}, r: {r}\")\n",
    "    illuminated_coords = set()\n",
    "\n",
    "\n",
    "    for xi,yi,ri in zip(x,y,r):\n",
    "        circle_center_x = xi + 0.5\n",
    "        circle_center_y = yi + 0.5\n",
    "        r_sq = ri ** 2\n",
    "        # 1. Add the cell containing the center of the circle\n",
    "        # This covers the case of small circles not intersecting grid lines.\n",
    "        illuminated_coords.add((math.floor(circle_center_x), math.floor(circle_center_y)))\n",
    "\n",
    "        # 2. Horizontal Scan: Check intersections with horizontal grid lines\n",
    "        # Iterate y_line from floor(cy - r) to ciel(cy + r)\n",
    "        # These y_line values represent the y-coordinates of horizontal grid lines.\n",
    "        for y_line in range(math.floor(circle_center_y - ri)-1,\n",
    "                            math.ceil(circle_center_y + ri) + 1):\n",
    "            dy = y_line - circle_center_y\n",
    "            discriminant = r_sq - dy * dy\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dx = math.sqrt(discriminant)\n",
    "                x_min_intersect = circle_center_x - dx\n",
    "                x_max_intersect = circle_center_x + dx\n",
    "\n",
    "                # For each integer x-coordinate that the horizontal segment crosses:\n",
    "                # Add the cells whose bottom-left corner's x-coordinate is in this range.\n",
    "                # This covers cells whose top edge is y_line AND cells whose bottom edge is y_line.\n",
    "                for ix in range(math.floor(x_min_intersect), math.floor(x_max_intersect) + 1):\n",
    "                    illuminated_coords.add((ix, y_line))\n",
    "                    illuminated_coords.add((ix, y_line - 1))\n",
    "\n",
    "        # 3. Vertical Scan: Check intersections with vertical grid lines\n",
    "        # Iterate x_line from floor(cx - r) to ciel(cx + r)\n",
    "        # These x_line values represent the x-coordinates of vertical grid lines.\n",
    "        for x_line in range(math.floor(circle_center_x - ri)-1,\n",
    "                            math.ceil(circle_center_x + ri) + 1):\n",
    "            dx = x_line - circle_center_x\n",
    "            discriminant = r_sq - dx * dx\n",
    "\n",
    "            if discriminant >= 0:\n",
    "                dy = math.sqrt(discriminant)\n",
    "                y_min_intersect = circle_center_y - dy\n",
    "                y_max_intersect = circle_center_y + dy\n",
    "\n",
    "                # For each integer y-coordinate that the vertical segment crosses:\n",
    "                # Add the cells whose bottom-left corner's y-coordinate is in this range.\n",
    "                # This covers cells whose right edge is x_line AND cells whose left edge is x_line.\n",
    "                for iy in range(math.floor(y_min_intersect), math.floor(y_max_intersect) + 1):\n",
    "                    # Cell (x_line, iy) - its left edge is at x_line\n",
    "                    illuminated_coords.add((x_line, iy))\n",
    "                    # Cell (x_line - 1, iy) - its right edge is at x_line\n",
    "                    illuminated_coords.add((x_line - 1, iy))\n",
    "    # print(f\"illuminated_coords  {illuminated_coords}\")\n",
    "\n",
    "    return illuminated_coords\n",
    "\n",
    "\n",
    "def plot_illuminated_area_newick17(ax, illuminated_coords, title, color='blue', alpha=0.1):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "    #print(f\"min_x: {min_x}, max_x: {max_x}, min_y: {min_y}, max_y: {max_y}\")\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "\n",
    "\n",
    "def plot_tree_nodes_and_their_diffusion_circles17(x,y,r, ax, tree_color='lightblue', diff_color='red'):\n",
    "  for xi,yi,ri in zip(x,y,r):\n",
    "    # Plot the square representing the cell\n",
    "    rect = patches.Rectangle((xi, yi), 1, 1, facecolor=tree_color, edgecolor='black', linewidth=1, zorder=1)\n",
    "    ax.add_patch(rect)\n",
    "    #node_label_part = node.value.split('_')[-1] if '_' in node.value else node.value\n",
    "    #ax.text(xi + 0.5, yi + 0.5, node_label_part, ha='center', va='center', color='darkblue', fontsize=7, zorder=2)\n",
    "\n",
    "    # Plot the circle representing the radius of influence\n",
    "    circle = patches.Circle((xi + 0.5, yi + 0.5), ri, color='red', alpha=0.1, zorder=2)\n",
    "    ax.add_patch(circle)\n",
    "\n",
    "def find_leaves(newick_string):\n",
    "    \"\"\"Detect leaves in a Newick string.\"\"\"\n",
    "    #print(\"\\n\\nfind_leaves\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    # Detection of leaves.\n",
    "    # Dectect substrings of the form \"(...)\" but without interior parentheses.\n",
    "    pattern_leaves = r'[(][^()]*[)]'\n",
    "    # Leaves may come grouped by bouquets\n",
    "    bouquets_of_leaves = re.findall(pattern_leaves, newick_string )\n",
    "    #print(f\"Bouquets_of_leaves: {bouquets_of_leaves}\")\n",
    "    all_leaves = []\n",
    "    # Descipher each leaf and find the father\n",
    "    for bouquet_of_leaves in bouquets_of_leaves:\n",
    "        bouquet_of_leaves = bouquet_of_leaves[1:-1]\n",
    "        leaves = detect_all_groups17(bouquet_of_leaves)\n",
    "        for loaf in leaves:\n",
    "          loaf = loaf.replace(\" \", \"\")\n",
    "          all_leaves.append(loaf)\n",
    "    return all_leaves\n",
    "\n",
    "\n",
    "\n",
    "def connect_leaves_to_father17(newick_string, ax, tree_color='lightblue', diff_color='red'):\n",
    "    \"\"\"Draw lines connecting leaves to fathers\"\"\"\n",
    "\n",
    "    #print(\"\\n\\nconnect_leaves_to_father17\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "    all_leaves = find_leaves(newick_string)\n",
    "    for leaf in all_leaves:\n",
    "        [al,bl,xl,yl,rl] = extract_info17(leaf)\n",
    "        #print(f\"Info: a: {al}, b: {bl}, x: {xl}, y: {yl}, r: {rl}\")\n",
    "\n",
    "        # Task: Find the father of the leaf.\n",
    "        # It is the node after the last leaf\n",
    "        # Example:\n",
    "        # (Node9[x=-11,y=19.7,r=12.4567],Node8[x=0,y=7,r=17],Node7[x=6,y=17,r=9])Node6[x=17,y=9,r=20]\n",
    "        # The father of Node9, Node8, and Node7 is Node 6.\n",
    "        # The father of a node is found after the first unbalanced right parenthesis.\n",
    "        index_nex_right_par = newick_string.find(\")\", newick_string.find(leaf))\n",
    "        father_with_tail = newick_string[index_nex_right_par+1:]\n",
    "        father_group = detect_all_groups17(father_with_tail)\n",
    "        if father_group:\n",
    "          [af,bf,xf,yf,rf]  = extract_info17(father_group[0])\n",
    "          #father_center = (xf,yf)\n",
    "          ax.plot([xl + 0.5, xf + 0.5], [yl + 0.5, yf + 0.5], 'k--', linewidth=0.8, zorder = 3)\n",
    "    # Leaves are erased: each leave is replaced by \"\"\n",
    "    for leaf in all_leaves:\n",
    "          #print(f\"leaf to be erased: {leaf}\")\n",
    "          newick_string = newick_string.replace(leaf + \",\", \"\")\n",
    "          newick_string = newick_string.replace(leaf, \"\")\n",
    "          #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    #print(f\"Newick String without leaves: {newick_string}\")\n",
    "    #is_valid, message = validate_newick_syntax17(newick_string)\n",
    "    #print(f\"is valid at connect_leaves_to_father17(...) : {is_valid}, message: {message}\")\n",
    "    #status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    #print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    groups = detect_all_groups17(newick_string)\n",
    "    number_of_groups = len(groups)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_links17(newick_string, ax,   diff_color='red' ):\n",
    "    \"\"\"Draw lines connecting children to father.\n",
    "       1. Each leaf is connected to its father,\n",
    "          and the corresponding stroke is plotted.\n",
    "       2. Leaves are erased.\n",
    "       3. New leaves are detected and connected to their father.\n",
    "       4, And so on.\n",
    "       \"\"\"\n",
    "\n",
    "    #print(\"draw_tree_links17\")\n",
    "    #print(f\"Newick String: {newick_string}\")\n",
    "    length_string = len(newick_string)\n",
    "    #print(f\"length_string: {length_string}\")\n",
    "    groups = detect_all_groups17(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    # Leaves are recursively found and connected to their father.\n",
    "    counter_of_trials = 0\n",
    "    while number_of_groups > 1:\n",
    "        #print(\"\\n\\ndraw_tree_links17\")\n",
    "        #print(f\"Newick String: {newick_string}\")\n",
    "\n",
    "        newick_string, number_of_groups = connect_leaves_to_father17(newick_string, ax, tree_color='lightblue', diff_color='red')\n",
    "        counter_of_trials = counter_of_trials + 1\n",
    "        if counter_of_trials > length_string:\n",
    "          break\n",
    "    # The root is detected and marked with a cross\n",
    "    groups = detect_all_groups17(newick_string)\n",
    "    #print(f\"Groups: {groups}\")\n",
    "    number_of_groups = len(groups)\n",
    "    #print(f\"number_of_groups = {number_of_groups}\")\n",
    "    # Mark the root with a red cross\n",
    "    if number_of_groups >= 1:\n",
    "      [a0,b0,x0,y0,r0] = extract_info17(groups[-1])\n",
    "      #print(f\"Origin: a: {a0}, b: {b0}, x: {x0}, y: {y0}, r: {r0}\")\n",
    "      ax.plot([x0, x0 +1 ], [y0+ 0.5, y0+ 0.5],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "      ax.plot([x0 + 0.5, x0 +0.5], [y0, y0+ 1],   color = 'red', linewidth=0.8, zorder = 3)\n",
    "    return newick_string, number_of_groups\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def draw_tree_newick17(newick_string, title):\n",
    "    #print(\"\\n=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    #print(\"=========== DRAWING=======\\n\")\n",
    "    a,b,x,y,r = extract_all_infos17(newick_string)\n",
    "    fig, ax = plt.subplots(figsize=(7, 17))\n",
    "    ax.set_aspect('equal')\n",
    "    plot_tree_nodes_and_their_diffusion_circles17(x,y,r, ax, tree_color='lightgreen', diff_color='red')\n",
    "\n",
    "    # Illuminated area is calculated\n",
    "    illuminated_coords = get_illuminated_area17(x,y,r)\n",
    "    #print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "    #print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "    # Tree is drawn\n",
    "    #title = \"morpho-tree: lightgreen, illuminated circles: red, illuminated Area: lightblue\"\n",
    "    plot_illuminated_area_newick17(ax, illuminated_coords, title, color='blue', alpha=0.1)\n",
    "    # Lines that define the tree are added\n",
    "    draw_tree_links17(newick_string, ax, diff_color='red'  )\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "    return illuminated_coords\n",
    "\n",
    "def generate_and_test_trimmed_target_morpho_tree17(ga_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    target_tree = complete_tree_generator17(ga_params['max_depth'], ga_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #newick_tree = complete_tree_generator17(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    # Trim tree\n",
    "    number_of_branch_deletions = 5\n",
    "    for i in range(number_of_branch_deletions):\n",
    "         target_tree = deletion_of_branch17(target_tree)\n",
    "    # Validate tree\n",
    "    is_valid, message = validate_newick_syntax17(target_tree)\n",
    "    illuminated_coords = set()\n",
    "\n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos17(target_tree)\n",
    "        illuminated_coords = get_illuminated_area17(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "\n",
    "    return target_tree, illuminated_coords\n",
    "\n",
    "\n",
    "# Generate the  Newick string of a morpho-tree, test and draw it\n",
    "# def generate_test_and_draw_morpho_tree(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] ):\n",
    "def generate_and_test_morpho_tree17(ga_params):\n",
    "    #print(\"generate_and_test_morpho_tree( ga_params)\"\"\n",
    "\n",
    "    newick_tree = complete_tree_generator17(ga_params['max_depth'], ga_params['max_number_children'], ga_params['max_node_radius']) #line 264\n",
    "    #newick_tree = complete_tree_generator17(max_depth, max_numb_children, max_node_radius) #line 264\n",
    "    is_valid, message = validate_newick_syntax17(newick_tree)\n",
    "    illuminated_coords = set()\n",
    "\n",
    "    if is_valid:\n",
    "        a,b,x,y,r = extract_all_infos17(newick_tree)\n",
    "        illuminated_coords = get_illuminated_area17(x,y,r)\n",
    "    else:\n",
    "      print(\"Newick string is not valid\")\n",
    "    \"\"\"\n",
    "    is_valid, message = validate_newick_syntax17(newick_tree)\n",
    "    print(f\"is the Newick String valid?: {is_valid}, message: {message}\")\n",
    "    status = \"✅ VALID\" if is_valid else \"❌ INVALID\"\n",
    "    print(f\"Is the Newick string a valid morpho-tree? : {status} - {message}\")\n",
    "    \"\"\"\n",
    "    return newick_tree, illuminated_coords\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# --- Evolutionary functions ---\n",
    "\n",
    "def create_initial_population_newick17(pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],  max_node_radius=ga_params['max_node_radius'] ):\n",
    "    population = []\n",
    "    for _ in range(pop_size):\n",
    "        new_tree = complete_tree_generator17(max_depth, max_children, max_node_radius)\n",
    "        population.append(new_tree)\n",
    "    return population\n",
    "\n",
    "def get_illuminated_coordinates17(newick_string):\n",
    "  \"\"\"Coordinates of illuminated cells are extracted from the Newick string\"\"\"\n",
    "  a,b,x,y,r = extract_all_infos17(newick_string)\n",
    "  # Illuminated area is calculated\n",
    "  illuminated_coords = get_illuminated_area17(x,y,r)\n",
    "  ##print(f\"Illuminated cells: {illuminated_coords}\")\n",
    "  ##print(f\"Number of illuminated cells: {len(illuminated_coords)}\")\n",
    "  return illuminated_coords\n",
    "\n",
    "def calculate_fitness_illumination17(candidate_tree_root, target_illuminated_area):\n",
    "    \"\"\"\n",
    "    Calculates fitness based on the symmetric difference between illuminated areas.\n",
    "    Fitness is 1.0 for a perfect match, and decreases as symmetric difference increases.\n",
    "    Reuse of a previous code by Gemini 2.5 Flash\n",
    "    \"\"\"\n",
    "    if candidate_tree_root is None:\n",
    "        # If the tree generation failed, assign a very low fitness\n",
    "        return 0.0001 # A small non-zero value to avoid division by zero issues later\n",
    "\n",
    "    candidate_illuminated_area = get_illuminated_coordinates17(candidate_tree_root)\n",
    "\n",
    "    # Symmetric difference: (A U B) - (A intersect B)\n",
    "    # Or, the elements in A but not B, plus elements in B but not A.\n",
    "    symmetric_difference = candidate_illuminated_area.symmetric_difference(target_illuminated_area)\n",
    "\n",
    "    # Union size: used for normalization\n",
    "    union_size = len(candidate_illuminated_area.union(target_illuminated_area))\n",
    "\n",
    "    if union_size == 0:\n",
    "        if not target_illuminated_area and not candidate_illuminated_area:\n",
    "            return 1.0 # Perfect match if both are empty\n",
    "        else:\n",
    "            return 0.0001 # Should not happen if target is non-empty, but handles cases where both are empty but expected non-empty\n",
    "\n",
    "    # Fitness is 1.0 - (len(symmetric_difference) / union_size)\n",
    "    # This gives 1.0 for a perfect match (symmetric_difference_area = 0)\n",
    "    # and approaches 0.0 for large differences.\n",
    "    fitness = 1.0 - (len(symmetric_difference) / union_size)\n",
    "    return max(0.0001, fitness) # Ensure fitness is always positive\n",
    "\n",
    "\n",
    "def select_parents_newick(population, fitness_scores, num_parents):\n",
    "    parents = []\n",
    "    # Use roulette wheel selection or tournament selection. Tournament is generally robust.\n",
    "    for _ in range(num_parents):\n",
    "        tournament_size = min(5, len(population))\n",
    "        if tournament_size == 0:\n",
    "            break\n",
    "        tournament_candidates = random.sample(list(zip(population, fitness_scores)), tournament_size)\n",
    "        winner = max(tournament_candidates, key=lambda x: x[1])[0]\n",
    "        parents.append(winner)\n",
    "    return parents\n",
    "\n",
    "def find_recombinant_branch17(newick_string):\n",
    "  # A full functional branch is recognized because it is enclosed by ()\n",
    "  # and everything inside is full functional.\n",
    "  # We simply keep an accounting of parentheses pairing\n",
    "  #print(\"\\nfind_branch\")\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  pattern_left_par = r'[(]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_left_par, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  start_idx = starts[start_idx]\n",
    "  #print(f\"start_idx: {start_idx}\")\n",
    "  tail = newick_string[start_idx:]\n",
    "  #print(f\"tail: {tail}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  for i in range(len(tail)):\n",
    "    if tail[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if tail[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = tail[: i+1]\n",
    "      #print(f\"Functional branch: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_position_branch_recombination17(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_position_branch_recombination17\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  branch1 = find_recombinant_branch17(newick_string1)\n",
    "  branch2 = find_recombinant_branch17(newick_string2)\n",
    "  #print(f\"\\nbranch1: {branch1}\")\n",
    "  #print(f\"branch2: {branch2}\")\n",
    "  # Branches are interchanged\n",
    "  newick_string1 = newick_string1.replace(branch1, branch2)\n",
    "  newick_string2 = newick_string2.replace(branch2, branch1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "def newick_leaves_recombination17(newick_string1, newick_string2):\n",
    "  \"\"\" Recombination of full functional branches\"\"\"\n",
    "  #print(\"\\nnewick_leaves_recombination17\")\n",
    "  #print(f\"newick_string1: {newick_string1}\")\n",
    "  #print(f\"newick_string2: {newick_string2}\")\n",
    "  leaves1 = find_leaves(newick_string1)\n",
    "  leaves2 = find_leaves(newick_string2)\n",
    "  if not leaves1 or not leaves2:\n",
    "    return newick_string1, newick_string2\n",
    "  # Select a leaf at random from each tree\n",
    "  leaf1 = random.choice(leaves1)\n",
    "  leaf2 = random.choice(leaves2)\n",
    "  #print(f\"\\nleaf1: {leaf1}\")\n",
    "  #print(f\"leaf2: {leaf2}\")\n",
    "  # Leaves are interchanged\n",
    "  newick_string1 = newick_string1.replace(leaf1, leaf2)\n",
    "  newick_string2 = newick_string2.replace(leaf2, leaf1)\n",
    "  return newick_string1, newick_string2\n",
    "\n",
    "\n",
    "def find_occupied_squares17(newick_string):\n",
    "    \"\"\"Detects all the occupied squares in a tree\"\"\"\n",
    "    occupied_squares_set = set()\n",
    "    groups = detect_all_groups17(newick_string)\n",
    "    for group in groups:\n",
    "        [a,b,x,y,r] = extract_info17(group)\n",
    "        occupied_squares_set.add((x, y))\n",
    "    return occupied_squares_set\n",
    "\n",
    "def newick_mutation_of_radius17(newick_string):\n",
    "  # The pattern of the radius of illumination, r = 0.2\n",
    "  pattern_r = r'r=-?[0-9]+(?:\\.[0-9]+)?'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(pattern_r, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  l = len(groups[start_idx])\n",
    "  #print(f\"l: {l}\")\n",
    "  # Select a new radius\n",
    "  new_radius = random.uniform(0.5, 2)\n",
    "  #print(f\"new_radius: {new_radius}\")\n",
    "\n",
    "  new_info = \"r=\" + str(new_radius)\n",
    "  #print(f\"new_info: {new_info}\")\n",
    "  # Replace the info\n",
    "  mutated_newick_string = replace_str_subsequence17(newick_string, starts[start_idx], starts[start_idx] + l, new_info)\n",
    "  #print(f\"newick_string: {newick_string}\")\n",
    "  return mutated_newick_string\n",
    "\n",
    "\n",
    "def newick_find_insertion_patterns17(newick_string):\n",
    "  \"\"\" All insertion patterns are found and one is chosen at random\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][])]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  return group, start\n",
    "\n",
    "\n",
    "def insertion_of_branch17(newick_string):\n",
    "  #original_newick_string = newick_string\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  # A group together its start site are elected\n",
    "  group, start =  newick_find_insertion_patterns17(newick_string)\n",
    "  # String to be inserted\n",
    "  # child_string = \"(Node17[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.83],Node17[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07])Node1[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=0.95]\"\n",
    "  child_string = complete_tree_generator17(max_depth = 2, max_numb_children = 2, max_node_radius= 1.5)\n",
    "  if group:\n",
    "    #print(f\"Group (main): {group}\")\n",
    "    #print(f\"Start (main): {start}\")\n",
    "    # Does the group have children?\n",
    "    #char_before = newick_string[start-1]\n",
    "    #print(f\"char_before: {char_before}\")\n",
    "\n",
    "    newick_string = newick_string.replace(\"])\", \"],\" + child_string + \")\")\n",
    "  else:\n",
    "    # a tree is given as a child to the root\n",
    "    newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "  # Cosmetics\n",
    "  #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {original_newick_string}\")\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_left_parenthesis_17(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns (N  are found and one is chosen at random\n",
    "      The new info will be inserted to the right of the parenthesis\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[(][N]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group170: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center17(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares17(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator17(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info\n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \"(\" + child_string +  \")\" + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def select_one_insertion_pattern_comma_17(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All  commas are found and one is chosen at random,\n",
    "  the child will be inserted after the comma\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][,]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group170: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center17(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares17(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator17(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info\n",
    "\n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+2] + \"(\" + child_string + \")\" + newick_string[start+2:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "def select_one_insertion_pattern_parentheses_17(newick_string, counter, max_illumination_radius):\n",
    "  \"\"\" All insertion patterns ]) are found and one is chosen at random\n",
    "      The new info will be inserted between ] and ) as a brother\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  insertion_pattern = r'[]][)]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(insertion_pattern, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_patterns = len(starts)\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  start_idx = 0\n",
    "  if groups:\n",
    "    # Select a start index at random\n",
    "    start_idx = random.randint(0, number_of_patterns-1)\n",
    "    group = groups[start_idx]\n",
    "    start = starts[start_idx]\n",
    "    #print(f\"group: {group}\")\n",
    "    #print(f\"start: {start}\")\n",
    "  else:\n",
    "    group = \"\"\n",
    "    start = 0\n",
    "  #print(f\"Group170: {group}\")\n",
    "  # String to be inserted\n",
    "  father_center = find_father_center17(newick_string, start)\n",
    "  #print(f\"Father center: {father_center}\")\n",
    "  occupied_squares_set = find_occupied_squares17(newick_string)\n",
    "  info, occupied_squares_set = node_info_generator17(father_center, counter,  occupied_squares_set, max_illumination_radius)\n",
    "  info = info.replace(\"()\", \"\")\n",
    "  child_string = info\n",
    "  if group:\n",
    "      #print(f\"Group (main): {group}\")\n",
    "      #print(f\"Start (main): {start}\")\n",
    "      # The child string is inserted between ] and ) at place start\n",
    "      #print(f\"Child string: {child_string}\")\n",
    "      #print(f\"Newick string before insertion_point: {newick_string[:start+1]}\")\n",
    "      #print(f\"Newick string after insertion_point: {newick_string[start+2:]}\")\n",
    "      newick_string = newick_string[:start+1] + \",\" + child_string + newick_string[start+1:]\n",
    "      #print(f\"Newick string after insertion****: {newick_string}\")\n",
    "  else:\n",
    "      # a node in the info is given as a child to the root\n",
    "      newick_string = \"(\" + child_string + \")\" + newick_string\n",
    "    # Cosmetics\n",
    "    #newick_string = newick_string.replace(\",,\", \",\")\n",
    "\n",
    "    # Comparison\n",
    "    #print(f\"Original Newick string: {original_newick_string}\")\n",
    "    #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def insertion_of_leaf17(newick_string, counter, max_illumination_radius):    #original_newick_string = newick_string\n",
    "    \"\"\" All insertion patterns are found and one is chosen at random\n",
    "        for the new info to be inserted \"\"\"\n",
    "    case = random.choice([1, 2, 3])  # Randomly choose between three insertion methods\n",
    "    match case:\n",
    "        case 1:\n",
    "            newick_string = select_one_insertion_pattern_comma_17(newick_string, counter, max_illumination_radius)\n",
    "        case 2:\n",
    "            newick_string = select_one_insertion_pattern_parentheses_17(newick_string, counter, max_illumination_radius)\n",
    "        case 3:\n",
    "            newick_string = select_one_insertion_pattern_left_parenthesis_17(newick_string, counter, max_illumination_radius)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    newick_string = newick_string.replace(\" \", \"\")\n",
    "    newick_string = newick_string.replace(\"()\", \"\")\n",
    "    return newick_string\n",
    "\n",
    "\n",
    "\n",
    "def deletion_of_leaf17(newick_string):\n",
    "    \"\"\"A leaf is deleted at random from the Newick string.\n",
    "        If there are no leaves, the original string is returned.\"\"\"\n",
    "    # All leaves are detected\n",
    "    leaves = find_leaves(newick_string)\n",
    "    if not leaves:\n",
    "        return newick_string  # No leaves to delete\n",
    "    # Select a leaf at random\n",
    "    leaf_to_delete = random.choice(leaves)\n",
    "    # Remove the selected leaf from the Newick string\n",
    "    newick_string = newick_string.replace(leaf_to_delete, \"\")\n",
    "    # Clean up any potential formatting issues (like double commas)\n",
    "    newick_string = newick_string.replace(\",,\", \",\")\n",
    "    newick_string = newick_string.replace(\",)\", \")\")\n",
    "    newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "    return newick_string\n",
    "\n",
    "def find_branch17(newick_string, final_index):\n",
    "  initial_segment = newick_string[:final_index]\n",
    "  #print(f\"initial_segment: {initial_segment}\")\n",
    "  # Balance accounting\n",
    "  counter_of_pars = 0\n",
    "  branch = \"\"\n",
    "  for i in range(len(initial_segment)-1,-1,-1):\n",
    "    if initial_segment[i] == \"(\":\n",
    "      counter_of_pars = counter_of_pars + 1\n",
    "    if initial_segment[i] == \")\":\n",
    "      counter_of_pars = counter_of_pars - 1\n",
    "    if counter_of_pars == 0:\n",
    "      branch = initial_segment[i:final_index+1]\n",
    "      #print(f\"Branch to be deleted: {branch}\")\n",
    "      break\n",
    "  return branch\n",
    "\n",
    "\n",
    "def newick_find_all_groups17(newick_string):\n",
    "  \"\"\" All groups are found and one is chosen at random and returned\"\"\"\n",
    "  # The pattern of groups on the image of\n",
    "  # Node4[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.07]\n",
    "  info_words =  r'[a-zA-Z_0-9_]*\\[a=-?[0-9]+(?:\\.[0-9]+)?,b=-?[0-9]+(?:\\.[0-9]+)?,x=-?[0-9]+(?:\\.[0-9]+)?,y=-?[0-9]+(?:\\.[0-9]+)?,r=-?[0-9]+(?:\\.[0-9]+)?\\]'\n",
    "  starts = []\n",
    "  groups = []\n",
    "  for match in re.finditer(info_words, newick_string):\n",
    "      #print(f\"Match: '{match.group()}' starts at index: {match.start()}\")\n",
    "      starts.append(match.start())\n",
    "      groups.append(match.group())\n",
    "  number_of_infos = len(starts)\n",
    "  if number_of_infos == 0: # The root is alone\n",
    "    return newick_string, 0\n",
    "  #print(f\"number_of_infos = {number_of_infos}\")\n",
    "  #print(f\"starts: {starts}\")\n",
    "  #print(f\"groups: {groups}\")\n",
    "  # Select a start index at random\n",
    "  start_idx = random.randint(0, number_of_infos-1)\n",
    "  #print(f\"selected start_idx: {start_idx}\")\n",
    "  return groups[start_idx], starts[start_idx]\n",
    "\n",
    "\n",
    "def deletion_of_branch17(newick_string ):\n",
    "  group, start =  newick_find_all_groups17(newick_string)\n",
    "  #print(f\"Group (main): {group}\")\n",
    "  #print(f\"Start (main): {start}\")\n",
    "  # Does the group have children?\n",
    "  char_before = newick_string[start-1]\n",
    "  #print(f\"char_before: {char_before}\")\n",
    "  if char_before ==  \")\":\n",
    "    #print(\"The group has children\")\n",
    "    #find branch\n",
    "    final_index = start-1\n",
    "    branch = find_branch17(newick_string, final_index+1)\n",
    "\n",
    "    branch_and_father = branch + group\n",
    "    #print(f\"  Branch and father to be deleted: {branch_and_father}\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(branch_and_father , \"\")\n",
    "  else:\n",
    "    #print(\"The group has no children\")\n",
    "    #delete group\n",
    "    newick_string = newick_string.replace(group, \"\")\n",
    "\n",
    "  # Cosmetics\n",
    "  newick_string = newick_string.replace(\",,\", \",\")\n",
    "  newick_string = newick_string.replace(\",)\", \")\")\n",
    "  newick_string = newick_string.replace(\"(,\", \"(\")\n",
    "  newick_string = newick_string.replace(\" \", \"\")\n",
    "  # Comparison\n",
    "  #print(f\"Original Newick string: {newick_string}\")\n",
    "  l = len(newick_string)\n",
    "  #print(f\"Length of newick_string: {l}\")\n",
    "  if l == 0 :\n",
    "     newick_string = \"Node_0[a=0,b=0,x=0,y=0,r=1]\"\n",
    "  #print(f\"Final Newick_string: {newick_string}\")\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def newick_mutation_branches17(newick_string):\n",
    "  # Mutation of radius of illumination and of complete branches\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    newick_string = newick_mutation_of_radius17(newick_string)\n",
    "    newick_string = insertion_of_branch17(newick_string)\n",
    "    newick_string = deletion_of_branch17(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "def newick_mutation_leaves17(newick_string, ga_params):\n",
    "  \"\"\"Radius is mutated, and only leaves can be inserted or deleted\"\"\"\n",
    "  if random.random() <  ga_params['mutation_rate']:\n",
    "    # Mutation of radius of illumination and of complete leaves\n",
    "    newick_string = newick_mutation_of_radius17(newick_string)\n",
    "    newick_string = insertion_of_leaf17(newick_string, counter=random.randint(0, 1000), max_illumination_radius=ga_params['max_node_radius'])\n",
    "    newick_string = deletion_of_leaf17(newick_string)\n",
    "  return newick_string\n",
    "\n",
    "\n",
    "def plot_illuminated_area17(ax, illuminated_coords, title, color='blue', alpha=0.5):\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    if not illuminated_coords:\n",
    "        ax.set_title(title)\n",
    "        ax.grid(True)\n",
    "        return\n",
    "\n",
    "    for x, y in illuminated_coords:\n",
    "        rect = patches.Rectangle((x, y), 1, 1, facecolor=color, alpha=alpha, edgecolor='black', linewidth=0.5)\n",
    "        ax.add_patch(rect)\n",
    "\n",
    "    min_x = min(c[0] for c in illuminated_coords) - 1\n",
    "    max_x = max(c[0] for c in illuminated_coords) + 2\n",
    "    min_y = min(c[1] for c in illuminated_coords) - 1\n",
    "    max_y = max(c[1] for c in illuminated_coords) + 2\n",
    "\n",
    "    ax.set_xlim(min_x, max_x)\n",
    "    ax.set_ylim(min_y, max_y)\n",
    "    ax.set_xticks(range(int(min_x), int(max_x)))\n",
    "    ax.set_yticks(range(int(min_y), int(max_y)))\n",
    "    ax.grid(True)\n",
    "    ax.set_title(title)\n",
    "\n",
    "# --- MAIN EVOLUTIONARY SIMULATION LOOP ---\n",
    "\n",
    "def myEvolutionaryProcess17(target_tree_params, ga_params):\n",
    "    # A previous code by Gemini was reused.\n",
    "\n",
    "    # 1. Generate Target Tree and its Illuminated Area\n",
    "    #print(\"\\n--- Generating Target Tree ---\")\n",
    "    #random.seed(ga_params['seed'] + 1) # Use a different seed for target generation\n",
    "    target_tree, target_illuminated_area =  generate_and_test_trimmed_target_morpho_tree17(ga_params)#891\n",
    "    for i in range(2):\n",
    "         target_tree = deletion_of_branch17(target_tree)\n",
    "    print(f\"target_tree: {target_tree} \\n\\n\")\n",
    "    number_of_groups17 = count_groups17(target_tree)\n",
    "    print(f\"Number of groups or nodes in target tree: {number_of_groups17}\")\n",
    "    length_of_target_tree = len(target_tree)\n",
    "    #draw_newick_string17(target_tree, \"Target Tree\")\n",
    "    # target_area = get_illuminated_coordinates17(target_tree)\n",
    "    #print(f\"Target illuminated area: {target_illuminated_area}\")\n",
    "\n",
    "    # 2. Initialize Population\n",
    "    #random.seed(ga_params['seed']) # Reset seed for GA population generation\n",
    "    #print(f\"\\n--- Initializing Population of {ga_params['pop_size']} Trees ---\")\n",
    "    population = create_initial_population_newick17(\n",
    "        pop_size=ga_params['pop_size'], max_depth=ga_params['max_depth'], max_children=ga_params['max_number_children'],\n",
    "        max_node_radius=ga_params['max_node_radius']  )\n",
    "    #print(f\"Population initialized with {len(population)} individuals.\")\n",
    "    #print(f\"Population: {population}\")\n",
    "\n",
    "    best_tree_overall = \"\"\n",
    "    best_fitness_overall = -1.0\n",
    "    history17 = []\n",
    "\n",
    "    # 3. Evolutionary Loop\n",
    "    #print(f\"\\n--- Starting Evolutionary Loop for {ga_params['generations']} Generations ---\")\n",
    "    for generation in range(ga_params['generations']):\n",
    "        if generation % 1000 == 0:\n",
    "            print(f\"\\n--- Generation {generation+1}/{ga_params['generations']}, Best fitness {round(best_fitness_overall, 5)} ---\")\n",
    "        fitness_scores = [calculate_fitness_illumination17(tree, target_illuminated_area)for tree in population]\n",
    "\n",
    "        current_best_fitness = max(fitness_scores)\n",
    "        current_best_tree = population[np.argmax(fitness_scores)]\n",
    "\n",
    "        if current_best_fitness > best_fitness_overall:\n",
    "            best_fitness_overall = current_best_fitness\n",
    "            best_tree_overall = copy.deepcopy(current_best_tree) # Deepcopy to save the best tree\n",
    "\n",
    "        history17.append(current_best_fitness)\n",
    "\n",
    "        #print(f\"Generation {generation+1}/{ga_params['generations']}: Best Fitness = {current_best_fitness:.4f} (Overall Best: {best_fitness_overall:.4f})\")\n",
    "\n",
    "        if best_fitness_overall >= 0.999: # Almost perfect match\n",
    "            #print(\"Target illumination achieved (or very close)! Stopping evolution.\")\n",
    "            return history17, number_of_groups17\n",
    "\n",
    "        # Selection\n",
    "        parents = select_parents_newick(population, fitness_scores, ga_params['pop_size'] // 2)\n",
    "\n",
    "        # Create next generation\n",
    "        next_population = []\n",
    "        # Elitism: Keep the best individual from the current generation\n",
    "        if best_tree_overall and current_best_fitness == best_fitness_overall: # Only if it's the current best in this generation\n",
    "            next_population.append(copy.deepcopy(current_best_tree))\n",
    "\n",
    "        while len(next_population) < ga_params['pop_size']:\n",
    "            if len(parents) < 2: # Not enough parents for crossover, fill with new random trees\n",
    "                new_tree =  complete_tree_generator17(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'] )\n",
    "                if new_tree:\n",
    "                    next_population.append(new_tree)\n",
    "                continue\n",
    "\n",
    "            # Randomly pick two parents (can be the same parent multiple times with replacement for simplicity)\n",
    "            p1 = random.choice(parents)\n",
    "            p2 = random.choice(parents)\n",
    "            child1, child2 = p1,p2 # No crossover, just pass parents to children for mutation\n",
    "            if recombination_of_leaves:\n",
    "                # Crossover newick_position_branch_recombination17\n",
    "                # child1, child2 = newick_position_branch_recombination17(p1, p2)\n",
    "                # Crossover newick_leaves_recombination17\n",
    "                child1, child2 =newick_leaves_recombination17(p1,p2)\n",
    "            # Mutation: Apply mutation to both children\n",
    "            mutated_child1 = newick_mutation_leaves17(child1, ga_params)\n",
    "            mutated_child2 = newick_mutation_leaves17(child2, ga_params)\n",
    "\n",
    "\n",
    "            next_population.append(mutated_child1)\n",
    "            if len(next_population) < ga_params['pop_size']:\n",
    "                next_population.append(mutated_child2)\n",
    "\n",
    "        population = next_population[:ga_params['pop_size']]\n",
    "        # print(f\"Population size for next generation: {len(population)}\")\n",
    "        # print(f\"Best fitness this generation: {current_best_fitness:.4f}, Overall best fitness: {best_fitness_overall:.4f}\")\n",
    "        # print(f\"Best tree this generation: {current_best_tree}\")\n",
    "        # If you want to see the entire population, uncomment the following line:\n",
    "        # print(f\"Population: {population}\")\n",
    "        # Cutt-off for the length of the Newick string to avoid excessive growth\n",
    "        population = [tree for tree in population if len(tree) <= 2 * length_of_target_tree]  # Allow some growth but limit it\n",
    "        #print(f\"Population size after length cut-off: {len(population)}\")\n",
    "        # If the population is too small, refill\n",
    "        while len(population) < ga_params['pop_size']:\n",
    "            new_tree = complete_tree_generator17(target_tree_params['max_depth'], target_tree_params['max_number_children'], target_tree_params['max_node_radius'])\n",
    "            if new_tree:\n",
    "                population.append(new_tree)\n",
    "    #print(\"\\n--- Evolution Finished ---\")\n",
    "    #print(f\"Final Best Fitness: {best_fitness_overall:.4f}\")\n",
    "    #return target_tree, target_illuminated_area, best_tree_overall, best_fitness_overall, history, number_of_groups\n",
    "\n",
    "    return history17, number_of_groups17\n",
    "\n",
    "\n",
    "def draw_all_histories17(fitness_histories, numbers_of_nodes, population_sizes):\n",
    "    print(\"draw_all_historiesk4(fitness_histories, lengths_of_target_sequence)\")\n",
    "    # Plot all the fitness histories together\n",
    "    # By the AI of VSCode.\n",
    "    for i in range(len(fitness_histories)):\n",
    "        # x_range contains all numbers from 0 to the length of the fitness history for the current length of target sequence.\n",
    "        x_range = range(len(fitness_histories[i]))\n",
    "        plt.plot(x_range, fitness_histories[i], label=f'pop_size {population_sizes[i]}, Number of nodes {numbers_of_nodes[i]}')\n",
    "    plt.xlabel('Generation')\n",
    "    plt.ylabel('Best Fitness')\n",
    "    plt.title('GA: Fitness of the best morpho-tree over Generations for Different numbers of pop-sizes and nodes')\n",
    "    plt.grid(True)\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "def main17(target_tree_params, ga_params):\n",
    "    ''' An Evolutionary process is triggered for each pop-size value.\n",
    "    The number of nodes is not predefined,\n",
    "    but results from interation with random generation.\n",
    "    The fitness history is stored in a list,\n",
    "    and then all the histories are plotted together.\n",
    "    '''\n",
    "    population_sizes = [12, 25, 50, 100, 200]\n",
    "    #numbers_of_generations = [20000, 20001, 20002, 20003, 20004 ]  # Example numbers of generations for different lengths of target sequence\n",
    "    #numbers_of_generations = [11, 12, 13, 14, 15 ]\n",
    "    numbers_of_generations = [7001, 7002, 7003, 7004, 7005 ]\n",
    "    # List to store the normalized best fitness history for each length of target sequence\n",
    "    fitness_histories = []\n",
    "    numbers_of_nodes = []  # Example numbers of generations for different lengths of target sequence\n",
    "    for i in range(len(population_sizes)):\n",
    "        target_tree_params['pop_size'] = population_sizes[i]\n",
    "        ga_params['generations'] =  numbers_of_generations[i]\n",
    "        print(f\"\\nRunning evolutionary process for max_depth = {target_tree_params['max_depth']} and generations = {ga_params['generations']}\")\n",
    "        history17, number_of_groups17 = myEvolutionaryProcess17(target_tree_params, ga_params)\n",
    "        fitness_histories.append(history17)\n",
    "        numbers_of_nodes.append(number_of_groups17)\n",
    "    draw_all_histories17(fitness_histories, numbers_of_nodes, population_sizes)\n",
    "\n",
    "\n",
    "# Run an evolutionary process for each value of target tree and GA parameters\n",
    "# Produces a comparative graphic\n",
    "if __name__ == \"__main__\":\n",
    "    print_parameters17(target_tree_params, ga_params)\n",
    "    main17(target_tree_params, ga_params)\n",
    "\n",
    "    end_time = time.time()\n",
    "    Execution_time = end_time - start_time\n",
    "    # print(f\"Execution time: {Execution_time:.2f} seconds\")\n",
    "    # Execution time in hours, minutes and seconds:\n",
    "    hours = int(Execution_time // 3600)\n",
    "    minutes = int((Execution_time % 3600) // 60)\n",
    "    seconds = int(Execution_time % 60)\n",
    "    print(f\"Execution time: {hours} hours, {minutes} minutes, {seconds} seconds\")\n",
    "    if memory_monitoring:\n",
    "        # displaying the allocated memory\n",
    "        print(tracemalloc.get_traced_memory())\n",
    "        # stopping the memory allocation library\n",
    "        tracemalloc.stop()\n",
    "\n",
    "# End of program evolution_of_newick_morphological_trees17.py"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LAB: EVOLUTION OF NEWICK MORPHO-TREES\n",
      "PURPOSE: \n",
      " A random morpho-tree T is generated.\n",
      " Evolution tries to restore the tree T\n",
      " beginning from a population of random trees.\n",
      "EXPERIMENT 1791291786.015035\n",
      "RECOMBINATION OF LEAVES: False\n",
      "INITIAL TARGET TREE PARAMETERS: {'max_depth': 15, 'max_number_children': 2, 'max_node_radius': 1.5, 'number_of_branch_deletions': 10}\n",
      "INITIAL GENETIC ALGORITHM PARAMETERS: {'pop_size': 70, 'generations': -1, 'max_depth': 15, 'max_number_children': 2, 'max_node_radius': 1.5, 'mutation_rate': 0.001, 'crossover_rate': 0.001}\n",
      "\n",
      "\n",
      "Running evolutionary process for max_depth = 15 and generations = 7001\n",
      "target_tree: Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 1\n",
      "\n",
      "--- Generation 1/7001, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7001, Best fitness 0.84211 ---\n",
      "\n",
      "--- Generation 2001/7001, Best fitness 0.84211 ---\n",
      "\n",
      "--- Generation 3001/7001, Best fitness 0.84211 ---\n",
      "\n",
      "--- Generation 4001/7001, Best fitness 0.84211 ---\n",
      "\n",
      "--- Generation 5001/7001, Best fitness 0.84211 ---\n",
      "\n",
      "--- Generation 6001/7001, Best fitness 0.84211 ---\n",
      "\n",
      "--- Generation 7001/7001, Best fitness 0.84211 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 15 and generations = 7002\n",
      "target_tree: ((((((((Node25[a=1.0,b=0.0,x=5.0,y=-5.0,r=1.05])Node21[a=1.0,b=-1.0,x=4.0,y=-5.0,r=0.87])Node13[a=1.0,b=-1.0,x=3.0,y=-4.0,r=1.35])Node9[a=1.0,b=-1.0,x=2.0,y=-3.0,r=0.74])Node7[a=1.0,b=-1.0,x=1.0,y=-2.0,r=0.54])Node4[a=-1.0,b=-1.0,x=0.0,y=-1.0,r=1.12],(()Node6[a=1.0,b=0.0,x=2.0,y=1.0,r=0.64],(()Node11[a=-1.0,b=0.0,x=-1.0,y=2.0,r=0.86],(((()Node29[a=0.0,b=1.0,x=1.0,y=4.0,r=0.95],(((((((Node211[a=0.0,b=1.0,x=7.0,y=6.0,r=0.6],Node210[a=1.0,b=1.0,x=8.0,y=6.0,r=1.07])Node168[a=1.0,b=-1.0,x=7.0,y=5.0,r=0.92])Node138[a=0.0,b=1.0,x=6.0,y=6.0,r=0.67])Node112[a=1.0,b=1.0,x=6.0,y=5.0,r=0.84])Node87[a=1.0,b=1.0,x=5.0,y=4.0,r=0.9])Node67[a=1.0,b=0.0,x=4.0,y=3.0,r=0.89],((((Node207[a=1.0,b=1.0,x=6.0,y=7.0,r=0.96])Node166[a=1.0,b=1.0,x=5.0,y=6.0,r=1.09])Node111[a=-1.0,b=0.0,x=4.0,y=5.0,r=0.68])Node86[a=1.0,b=1.0,x=5.0,y=5.0,r=1.4],(((Node206[a=1.0,b=1.0,x=8.0,y=5.0,r=0.83])Node137[a=1.0,b=1.0,x=7.0,y=4.0,r=0.67],(Node165[a=1.0,b=0.0,x=8.0,y=2.0,r=0.62],(Node205[a=1.0,b=1.0,x=9.0,y=2.0,r=0.92],Node204[a=1.0,b=-1.0,x=9.0,y=0.0,r=0.74])Node164[a=1.0,b=-1.0,x=8.0,y=1.0,r=1.14])Node136[a=1.0,b=-1.0,x=7.0,y=2.0,r=1.2])Node110[a=1.0,b=0.0,x=6.0,y=3.0,r=0.73],((Node163[a=1.0,b=1.0,x=8.0,y=4.0,r=1.2])Node135[a=1.0,b=-1.0,x=7.0,y=3.0,r=1.21])Node109[a=1.0,b=1.0,x=6.0,y=4.0,r=1.35])Node85[a=1.0,b=-1.0,x=5.0,y=3.0,r=1.33])Node66[a=1.0,b=1.0,x=4.0,y=4.0,r=0.9])Node52[a=1.0,b=-1.0,x=3.0,y=3.0,r=1.15],(((((Node203[a=1.0,b=1.0,x=3.0,y=10.0,r=1.3],Node202[a=0.0,b=1.0,x=2.0,y=10.0,r=1.4])Node134[a=0.0,b=1.0,x=2.0,y=9.0,r=0.83])Node108[a=1.0,b=1.0,x=2.0,y=8.0,r=0.85],((Node162[a=1.0,b=1.0,x=0.0,y=10.0,r=1.06])Node133[a=-1.0,b=1.0,x=-1.0,y=9.0,r=0.61],((Node201[a=1.0,b=1.0,x=0.0,y=9.0,r=1.1])Node161[a=0.0,b=1.0,x=-1.0,y=8.0,r=0.6],(Node200[a=-1.0,b=1.0,x=-3.0,y=9.0,r=0.84],Node199[a=0.0,b=1.0,x=-2.0,y=9.0,r=0.61])Node160[a=-1.0,b=1.0,x=-2.0,y=8.0,r=1.09])Node132[a=-1.0,b=-1.0,x=-1.0,y=7.0,r=1.46])Node107[a=-1.0,b=1.0,x=0.0,y=8.0,r=1.19])Node84[a=-1.0,b=1.0,x=1.0,y=7.0,r=1.14])Node65[a=1.0,b=1.0,x=2.0,y=6.0,r=0.77],((((Node198[a=-1.0,b=1.0,x=-3.0,y=8.0,r=0.78])Node159[a=-1.0,b=1.0,x=-2.0,y=7.0,r=0.85])Node106[a=-1.0,b=0.0,x=-1.0,y=6.0,r=1.25])Node83[a=0.0,b=1.0,x=0.0,y=6.0,r=1.07])Node64[a=-1.0,b=0.0,x=0.0,y=5.0,r=1.17])Node51[a=-1.0,b=1.0,x=1.0,y=5.0,r=1.17])Node28[a=1.0,b=1.0,x=2.0,y=4.0,r=0.89])Node19[a=-1.0,b=0.0,x=1.0,y=3.0,r=0.76])Node14[a=1.0,b=1.0,x=2.0,y=3.0,r=0.78])Node10[a=1.0,b=0.0,x=1.0,y=2.0,r=0.83])Node5[a=-1.0,b=1.0,x=0.0,y=2.0,r=1.17])Node3[a=0.0,b=1.0,x=1.0,y=1.0,r=0.92])Node2[a=1.0,b=-1.0,x=1.0,y=0.0,r=1.19])Node1[a=0.0,b=1.0,x=0.0,y=1.0,r=0.85])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 64\n",
      "\n",
      "--- Generation 1/7002, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7002, Best fitness 0.77005 ---\n",
      "\n",
      "--- Generation 2001/7002, Best fitness 0.78723 ---\n",
      "\n",
      "--- Generation 3001/7002, Best fitness 0.86316 ---\n",
      "\n",
      "--- Generation 4001/7002, Best fitness 0.92021 ---\n",
      "\n",
      "--- Generation 5001/7002, Best fitness 0.92513 ---\n",
      "\n",
      "--- Generation 6001/7002, Best fitness 0.92553 ---\n",
      "\n",
      "--- Generation 7001/7002, Best fitness 0.94118 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 15 and generations = 7003\n",
      "target_tree: ((((((((((((((Node264[a=-1.0,b=0.0,x=-7.0,y=6.0,r=0.93])Node213[a=-1.0,b=0.0,x=-6.0,y=6.0,r=1.22],Node212[a=-1.0,b=1.0,x=-6.0,y=7.0,r=0.55])Node170[a=-1.0,b=1.0,x=-5.0,y=6.0,r=1.17])Node132[a=-1.0,b=0.0,x=-4.0,y=5.0,r=0.71],((Node211[a=-1.0,b=1.0,x=-5.0,y=7.0,r=0.62])Node169[a=-1.0,b=0.0,x=-4.0,y=6.0,r=0.64])Node131[a=0.0,b=1.0,x=-3.0,y=6.0,r=1.18])Node99[a=-1.0,b=0.0,x=-3.0,y=5.0,r=0.96],(Node130[a=1.0,b=-1.0,x=0.0,y=5.0,r=1.19])Node98[a=1.0,b=1.0,x=-1.0,y=6.0,r=1.14])Node75[a=1.0,b=1.0,x=-2.0,y=5.0,r=0.85])Node55[a=-1.0,b=0.0,x=-3.0,y=4.0,r=1.42],((((Node210[a=-1.0,b=0.0,x=-6.0,y=3.0,r=0.86],()Node209[a=-1.0,b=-1.0,x=-6.0,y=2.0,r=0.6])Node168[a=0.0,b=1.0,x=-5.0,y=3.0,r=1.18])Node129[a=-1.0,b=0.0,x=-5.0,y=2.0,r=1.41])Node74[a=-1.0,b=-1.0,x=-4.0,y=2.0,r=0.6])Node54[a=-1.0,b=-1.0,x=-3.0,y=3.0,r=0.68])Node34[a=-1.0,b=1.0,x=-2.0,y=4.0,r=1.34],(((Node97[a=0.0,b=1.0,x=-4.0,y=4.0,r=1.02],(((Node262[a=-1.0,b=-1.0,x=-7.0,y=3.0,r=0.93],Node261[a=-1.0,b=1.0,x=-7.0,y=5.0,r=1.43])Node208[a=-1.0,b=-1.0,x=-6.0,y=4.0,r=0.67],(Node260[a=-1.0,b=-1.0,x=-7.0,y=4.0,r=0.91])Node207[a=-1.0,b=0.0,x=-6.0,y=5.0,r=1.11])Node128[a=0.0,b=1.0,x=-5.0,y=5.0,r=0.83])Node96[a=-1.0,b=1.0,x=-5.0,y=4.0,r=0.72])Node73[a=-1.0,b=1.0,x=-4.0,y=3.0,r=0.65],(((Node206[a=-1.0,b=-1.0,x=-7.0,y=0.0,r=0.75],(Node259[a=-1.0,b=0.0,x=-8.0,y=1.0,r=1.45])Node205[a=-1.0,b=0.0,x=-7.0,y=1.0,r=1.12])Node127[a=-1.0,b=1.0,x=-6.0,y=1.0,r=1.3])Node95[a=-1.0,b=-1.0,x=-5.0,y=0.0,r=0.95])Node72[a=-1.0,b=-1.0,x=-4.0,y=1.0,r=1.43])Node53[a=-1.0,b=-1.0,x=-3.0,y=2.0,r=0.57])Node33[a=-1.0,b=0.0,x=-2.0,y=3.0,r=0.63])Node26[a=-1.0,b=-1.0,x=-1.0,y=3.0,r=1.28])Node11[a=-1.0,b=1.0,x=0.0,y=4.0,r=1.12],((((((((Node204[a=1.0,b=-1.0,x=6.0,y=2.0,r=1.03])Node126[a=-1.0,b=0.0,x=5.0,y=3.0,r=1.24])Node52[a=1.0,b=-1.0,x=6.0,y=3.0,r=0.68],((((Node258[a=1.0,b=-1.0,x=8.0,y=5.0,r=1.32])Node125[a=1.0,b=0.0,x=7.0,y=6.0,r=1.4],Node124[a=1.0,b=-1.0,x=7.0,y=5.0,r=1.06])Node94[a=1.0,b=1.0,x=6.0,y=6.0,r=1.24],(((Node203[a=1.0,b=1.0,x=8.0,y=4.0,r=1.25],(Node257[a=-1.0,b=-1.0,x=6.0,y=1.0,r=1.43],Node256[a=1.0,b=-1.0,x=8.0,y=1.0,r=0.55])Node202[a=0.0,b=-1.0,x=7.0,y=2.0,r=1.43])Node167[a=0.0,b=-1.0,x=7.0,y=3.0,r=0.56],(Node255[a=1.0,b=0.0,x=9.0,y=3.0,r=1.18],Node254[a=1.0,b=-1.0,x=9.0,y=2.0,r=1.38])Node166[a=1.0,b=-1.0,x=8.0,y=3.0,r=0.88])Node123[a=1.0,b=-1.0,x=7.0,y=4.0,r=1.16])Node93[a=1.0,b=0.0,x=6.0,y=5.0,r=1.34])Node71[a=-1.0,b=1.0,x=5.0,y=5.0,r=1.25])Node51[a=1.0,b=0.0,x=6.0,y=4.0,r=1.41])Node45[a=1.0,b=0.0,x=5.0,y=4.0,r=1.3],((((Node165[a=0.0,b=1.0,x=5.0,y=8.0,r=0.6],(Node253[a=1.0,b=1.0,x=7.0,y=9.0,r=1.36])Node164[a=1.0,b=1.0,x=6.0,y=8.0,r=0.98])Node122[a=1.0,b=1.0,x=5.0,y=7.0,r=0.6])Node92[a=0.0,b=1.0,x=4.0,y=6.0,r=1.05],(()Node163[a=1.0,b=1.0,x=6.0,y=7.0,r=1.06])Node91[a=1.0,b=1.0,x=5.0,y=6.0,r=0.68])Node70[a=1.0,b=1.0,x=4.0,y=5.0,r=0.79],((Node200[a=-1.0,b=0.0,x=4.0,y=2.0,r=1.24])Node121[a=1.0,b=-1.0,x=5.0,y=2.0,r=1.43])Node69[a=1.0,b=-1.0,x=4.0,y=3.0,r=0.73])Node44[a=-1.0,b=0.0,x=3.0,y=4.0,r=0.77])Node32[a=1.0,b=-1.0,x=4.0,y=4.0,r=1.12])Node25[a=0.0,b=-1.0,x=3.0,y=5.0,r=1.27])Node19[a=1.0,b=1.0,x=3.0,y=6.0,r=1.11],(((((Node162[a=1.0,b=1.0,x=3.0,y=11.0,r=0.72])Node90[a=1.0,b=1.0,x=2.0,y=10.0,r=0.58],((Node161[a=0.0,b=1.0,x=0.0,y=12.0,r=0.5])Node120[a=-1.0,b=1.0,x=0.0,y=11.0,r=0.71],((Node251[a=-1.0,b=1.0,x=0.0,y=13.0,r=0.96])Node160[a=0.0,b=1.0,x=1.0,y=12.0,r=1.02],((Node250[a=1.0,b=1.0,x=4.0,y=14.0,r=0.7],Node249[a=0.0,b=1.0,x=3.0,y=14.0,r=0.97])Node199[a=1.0,b=1.0,x=3.0,y=13.0,r=0.58],(Node248[a=-1.0,b=0.0,x=1.0,y=13.0,r=0.88],Node247[a=0.0,b=1.0,x=2.0,y=14.0,r=1.26])Node198[a=0.0,b=1.0,x=2.0,y=13.0,r=0.58])Node159[a=1.0,b=1.0,x=2.0,y=12.0,r=1.47])Node119[a=0.0,b=1.0,x=1.0,y=11.0,r=1.37])Node89[a=0.0,b=1.0,x=1.0,y=10.0,r=1.02])Node68[a=0.0,b=1.0,x=1.0,y=9.0,r=0.93],(((((Node246[a=0.0,b=1.0,x=4.0,y=13.0,r=0.8])Node197[a=-1.0,b=1.0,x=4.0,y=12.0,r=1.07],(Node245[a=0.0,b=1.0,x=5.0,y=13.0,r=1.18])Node196[a=0.0,b=1.0,x=5.0,y=12.0,r=1.09])Node157[a=1.0,b=1.0,x=5.0,y=11.0,r=0.57],((Node244[a=1.0,b=-1.0,x=7.0,y=8.0,r=0.6])Node194[a=1.0,b=0.0,x=6.0,y=9.0,r=0.58])Node156[a=1.0,b=-1.0,x=5.0,y=9.0,r=0.77])Node116[a=1.0,b=1.0,x=4.0,y=10.0,r=1.27],((Node193[a=1.0,b=1.0,x=6.0,y=11.0,r=0.62])Node155[a=1.0,b=1.0,x=5.0,y=10.0,r=0.51])Node115[a=1.0,b=0.0,x=4.0,y=9.0,r=0.61])Node87[a=1.0,b=0.0,x=3.0,y=9.0,r=0.95])Node67[a=1.0,b=1.0,x=2.0,y=9.0,r=0.88])Node50[a=-1.0,b=1.0,x=1.0,y=8.0,r=1.4])Node24[a=1.0,b=1.0,x=2.0,y=7.0,r=0.73])Node18[a=-1.0,b=1.0,x=1.0,y=6.0,r=1.15])Node14[a=0.0,b=1.0,x=2.0,y=5.0,r=1.04])Node10[a=1.0,b=1.0,x=2.0,y=4.0,r=0.66])Node6[a=0.0,b=1.0,x=1.0,y=3.0,r=0.7],((((((((Node154[a=1.0,b=0.0,x=4.0,y=8.0,r=0.65])Node114[a=0.0,b=1.0,x=3.0,y=8.0,r=1.33],Node113[a=1.0,b=0.0,x=4.0,y=7.0,r=0.65])Node66[a=1.0,b=-1.0,x=3.0,y=7.0,r=0.88])Node43[a=1.0,b=1.0,x=2.0,y=8.0,r=0.64])Node31[a=-1.0,b=1.0,x=1.0,y=7.0,r=0.58])Node23[a=1.0,b=1.0,x=2.0,y=6.0,r=0.96],((Node42[a=1.0,b=0.0,x=0.0,y=7.0,r=0.89],(((((Node243[a=0.0,b=1.0,x=-1.0,y=13.0,r=0.88],Node242[a=-1.0,b=1.0,x=-2.0,y=13.0,r=0.71])Node192[a=1.0,b=1.0,x=-1.0,y=12.0,r=0.61],(Node241[a=-1.0,b=1.0,x=-4.0,y=13.0,r=1.17],Node240[a=0.0,b=1.0,x=-3.0,y=13.0,r=1.01])Node191[a=-1.0,b=1.0,x=-3.0,y=12.0,r=1.0])Node153[a=-1.0,b=1.0,x=-2.0,y=11.0,r=0.9],(Node239[a=-1.0,b=1.0,x=-2.0,y=12.0,r=0.6])Node152[a=0.0,b=1.0,x=-1.0,y=11.0,r=1.11])Node112[a=-1.0,b=1.0,x=-1.0,y=10.0,r=0.77])Node65[a=0.0,b=1.0,x=0.0,y=9.0,r=1.15],(Node111[a=1.0,b=1.0,x=0.0,y=10.0,r=1.39],(((Node238[a=-1.0,b=-1.0,x=-5.0,y=10.0,r=1.2],Node237[a=-1.0,b=0.0,x=-5.0,y=11.0,r=0.86])Node190[a=-1.0,b=1.0,x=-4.0,y=11.0,r=0.66])Node151[a=-1.0,b=0.0,x=-3.0,y=10.0,r=1.16])Node110[a=-1.0,b=1.0,x=-2.0,y=10.0,r=1.19])Node64[a=-1.0,b=1.0,x=-1.0,y=9.0,r=1.15])Node41[a=1.0,b=1.0,x=0.0,y=8.0,r=1.22])Node30[a=-1.0,b=1.0,x=-1.0,y=7.0,r=0.81])Node22[a=-1.0,b=1.0,x=0.0,y=6.0,r=0.79])Node17[a=0.0,b=1.0,x=1.0,y=5.0,r=1.05])Node9[a=-1.0,b=1.0,x=1.0,y=4.0,r=0.91],((((((((((Node236[a=0.0,b=1.0,x=7.0,y=1.0,r=0.89],Node235[a=-1.0,b=0.0,x=6.0,y=0.0,r=0.59])Node189[a=1.0,b=1.0,x=7.0,y=0.0,r=0.78])Node150[a=1.0,b=1.0,x=6.0,y=-1.0,r=1.2])Node109[a=1.0,b=0.0,x=5.0,y=-2.0,r=0.97])Node86[a=-1.0,b=-1.0,x=4.0,y=-2.0,r=0.83])Node63[a=0.0,b=-1.0,x=5.0,y=-1.0,r=1.09])Node49[a=0.0,b=-1.0,x=5.0,y=0.0,r=1.08],((Node108[a=0.0,b=1.0,x=3.0,y=0.0,r=1.08],((Node188[a=-1.0,b=-1.0,x=1.0,y=-4.0,r=1.23])Node149[a=0.0,b=-1.0,x=2.0,y=-3.0,r=0.61])Node107[a=-1.0,b=-1.0,x=2.0,y=-2.0,r=0.98])Node85[a=-1.0,b=-1.0,x=3.0,y=-1.0,r=1.07],((Node148[a=-1.0,b=1.0,x=2.0,y=-1.0,r=0.88],((Node234[a=0.0,b=-1.0,x=5.0,y=-4.0,r=1.37],Node233[a=1.0,b=-1.0,x=6.0,y=-4.0,r=1.49])Node187[a=1.0,b=0.0,x=5.0,y=-3.0,r=1.24])Node147[a=1.0,b=-1.0,x=4.0,y=-3.0,r=0.77])Node106[a=-1.0,b=-1.0,x=3.0,y=-2.0,r=1.47])Node84[a=0.0,b=-1.0,x=4.0,y=-1.0,r=0.98])Node48[a=-1.0,b=-1.0,x=4.0,y=0.0,r=1.23])Node40[a=1.0,b=0.0,x=5.0,y=1.0,r=0.8])Node16[a=1.0,b=0.0,x=4.0,y=1.0,r=0.61],((((Node146[a=1.0,b=0.0,x=1.0,y=-2.0,r=1.05],((Node230[a=1.0,b=-1.0,x=3.0,y=-5.0,r=1.41])Node185[a=1.0,b=-1.0,x=2.0,y=-4.0,r=0.62],Node184[a=-1.0,b=0.0,x=0.0,y=-3.0,r=1.32])Node145[a=1.0,b=-1.0,x=1.0,y=-3.0,r=1.3])Node47[a=-1.0,b=-1.0,x=0.0,y=-2.0,r=1.19])Node39[a=-1.0,b=-1.0,x=1.0,y=-1.0,r=0.51])Node21[a=0.0,b=-1.0,x=2.0,y=0.0,r=1.24],((((((Node229[a=-1.0,b=-1.0,x=-5.0,y=-4.0,r=1.32],Node228[a=0.0,b=-1.0,x=-4.0,y=-4.0,r=1.08])Node144[a=-1.0,b=0.0,x=-4.0,y=-3.0,r=1.46])Node83[a=-1.0,b=-1.0,x=-3.0,y=-3.0,r=0.91],((((Node227[a=-1.0,b=-1.0,x=-2.0,y=-7.0,r=0.61])Node183[a=0.0,b=-1.0,x=-1.0,y=-6.0,r=0.84],(Node226[a=0.0,b=-1.0,x=0.0,y=-5.0,r=1.26],Node225[a=1.0,b=-1.0,x=1.0,y=-5.0,r=0.94])Node182[a=1.0,b=1.0,x=0.0,y=-4.0,r=1.04])Node143[a=0.0,b=-1.0,x=-1.0,y=-5.0,r=0.81])Node105[a=0.0,b=-1.0,x=-1.0,y=-4.0,r=0.52],((Node224[a=1.0,b=-1.0,x=-2.0,y=-6.0,r=0.79],Node223[a=-1.0,b=-1.0,x=-4.0,y=-6.0,r=0.55])Node181[a=-1.0,b=-1.0,x=-3.0,y=-5.0,r=0.54],(Node222[a=-1.0,b=-1.0,x=-3.0,y=-6.0,r=1.26])Node180[a=0.0,b=-1.0,x=-2.0,y=-5.0,r=1.21])Node104[a=-1.0,b=-1.0,x=-2.0,y=-4.0,r=1.44])Node82[a=1.0,b=-1.0,x=-1.0,y=-3.0,r=1.39])Node62[a=-1.0,b=-1.0,x=-2.0,y=-2.0,r=0.68],Node61[a=-1.0,b=1.0,x=-2.0,y=0.0,r=0.83])Node38[a=-1.0,b=0.0,x=-1.0,y=-1.0,r=1.09])Node29[a=-1.0,b=-1.0,x=0.0,y=-1.0,r=0.67],(((((((Node221[a=-1.0,b=-1.0,x=-7.0,y=-4.0,r=0.92])Node179[a=-1.0,b=-1.0,x=-6.0,y=-3.0,r=1.22],Node178[a=0.0,b=-1.0,x=-5.0,y=-3.0,r=1.44])Node142[a=-1.0,b=0.0,x=-5.0,y=-2.0,r=1.2],(Node177[a=-1.0,b=0.0,x=-6.0,y=-1.0,r=1.39],(Node220[a=-1.0,b=-1.0,x=-7.0,y=-3.0,r=0.64],Node219[a=-1.0,b=0.0,x=-7.0,y=-2.0,r=0.89])Node176[a=-1.0,b=-1.0,x=-6.0,y=-2.0,r=1.47])Node141[a=-1.0,b=1.0,x=-5.0,y=-1.0,r=0.73])Node103[a=-1.0,b=-1.0,x=-4.0,y=-2.0,r=1.31])Node81[a=-1.0,b=0.0,x=-3.0,y=-1.0,r=1.13],(((Node175[a=-1.0,b=-1.0,x=-4.0,y=-5.0,r=0.6])Node140[a=-1.0,b=-1.0,x=-3.0,y=-4.0,r=1.24],Node139[a=-1.0,b=1.0,x=-3.0,y=-2.0,r=1.42])Node102[a=-1.0,b=-1.0,x=-2.0,y=-3.0,r=0.77])Node80[a=1.0,b=-1.0,x=-1.0,y=-2.0,r=1.46])Node60[a=-1.0,b=-1.0,x=-2.0,y=-1.0,r=0.72])Node37[a=-1.0,b=-1.0,x=-1.0,y=0.0,r=0.72],(((Node79[a=-1.0,b=-1.0,x=-3.0,y=0.0,r=0.91])Node59[a=-1.0,b=0.0,x=-2.0,y=1.0,r=0.53],(((Node138[a=0.0,b=-1.0,x=-4.0,y=-1.0,r=1.13],((Node218[a=-1.0,b=-1.0,x=-7.0,y=-1.0,r=1.25])Node174[a=-1.0,b=-1.0,x=-6.0,y=0.0,r=1.42])Node137[a=-1.0,b=1.0,x=-5.0,y=1.0,r=0.55])Node101[a=-1.0,b=-1.0,x=-4.0,y=0.0,r=1.06])Node78[a=-1.0,b=-1.0,x=-3.0,y=1.0,r=0.75])Node58[a=-1.0,b=1.0,x=-2.0,y=2.0,r=0.6])Node46[a=0.0,b=-1.0,x=-1.0,y=1.0,r=0.7])Node36[a=-1.0,b=1.0,x=-1.0,y=2.0,r=0.61])Node28[a=-1.0,b=1.0,x=0.0,y=1.0,r=0.89])Node20[a=-1.0,b=-1.0,x=1.0,y=0.0,r=1.4])Node15[a=-1.0,b=0.0,x=2.0,y=1.0,r=1.14])Node13[a=1.0,b=-1.0,x=3.0,y=1.0,r=1.3])Node8[a=0.0,b=-1.0,x=2.0,y=2.0,r=0.55])Node5[a=1.0,b=1.0,x=2.0,y=3.0,r=1.12])Node4[a=1.0,b=0.0,x=1.0,y=2.0,r=0.75],((((((((((Node217[a=-1.0,b=1.0,x=-4.0,y=12.0,r=0.85])Node173[a=1.0,b=1.0,x=-3.0,y=11.0,r=1.25])Node136[a=-1.0,b=1.0,x=-4.0,y=10.0,r=1.34])Node100[a=-1.0,b=0.0,x=-3.0,y=9.0,r=1.27])Node77[a=1.0,b=1.0,x=-2.0,y=9.0,r=1.11],((Node216[a=-1.0,b=1.0,x=-6.0,y=9.0,r=0.67])Node135[a=-1.0,b=-1.0,x=-5.0,y=8.0,r=0.85],(Node172[a=-1.0,b=-1.0,x=-6.0,y=8.0,r=1.36])Node134[a=-1.0,b=0.0,x=-5.0,y=9.0,r=0.95])Node76[a=-1.0,b=1.0,x=-4.0,y=9.0,r=0.65])Node57[a=-1.0,b=1.0,x=-3.0,y=8.0,r=0.7],(((Node215[a=-1.0,b=0.0,x=-4.0,y=7.0,r=0.78],Node214[a=-1.0,b=1.0,x=-4.0,y=8.0,r=0.99])Node171[a=-1.0,b=-1.0,x=-3.0,y=7.0,r=1.25])Node133[a=-1.0,b=0.0,x=-2.0,y=8.0,r=1.24])Node56[a=1.0,b=1.0,x=-1.0,y=8.0,r=0.71])Node35[a=0.0,b=1.0,x=-2.0,y=7.0,r=0.59])Node27[a=-1.0,b=1.0,x=-2.0,y=6.0,r=0.74])Node12[a=0.0,b=1.0,x=-1.0,y=5.0,r=1.19])Node7[a=-1.0,b=1.0,x=-1.0,y=4.0,r=0.59])Node3[a=0.0,b=1.0,x=0.0,y=3.0,r=0.99])Node2[a=-1.0,b=1.0,x=0.0,y=2.0,r=1.29])Node1[a=1.0,b=1.0,x=1.0,y=1.0,r=0.75])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 254\n",
      "\n",
      "--- Generation 1/7003, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7003, Best fitness 0.84022 ---\n",
      "\n",
      "--- Generation 2001/7003, Best fitness 0.88827 ---\n",
      "\n",
      "--- Generation 3001/7003, Best fitness 0.91243 ---\n",
      "\n",
      "--- Generation 4001/7003, Best fitness 0.94101 ---\n",
      "\n",
      "--- Generation 5001/7003, Best fitness 0.94413 ---\n",
      "\n",
      "--- Generation 6001/7003, Best fitness 0.95238 ---\n",
      "\n",
      "--- Generation 7001/7003, Best fitness 0.95518 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 15 and generations = 7004\n",
      "target_tree: ((((((((Node88[a=0.0,b=1.0,x=-3.0,y=5.0,r=1.11])Node71[a=-1.0,b=1.0,x=-3.0,y=4.0,r=1.17],(Node111[a=-1.0,b=-1.0,x=-3.0,y=3.0,r=1.47],(Node133[a=1.0,b=1.0,x=0.0,y=6.0,r=0.6],(Node156[a=1.0,b=1.0,x=0.0,y=7.0,r=0.69])Node132[a=0.0,b=1.0,x=-1.0,y=6.0,r=1.23])Node110[a=1.0,b=1.0,x=-1.0,y=5.0,r=0.51])Node70[a=0.0,b=1.0,x=-2.0,y=4.0,r=1.5])Node55[a=0.0,b=1.0,x=-2.0,y=3.0,r=0.55],(((Node131[a=1.0,b=1.0,x=2.0,y=5.0,r=0.65],((Node188[a=1.0,b=1.0,x=2.0,y=7.0,r=1.17])Node155[a=1.0,b=1.0,x=1.0,y=6.0,r=1.23])Node130[a=-1.0,b=1.0,x=0.0,y=5.0,r=1.44])Node87[a=1.0,b=1.0,x=1.0,y=4.0,r=1.3])Node69[a=1.0,b=0.0,x=0.0,y=3.0,r=1.08])Node54[a=1.0,b=1.0,x=-1.0,y=3.0,r=1.09])Node31[a=1.0,b=1.0,x=-2.0,y=2.0,r=0.84],(((((Node187[a=-1.0,b=0.0,x=-7.0,y=3.0,r=0.62])Node154[a=-1.0,b=1.0,x=-6.0,y=3.0,r=0.77],(Node186[a=-1.0,b=1.0,x=-7.0,y=2.0,r=0.84])Node153[a=-1.0,b=-1.0,x=-6.0,y=1.0,r=1.29])Node109[a=-1.0,b=1.0,x=-5.0,y=2.0,r=1.29])Node68[a=-1.0,b=-1.0,x=-4.0,y=1.0,r=0.91],((((Node185[a=1.0,b=-1.0,x=-5.0,y=1.0,r=0.95])Node152[a=-1.0,b=-1.0,x=-6.0,y=2.0,r=0.75],(Node184[a=-1.0,b=0.0,x=-6.0,y=4.0,r=0.89],Node183[a=-1.0,b=1.0,x=-6.0,y=5.0,r=1.14])Node151[a=0.0,b=1.0,x=-5.0,y=4.0,r=0.63])Node129[a=-1.0,b=-1.0,x=-5.0,y=3.0,r=0.61],(Node182[a=-1.0,b=1.0,x=-5.0,y=6.0,r=0.85],Node181[a=-1.0,b=0.0,x=-5.0,y=5.0,r=0.64])Node128[a=0.0,b=1.0,x=-4.0,y=5.0,r=1.19])Node108[a=0.0,b=1.0,x=-4.0,y=4.0,r=0.58])Node67[a=-1.0,b=1.0,x=-4.0,y=3.0,r=0.97])Node42[a=1.0,b=0.0,x=-3.0,y=2.0,r=1.39])Node30[a=-1.0,b=1.0,x=-4.0,y=2.0,r=0.81])Node12[a=-1.0,b=0.0,x=-3.0,y=1.0,r=0.53])Node9[a=0.0,b=1.0,x=-2.0,y=1.0,r=1.0],((((((((()Node107[a=1.0,b=1.0,x=3.0,y=4.0,r=1.24],((Node180[a=1.0,b=1.0,x=4.0,y=6.0,r=1.1],Node179[a=0.0,b=1.0,x=3.0,y=6.0,r=0.77])Node149[a=1.0,b=1.0,x=3.0,y=5.0,r=1.41],(Node178[a=1.0,b=1.0,x=2.0,y=6.0,r=1.3])Node148[a=-1.0,b=1.0,x=1.0,y=5.0,r=0.69])Node106[a=0.0,b=1.0,x=2.0,y=4.0,r=1.46])Node66[a=1.0,b=0.0,x=2.0,y=3.0,r=1.18],((((Node146[a=0.0,b=1.0,x=-2.0,y=7.0,r=1.27])Node127[a=0.0,b=1.0,x=-2.0,y=6.0,r=1.28],(Node176[a=-1.0,b=0.0,x=-4.0,y=6.0,r=1.1],Node175[a=0.0,b=1.0,x=-3.0,y=7.0,r=1.3])Node126[a=-1.0,b=1.0,x=-3.0,y=6.0,r=1.0])Node105[a=-1.0,b=1.0,x=-2.0,y=5.0,r=1.43])Node86[a=-1.0,b=0.0,x=-1.0,y=4.0,r=1.38])Node65[a=-1.0,b=1.0,x=0.0,y=4.0,r=1.48])Node53[a=0.0,b=1.0,x=1.0,y=3.0,r=0.68])Node41[a=1.0,b=0.0,x=1.0,y=2.0,r=1.29])Node29[a=-1.0,b=1.0,x=0.0,y=2.0,r=0.7])Node23[a=1.0,b=0.0,x=1.0,y=1.0,r=1.19],((Node62[a=1.0,b=-1.0,x=3.0,y=0.0,r=1.41])Node39[a=1.0,b=1.0,x=2.0,y=1.0,r=1.07])Node22[a=1.0,b=-1.0,x=1.0,y=0.0,r=1.23])Node16[a=1.0,b=-1.0,x=0.0,y=1.0,r=1.31])Node11[a=0.0,b=1.0,x=-1.0,y=2.0,r=0.55])Node8[a=1.0,b=1.0,x=-1.0,y=1.0,r=1.39])Node5[a=-1.0,b=1.0,x=-2.0,y=0.0,r=1.08],((()Node10[a=-1.0,b=-1.0,x=-4.0,y=-1.0,r=1.21])Node7[a=-1.0,b=1.0,x=-3.0,y=0.0,r=1.22],Node6[a=1.0,b=1.0,x=-1.0,y=0.0,r=1.09])Node4[a=-1.0,b=0.0,x=-2.0,y=-1.0,r=0.93])Node2[a=-1.0,b=-1.0,x=-1.0,y=-1.0,r=1.07],((((((((((Node142[a=1.0,b=0.0,x=1.0,y=-5.0,r=1.3])Node99[a=1.0,b=-1.0,x=0.0,y=-5.0,r=0.72])Node80[a=1.0,b=0.0,x=-1.0,y=-4.0,r=1.36])Node59[a=-1.0,b=-1.0,x=-2.0,y=-4.0,r=0.7])Node50[a=-1.0,b=1.0,x=-1.0,y=-3.0,r=1.22])Node36[a=-1.0,b=0.0,x=0.0,y=-4.0,r=1.33])Node27[a=-1.0,b=-1.0,x=1.0,y=-4.0,r=0.91])Node19[a=0.0,b=-1.0,x=2.0,y=-3.0,r=1.19],(((((()Node98[a=-1.0,b=1.0,x=3.0,y=3.0,r=0.61],((Node167[a=1.0,b=0.0,x=7.0,y=1.0,r=1.19],Node166[a=0.0,b=1.0,x=6.0,y=2.0,r=1.35])Node141[a=1.0,b=-1.0,x=6.0,y=1.0,r=0.62])Node97[a=1.0,b=0.0,x=5.0,y=2.0,r=0.58])Node79[a=-1.0,b=1.0,x=4.0,y=2.0,r=1.21])Node49[a=1.0,b=1.0,x=5.0,y=1.0,r=0.63],((Node117[a=0.0,b=-1.0,x=4.0,y=-3.0,r=1.21])Node96[a=1.0,b=-1.0,x=4.0,y=-2.0,r=1.02])Node48[a=-1.0,b=-1.0,x=3.0,y=-1.0,r=1.46])Node35[a=0.0,b=1.0,x=4.0,y=0.0,r=0.9],(((Node140[a=-1.0,b=0.0,x=4.0,y=-4.0,r=1.19])Node78[a=-1.0,b=-1.0,x=5.0,y=-4.0,r=1.41],(((Node165[a=0.0,b=1.0,x=6.0,y=0.0,r=1.33])Node116[a=0.0,b=1.0,x=6.0,y=-1.0,r=1.07],(Node164[a=1.0,b=0.0,x=8.0,y=-1.0,r=1.35],Node163[a=0.0,b=1.0,x=7.0,y=0.0,r=1.41])Node115[a=1.0,b=1.0,x=7.0,y=-1.0,r=1.08])Node95[a=1.0,b=1.0,x=6.0,y=-2.0,r=1.14])Node77[a=-1.0,b=0.0,x=5.0,y=-3.0,r=0.95])Node47[a=1.0,b=-1.0,x=6.0,y=-3.0,r=1.31],(Node58[a=0.0,b=1.0,x=5.0,y=0.0,r=1.38])Node46[a=0.0,b=1.0,x=5.0,y=-1.0,r=0.84])Node34[a=1.0,b=-1.0,x=5.0,y=-2.0,r=1.1])Node26[a=1.0,b=1.0,x=4.0,y=-1.0,r=1.1],(((((Node139[a=1.0,b=-1.0,x=4.0,y=-7.0,r=0.9])Node94[a=1.0,b=0.0,x=3.0,y=-6.0,r=0.82])Node76[a=-1.0,b=-1.0,x=2.0,y=-6.0,r=0.62],((Node138[a=-1.0,b=0.0,x=2.0,y=-7.0,r=0.58])Node93[a=-1.0,b=-1.0,x=3.0,y=-7.0,r=0.89])Node75[a=1.0,b=-1.0,x=4.0,y=-6.0,r=0.65])Node45[a=0.0,b=-1.0,x=3.0,y=-5.0,r=1.24],((((Node162[a=0.0,b=1.0,x=7.0,y=-2.0,r=1.08])Node92[a=1.0,b=1.0,x=7.0,y=-3.0,r=1.32])Node74[a=1.0,b=1.0,x=6.0,y=-4.0,r=0.83],((()Node114[a=1.0,b=0.0,x=8.0,y=-7.0,r=0.55])Node91[a=1.0,b=-1.0,x=7.0,y=-7.0,r=1.16])Node73[a=1.0,b=-1.0,x=6.0,y=-6.0,r=1.29])Node57[a=1.0,b=0.0,x=5.0,y=-5.0,r=1.14],((((Node136[a=0.0,b=1.0,x=8.0,y=-2.0,r=1.38],(Node157[a=1.0,b=1.0,x=10.0,y=-3.0,r=1.09])Node135[a=1.0,b=-1.0,x=9.0,y=-4.0,r=0.71])Node113[a=1.0,b=1.0,x=8.0,y=-3.0,r=1.1],(Node134[a=0.0,b=1.0,x=8.0,y=-4.0,r=1.31])Node112[a=1.0,b=-1.0,x=8.0,y=-5.0,r=0.55])Node89[a=1.0,b=1.0,x=7.0,y=-4.0,r=1.15])Node72[a=1.0,b=1.0,x=6.0,y=-5.0,r=1.44])Node56[a=1.0,b=-1.0,x=5.0,y=-6.0,r=0.69])Node44[a=1.0,b=-1.0,x=4.0,y=-5.0,r=0.98])Node33[a=0.0,b=-1.0,x=3.0,y=-4.0,r=0.75])Node25[a=0.0,b=-1.0,x=3.0,y=-3.0,r=0.81])Node18[a=1.0,b=0.0,x=3.0,y=-2.0,r=0.54])Node14[a=1.0,b=-1.0,x=2.0,y=-2.0,r=1.29],((((Node43[a=-1.0,b=1.0,x=-1.0,y=-2.0,r=1.26])Node32[a=-1.0,b=-1.0,x=0.0,y=-3.0,r=0.89])Node24[a=0.0,b=1.0,x=1.0,y=-2.0,r=0.72])Node17[a=1.0,b=-1.0,x=1.0,y=-3.0,r=1.17])Node13[a=-1.0,b=-1.0,x=0.0,y=-2.0,r=1.22])Node3[a=1.0,b=0.0,x=1.0,y=-1.0,r=0.57])Node1[a=0.0,b=-1.0,x=0.0,y=-1.0,r=0.62])Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 139\n",
      "\n",
      "--- Generation 1/7004, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7004, Best fitness 0.79845 ---\n",
      "\n",
      "--- Generation 2001/7004, Best fitness 0.83922 ---\n",
      "\n",
      "--- Generation 3001/7004, Best fitness 0.85317 ---\n",
      "\n",
      "--- Generation 4001/7004, Best fitness 0.876 ---\n",
      "\n",
      "--- Generation 5001/7004, Best fitness 0.896 ---\n",
      "\n",
      "--- Generation 6001/7004, Best fitness 0.90323 ---\n",
      "\n",
      "--- Generation 7001/7004, Best fitness 0.90726 ---\n",
      "\n",
      "Running evolutionary process for max_depth = 15 and generations = 7005\n",
      "target_tree: Node_0[a=0,b=0,x=0,y=0,r=1] \n",
      "\n",
      "\n",
      "Number of groups or nodes in target tree: 1\n",
      "\n",
      "--- Generation 1/7005, Best fitness -1.0 ---\n",
      "\n",
      "--- Generation 1001/7005, Best fitness 0.64286 ---\n",
      "\n",
      "--- Generation 2001/7005, Best fitness 0.9 ---\n",
      "\n",
      "--- Generation 3001/7005, Best fitness 0.9 ---\n",
      "\n",
      "--- Generation 4001/7005, Best fitness 0.9 ---\n",
      "\n",
      "--- Generation 5001/7005, Best fitness 0.9 ---\n",
      "\n",
      "--- Generation 6001/7005, Best fitness 0.9 ---\n",
      "\n",
      "--- Generation 7001/7005, Best fitness 0.9 ---\n",
      "draw_all_historiesk4(fitness_histories, lengths_of_target_sequence)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Execution time: 4 hours, 41 minutes, 39 seconds\n"
     ]
    }
   ],
   "execution_count": 17
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Observations.** \n",
    "1. The task for one node induces a chaotic behavior of the fitness function. \n",
    "2. The differences among the fitness functions for 64, 139 and 254 nodes of trimmed trees were insginificant. And after almost five hours of CPU work, a final fintess of 0.9 was achieved. This is very much like ordinary trees. \n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GRADUATION\n",
    "\n",
    "Choose one theme among the following ones to work on it:\n",
    "\n",
    "1. Make up your mind to decide what are the important questions. Compare your choice with the opinion of the Author: In our opinion, the most important question is the following: How must we define complexity of morpho-trees in order that the dictum that complexity must smash Evolution becomes obviously true? Maybe, one must invent abstract tasks to challenge Evolution, for instance: to reproduce a collar of holes that reminds us of the vertebral spine.\n",
    "1. By means of the symmetric difference o sets, we have defined fitness as a measure of the coincidence of illumination areas, one of the target tree, and the other that of the test tree. Our measure of fitness does not seem to be perfect because in large globules, there could be too many cells in the symmetric difference of target and test trees (that measures the error), but nevertheless, the fitness is high.\n",
    "1. Our definition of fitness allows that many trees could resolve the same problem. This eases the task and so complexity is evaded. But, Nature does not conceive form as just the exterior look. In nature, every structure is replenished with substructures of the most varied nature. Model and study this new situation.\n",
    "1. The number of nodes in the tree was our measure of complexity. That measure does not fulfill our expectation that complexity smashes Evolution.  This is possibly due to a group of hidden variables. Our proposal of trimmed trees was, in our opinion, a failure. The possible reason is that our trees  somehow resembles a tree in the form of a pie that are expected to be  easily evolvable. We know this, because trimmed trees have voids with a radial form. Discover other new hidden variables and study their impact over Evolution. =\n",
    "1. Optimize the code for speed. Two ideas are:\n",
    ">\n",
    ">   i. Use a binary matrix to register occupancy of squares instead of a set, which is a heavy-load structure.\n",
    ">\n",
    ">   ii. In used programs, to gather the coordinates of illuminated squares, a grid was formed and scanned twice, vertically and horizontally. If one does this only in one sense, the error is small, so, it can be dispensed.\n",
    "\n",
    "6. Our procedure to validate a morpho-tree is imperfect. For example, it does not test connectivity of the graphs formed by linking children to fathers, and fathers and children are not neighbors after recombination but no error is declared. Do something better.\n",
    "1. We have encountered troubles with multiple occupancy of squares. We tolerated it in early programs because Nature has a remedy: apoptosis or self-purge. In last programs, we preferred to accept only those mutations that produced no overcrodwing. This creates a distance with Nature, where there is no beforehand remedy for future problems. Restore naturalness. For instance, prove that Nature chastice double and much more multiple occupancy of the same space. Insert the corresponding term in the fitness function. To that aim, use an occupancy matrix with integer values.\n",
    "1. We have encountered troubles with multiple occupancy of squares. We tolerated it in early programs because Nature has a remedy: apoptosis or self-purge. In last programs, we preferred to accept only those mutations that produced no overcrowding. This creates a distance with Nature, where there is no beforehand remedy for future problems. Restore naturalness. For instance, prove that Nature chastises double and much more multiple occupancy of the same space and insert the corresponding term in the fitness function. To that aim, use an occupancy matrix with integer values.\n",
    "1. We have twisted Evolution to make it computable by ordinary desktop computers. For instance, we have programmed mutation to produce children in the immediate vicinity of the father. If a proposed mutation tears the tree, it is not accepted. Instead of this, add to the selection function a term to chastise torn trees and justify its naturalness.\n",
    "1.  The complexity of results has overcome our intuition. In this cases, a good tool is multivariate statistical analysis. One might try, for instance, [multiple regression](https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=CAESegHrOzAVdHU3nLFF8liVjLWJV84A32_-TIowlCRoPITzW35H9v_qq8m0U8EKAge_64QYBExz-x7TZrlh0to2JgMqdYTMys4Uswyis822EQnjTD7KDeIuef0bypIbvq9wFrLl0BOaK14qermxw0bKbljpc002YfIzaXx5&ved=2ahUKEwjJ5-Ow7ayXAxX7SjABHQ4RDpcQFnoECB8QAQ&uoh=2&usg=AOvVaw3Tz5ClVBQO9sll1iFC6Fm3) to quantify the impact of some input variables over the output one. Use this for our case in which the input variables are the number of nodes, population size, the number of children, the max-depth, globularity, a measure of rich structure, and other hidden variables of your invention. The output variable could be the final best fitness. Also, if you decide to use diverse metrics or fitness functions, you would need [multivariate regression analysis](https://www.tqmp.org/RegularArticles/vol20-2/p186/p186.pdf).\n",
    "1. If you feel overcome with so much work to disentangle simple questions, create a cybercommunity ofexperimentalists and give them the task of figuring out a robust answer to the question: Does the complexity of morpho-trees smash Evolution? Of course, they must invent a definition of complexity that causes Evolution to behave as expected, else prove that no definiton of complexity exists that does that.\n",
    "1. Is the Evolution of 2D morpho-trees governed by pleiotropy? We consider that observed evolution by jumps is a sign of pleiotropy. But the arising of monomorphism must be also investigated. Research it.\n",
    "1. The Evolution of fitness advances by jumps. Nevertheless, the enveloping curve looks, in general, as the old pattern of a convex function that tends to a maximal value, which is its state of equilibrium. For this reason, the MAX-theory seems a good candidate to explain the form of that envelope. If a good indicator of complexity is found, the behavior of Evolution in its battle against complexity is already predicted by this theory. Test this expectancy."
   ]
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# CONCLUSIONS\n",
    "\n",
    "[A previous work](https://drive.google.com/file/d/1P2b0SPQbbW8alRUJKkbviHMrRwj8BlNJ/view?usp=sharing) has shown us that a good strategy to create evolutionary stability is pleiotropy, that happens when one change causes many effects. Imagine a bicycle pignone that connects to the chain. Changing the width of a tooth in the pignone causes an attachment defect on all links in the chain, that are more than 100. The result is that no user is interested in making such a change. The final effect is design stability. We saw this in phylogenetic trees and that is why  Evolution in the space of those trees employs too many generations to get something similar to a target tree.\n",
    "\n",
    "Since cellular reproduction is also described by a tree, we imagined that morphogenesis is a modulation of reproduction that might explain two contradictory facts. First: why the flies are the same all over the world. Second: why all species have too many highly variable small details.  Trees have the potentiality of explaining both facts. In first place,  leaves of trees can mutate without distorting the tree. Therefore, trees are a source of tremendous variability. In second place, deeper nodes can mutate to the price of causing destroying changes that might amount to death. Whence, trees are reticent to changes, they can facilitate stability. Thus, we formulated a model for morphogenesis that seemed to be simple and prospective: the lighting network Model. This model, which says that inside the reproductive tree there is a subtree, whose nodes expells messengers that can regulate the reproduction or cause differentiation. So, its nodes are like lamps in the illuminating network of a house. In [the previous contribution](https://drive.google.com/file/d/1RxHqtlZGUFg7FAWQ0HLso5ZFZRi2O7nm/view?usp=sharing) we used the node class, an element of the graph theory (nodes and edges), to encode these trees, the morpho-trees. This encoding is natural but extremely expensive to work with. Therefore, it is a must to study other options.\n",
    "\n",
    "In this contribution, we researched the possibility of using strings or sequences of letters to encode trees. We engineered the Evolution of trees thanks to the [Newick format or Newick Notation of trees](https://en.wikipedia.org/w/index.php?title=Newick_format&oldid=1375769084) as strings. This possibility enabled us to challenge Evolution with the task of reproducing the shape of an area that was illuminated by a target morpho-tree.  Our two main results are:\n",
    "1. The number of nodes is poorly related to complexity. In fact, it has been observed in many cases that a task with a higher number of nodes is resolved earlier and to a best degree than with a lower one. Thus, the most important open question is how to define the complexity of morpho-trees in order to show that complexity smashes Evolution, such as we have found it in previous works. Maybe, one needs to challenge Evolution with abstract tasks, like reproducing the structure of a collar of holes that models a vertebral spine. If in this task, complexity, given by the number of holes, smashes Evolution, this would explain the evolutionary stability of the shape of vertebrates.\n",
    "2. According to our simulations, Evolution destroys morpho-trees. To make this result compatible with Nature, a prediction is mandatory. What we see in Nature is that human beings have two eyes, and, by the same token, the form and shape of all species are dominated by monomorphic characters. Thus, the falsifying prediction is that the fossil record of all species must be filled in every kind of monstrosities (forms that are very different from the present ones, and with a very low fitness). One can test this prediction by going into the museum and observing fossils.\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "authorship_tag": "ABX9TyPMZ4q5qDW6pu28cQEFFU0L",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "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.14.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
