{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tutorial 1: Basic Connectivity Patterns\n",
    "\n",
    "This tutorial introduces the fundamental connectivity patterns in `braintools.conn`. You'll learn how to create basic network topologies, understand connection results, and work with weights and delays.\n",
    "\n",
    "---\n",
    "\n",
    "## 1. Introduction to Connectivity <a name=\"introduction\"></a>\n",
    "\n",
    "Neural networks are defined not just by their neurons, but by how those neurons are connected. The `braintools.conn` module provides a comprehensive system for generating biologically-plausible connectivity patterns.\n",
    "\n",
    "### Why Connectivity Matters\n",
    "\n",
    "- **Network Dynamics**: Connection patterns determine how information flows through neural populations\n",
    "- **Computational Properties**: Different topologies enable different computations\n",
    "- **Biological Realism**: Real neural circuits exhibit specific connectivity motifs\n",
    "- **Efficiency**: Sparse connectivity reduces computational cost while maintaining function\n",
    "\n",
    "Let's start by importing the necessary libraries:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:42.778583Z",
     "start_time": "2025-10-01T16:00:39.601961Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import brainunit as u\n",
    "from braintools import conn, visualize as vis\n",
    "from braintools.init import Constant, Normal, Uniform, LogNormal\n",
    "\n",
    "# Set random seed for reproducibility\n",
    "np.random.seed(42)\n",
    "\n",
    "# Configure matplotlib\n",
    "plt.rcParams['figure.figsize'] = (12, 4)\n",
    "plt.rcParams['font.size'] = 10\n",
    "\n",
    "print(\"✓ Imports successful\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✓ Imports successful\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 2. Understanding ConnectionResult <a name=\"connectionresult\"></a>\n",
    "\n",
    "All connectivity patterns in `braintools.conn` return a `ConnectionResult` object. This object contains:\n",
    "\n",
    "- **`pre_indices`**: Array of presynaptic neuron indices\n",
    "- **`post_indices`**: Array of postsynaptic neuron indices\n",
    "- **`weights`**: Synaptic weights (optional)\n",
    "- **`delays`**: Synaptic delays (optional)\n",
    "- **`metadata`**: Additional information about the connectivity pattern\n",
    "\n",
    "Let's create a simple connection and examine its structure:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:42.833445Z",
     "start_time": "2025-10-01T16:00:42.823531Z"
    }
   },
   "source": [
    "# Create a simple random connectivity\n",
    "simple_conn = conn.Random(prob=0.1, seed=42)\n",
    "result = simple_conn(pre_size=10, post_size=10)\n",
    "\n",
    "print(\"ConnectionResult Structure:\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Number of connections: {len(result.pre_indices)}\")\n",
    "print(f\"\\nPresynaptic indices (first 10):\")\n",
    "print(result.pre_indices[:10])\n",
    "print(f\"\\nPostsynaptic indices (first 10):\")\n",
    "print(result.post_indices[:10])\n",
    "print(f\"\\nWeights: {result.weights}\")\n",
    "print(f\"Delays: {result.delays}\")\n",
    "print(f\"\\nMetadata:\")\n",
    "for key, value in result.metadata.items():\n",
    "    print(f\"  {key}: {value}\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ConnectionResult Structure:\n",
      "==================================================\n",
      "Number of connections: 12\n",
      "\n",
      "Presynaptic indices (first 10):\n",
      "[0 1 3 3 4 4 6 6 7 8]\n",
      "\n",
      "Postsynaptic indices (first 10):\n",
      "[7 2 2 6 1 7 2 4 5 0]\n",
      "\n",
      "Weights: None\n",
      "Delays: None\n",
      "\n",
      "Metadata:\n",
      "  pattern: random\n",
      "  probability: 0.1\n",
      "  allow_self_connections: False\n",
      "  weight_initialization: None\n",
      "  delay_initialization: None\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Connection Density\n",
    "\n",
    "Let's calculate the connection density (ratio of actual connections to possible connections):"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:46.586764Z",
     "start_time": "2025-10-01T16:00:46.581628Z"
    }
   },
   "source": [
    "def calculate_density(result, allow_self_connections=False):\n",
    "    \"\"\"Calculate connection density from ConnectionResult.\"\"\"\n",
    "    pre_size = result.pre_size if isinstance(result.pre_size, int) else np.prod(result.pre_size)\n",
    "    post_size = result.post_size if isinstance(result.post_size, int) else np.prod(result.post_size)\n",
    "    \n",
    "    max_connections = pre_size * post_size\n",
    "    if not allow_self_connections and pre_size == post_size:\n",
    "        max_connections -= pre_size\n",
    "    \n",
    "    actual_connections = len(result.pre_indices)\n",
    "    density = actual_connections / max_connections\n",
    "    \n",
    "    return density, actual_connections, max_connections\n",
    "\n",
    "density, actual, maximum = calculate_density(result)\n",
    "print(f\"Connection density: {density:.1%}\")\n",
    "print(f\"Actual connections: {actual} / {maximum} possible\")\n",
    "print(f\"Expected density (prob=0.1): ~10%\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connection density: 13.3%\n",
      "Actual connections: 12 / 90 possible\n",
      "Expected density (prob=0.1): ~10%\n"
     ]
    }
   ],
   "execution_count": 3
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 3. Random Connectivity <a name=\"random-connectivity\"></a>\n",
    "\n",
    "Random connectivity is the simplest and most fundamental pattern. Each potential connection is made with a fixed probability.\n",
    "\n",
    "### 3.1 Basic Random Connectivity\n",
    "\n",
    "The `Random` class (also aliased as `FixedProb`) creates connections with a specified probability:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:47.938122Z",
     "start_time": "2025-10-01T16:00:47.931886Z"
    }
   },
   "source": [
    "# Create random connectivity with 10% connection probability\n",
    "random_conn = conn.Random(prob=0.1, seed=42)\n",
    "result_random = random_conn(pre_size=100, post_size=100)\n",
    "\n",
    "print(f\"Random Connectivity (prob=0.1)\")\n",
    "print(f\"Generated {len(result_random.pre_indices)} connections\")\n",
    "\n",
    "density, actual, maximum = calculate_density(result_random)\n",
    "print(f\"Connection density: {density:.2%}\")\n",
    "print(f\"Expected: ~10%\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Random Connectivity (prob=0.1)\n",
      "Generated 1019 connections\n",
      "Connection density: 10.29%\n",
      "Expected: ~10%\n"
     ]
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 Effect of Connection Probability\n",
    "\n",
    "Let's examine how connection probability affects network density:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:49.367818Z",
     "start_time": "2025-10-01T16:00:49.348407Z"
    }
   },
   "source": [
    "# Test different probabilities\n",
    "probabilities = [0.01, 0.05, 0.1, 0.2, 0.3, 0.5]\n",
    "network_size = 100\n",
    "\n",
    "results_by_prob = {}\n",
    "for prob in probabilities:\n",
    "    conn_pattern = conn.Random(prob=prob, seed=42)\n",
    "    result = conn_pattern(pre_size=network_size, post_size=network_size)\n",
    "    density, n_conn, _ = calculate_density(result)\n",
    "    results_by_prob[prob] = (n_conn, density)\n",
    "\n",
    "# Display results\n",
    "print(\"\\nConnection Probability vs. Actual Density:\")\n",
    "print(\"=\" * 60)\n",
    "print(f\"{'Probability':<15} {'Connections':<15} {'Density':<15} {'Error'}\")\n",
    "print(\"=\" * 60)\n",
    "for prob in probabilities:\n",
    "    n_conn, density = results_by_prob[prob]\n",
    "    error = abs(density - prob) / prob * 100\n",
    "    print(f\"{prob:<15.2f} {n_conn:<15} {density:<15.4f} {error:>5.1f}%\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Connection Probability vs. Actual Density:\n",
      "============================================================\n",
      "Probability     Connections     Density         Error\n",
      "============================================================\n",
      "0.01            93              0.0094            6.1%\n",
      "0.05            486             0.0491            1.8%\n",
      "0.10            1019            0.1029            2.9%\n",
      "0.20            2021            0.2041            2.1%\n",
      "0.30            3021            0.3052            1.7%\n",
      "0.50            5021            0.5072            1.4%\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 Self-Connections\n",
    "\n",
    "By default, self-connections (neuron connecting to itself) are disabled. Let's see the difference:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:51.822975Z",
     "start_time": "2025-10-01T16:00:51.815972Z"
    }
   },
   "source": [
    "# Without self-connections (default)\n",
    "conn_no_self = conn.Random(prob=0.2, allow_self_connections=False, seed=42)\n",
    "result_no_self = conn_no_self(pre_size=50, post_size=50)\n",
    "\n",
    "# With self-connections\n",
    "conn_with_self = conn.Random(prob=0.2, allow_self_connections=True, seed=42)\n",
    "result_with_self = conn_with_self(pre_size=50, post_size=50)\n",
    "\n",
    "# Check for self-connections\n",
    "self_conn_mask = result_with_self.pre_indices == result_with_self.post_indices\n",
    "n_self_connections = np.sum(self_conn_mask)\n",
    "\n",
    "print(\"Self-Connections Comparison:\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Without self-connections: {len(result_no_self.pre_indices)} connections\")\n",
    "print(f\"With self-connections:    {len(result_with_self.pre_indices)} connections\")\n",
    "print(f\"Number of self-connections: {n_self_connections}\")\n",
    "print(f\"Expected self-connections: ~{50 * 0.2:.1f} (50 neurons × 20% prob)\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Self-Connections Comparison:\n",
      "==================================================\n",
      "Without self-connections: 519 connections\n",
      "With self-connections:    524 connections\n",
      "Number of self-connections: 9\n",
      "Expected self-connections: ~10.0 (50 neurons × 20% prob)\n"
     ]
    }
   ],
   "execution_count": 6
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 4. Regular Deterministic Patterns <a name=\"deterministic-patterns\"></a>\n",
    "\n",
    "In addition to random connectivity, `braintools.conn` provides deterministic connectivity patterns.\n",
    "\n",
    "### 4.1 All-to-All Connectivity\n",
    "\n",
    "The `AllToAll` pattern connects every presynaptic neuron to every postsynaptic neuron:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:53.120167Z",
     "start_time": "2025-10-01T16:00:53.116364Z"
    }
   },
   "source": [
    "# Create all-to-all connectivity\n",
    "all2all = conn.AllToAll(include_self_connections=False)\n",
    "result_all2all = all2all(pre_size=10, post_size=10)\n",
    "\n",
    "print(\"All-to-All Connectivity:\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Network size: 10 × 10\")\n",
    "print(f\"Connections: {len(result_all2all.pre_indices)}\")\n",
    "print(f\"Expected: 10 × 10 - 10 (self) = 90\")\n",
    "\n",
    "density, _, _ = calculate_density(result_all2all)\n",
    "print(f\"Density: {density:.1%}\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "All-to-All Connectivity:\n",
      "==================================================\n",
      "Network size: 10 × 10\n",
      "Connections: 90\n",
      "Expected: 10 × 10 - 10 (self) = 90\n",
      "Density: 100.0%\n"
     ]
    }
   ],
   "execution_count": 7
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.2 One-to-One Connectivity\n",
    "\n",
    "The `OneToOne` pattern creates one-to-one mappings, useful for identity mappings or layer-to-layer projections:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:54.193060Z",
     "start_time": "2025-10-01T16:00:54.187277Z"
    }
   },
   "source": [
    "# Equal sizes\n",
    "one2one_equal = conn.OneToOne()\n",
    "result_equal = one2one_equal(pre_size=10, post_size=10)\n",
    "\n",
    "print(\"One-to-One Connectivity (Equal Sizes):\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Pre size: 10, Post size: 10\")\n",
    "print(f\"Connections: {len(result_equal.pre_indices)}\")\n",
    "print(f\"Connection pairs (pre → post):\")\n",
    "for i in range(min(5, len(result_equal.pre_indices))):\n",
    "    print(f\"  {result_equal.pre_indices[i]} → {result_equal.post_indices[i]}\")\n",
    "\n",
    "# Different sizes (non-circular)\n",
    "one2one_diff = conn.OneToOne(circular=False)\n",
    "result_diff = one2one_diff(pre_size=8, post_size=12)\n",
    "\n",
    "print(f\"\\nOne-to-One Connectivity (Different Sizes, Non-Circular):\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Pre size: 8, Post size: 12\")\n",
    "print(f\"Connections: {len(result_diff.pre_indices)}\")\n",
    "print(f\"Note: Only first 8 neurons connected (min of 8 and 12)\")\n",
    "\n",
    "# Circular mapping\n",
    "one2one_circ = conn.OneToOne(circular=True)\n",
    "result_circ = one2one_circ(pre_size=8, post_size=12)\n",
    "\n",
    "print(f\"\\nOne-to-One Connectivity (Different Sizes, Circular):\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Pre size: 8, Post size: 12\")\n",
    "print(f\"Connections: {len(result_circ.pre_indices)}\")\n",
    "print(f\"Connection pairs (pre → post):\")\n",
    "for i in range(min(12, len(result_circ.pre_indices))):\n",
    "    print(f\"  {result_circ.pre_indices[i]} → {result_circ.post_indices[i]}\")\n",
    "print(f\"Note: Pre indices wrap around using modulo (% 8)\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "One-to-One Connectivity (Equal Sizes):\n",
      "==================================================\n",
      "Pre size: 10, Post size: 10\n",
      "Connections: 10\n",
      "Connection pairs (pre → post):\n",
      "  0 → 0\n",
      "  1 → 1\n",
      "  2 → 2\n",
      "  3 → 3\n",
      "  4 → 4\n",
      "\n",
      "One-to-One Connectivity (Different Sizes, Non-Circular):\n",
      "==================================================\n",
      "Pre size: 8, Post size: 12\n",
      "Connections: 8\n",
      "Note: Only first 8 neurons connected (min of 8 and 12)\n",
      "\n",
      "One-to-One Connectivity (Different Sizes, Circular):\n",
      "==================================================\n",
      "Pre size: 8, Post size: 12\n",
      "Connections: 12\n",
      "Connection pairs (pre → post):\n",
      "  0 → 0\n",
      "  1 → 1\n",
      "  2 → 2\n",
      "  3 → 3\n",
      "  4 → 4\n",
      "  5 → 5\n",
      "  6 → 6\n",
      "  7 → 7\n",
      "  0 → 8\n",
      "  1 → 9\n",
      "  2 → 10\n",
      "  3 → 11\n",
      "Note: Pre indices wrap around using modulo (% 8)\n"
     ]
    }
   ],
   "execution_count": 8
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 5. Working with Weights and Delays <a name=\"weights-delays\"></a>\n",
    "\n",
    "Synaptic weights and delays are crucial for realistic neural network simulations. `braintools.conn` supports flexible initialization through the `braintools.init` module.\n",
    "\n",
    "### 5.1 Constant Weights and Delays\n",
    "\n",
    "The simplest approach uses constant values with physical units:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:56.111913Z",
     "start_time": "2025-10-01T16:00:55.836357Z"
    }
   },
   "source": [
    "# Random connectivity with constant weights and delays\n",
    "conn_const = conn.Random(\n",
    "    prob=0.1,\n",
    "    weight=Constant(1.5 * u.nS),  # Synaptic conductance\n",
    "    delay=Constant(2.0 * u.ms),   # Transmission delay\n",
    "    seed=42\n",
    ")\n",
    "\n",
    "result_const = conn_const(pre_size=50, post_size=50)\n",
    "\n",
    "print(\"Connectivity with Constant Weights and Delays:\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Number of connections: {len(result_const.pre_indices)}\")\n",
    "print(f\"\\nWeight statistics:\")\n",
    "print(f\"  Mean: {np.mean(result_const.weights)}\")\n",
    "print(f\"  Std:  {np.std(result_const.weights)}\")\n",
    "print(f\"  All weights are identical: {np.all(result_const.weights == result_const.weights[0])}\")\n",
    "print(f\"\\nDelay statistics:\")\n",
    "print(f\"  Mean: {np.mean(result_const.delays)}\")\n",
    "print(f\"  Std:  {np.std(result_const.delays)}\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Connectivity with Constant Weights and Delays:\n",
      "==================================================\n",
      "Number of connections: 263\n",
      "\n",
      "Weight statistics:\n",
      "  Mean: 1.5 * nsiemens\n",
      "  Std:  0.0 * nsiemens\n",
      "  All weights are identical: True\n",
      "\n",
      "Delay statistics:\n",
      "  Mean: 2.0 * msecond\n",
      "  Std:  0.0 * msecond\n"
     ]
    }
   ],
   "execution_count": 9
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2 Stochastic Weight Distributions\n",
    "\n",
    "More realistic networks use stochastic weight distributions:\n",
    "\n",
    "#### Normal Distribution"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:00:57.429985Z",
     "start_time": "2025-10-01T16:00:57.292628Z"
    }
   },
   "source": [
    "# Normal (Gaussian) distribution\n",
    "conn_normal = conn.Random(\n",
    "    prob=0.15,\n",
    "    weight=Normal(mean=1.0 * u.nS, std=0.2 * u.nS),\n",
    "    delay=Normal(mean=1.5 * u.ms, std=0.3 * u.ms),\n",
    "    seed=42\n",
    ")\n",
    "\n",
    "result_normal = conn_normal(pre_size=100, post_size=100)\n",
    "\n",
    "print(\"Normal Distribution Weights and Delays:\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Number of connections: {len(result_normal.pre_indices)}\")\n",
    "print(f\"\\nWeight statistics:\")\n",
    "print(f\"  Mean: {np.mean(result_normal.weights):.3f}\")\n",
    "print(f\"  Std:  {np.std(result_normal.weights):.3f}\")\n",
    "print(f\"  Min:  {np.min(result_normal.weights):.3f}\")\n",
    "print(f\"  Max:  {np.max(result_normal.weights):.3f}\")\n",
    "print(f\"\\nDelay statistics:\")\n",
    "print(f\"  Mean: {np.mean(result_normal.delays):.3f}\")\n",
    "print(f\"  Std:  {np.std(result_normal.delays):.3f}\")\n",
    "print(f\"  Min:  {np.min(result_normal.delays):.3f}\")\n",
    "print(f\"  Max:  {np.max(result_normal.delays):.3f}\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Normal Distribution Weights and Delays:\n",
      "==================================================\n",
      "Number of connections: 1515\n",
      "\n",
      "Weight statistics:\n",
      "  Mean: 1.004 * nsiemens\n",
      "  Std:  0.201 * nsiemens\n",
      "  Min:  0.233 * nsiemens\n",
      "  Max:  1.675 * nsiemens\n",
      "\n",
      "Delay statistics:\n",
      "  Mean: 1.493 * msecond\n",
      "  Std:  0.291 * msecond\n",
      "  Min:  0.323 * msecond\n",
      "  Max:  2.374 * msecond\n"
     ]
    }
   ],
   "execution_count": 10
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Uniform Distribution"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:01:14.553789Z",
     "start_time": "2025-10-01T16:01:14.537669Z"
    }
   },
   "source": [
    "# Uniform distribution\n",
    "conn_uniform = conn.Random(\n",
    "    prob=0.15,\n",
    "    weight=Uniform(low=0.5 * u.nS, high=2.0 * u.nS),\n",
    "    delay=Uniform(low=0.5 * u.ms, high=3.0 * u.ms),\n",
    "    seed=42\n",
    ")\n",
    "\n",
    "result_uniform = conn_uniform(pre_size=100, post_size=100)\n",
    "\n",
    "print(\"Uniform Distribution Weights and Delays:\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Weight range: [0.5, 2.0] nS\")\n",
    "print(f\"  Mean: {np.mean(result_uniform.weights):.3f}\")\n",
    "print(f\"  Std:  {np.std(result_uniform.weights):.3f}\")\n",
    "print(f\"  Min:  {np.min(result_uniform.weights):.3f}\")\n",
    "print(f\"  Max:  {np.max(result_uniform.weights):.3f}\")\n",
    "print(f\"\\nDelay range: [0.5, 3.0] ms\")\n",
    "print(f\"  Mean: {np.mean(result_uniform.delays):.3f}\")\n",
    "print(f\"  Std:  {np.std(result_uniform.delays):.3f}\")\n",
    "print(f\"  Min:  {np.min(result_uniform.delays):.3f}\")\n",
    "print(f\"  Max:  {np.max(result_uniform.delays):.3f}\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Uniform Distribution Weights and Delays:\n",
      "==================================================\n",
      "Weight range: [0.5, 2.0] nS\n",
      "  Mean: 1.258 * nsiemens\n",
      "  Std:  0.432 * nsiemens\n",
      "  Min:  0.500 * nsiemens\n",
      "  Max:  2.000 * nsiemens\n",
      "\n",
      "Delay range: [0.5, 3.0] ms\n",
      "  Mean: 1.749 * msecond\n",
      "  Std:  0.729 * msecond\n",
      "  Min:  0.500 * msecond\n",
      "  Max:  2.998 * msecond\n"
     ]
    }
   ],
   "execution_count": 12
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Log-Normal Distribution\n",
    "\n",
    "Log-normal distributions are common in biological synaptic weights:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:01:59.437821Z",
     "start_time": "2025-10-01T16:01:59.366569Z"
    }
   },
   "source": [
    "# Log-normal distribution (common in biological synapses)\n",
    "conn_lognormal = conn.Random(\n",
    "    prob=0.15,\n",
    "    weight=LogNormal(mean=1.0 * u.nS, std=0.5 * u.nS),\n",
    "    delay=Constant(1.0 * u.ms),\n",
    "    seed=42\n",
    ")\n",
    "\n",
    "result_lognormal = conn_lognormal(pre_size=100, post_size=100)\n",
    "\n",
    "print(\"Log-Normal Distribution Weights:\")\n",
    "print(\"=\" * 50)\n",
    "print(f\"Weight statistics:\")\n",
    "print(f\"  Mean: {np.mean(result_lognormal.weights):.3f}\")\n",
    "print(f\"  Std:  {np.std(result_lognormal.weights):.3f}\")\n",
    "print(f\"  Median: {u.math.median(result_lognormal.weights):.3f}\")\n",
    "print(f\"  Min:  {np.min(result_lognormal.weights):.3f}\")\n",
    "print(f\"  Max:  {np.max(result_lognormal.weights):.3f}\")\n",
    "print(f\"\\nNote: Log-normal has positive skew (long tail)\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Log-Normal Distribution Weights:\n",
      "==================================================\n",
      "Weight statistics:\n",
      "  Mean: 1.011 * nsiemens\n",
      "  Std:  0.507 * nsiemens\n",
      "  Median: 0.898 * nsiemens\n",
      "  Min:  0.146 * nsiemens\n",
      "  Max:  4.410 * nsiemens\n",
      "\n",
      "Note: Log-normal has positive skew (long tail)\n"
     ]
    }
   ],
   "execution_count": 14
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3 Visualizing Weight Distributions\n",
    "\n",
    "Let's compare the different weight distributions visually using `braintools.visualize`:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:04:01.351767Z",
     "start_time": "2025-10-01T16:04:01.042890Z"
    }
   },
   "source": [
    "# Extract weight values (remove units for plotting)\n",
    "weights_normal = u.get_mantissa(result_normal.weights)\n",
    "weights_uniform = u.get_mantissa(result_uniform.weights)\n",
    "weights_lognormal = u.get_mantissa(result_lognormal.weights)\n",
    "\n",
    "# Create figure with subplots\n",
    "fig, axes = plt.subplots(1, 3, figsize=(15, 4))\n",
    "\n",
    "# Plot each distribution using vis.distribution_plot\n",
    "vis.distribution_plot(\n",
    "    weights_normal,\n",
    "    bins=30,\n",
    "    alpha=0.7,\n",
    "    colors=['blue'],\n",
    "    edgecolor='black',\n",
    "    ax=axes[0],\n",
    "    xlabel='Weight (nS)',\n",
    "    title='Normal Distribution'\n",
    ")\n",
    "\n",
    "vis.distribution_plot(\n",
    "    weights_uniform,\n",
    "    bins=30,\n",
    "    alpha=0.7,\n",
    "    colors=['green'],\n",
    "    edgecolor='black',\n",
    "    ax=axes[1],\n",
    "    xlabel='Weight (nS)',\n",
    "    title='Uniform Distribution'\n",
    ")\n",
    "\n",
    "vis.distribution_plot(\n",
    "    weights_lognormal,\n",
    "    bins=30,\n",
    "    alpha=0.7,\n",
    "    colors=['orange'],\n",
    "    edgecolor='black',\n",
    "    ax=axes[2],\n",
    "    xlabel='Weight (nS)',\n",
    "    title='Log-Normal Distribution'\n",
    ")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "print(\"\\nKey Observations:\")\n",
    "print(\"- Normal: Symmetric around mean\")\n",
    "print(\"- Uniform: Flat distribution within range\")\n",
    "print(\"- Log-Normal: Right-skewed with long tail (biologically realistic)\")"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAGGCAYAAACUkchWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAApP5JREFUeJzs3Xt8FPW9//H3bCCbkKvkBoRIIgIKSmihUBQrVpSiUqm1VWjlotJ6garRo+IFRKVBUcRaC94QbxQvx0t78OAFS/15RK1QpN4QBAICCUmA7G5INmR3fn/ErKzJktnN7mazvJ48fLQ7+/3MfD+zk/3OfGZ2xjBN0xQAAAAAAAAAAGjB1tEdAAAAAAAAAAAgVlFEBwAAAAAAAAAgAIroAAAAAAAAAAAEQBEdAAAAAAAAAIAAKKIDAAAAAAAAABAARXQAAAAAAAAAAAKgiA4AAAAAAAAAQAAU0QEAAAAAAAAACIAiOgAAAAAAAAAAAVBEByBJGj16tEaPHh2ReRuGoTvuuCMi8z7cmjVrZBiG1qxZ45s2evRonXTSSRFftiRt375dhmFo2bJlUVkeACDypk6dqsLCQr9pLpdLl19+uXr06CHDMHTttdd2SN8iibEbAICO1doYGS533HGHDMMI+3xb8/1aQ3NeL730UlSW39q+HBAKiuiARcuWLZNhGEpKStKuXbtavB/NA76OVFhYKMMwZBiGbDabMjMzdfLJJ+t3v/udPvzww7AtZ/ny5Vq0aFHY5hdOsdw3ADgaNR8IVlVVtfr+SSedFNYTxX/84x+1bNkyXXnllXrmmWd0ySWXhG3ekcDYHdt9A4DOpPm4+OOPP+7orkj6boybOXNmi/eiXaztKM2fSfN/SUlJ6tWrl8aOHas//elPcjqdYVnO7t27dccdd2jDhg1hmV84xXLfED+6dHQHgM7G7XZr/vz5euihhzq6Kx1myJAhuv766yVJTqdTX3zxhV588UU99thjuu6667Rw4UK/9nV1derSJbivm+XLl+vTTz8N6uq+n/zkJ6qrq1NiYmJQywpWoL716dNHdXV16tq1a0SXDwCInscee0xer9dv2jvvvKMf//jHmjNnTgf1KniM3YzdABDPHnvsMc2aNUu9evXq6K50mDvvvFNFRUU6dOiQysvLtWbNGl177bVauHCh/va3v2nw4MG+trfddptuvvnmoOa/e/duzZ07V4WFhRoyZIjluDfffDOo5YTiSH1rbV8OCAVFdCBIQ4YMifgAbZqm6uvrlZycHJH5t1d+fr5++9vf+k275557NGnSJD3wwAPq16+frrzySt97SUlJEe1PfX29EhMTZbPZIr6sI2k+6w8AiB+tFVf37t2rgQMHhm0ZjY2N8nq9ES0kM3a3jrEbADq/QYMGadOmTZo/f77+9Kc/RWw5tbW1SklJidj822vcuHEaNmyY7/WsWbP0zjvv6LzzztPPf/5zffHFF74aQ5cuXYI+WR6sgwcPqlu3bhE/Ud4WTpQjXLidCxCkW265RR6PR/Pnz2+zbWNjo+666y717dtXdrtdhYWFuuWWW+R2u/3aFRYW6rzzztMbb7yhYcOGKTk5WY888ojv52cvvPCC5s6dq/z8fKWlpenCCy9UTU2N3G63rr32WuXm5io1NVXTpk1rMe8nn3xSP/3pT5Wbmyu73a6BAwdq8eLFYV0nkpScnKxnnnlG3bt317x582Sapu+9799X1el06tprr1VhYaHsdrtyc3N11llnaf369ZKabo2zcuVKlZWV+X6S1nwPs+Z1smLFCt12223Kz89Xt27d5HA4jnjPuHXr1umUU05RcnKyioqKtGTJEr/3m38Ct337dr/p35/nkfoW6L6q77zzjk477TSlpKQoMzNT559/vr744gu/Ns23ItiyZYumTp2qzMxMZWRkaNq0aTp48KC1DwEAYMnh4+u8efPUu3dvJSUl6cwzz9SWLVv82h5+H83muG3btmnlypW+caB57Ni7d68uu+wy5eXlKSkpScXFxXrqqaf85tc8Vtx3331atGiRbx/h888/940FX331lX77298qIyNDOTk5uv3222Wapnbu3Knzzz9f6enp6tGjh+6///52rQfGbsZuAIiUf//73xo3bpzS09OVmpqqM888Ux988EGLdhs3btTpp5+u5ORk9e7dW3fffbeefPLJVr/fAyksLNTkyZP12GOPaffu3WHpW/MY889//lNXXXWVcnNz1bt3b0nf3cq1ue/dunXT8ccf77ttzD//+U+NGDFCycnJGjBggN5++22/eZeVlemqq67SgAEDlJycrKysLP3qV7+ynG8wfvrTn+r2229XWVmZnn32Wd/01u6J/tZbb2nUqFHKzMxUamqqBgwYoFtuuUVS09j6ox/9SJI0bdo033jaPH42r5N169bpJz/5ibp16+aLDfT8NY/Ho1tuuUU9evRQSkqKfv7zn2vnzp1+bQoLCzV16tQWsYfPs62+tXZP9NraWl1//fUqKCiQ3W7XgAEDdN999/ntC0lN+0MzZszQq6++qpNOOkl2u12DBg3SqlWrWl/hiGtciQ4EqaioyDdA33zzzUe8Gv3yyy/XU089pQsvvFDXX3+9PvzwQ5WWluqLL77QK6+84td206ZNmjhxon7/+99r+vTpGjBggO+90tJSJScn6+abb9aWLVv00EMPqWvXrrLZbNq/f7/uuOMOffDBB1q2bJmKioo0e/ZsX+zixYs1aNAg/fznP1eXLl3097//XVdddZW8Xq+uvvrqsK6b1NRU/eIXv9ATTzyhzz//XIMGDWq13RVXXKGXXnpJM2bM0MCBA1VdXa333ntPX3zxhX74wx/q1ltvVU1Njb755hs98MADvnkf7q677lJiYqJuuOEGud3uI57d3r9/v8455xz9+te/1sSJE/XCCy/oyiuvVGJioi699NKgcrTSt8O9/fbbGjdunI477jjdcccdqqur00MPPaRTTz1V69evbzGY//rXv1ZRUZFKS0u1fv16Pf7448rNzdU999wTVD8BAG2bP3++bDabbrjhBtXU1Ojee+/Vb37zm4D3CT/xxBP1zDPP6LrrrlPv3r19t0fJyclRXV2dRo8erS1btmjGjBkqKirSiy++qKlTp+rAgQO65ppr/Ob15JNPqr6+Xr/73e9kt9vVvXt333sXXXSRTjzxRM2fP18rV67U3Xffre7du+uRRx7RT3/6U91zzz167rnndMMNN+hHP/qRfvKTn4S8Dhi7W2LsBoD2+eyzz3TaaacpPT1dN954o7p27apHHnlEo0eP9hWYJWnXrl0644wzZBiGZs2apZSUFD3++OOy2+1BL/PWW2/V008/3ebV6Fb71uyqq65STk6OZs+erdraWt/0/fv367zzztPFF1+sX/3qV1q8eLEuvvhiPffcc7r22mt1xRVXaNKkSVqwYIEuvPBC7dy5U2lpaZKkf/3rX3r//fd18cUXq3fv3tq+fbsWL16s0aNH6/PPP1e3bt2Czv9ILrnkEt1yyy168803NX369IDr5bzzztPgwYN15513ym63a8uWLfq///s/SU37QHfeeadmz56t3/3udzrttNMkSaeccopvHtXV1Ro3bpwuvvhi/fa3v1VeXt4R+zVv3jwZhqGbbrpJe/fu1aJFizRmzBht2LAhqF/lW+nb4UzT1M9//nP94x//0GWXXaYhQ4bojTfe0H/9139p165dvn2FZu+9955efvllXXXVVUpLS9Of/vQn/fKXv9SOHTuUlZVluZ+IAyYAS5588klTkvmvf/3L/Prrr80uXbqYf/jDH3zvn3766eagQYN8rzds2GBKMi+//HK/+dxwww2mJPOdd97xTevTp48pyVy1apVf23/84x+mJPOkk04yGxoafNMnTpxoGoZhjhs3zq/9yJEjzT59+vhNO3jwYItcxo4dax533HF+004//XTz9NNPP/JK+Lav5557bsD3H3jgAVOS+dprr/mmSTLnzJnje52RkWFeffXVR1zOueee2yIX0/xunRx33HEtcmt+7x//+Idv2umnn25KMu+//37fNLfbbQ4ZMsTMzc31rdfmz3fbtm1tzjNQ37Zt22ZKMp988knftOblVFdX+6Z98sknps1mMydPnuybNmfOHFOSeemll/rN8xe/+IWZlZXVYlkAgO80f4dWVla2+v6gQYP8xrjm7/YTTzzRdLvdvukPPvigKcn8z3/+45s2ZcqUFt/5rY2FixYtMiWZzz77rG9aQ0ODOXLkSDM1NdV0OBymaX43VqSnp5t79+5tNY/f/e53vmmNjY1m7969TcMwzPnz5/um79+/30xOTjanTJly5JUToL+HY+xm7AYAqw4/Lg5kwoQJZmJiovn111/7pu3evdtMS0szf/KTn/imzZw50zQMw/z3v//tm1ZdXW1279691e/31hw+xk2bNs1MSkoyd+/ebZrmd+PBiy++GHTfmvMcNWqU2djY6LfM5nFq+fLlvmlffvmlKcm02WzmBx984Jv+xhtvtBhnWjtGX7t2rSnJfPrpp33TWhvPWmPlM8nIyDB/8IMf+F43j2HNmvcFAu1LmaZp/utf/2qRS7PmdbJkyZJW32ttPyw/P9+3f2SapvnCCy+YkswHH3zQN61Pnz6t7ut8f55H6tv39+VeffVVU5J59913+7W78MILTcMwzC1btvimSTITExP9pn3yySemJPOhhx5qsSzEN27nAoTguOOO0yWXXKJHH31Ue/bsabXN66+/LkkqKSnxm9581drKlSv9phcVFWns2LGtzmvy5Ml+9/EaMWKETNNscSXWiBEjtHPnTjU2NvqmHX4Gt6amRlVVVTr99NO1detW1dTUtJVq0Jqv7DrSE8AzMzP14YcfWvqpXSBTpkyxfHa6S5cu+v3vf+97nZiYqN///vfau3ev1q1bF3If2rJnzx5t2LBBU6dO9bvCcPDgwTrrrLN828jhrrjiCr/Xp512mqqrq+VwOCLWTwA4Wk2bNs3vaujmK5e2bt0a9Lxef/119ejRQxMnTvRN69q1q/7whz/I5XLpn//8p1/7X/7yl8rJyWl1Xpdffrnv/yckJGjYsGEyTVOXXXaZb3pmZqYGDBgQUl+/j7H7O4zdANA+Ho9Hb775piZMmKDjjjvON71nz56aNGmS3nvvPd/346pVqzRy5Ei/B0F2795dv/nNb0Ja9m233abGxsaAt14Npm/Npk+froSEhBbzSk1N1cUXX+x7PWDAAGVmZurEE0/0u5q9+f8fPl4fPhYeOnRI1dXVOv7445WZmem7TVq4paamtjnOS9Jrr70W8kM47Xa7pk2bZrn95MmTfVfnS9KFF16onj17tjrWhtPrr7+uhIQE/eEPf/Cbfv3118s0Tf3v//6v3/QxY8aob9++vteDBw9Wenp6WPbB0LlQRAdC1NYAXVZWJpvNpuOPP95veo8ePZSZmamysjK/6UVFRQGXdeyxx/q9zsjIkCQVFBS0mO71ev2K4//3f/+nMWPG+O7pmZOT47s3WSSK6C6XS5L8BsPvu/fee/Xpp5+qoKBAw4cP1x133BH0AHSk9fV9vXr1avEAmP79+0tSRO4716z5Mz781jzNTjzxRFVVVfn9JFBq+Vkfc8wxkpp+LggACN337/sphfc7t6ysTP369ZPN5r97feKJJ/reP1yw435SUpKys7NbTA/H+MDY/R3GbgBon8rKSh08eDDg96jX6/Xd97qsrKzF8bKkFtNqampUXl7u+2/fvn2tLruti92C6VuzQGNX7969W+xbZGRktHqMLvmPCXV1dZo9e7bvftzZ2dnKycnRgQMHInKMLjWN9Uca5y+66CKdeuqpuvzyy5WXl6eLL75YL7zwQlAF9fz8/KAeItqvXz+/14Zh6Pjjj4/oOC81bXe9evVqsT4C7bN9f5yXmsZ6xvmjD0V0IETHHXecfvvb3x7xanSp9YP21hzpyqzWznwfabr57cMwvv76a5155pmqqqrSwoULtXLlSr311lu67rrrJCnkM8xH8umnn0pqueNzuF//+tfaunWrHnroIfXq1UsLFizQoEGDWpzxPZJg7pFmRaDPyePxhHU5bWnrMwUAtJSUlCSp6aC0NQcPHvS1OVxHfucGO+5Hsq+M3e3D2A0AkXXNNdeoZ8+evv8uuOCCgG1vvfVWNTY2hu25FIHGrlCP0SVp5syZmjdvnn7961/rhRde0Jtvvqm33npLWVlZETlG/+abb1RTU3PEcT45OVnvvvuu3n77bV1yySXauHGjLrroIp111lmWx9Vwj/NSbIz1jPNoRhEdaIfmq9FbG6D79Okjr9erzZs3+02vqKjQgQMH1KdPn4j37+9//7vcbrf+9re/6fe//73OOeccjRkzJiKDm9R0dvuVV15RQUGB7yxuID179tRVV12lV199Vdu2bVNWVpbmzZvne9/qyQcrdu/e3eKqsa+++kqSfA8Ha75q7MCBA37tvn8WOpi+NX/GmzZtavHel19+qezs7BZX2QEAgnek79uDBw9q586dER93+/Tpo82bN7c4+P3yyy/9+hhrGLv9MXYDQPvk5OSoW7duAb9HbTab72rtPn36aMuWLS3afX/ajTfeqLfeesv33/333x9w+X379tVvf/tbPfLIIy0udgumb5H00ksvacqUKbr//vt14YUX6qyzztKoUaNajGfh8swzz0hSwNvHNrPZbDrzzDO1cOFCff7555o3b57eeecd/eMf/5AU3nFeUotaiWma2rJli98DvI855phW18v3x/pg+tanTx/t3r27xe1tYn2fDR2PIjrQDocP0OXl5X7vnXPOOZKkRYsW+U1fuHChJOncc8+NeP+az5gefoa0pqZGTz75ZNiXVVdXp0suuUT79u3TrbfeesQzxt//iVpubq569eolt9vtm5aSkhK2n7I1NjbqkUce8b1uaGjQI488opycHA0dOlSSfPc4e/fdd/36+uijj7aYn9W+9ezZU0OGDNFTTz3lN/B/+umnevPNN33bCACgfc4880wlJiZq8eLFLYrYjz76qBobGzVu3LiI9uGcc85ReXm5nn/+ed+0xsZGPfTQQ0pNTdXpp58e0eWHgrG7JcZuAGifhIQEnX322Xrttdf8bstRUVGh5cuXa9SoUUpPT5fUVNRdu3atNmzY4Gu3b98+Pffcc37zHDhwoMaMGeP7r3kcCOS2227ToUOHdO+994bct0hKSEhocRXzQw89FJGrq9955x3dddddKioqOuK95lu7RU7zveqbx/rmk8jhKvY//fTTfoXsl156SXv27PHbZ+vbt68++OADNTQ0+Kb9z//8T4vb7gTTt3POOUcej0d//vOf/aY/8MADMgwj4vuM6Ly6dHQHgM7u1ltv1TPPPKNNmzZp0KBBvunFxcWaMmWKHn30UR04cECnn366PvroIz311FOaMGGCzjjjjIj37eyzz1ZiYqLGjx+v3//+93K5XHrssceUm5t7xFvQtGXXrl169tlnJTVdwfb555/rxRdfVHl5ua6//nq/B4F9n9PpVO/evXXhhRequLhYqampevvtt/Wvf/3L74qCoUOH6vnnn1dJSYl+9KMfKTU1VePHjw+pv7169dI999yj7du3q3///nr++ee1YcMGPfroo74Htg4aNEg//vGPNWvWLO3bt0/du3fXihUr/B7SGkrfFixYoHHjxmnkyJG67LLLVFdXp4ceekgZGRm64447QsoHAOAvNzdXs2fP1m233aaf/OQn+vnPf65u3brp/fff11//+ledffbZIY8hVv3ud7/TI488oqlTp2rdunUqLCzUSy+9pP/7v//TokWLjngf0mhg7GbsBoBwWrp0qVatWtVi+jXXXKO7775bb731lkaNGqWrrrpKXbp00SOPPCK32+1X2L7xxhv17LPP6qyzztLMmTOVkpKixx9/XMcee6z27dsX8pXPzRe7PfXUUy3es9q3SDrvvPP0zDPPKCMjQwMHDtTatWv19ttvKysrq13z/d///V99+eWXamxsVEVFhd555x299dZb6tOnj/72t7+1emu7ZnfeeafeffddnXvuuerTp4/27t2rv/zlL+rdu7dGjRolqWm9ZmZmasmSJUpLS1NKSopGjBgR1DNPDte9e3eNGjVK06ZNU0VFhRYtWqTjjz9e06dP97W5/PLL9dJLL+lnP/uZfv3rX+vrr7/Ws88+6/egz2D7Nn78eJ1xxhm69dZbtX37dhUXF+vNN9/Ua6+9pmuvvbbFvAEfE4AlTz75pCnJ/Ne//tXivSlTppiSzEGDBvlNP3TokDl37lyzqKjI7Nq1q1lQUGDOmjXLrK+v92vXp08f89xzz20x33/84x+mJPPFF1+01Jc5c+aYkszKykrftL/97W/m4MGDzaSkJLOwsNC85557zKVLl5qSzG3btvnanX76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Cgp02223aerUqX5tQj2IBwDgaBOuMf35559XSUmJlixZohEjRmjRokUaO3asNm3apNzc3IBx27dv1w033KDTTjstLP0AACAehWu8BgAAoQnpnuiSdODAAT3++OOaNWuW9u3bJ6npJ2S7du2yPI/a2loVFxfr4YcfttR+27ZtOvfcc3XGGWdow4YNuvbaa3X55ZfrjTfe8LVpPoifM2eO1q9fr+LiYo0dO1Z79+4NLkEAAI4S4RjTFy5cqOnTp2vatGkaOHCglixZom7dumnp0qUBYzwej37zm99o7ty5Ou6449qdBwAA8Swc4zUAAAhNSFeib9y4UWPGjFFGRoa2b9+u6dOnq3v37nr55Ze1Y8cOPf3005bmM27cOI0bN87ycpcsWaKioiLdf//9kqQTTzxR7733nh544AGNHTtWkv9BfHPMypUrtXTpUt18881BZgoAQHwLx5je0NCgdevWadasWb5pNptNY8aM0dq1awPG3XnnncrNzdVll12m//f//l+by3G73XK73b7XDodDkuT1euX1etuMPxLTNGUYhpr/WWHIkM1mCzomWsuJVky85BNPuTTHkE90tpt4yaU9MfGYj2ma7R5b2ht/uHAdgwMAgNCEVEQvKSnR1KlTde+99yotLc03/ZxzztGkSZPC1rnvW7t2rcaMGeM3bezYsbr22mslhX4QDwDA0SocY3pVVZU8Ho/y8vL8pufl5enLL79sNea9997TE088oQ0bNljua2lpqebOndtiemVlperr6y3PpzVOp1P9ivopJTlFSQlJlmIyMjJkG2RTUWqR0hPSrccca5M31RtcTCjLiVZMnOQTT7n4YsgnOttNnOTSrpg4ysed7FZ6XrpcLle7f83sdDrbFX+4jjoGBwAATUIqov/rX//SI4880mJ6fn6+ysvL292pQMrLy1s9QHc4HKqrq9P+/fuDPoiX2ndlm9frDctVCrEkHnOSOldevisiDVOGceT+Gob323Zm05U2FmK+i43NmOacYrFvocT4t7ceE66roCKtM/1tWRXrOYWzXx0xpjudTl1yySV67LHHlJ2dbTlu1qxZKikp8b12OBwqKChQTk6O0tOtFUcCcblc2rxtszKLM5WSnmIppqqmShs/2yjv6V5le6zlUV1TLdsOm7yFXmV5siK2nGjFxFM+8ZSLRD7R6ls85RJqTLzlc7DuoHIq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CxdEVlaW6Nu3r5g1a5atWiA7JbUsklIOSS17pJQ7UssaqWWMsf1s27ZNODk5iY8++khcuXJFnDhxQoSEhIjQ0FBbtaAxZ84c4enpKTIzM7WeB7W1tZptHhzXTp48KZycnMT69evFpUuXRGJionB2dhbnz5+3RQuS0Vq+kHm09vwl8zBkbCHzSEhIEFlZWeLq1aviX//6l0hISBAymUx8++23ti7toRARESHmzZtn6zJshpPoBvjggw/Eo48+KuRyuQgNDRWnT5/WfC8iIkJER0drvu7Zs6cA0GxJTEy0fuEtMKanB9nrJLoQxvd16tQpMXToUOHi4iKCgoLE2rVrRVNTk5WrbpkxPTU2Nop33nlH9O7dW7i6uoqAgADx5ptvioqKCusX3oKMjAydz5P7vURHR4uIiIhm+wwePFjI5XIRFBQktm3bZvW6W2JsTxERES1uby9M+b/6I3ub2LjPlL4uXbokRo8eLdzc3ESPHj3EggUL+Isx6SS1LJJKDkkte6SUO1LLGqlljCn9bNq0SQwcOFC4ubkJX19fMX36dHH9+nXrF/8AXX0A0Hpu6xqn9+7dK/r16yfkcrl4/PHHxeHDh61buES1lC9kHq09f8k8DBlbyDxeffVV0bNnTyGXy0X37t3Fs88+ywl0K3rYJ9FlQrSz99YSEREREREREREREVkJ74lORERERERERERERKQHJ9GJiIiIiIiIiIiIiPTgJDoRERERERERERERkR6cRCciIiIiIiIiIiIi0oOT6EREREREREREREREenASnYiIiIiIiIiIiIhID06iExERERERERERERHpwUl0IiIiIiIiIiIiIiI9OIlORHplZmZCJpOhsrLS4H3eeecdDB482Gw1FBQUwMfHBwqFwmzHBIA///nP+Mc//mHWYxIREdkC85qIiMj+Ma+J2jdOohNJQEpKCtzd3dHU1KRZV11dDWdnZ4wcOVJr2/vBfeXKlVaPO2zYMNy6dQuenp5mrXfkyJGIj483aNslS5Zg7ty5cHd3N/j4tbW1WLJkCXr37g1XV1d0794dERER+Oc//6nZZvny5UhISIBarTa2fCIiIpMwr7Uxr4mIyB4xr7Uxr4nu4SQ6kQRERkaiuroa586d06zLzs6Gj48Pzpw5g7q6Os36jIwMPProo+jdu3erx5XL5fDx8YFMJrNI3a0pLi7GoUOH8Morrxi1X0xMDL7++mt88MEHuHz5MtLS0jBlyhSUl5drthk3bhwUCgWOHj1q5qqJiIh0Y15rY14TEZE9Yl5rY14T3cNJdCIJ6N+/P3x9fZGZmalZl5mZiUmTJiEwMBCnT5/WWh8ZGQkAUKvVSEpKQmBgINzc3BAcHIx9+/Zpbfvg2822bt2KgIAAdOjQAX/961+xYcMGdO7cuVlNX3zxBXr16gVPT0+88MILmreLvfLKK8jKysLGjRshk8kgk8lw7do1nX3t3bsXwcHB8Pf316zbvn07OnfujG+++QYDBgxAp06d8Nxzz+HWrVuabQ4ePIilS5di/Pjx6NWrF4YMGYK5c+fi1Vdf1Wzj6OiI8ePHIzU11aBzTERE1FbMa+Y1ERHZP+Y185pIF06iE0lEZGQkMjIyNF9nZGRg5MiRiIiI0KxXKpU4c+aMJuSTkpKwc+dOpKSk4MKFC5g/fz7+9re/ISsrS+fPOHnyJGJiYjBv3jzk5+djzJgxWLt2bbPtrly5ggMHDuDQoUM4dOgQsrKykJycDADYuHEjwsLCMHv2bNy6dQu3bt1CQECAzp+XnZ2NkJCQZutra2uxfv16fPHFFzh+/DiKi4uxcOFCzfd9fHxw5MiRVu/zFhoaiuzs7Ba3ISIiMifmNfOaiIjsH/OaeU30ICdbF0BE5hEZGYn4+Hg0NTVBqVQiLy8PERERaGxsREpKCgAgJycH9fX1iIyMRH19PdatW4fvvvsOYWFhAICgoCCcOHECn3zyCSIiIpr9jA8++ADjxo3TBGq/fv1w6tQpHDp0SGs7tVqN7du3a+6zNmPGDKSnp2Pt2rXw9PSEXC5Hhw4d4OPj02JPRUVFOkP+fk/33zIXFxeHVatWab6/ZcsWTJ8+HV27dkVwcDCGDx+OKVOmIDw8XOs4fn5+KCkpgVqthoMD/6ZIRESWx7xmXhMRkf1jXjOviR7ERzWRRIwcORI1NTU4e/YssrOz0a9fP80Hfty/b1tmZiaCgoLw6KOP4tdff0VtbS3GjBmDTp06aZadO3fq/VCUgoIChIaGaq178GsA6NWrl9YHlfj6+uL27dtG96RUKuHq6tpsfYcOHbTuOffg8Z955hkUFhYiPT0dU6ZMwYULFzBixAisXr1a6zhubm5Qq9Wor683ujYiIiJTMK+Z10REZP+Y18xrogfxSnQiiejTpw969OiBjIwMVFRUaP7S7efnh4CAAJw6dQoZGRkYNWoUgHufLg4Ahw8f1ronGgC4uLi0qRZnZ2etr2UymUmf0t2tWzdUVFQYdHwhRLNtRowYgREjRmDx4sVYs2YNVq1ahcWLF0MulwMAfvvtN3Ts2BFubm5G10ZERGQK5jXzmoiI7B/zmnlN9CBOohNJSGRkJDIzM1FRUYFFixZp1j/zzDM4evQofvjhB8yZMwcAMHDgQLi4uKC4uFjnW8t06d+/P86ePau17sGvDSGXy6FSqVrd7qmnnsLFixeNPr4uAwcORFNTE+rq6jQh/9NPP+Gpp54yy/GJiIgMxbzWj3lNRET2gnmtH/OaHkacRCeSkMjISMTGxqKxsVEruCMiIhAXF4eGhgbNh564u7tj4cKFmD9/PtRqNYYPH47ff/8dJ0+ehIeHB6Kjo5sdf+7cuXjmmWewYcMGTJw4Ed9//z2OHj0KmUxmVJ29evXCmTNncO3aNXTq1AmPPPKIznumRUVFYdasWVCpVHB0dDT4+CNHjsSLL76IkJAQdO3aFRcvXsTSpUsRGRkJDw8PzXbZ2dkYO3asUbUTERG1FfP6HuY1ERHZM+b1Pcxront4T3QiCYmMjIRSqUSfPn3g7e2tWR8REQGFQoH+/fvD19dXs3716tVYsWIFkpKSMGDAADz33HM4fPgwAgMDdR4/PDwcKSkp2LBhA4KDg5GWlob58+frvK9aSxYuXAhHR0cMHDgQ3bt3R3Fxsc7txo0bBycnJ3z33XdGHT8qKgo7duzA2LFjMWDAAMydOxdRUVHYu3evZpsbN27g1KlTmDlzplHHJiIiaivm9T3MayIismfM63uY10T3yMSDNzoiIjLC7NmzcfnyZWRnZ1vk+Js3b8bBgwfxzTffmPW4ixcvRkVFBbZs2WLW4xIREdkj5jUREZH9Y14T2S/ezoWIjLJ+/XqMGTMGHTt2xNGjR7Fjxw589NFHFvt5b7zxBiorK6FQKLQ+kbytvLy8sGDBArMdj4iIyJ4wr4mIiOwf85qo/eCV6ERklKlTpyIzMxMKhQJBQUGYO3cuYmJibF0WERER/QHzmoiIyP4xr4naD06iExERERERERERERHpwQ8WJSIiIiIiIiIiIiLSg5PoRERERERERERERER6cBKdiIiIiIiIiIiIiEgPTqITEREREREREREREenBSXQiIiIiIiIiIiIiIj04iU5EREREREREREREpAcn0YmIiIiIiIiIiIiI9OAkOhERERERERERERGRHpxEJyIiIiIiIiIiIiLS438BH35clsQKbRAAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Key Observations:\n",
      "- Normal: Symmetric around mean\n",
      "- Uniform: Flat distribution within range\n",
      "- Log-Normal: Right-skewed with long tail (biologically realistic)\n"
     ]
    }
   ],
   "execution_count": 19
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 6. Visualizing Connectivity <a name=\"visualization\"></a>\n",
    "\n",
    "Visualization helps us understand connectivity patterns. We'll use `braintools.visualize` for professional-quality plots.\n",
    "\n",
    "### 6.1 Connectivity Matrix\n",
    "\n",
    "A connectivity matrix shows which neurons connect to which. We'll use `vis.connectivity_matrix()`:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:04:10.760149Z",
     "start_time": "2025-10-01T16:04:10.524069Z"
    }
   },
   "source": [
    "def result_to_matrix(result):\n",
    "    \"\"\"Convert ConnectionResult to connectivity matrix.\"\"\"\n",
    "    pre_size = result.pre_size if isinstance(result.pre_size, int) else int(np.prod(result.pre_size))\n",
    "    post_size = result.post_size if isinstance(result.post_size, int) else int(np.prod(result.post_size))\n",
    "    \n",
    "    conn_matrix = np.zeros((pre_size, post_size))\n",
    "    conn_matrix[result.pre_indices, result.post_indices] = 1\n",
    "    \n",
    "    return conn_matrix\n",
    "\n",
    "# Compare different patterns\n",
    "conn_patterns = [\n",
    "    (conn.Random(prob=0.2, seed=42), \"Random (prob=0.2)\"),\n",
    "    (conn.AllToAll(include_self_connections=False), \"All-to-All\"),\n",
    "    (conn.OneToOne(), \"One-to-One\"),\n",
    "]\n",
    "\n",
    "fig, axes = plt.subplots(1, 3, figsize=(18, 5))\n",
    "\n",
    "for idx, (conn_pattern, name) in enumerate(conn_patterns):\n",
    "    result = conn_pattern(pre_size=30, post_size=30)\n",
    "    conn_mat = result_to_matrix(result)\n",
    "    \n",
    "    vis.connectivity_matrix(\n",
    "        conn_mat,\n",
    "        cmap='binary',\n",
    "        center_zero=False,\n",
    "        show_colorbar=False,\n",
    "        ax=axes[idx],\n",
    "        title=name\n",
    "    )\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1800x500 with 3 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABv4AAAHqCAYAAADMEzkrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXrRJREFUeJzt3XmYFPWdP/BPcw3njIKcilweqHgFFV3Fk4hoVDyiMZqAusYDk+AddxNRY0I845rVqNkNaERNVDxijFFRUeMVNUZNlCABxQh4MqOggzD1+8MfvU5gYKbpnq6peb2ep5+Hqa6u/tS3q5t316erKpckSRIAAAAAAABAi9am3AUAAAAAAAAA607jDwAAAAAAADJA4w8AAAAAAAAyQOMPAAAAAAAAMkDjDwAAAAAAADJA4w8AAAAAAAAyQOMPAAAAAAAAMkDjDwAAAAAAADJA4w8AAAAAAAAyQOMPKJnx48fHwIEDy13GKi655JIYOnRo1NXVleX5c7lcnHrqqWV57mL629/+Fu3atYtXXnml3KUAAI2Uy+Xi/PPPz/89derUyOVyMW/evLLV1BTz5s2LXC4XU6dOzU87//zzI5fLla8oAACAFNH4gwxYucNm5a1du3ax4YYbxvjx4+Of//xnuctLlZqamrj44ovjnHPOiTZtsvsRuHjx4vjWt74VPXv2jC5dusRee+0VL7zwwlofV1dXF1OnTo2DDjoo+vfvH126dIlhw4bFRRddFJ9++mm9ebfccss44IAD4rzzzivVagAATXTNNddELpeLESNGFH3ZP/7xj+Ouu+4q+nK/6Oyzz45cLhdHHnlkSZ8HAMi2v/71r3HMMcfEhhtuGBUVFdGvX784+uij469//WvZarrmmmvq/XipFP74xz/GIYccEr17946KiooYOHBgnHjiifHmm2+W9HmBdMnuXm9ohS688ML41a9+Fddee22MGTMmbrrppthjjz1Wadi0Zr/85S9j+fLlcdRRR5W7lJKpq6uLAw44IG6++eY49dRT45JLLol33nkn9txzz5g9e/YaH7t06dI49thj4913342TTjoprrzyythpp51i0qRJMWbMmEiSpN78J510Utx5550xZ86cUq4SANBI06ZNi4EDB8azzz4br7/+elGXXerGX5Ikccstt8TAgQPjt7/9bXz00Ucley4AILumT58eX/rSl2LGjBlx7LHHxjXXXBPHH398PPLII/GlL30p7rzzzrLUVerG389+9rMYOXJkvPzyy/Htb387rrnmmjj88MPj17/+dWyzzTbx5JNPluy5gXRpV+4CgOIZM2ZM7LDDDhER8e///u+xwQYbxMUXXxz33HNPHHHEEWWuLh2mTJkSBx10UHTs2LFoy1yyZEl06dKlaMtbV7fffns8+eSTcdttt8Xhhx8eERFHHHFEbLbZZjFp0qS4+eabG3xshw4d4o9//GP827/9W37aCSecEAMHDoxJkybFjBkzYtSoUfn7Ro0aFeuvv37ccMMNceGFF5ZupQCAtZo7d248+eSTMX369DjxxBNj2rRpMWnSpHKX1WiPPvpovPXWW/Hwww/H6NGjY/r06TFu3LhylwUAtCBz5syJb3zjGzF48OB47LHHomfPnvn7vvvd78bIkSPjG9/4Rrz00ksxePDgMlZaXH/84x9j4sSJsdtuu8X9998fnTt3zt938sknx6677hqHH354/PWvf43111+/jJUCzcERf5BhI0eOjIiodzTWsmXL4rzzzovhw4dHVVVVdOnSJUaOHBmPPPJIvceuvH7KZZddFtdff30MGTIkKioqYscdd4w//elPqzzXXXfdFcOGDYuOHTvGsGHDGvz11JIlS+KMM86I/v37R0VFRWy++eZx2WWXrXIk2crr4N12222x5ZZbRqdOnWKXXXaJl19+OSIirrvuuthkk02iY8eOseeeezbqujRz586Nl156qV7j6l/X9ac//WkMGDAgOnXqFHvssccq168bP358dO3aNebMmRP7779/dOvWLY4++ugmrdtK06ZNi8033zw6duwYw4cPj8cee2yt69AYt99+e/Tu3TsOPfTQ/LSePXvGEUccEXfffXfU1tY2+NgOHTrUa/qtdMghh0RExKuvvlpvevv27WPPPfeMu+++uyi1AwCFmzZtWqy//vpxwAEHxOGHHx7Tpk0r2rJzuVwsWbIkbrjhhvzp5cePH5+//89//nOMGTMmKisro2vXrrHPPvvE008/3eT6t9xyy9hrr71i1KhRRa0fAGgdLr300li6dGlcf/319Zp+EREbbLBBXHfddbFkyZK45JJLIuL/rhX8+uuvx/jx42O99daLqqqqOPbYY2Pp0qWrLP+mm26K4cOHR6dOnaJ79+7xta99LebPn7/WugYOHBh//etfY+bMmfksteeee+bv/8c//hFf/epXo3v37tG5c+fYeeed43e/+12j1/uHP/xh5HK5uOGGG+o1/SIihgwZEpdcckksWLAgrrvuuvz0lfu4/vnPf8bYsWOja9eu0bNnzzjzzDNjxYoV9ZZRV1cXV155ZWy11VbRsWPH6N27d5x44onx4YcfNrpGoPlo/EGGrWyGffGXPDU1NfE///M/seeee8bFF18c559/frz77rsxevToePHFF1dZxs033xyXXnppnHjiiXHRRRfFvHnz4tBDD43PPvssP88DDzwQhx12WORyuZg8eXKMHTs2jj322HjuuefqLStJkjjooIPipz/9aey3335xxRVXxOabbx5nnXVWnH766as89+OPPx5nnHFGjBs3Ls4///x49dVX4ytf+UpcffXVcdVVV8Upp5wSZ511Vjz11FNx3HHHrXU8Vp7S4Etf+tJq77/xxhvjqquuigkTJsS5554br7zySuy9996xaNGievMtX748Ro8eHb169YrLLrssDjvssCav28yZM2PixIlxzDHHxIUXXhjvv/9+7LfffvUajZ999lm89957jbrV1dXlH/fnP/85vvSlL61yDcOddtopli5dGn//+9/XOlb/auHChRHxeUj+V8OHD49XXnklampqmrxcAKB4pk2bFoceemh06NAhjjrqqJg9e/Zqf7BViF/96ldRUVERI0eOjF/96lfxq1/9Kk488cSI+PwaOiNHjoy//OUvcfbZZ8cPfvCDmDt3buy5557xzDPPNGr5tbW1cccdd+RPx37UUUfFww8/nM8gAACN8dvf/jYGDhyY/zH8v9p9991j4MCBqzTVjjjiiPjoo49i8uTJccQRR8TUqVPjggsuqDfPj370o/jmN78Zm266aVxxxRUxceLEmDFjRuy+++6xePHiNdZ15ZVXxkYbbRRDhw7NZ6n//M//jIiIRYsWxb/927/FH/7whzjllFPiRz/6UXz66adx0EEHNeq0pEuXLo0ZM2bEyJEjY9CgQaud58gjj4yKioq49957601fsWJFjB49Onr06BGXXXZZ7LHHHnH55ZfH9ddfX2++E088Mc4666zYdddd47/+67/i2GOPjWnTpsXo0aPr7SMEUiIBWrwpU6YkEZE89NBDybvvvpvMnz8/uf3225OePXsmFRUVyfz58/PzLl++PKmtra33+A8//DDp3bt3ctxxx+WnzZ07N4mIpEePHskHH3yQn3733XcnEZH89re/zU/bbrvtkr59+yaLFy/OT3vggQeSiEgGDBiQn3bXXXclEZFcdNFF9Z7/8MMPT3K5XPL666/np0VEUlFRkcydOzc/7brrrksiIunTp09SU1OTn37uuecmEVFv3tX5/ve/n0RE8tFHH9WbvnJdO3XqlLz11lv56c8880wSEclpp52WnzZu3LgkIpLvfe979ZbR1HWLiOS5557LT3vjjTeSjh07Joccckh+2iOPPJKfd223L657ly5d6r2WK/3ud79LIiK5//771zhOqzNq1KiksrIy+fDDD1e57+abb04iInnmmWeavFwAoDiee+65JCKSBx98MEmSJKmrq0s22mij5Lvf/W69+SIimTRpUv7vlTlybTkqST7PGOPGjVtl+tixY5MOHTokc+bMyU97++23k27duiW77757o+q//fbbk4hIZs+enSRJktTU1CQdO3ZMfvrTn9abb2VumzJlSn7apEmTEl9tAYDFixcnEZEcfPDBa5zvoIMOSiIiqampyeeIf92PcsghhyQ9evTI/z1v3rykbdu2yY9+9KN687388stJu3btVpm+OltttVWyxx57rDJ94sSJSUQkjz/+eH7aRx99lAwaNCgZOHBgsmLFijUu98UXX0wiYpXc96+22WabpHv37vm/V+7juvDCC+vNt/322yfDhw/P//34448nEZFMmzat3nz333//aqcD5eeIP8iQUaNGRc+ePaN///5x+OGHR5cuXeKee+6JjTbaKD9P27Zto0OHDhHx+WH6H3zwQSxfvjx22GGHeOGFF1ZZ5pFHHlnviMGVv5j6xz/+ERERCxYsiBdffDHGjRsXVVVV+fm+/OUvx5ZbbllvWffdd1+0bds2vvOd79SbfsYZZ0SSJPH73/++3vR99tknBg4cmP97xIgRERFx2GGHRbdu3VaZvrKmhrz//vvRrl276Nq162rvHzt2bGy44Yb5v3faaacYMWJE3HfffavMe/LJJ6/Tuu2yyy4xfPjw/N8bb7xxHHzwwfGHP/whfzqFbbfdNh588MFG3fr06ZNf1ieffBIVFRWr1LzyuoaffPLJate/IT/+8Y/joYceip/85Cex3nrrrXL/yu3jvffea9JyAYDimTZtWvTu3Tv22muviPj81JxHHnlk3HrrraucqqmYVqxYEQ888ECMHTu23nVy+vbtG1//+tfjiSeeaNRZAaZNmxY77LBDbLLJJhER0a1btzjggAOc7hMAaLSPPvooIqLePqPVWXn/FzPKSSedVG+ekSNHxvvvv5+fZ/r06VFXVxdHHHFEvTMw9enTJzbddNNVLqHTFPfdd1/stNNOsdtuu+Wnde3aNb71rW/FvHnz4m9/+9saH9+U9V5dLlvdun9xH9ttt90WVVVV8eUvf7neug8fPjy6du26TusOlEa7chcAFM/VV18dm222WVRXV8cvf/nLeOyxx1bbALrhhhvi8ssvj9dee63e4firOx3AxhtvXO/vlU2elefwfuONNyIiYtNNN13lsZtvvnm9ZuIbb7wR/fr1WyWIbLHFFvWW1dBzr2ws9u/ff7XT1/W84qtbh8022yx+85vf1JvWrl27es3UiKavW0PPtXTp0nj33XejT58+sf76669yPcLG6NSp02qv4/fpp5/m72+sX//61/H9738/jj/++FWanSsl//8ahrlcrsm1AgDrbsWKFXHrrbfGXnvtFXPnzs1PHzFiRFx++eUxY8aM2HfffRu1rOrq6no/EurQoUN07969wfnffffdWLp0aWy++ear3LfFFltEXV1dzJ8/P7baaqt499136zUhu3btGl27do3FixfHfffdF6eeemq8/vrr+ft33XXXuOOOO+Lvf/97bLbZZo2qHwBovVbuk1nZCGvI6hpla9r/VVlZGbNnz44kSVa7Pycion379hER8fHHH8fHH3+cn962bdtVrjX4r9544438j9q/6Iv7lIYNGxYffPBBLFu2LH9/p06doqqqqknr/a/7rTp27LhKfeuvv369fWyzZ8+O6urq6NWr12qX+84776zxeYHmp/EHGbLTTjvFDjvsEBGfH7222267xde//vWYNWtW/ii3m266KcaPHx9jx46Ns846K3r16hVt27aNyZMnx5w5c1ZZZtu2bVf7XCubPaXU0HMXWlOPHj1i+fLlqw06TVFRUbHK9fNKYdmyZfHBBx80at6ePXvmx6Vv376xYMGCVeZZOa1fv36NWuaDDz4Y3/zmN+OAAw6Ia6+9tsH5VobB1V3/DwAovYcffjgWLFgQt956a9x6662r3D9t2rRGN/6++93vxg033JD/e4899ohHH320KHXuuOOO9X4MNWnSpDj//PPjtttui9ra2rj88svj8ssvX+Vx06ZNW+UaOwAA/6qqqir69u0bL7300hrne+mll2LDDTeMysrK/LS17Wuqq6uLXC4Xv//971c778r9bpdddlm93DJgwICYN29eU1dltQ499NCYOXNm/u9x48bF1KlTY5NNNol27dqtcb1ra2tj1qxZ+f2GKzW03l9UV1cXvXr1avBMDGtrbALNT+MPMmplM2+vvfaK//7v/47vfe97ERFx++23x+DBg2P69On1jtCaNGlSQc8zYMCAiPj81z//atasWavM+9BDD63SeHvttdfqLatUhg4dGhERc+fOjW222WaV+1e3Dn//+9/rnW60IU1dt4aeq3PnzvnA9OSTT+ZP17U2c+fOzde53XbbxeOPPx51dXX1GpTPPPNMdO7cuVG/mH/mmWfikEMOiR122CF+85vfRLt2Df93MXfu3GjTpo1f4gNAmUybNi169eoVV1999Sr3TZ8+Pe6888649tprG3XU/9lnnx3HHHNM/u8vnvJ9dUf39+zZMzp37rxK7ov4PAe1adMmf7aGadOm1TuacOWpQadNmxbDhg1bbR697rrr4uabb9b4AwAa5Stf+Ur84he/iCeeeKLeqTNXevzxx2PevHlx4oknNmm5Q4YMiSRJYtCgQWvc//HNb36z3vN+MX81dKakAQMGNJilVt4fEXH55ZfXOxJv5Q+7u3TpEnvttVc8/PDD8cYbb6x2/9pvfvObqK2tja985StrWs3VGjJkSDz00EOx6667NuksUkD5aPxBhu25556x0047xZVXXhkTJ06Mjh075n/JkyRJPnA888wz8dRTT61yWoPG6Nu3b2y33XZxww03xPe+9738aTcffPDB+Nvf/lYvbOy///5x/fXXx3//93/Hueeem5/+05/+NHK5XIwZM2ZdVnetdtlll4iIeO6551bb+Lvrrrvin//8Z/46f88++2w888wzMXHixLUuu6nr9tRTT8ULL7wQX/rSlyIiYv78+XH33XfHfvvtl3+NVl7jrzG+eI2/ww8/PG6//faYPn16HH744RHx+fX3brvttjjwwAPrnf515VGeQ4YMyU979dVX44ADDoiBAwfGvffeu9ZQ9/zzz8dWW21V7xqPAEDz+OSTT2L69Onx1a9+Nf///hf169cvbrnllrjnnnviyCOPXOvyttxyy1Wu07xSly5dYvHixfWmtW3bNvbdd9+4++67Y968efkfIi1atChuvvnm2G233fK/pt91111XWeb8+fPjscceiwsuuGC19S9btiyOPvroeOaZZ1Z7CiwAgC8666yz4qabbooTTzwxHnvssejRo0f+vg8++CBOOumk6Ny5c5x11llNWu6hhx4a5557blxwwQVx00031WviJUkSH3zwQfTo0SMGDx5c77rHX7S6LBXx+T6lK6+8Mp566qn8vqslS5bE9ddfHwMHDsxns+HDhzdY3/e///2YMWNGjB8/Pu677756+3Lmzp0bZ599dvTt27fJDc+IiCOOOCKuueaa+OEPfxg//vGP6923fPny+Pjjj2O99dZr8nKB0tH4g4w766yz4qtf/WpMnTo1TjrppPjKV74S06dPj0MOOSQOOOCAmDt3blx77bWx5ZZb1jsHeVNMnjw5DjjggNhtt93iuOOOiw8++CB+9rOfxVZbbVVvmQceeGDstdde8Z//+Z8xb9682HbbbeOBBx6Iu+++OyZOnFiv+VQKgwcPjmHDhsVDDz0Uxx133Cr3b7LJJrHbbrvFySefHLW1tXHllVdGjx494uyzz17rspu6bsOGDYvRo0fHd77znaioqIhrrrkmIqLer9kLvcbf4YcfHjvvvHMce+yx8be//S022GCDuOaaa2LFihWr/Fp+n332iYjIn3bio48+itGjR8eHH34YZ511Vvzud7+rN/+QIUPyITQi4rPPPouZM2fGKaec0uQ6AYB1d88998RHH30UBx100Grv33nnnaNnz54xbdq0RjX+1mT48OHx0EMPxRVXXBH9+vWLQYMGxYgRI+Kiiy6KBx98MHbbbbc45ZRTol27dnHddddFbW1tXHLJJWtc5s033xxJkjRY//777x/t2rWLadOmafwBAGu16aabxg033BBHH310bL311nH88cfHoEGDYt68efG///u/8d5778Utt9zS5H1QQ4YMiYsuuijOPffcmDdvXowdOza6desWc+fOjTvvvDO+9a1vxZlnnrnGZQwfPjx+/vOfx0UXXRSbbLJJ9OrVK/bee+/43ve+F7fcckuMGTMmvvOd70T37t3jhhtuiLlz58Ydd9zRqMvN7L777nHZZZfF6aefHttss02MHz8++vbtG6+99lr84he/iLq6urjvvvvqnc2hsfbYY4848cQTY/LkyfHiiy/GvvvuG+3bt4/Zs2fHbbfdFv/1X/+12h9wAWWUAC3elClTkohI/vSnP61y34oVK5IhQ4YkQ4YMSZYvX57U1dUlP/7xj5MBAwYkFRUVyfbbb5/ce++9ybhx45IBAwbkHzd37twkIpJLL710lWVGRDJp0qR60+64445kiy22SCoqKpItt9wymT59+irLTJIk+eijj5LTTjst6devX9K+fftk0003TS699NKkrq5uleeYMGFCvWkN1fTII48kEZHcdtttax2rK664IunatWuydOnS1S738ssvT/r3759UVFQkI0eOTP7yl7/Ue/y4ceOSLl26rHbZTV23m266Kdl0003zr8Mjjzyy1vob64MPPkiOP/74pEePHknnzp2TPfbYY7Xbx4ABA1b7ujd0GzduXL3H//73v08iIpk9e3bRagcAGu/AAw9MOnbsmCxZsqTBecaPH5+0b98+ee+991bJcStz5Ny5c9f6XK+99lqy++67J506dVolF7zwwgvJ6NGjk65duyadO3dO9tprr+TJJ59c6zK33nrrZOONN17jPHvuuWfSq1ev5LPPPstnlSlTpuTvnzRpUuKrLQDwRS+99FJy1FFHJX379k3at2+f9OnTJznqqKOSl19+ud58K3PEu+++W296QxnpjjvuSHbbbbekS5cuSZcuXZKhQ4cmEyZMSGbNmrXWmhYuXJgccMABSbdu3ZKISPbYY4/8fXPmzEkOP/zwZL311ks6duyY7LTTTsm9997b5PV+7LHHkoMPPjjZYIMNkvbt2ycbb7xxcsIJJyTz5s1bZd6G9nE1lK2uv/76ZPjw4UmnTp2Sbt26JVtvvXVy9tlnJ2+//XaT6wRKK5ck//8KpQCtQHV1dQwePDguueSSOP744yPi86PdBg0aFJdeeulaf51FfWPHjo1cLhd33nlnuUsBAAAAAGj11n6cMECGVFVVxdlnnx2XXnpp1NXVlbucFu3VV1+Ne++9N374wx+WuxQAAAAAAELjD2iFzjnnnHjttdcadY50GrbFFlvE8uXLY9iwYeUuBQAAAACA0PgDAAAAAACATHCNPwAAAAAAAMgAR/wBAAAAAABABmj8AQAAAAAAQAa0K3cBpVZXVxdvv/12dOvWLXK5XLnLAQBaqCRJ4qOPPop+/fpFmzat57dTshQAUAyylCwFABSuKVkq842/t99+O/r371/uMgCAjJg/f35stNFG5S6j2chSAEAx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ein/77/97W+xcOHC/N8rVqyI+++/PzbccMPiVQcAkCGyFABA4WQpAIC1a1Ljb7vttotcLhe5XG61p07o1KlT/OxnPytacQAAWSJLAQAUTpYCAFi7JjX+5s6dG0mSxODBg+PZZ5+Nnj175u/r0KFD9OrVK9q2bVv0IgEAskCWAgAonCwFALB2TWr8DRgwICIi6urqSlIMAECWyVIAAIWTpQAA1q5Jjb8vmjVrVvzsZz+LV199NSIitthiizj11FNj6NChRSsOACCrZCkAgMLJUgAAq9emkAfdcccdMWzYsHj++edj2223jW233TZeeOGF2HrrreOOO+4odo0AAJkiSwEAFE6WAgBoWC5JkqSpDxoyZEgcffTRceGFF9abPmnSpLjppptizpw5RStwXdXU1ERVVVVRllXAUJVMLpcrynLStE6smdccss17PP1WZorq6uqorKxcp2W11iwFFFexPvOL9X8QQGO01ixVjPUGisv3cKAlaUqmKOiIvwULFsQ3v/nNVaYfc8wxsWDBgkIWCQDQashSAACFk6UAABpWUONvzz33jMcff3yV6U888USMHDlynYsCAMgyWQoAoHCyFABAw9oV8qCDDjoozjnnnHj++edj5513joiIp59+Om677ba44IIL4p577qk3LwAA/0eWAgAonCwFANCwgq7x16ZN4w4UzOVysWLFiiYXVUyu8bdmaVon1sxrDtnmPZ5+xbw+S2vNUkBxucYf0BK11izlGn+QPr6HAy1JUzJFQUf81dXVFVQYAACyFADAupClAAAaVtA1/gAAAAAAAIB0KeiIv4iIJUuWxMyZM+PNN9+MZcuW1bvvO9/5zjoXVmzFOKWCw78pJ9tN61OMz5y0nQLMdlx6WXytsnoKupaWpYD0SdtnflY/r4F0kqWAdZW2DJSm7+FAy1ZQ4+/Pf/5z7L///rF06dJYsmRJdO/ePd57773o3Llz9OrVS8ACAFgDWQoAoHCyFABAwwo61edpp50WBx54YHz44YfRqVOnePrpp+ONN96I4cOHx2WXXVbsGgEAMkWWAgAonCwFANCwghp/L774YpxxxhnRpk2baNu2bdTW1kb//v3jkksuif/4j/8odo0AAJkiSwEAFE6WAgBoWEGNv/bt20ebNp8/tFevXvHmm29GRERVVVXMnz+/eNUBAGSQLAUAUDhZCgCgYQVd42/77bePP/3pT7HpppvGHnvsEeedd16899578atf/SqGDRtW7BoBADJFlgIAKJwsBQDQsIKO+Pvxj38cffv2jYiIH/3oR7H++uvHySefHO+++25cf/31RS0QACBrZCkAgMLJUgAADcslSZKUu4hSqqmpiaqqqqiuro7Kysp1WlYulytKTcUY8jTVApRGMd7nxXqP+8wpvWKNcbGk6bVK29gUI1O0JCuzFJBdacsLQLa11izV2tYbWhP7TIDm0JRMUdARfwAAAAAAAEC6FNT4W7RoUXzjG9+Ifv36Rbt27aJt27b1bgAANEyWAgAonCwFANCwdoU8aPz48fHmm2/GD37wg+jbt69TugAANIEsBQBQOFkKAKBhBTX+nnjiiXj88cdju+22K3I5AADZJ0sBABROlgIAaFhBp/rs37+/i40CABRIlgIAKJwsBQDQsIIaf1deeWV873vfi3nz5hW5HBorSZKi3HK5XKpuUIisbn/FeI+nqZZifuYUS5pqSZs0vVbF2v7W9VZdXV2U9YmQpYB0KdZnfrE+bwHWRpYC0iSr+0yAlqugU30eeeSRsXTp0hgyZEh07tw52rdvX+/+Dz74oCjFAQBkkSwFAFA4WQoAoGEFNf5++tOf+vUAAECBZCkAgMLJUgAADSuo8Td+/PiiPPljjz0Wl156aTz//POxYMGCuPPOO2Ps2LH1nueGG26o95jRo0fH/fffX5TnBwAoB1kKAKBwshQAQMMKusbfHnvsETfeeGN88skn6/TkS5YsiW233TauvvrqBufZb7/9YsGCBfnbLbfcsk7PCQBQbrIUAEDhZCkAgIYVdMTf9ttvH2eeeWZ8+9vfjiOOOCKOP/742HnnnZu8nDFjxsSYMWPWOE9FRUX06dOnkDIBAFJJlgIAKJwsBQDQsIKO+Lvyyivj7bffjilTpsQ777wTu+++e2y55ZZx2WWXxaJFi4pa4KOPPhq9evWKzTffPE4++eR4//331zh/bW1t1NTU1LsBAKSJLAUAUDhZCgCgYQU1/iIi2rVrF4ceemjcfffd8dZbb8XXv/71+MEPfhD9+/ePsWPHxsMPP7zOxe23335x4403xowZM+Liiy+OmTNnxpgxY2LFihUNPmby5MlRVVWVv/Xv33+d6wAAKDZZCgCgcLIUAMDq5ZIkSdZlAc8++2xMmTIlbr311qisrIzx48fHP//5z7j55pvjlFNOicsuu6xxheRyq1xE+V/94x//iCFDhsRDDz0U++yzz2rnqa2tjdra2vzfNTU10b9//6iuro7KysomrdvqaiyGdRzyoirWOhVLmsaGliOL782sSttrVYx60lRLGmXpfVVTUxNVVVVFyRRf1FKyFMDa+D8RaIzWmqWKvd5A9qRtnwmQLk3ZL1XQEX/vvPNOXH755TFs2LAYOXJkvPvuu3HLLbfEvHnz4oILLoj/+Z//iQceeCCuvfbaglagIYMHD44NNtggXn/99QbnqaioiMrKyno3AIA0kaUAAAonSwEANKxdIQ/aaKONYsiQIXHcccfF+PHjo2fPnqvMs80228SOO+64zgV+0VtvvRXvv/9+9O3bt6jLBQBoTrIUAEDhZCkAgIYV1PibMWNGjBw5co3zVFZWxiOPPLLGeT7++ON6v5KaO3duvPjii9G9e/fo3r17XHDBBXHYYYdFnz59Ys6cOXH22WfHJptsEqNHjy6kbACAVJClAAAKJ0sBADSsoGv8ffLJJ5EkSXTu3DkiIt5444248847Y8stt4x999230ct59NFHY6+99lpl+rhx4+LnP/95jB07Nv785z/H4sWLo1+/frHvvvvGD3/4w+jdu3ejn6OY1+PJ4nmW03b9jDSNDS1HFt+bWZW218o1/kovS++rYmaKlpilANbG/4lAY7TWLOUaf8DapG2fCZAuTckUBTX+9t133zj00EPjpJNOisWLF8fQoUOjffv28d5778UVV1wRJ598csHFF5vG35ql7Ut1msaGliOL782sSttrpfFXell6XxUzU7TELAWwNv5PBBqjtWYpjT9gbdK2zwRIl6ZkijaFPMELL7yQP6XC7bffHr1794433ngjbrzxxrjqqqsKWWSLkCRJUW5pUqx1KtYtl8sV5VYMaaoljdI0Nll8b2ZV2l6rNH1ulfvzt1Q3Vq+1Zikg29L2fyKQXbIUkEXFykD2aQIFNf6WLl0a3bp1i4iIBx54IA499NBo06ZN7LzzzvHGG28UtUAAgKyRpQAACidLAQA0rKDG3yabbBJ33XVXzJ8/P/7whz/kz5/+zjvvOG0BAMBayFIAAIWTpQAAGlZQ4++8886LM888MwYOHBg77bRT7LLLLhHx+a+stt9++6IWCACQNbIUAEDhZCkAgIblkgIvfrBw4cJYsGBBbLvtttGmzef9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j4qKithkk03if//3f5v4igAALYksJUsBAIWTpWQpaK00/oBm06lTp1i2bFmMHz8+nnvuubjnnnviqaeeiiRJYv/994/PPvssIiImTJgQtbW18dhjj8XLL78cF198cXTt2jX69+8fd9xxR0REzJo1KxYsWBD/9V//tdrneu655+I73/lOXHjhhTFr1qy4//77Y/fdd4+IiK9+9auxYsWKuOeee/Lzv/POO/G73/0ujjvuuPy0OXPmxF133RX33ntv3HvvvTFz5sz4yU9+kr9/yZIlcfrpp8dzzz0XM2bMiDZt2sQhhxwSdXV19Wo566yz4owzzog///nPscsuu8SBBx4Y77//fpPW55vf/GbccsstcdVVV8Wrr74a1113XXTt2rWpLwEA0ILJUrIUAFA4WUqWglYjASiBcePGJQcffHCSJElSV1eXPPjgg0lFRUUyduzYJCKSP/7xj/l533vvvaRTp07Jb37zmyRJkmTrrbdOzj///NUu95FHHkkiIvnwww/X+Px33HFHUllZmdTU1Kz2/pNPPjkZM2ZM/u/LL788GTx4cFJXV5ckSZJMmjQp6dy5c73Hn3XWWcmIESMafM533303iYjk5ZdfTpIkSebOnZtERPKTn/wkP89nn32WbLTRRsnFF1+8xvXZY489ku9+97tJkiTJrFmzkohIHnzwwTWuMwCQHbKULAUAFE6WkqWgNXPEH1Ay9957b3Tt2jU6duwYY8aMiSOPPDLGjx8f7dq1ixEjRuTn69GjR2y++ebx6quvRkTEd77znbjoooti1113jUmTJsVLL720xueZNm1adO3aNX97/PHH48tf/nIMGDAgBg8eHN/4xjdi2rRpsXTp0vxjTjjhhHjggQfin//8Z0RETJ06NX/h55UGDhwY3bp1y//dt2/feOedd/J/z549O4466qgYPHhwVFZWxsCBAyMi4s0336xX3y677JL/d7t27WKHHXbIr2tjvPjii9G2bdvYY489Gv0YAKDlk6U+J0sBAIWQpT4nS0Hro/EHlMxee+0VL774YsyePTs++eSTuOGGG+oFmIb8+7//e/zjH/+Ib3zjG/Hyyy/HDjvsED/72c8anP+ggw6KF198MX/bYYcdolu3bvHCCy/ELbfcEn379o3zzjsvtt1221i8eHFERGy//fax7bbbxo033hjPP/98/PWvf13lvOzt27ev93cul6t3uoQDDzwwPvjgg/jFL34RzzzzTDzzzDMREbFs2bJGjlDjdOrUqajLAwBaBlmqOGQpAGidZKnikKWg5dH4A0qmS5cusckmm8TGG28c7dq1i4iILbbYIpYvX54PIxER77//fsyaNSu23HLL/LT+/fvHSSedFNOnT48zzjgjfvGLX0RERIcOHSIiYsWKFfl5u3XrFptsskn+tjKQtGvXLkaNGhWXXHJJvPTSSzFv3rx4+OGH84/793//95g6dWpMmTIlRo0aFf3792/0uq2s+fvf/37ss88+scUWW8SHH3642nmffvrp/L+XL18ezz//fGyxxRYNrs+/2nrrraOuri5/8WUAoHWQpT4nSwEAhZClPidLQeuj8Qc0q0033TQOPvjgOOGEE+KJJ56Iv/zlL3HMMcfEhhtuGAcffHBEREycODH+8Ic/xNy5c+OFF16IRx55JB9IBgwYELlcLu69995499134+OPP17t89x7771x1VVXxYsvvhhvvPFG3HjjjVFXVxebb755fp6vf/3r8dZbb8UvfvGLehdPboz1118/evToEddff328/vrr8fDDD8fpp5++2nmvvvrquPPOO+O1116LCRMmxIcffph/vsasz8CBA2PcuHFx3HHHxV133RVz586NRx99NH7zm980qWYAoOWTpWQpAKBwspQsBa2Bxh/Q7KZMmRLDhw+Pr3zlK7HLLrtEkiRx33335U9hsGLFipgwYUJsscUWsd9++8Vmm20W11xzTUREbLjhhnHBBRfE9773vejdu3eceuqpq32O9dZbL6ZPnx577713bLHFFnHttdfGLbfcEltttVV+nqqqqjjssMOia9euMXbs2CatQ5s2beLWW2+N559/PoYNGxannXZaXHrppaud9yc/+Un85Cc/iW233TaeeOKJuOeee2KDDTZo0vr8/Oc/j8MPPzxOOeWUGDp0aJxwwgmxZMmSJtUMAGSDLCVLAQCFk6VkKci6XJIkSbmLACiXffbZJ7baaqu46qqrir7sefPmxaBBg+LPf/5zbLfddkVfPgBAuclSAACFk6WAUmhX7gIAyuHDDz+MRx99NB599NH8r7YAAGgcWQoAoHCyFFBKGn9Aq7T99tvHhx9+GBdffHG986sDALB2shQAQOFkKaCUnOoTAAAAAAAAMqBNuQsAAAAAAAAA1p3GHwAAAAAAAGSAxh8AAAAAAABkgMYfAAAAAAAAZIDGHwAAAAAAAGSAxh8AAAAAAABkgMYfAAAAAAAAZIDGHwAAAAAAAGSAxh8AAAAAAABkwP8DyrIsSxyo1iAAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    }
   ],
   "execution_count": 20
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.2 Weight Matrix Visualization\n",
    "\n",
    "When weights are present, we can visualize their distribution in the connectivity matrix:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:04:22.682005Z",
     "start_time": "2025-10-01T16:04:22.550700Z"
    }
   },
   "source": [
    "# Create connectivity with weights\n",
    "conn_weighted = conn.Random(\n",
    "    prob=0.2,\n",
    "    weight=LogNormal(mean=1.0 * u.nS, std=0.6 * u.nS),\n",
    "    seed=42\n",
    ")\n",
    "result_weighted = conn_weighted(pre_size=30, post_size=30)\n",
    "\n",
    "# Create weight matrix\n",
    "pre_size = 30\n",
    "post_size = 30\n",
    "weight_matrix = np.zeros((pre_size, post_size))\n",
    "weights = u.get_mantissa(result_weighted.weights)\n",
    "weight_matrix[result_weighted.pre_indices, result_weighted.post_indices] = weights\n",
    "\n",
    "# Plot using vis.connectivity_matrix\n",
    "fig, ax = plt.subplots(figsize=(10, 8))\n",
    "vis.connectivity_matrix(\n",
    "    weight_matrix,\n",
    "    cmap='viridis',\n",
    "    center_zero=False,\n",
    "    show_colorbar=True,\n",
    "    ax=ax,\n",
    "    title='Random Connectivity with Log-Normal Weights'\n",
    ")\n",
    "plt.show()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x800 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAycAAAK9CAYAAAA+IxM4AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAc5FJREFUeJzt3XucjHX/x/H37GJ2sQeL3XVYZ1nHJcKSY8qh3JRKOqCiX0V3qJTuIp02nXQSOtFJSoVSkWQdshS1osOGZIl1yHllsfP9/eHeuRu7zO64duZa83o+Htcjc801n+9nZna2+ezn+70uhzHGCAAAAAACLCTQCQAAAACARHECAAAAwCYoTgAAAADYAsUJAAAAAFugOAEAAABgCxQnAAAAAGyB4gQAAACALVCcAAAAALAFihMAAAAAtkBxAlhg8ODBqlWrVqDTwBnUqlVLgwcPLvLjpk+fLofDoT/++MPynKzw0EMPyeFwFOnYPXv2FHNWOFtFeV/9wdfPT95jL7vsMmsTAnDOojhBiZL3RTFvK1WqlKpVq6bBgwfrzz//DHR6trNp0yb93//9n+rUqaOwsDBFRkaqffv2ev755/X3338HOj3LrVixQg899JD2799frOO8/PLLmj59erGOcTYef/xxzZkzx/K4gwcPVvny5S2P64s//vjD/Xvgo48+ynd/MBRit99+u0JCQrR3716P/Xv37lVISIicTqeOHj3qcd/vv/8uh8Oh+++/35+pFsrPP/+shx56yLZ/CADgHxQnKJEefvhhvf3225oyZYp69uypd955R506dcr3P+Jg9tlnn6lp06b64IMP1Lt3b7344otKSUlRjRo1dM899+jOO+8MdIqWW7FihcaPH19gcZKRkaFXX321yDFvuOEG/f3336pZs6Z7n52KkwceeCBfoVlcxYldPfzwwzLGBDoNv7vwwgtljNE333zjsX/FihUKCQnR8ePHtXr1ao/78o698MILizSWr5+fovj55581fvx4ihMgyJUKdAKAL3r27KlWrVpJkoYMGaJKlSppwoQJ+uSTT3T11VcHOLvA27x5s6655hrVrFlTX3/9tapUqeK+b9iwYdq4caM+++yzAGbof06n06fHhYaGKjQ01OJsrFOqVCmVKhW8v8qbN2+u9PR0zZ49W1dccUWxjZOdna1y5coVW3xf5BUYy5cvV+/evd37v/nmGzVr1kx///23li9f7lGILF++XCEhIWrXrl2RxvL18wMARUXnBOeEDh06SDo5jSnPsWPHNHbsWLVs2VJRUVEqV66cOnTooMWLF3s8Nm96yNNPP61XXnlFdevWldPp1AUXXKDvvvsu31hz5sxRkyZNFBYWpiZNmmj27NkF5pSdna277rpLCQkJcjqdatCggZ5++ul8f+F1OBwaPny4Zs2apUaNGik8PFzJyclat26dJGnq1KmqV6+ewsLC1Llz50L9VfHJJ5/U4cOH9frrr3sUJnnq1avn0Tk5ceKEHnnkEfdzr1Wrlu6//37l5OR4PC5v7vjy5cvVunVrhYWFqU6dOnrrrbc8jsubfvfNN99o1KhRqly5ssqVK6fLL79cu3fvzpfPF198oQ4dOqhcuXKKiIjQpZdeqp9++infcb/++quuvvpqVa5cWeHh4WrQoIH+85//SDo5jeeee+6RJNWuXds95Sfv9frnnPnVq1fL4XDozTffzDfGggUL5HA4NG/ePI/n8s84P/30k5YsWeIeo3Pnzu7pMhMnTswXc8WKFXI4HHrvvffy3SdJxhhVqlRJo0aNcu9zuVyKjo5WaGioRydowoQJKlWqlA4fPux+3v9cm+BwOJSdna0333zTnd+pawX279+vwYMHKzo6WlFRUbrxxht15MiRAnPzxaxZs9SyZUuFh4erUqVKuv766wucdpn3M//Pz1JR129dc801Ou+88wrdPSlMbnnT1zZt2qRevXopIiJC1113naSz/7wuW7ZMV111lWrUqCGn06mEhASNHDnSp2mWNWrUUEJCQr7OyTfffKP27durXbt2Bd7XuHFjRUdHS5JycnI0btw41atXz53P6NGjC/zsn/pz9OOPP6pTp04KDw9X9erV9eijj2ratGmnXaN1pt8b06dP11VXXSVJ6tKli/tnNzU1VdLJz2z37t1VqVIlhYeHq3bt2rrpppuK/JoBKAEMUIJMmzbNSDLfffedx/6XXnrJSDKTJ09279u9e7epUqWKGTVqlJk8ebJ58sknTYMGDUzp0qXNDz/84D5u8+bNRpJp0aKFqVevnpkwYYJ58sknTaVKlUz16tXNsWPH3McuWLDAhISEmCZNmphnn33W/Oc//zFRUVGmcePGpmbNmu7jXC6X6dq1q3E4HGbIkCHmpZdeMr179zaSzIgRIzxyl2SaNWtm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PDzc/e/s7Gzt2bNH7dq1kzFGP/zwg/cne4p/rjuRTk7bqlatmmrUqKHExETFxMS4p3aduhh+1qxZatiwoRITEz0+f127dpWkfFNg/2n+/PlKTk5W8+bN3ftiYmLc099OVZTfG6fKm4I2b948HT9+3OvxAEo2ihOUSJMmTdLChQv14YcfqlevXtqzZ0+BCzbffPNNNWvWTGFhYapYsaIqV66szz77TAcOHMh37KlfevMKlX379kmS+wt1/fr18z22QYMGHre3bNmiqlWr5isQGjZs6BHrdGPnFT8JCQkF7s/LqSCRkZGSpEOHDp32mFNzDQkJUb169Tz2x8fHKzo62muu0snXqqCcvL2mGzZskCR17dpVlStX9ti+/PJL7dq1S9L/vtw1adKkUM+pMJKSkpSYmKj333/fve/9999XpUqV3F/Oiio6Olq9e/fWjBkz3PveffddVatWzWvM888/X2XLlnUXInnFSceOHbV69WodPXrUfV9Rz7R0Km/vi6/yflZO/TxIUmJiovv+vP+e+jNX0L7du3crKyvLveWttTnVddddp3r16p127Ulhc8tTqlQpjz92/NPZfF4zMzM1ePBgxcTEqHz58qpcubI6deokSQX+XvKmSZMmio6O9ihA2rdvL+lk4Z6cnOxxX0JCgjv/DRs26Keffsr32TvvvPMkyf35K8iWLVsK9f7lKcrvjVN16tRJ/fr10/jx41WpUiX16dNH06ZNy7cuBsC5IXhP8YISrXXr1u6zdfXt21cXXnihrr32WmVkZLj/EvvOO+9o8ODB6tu3r+655x7FxsYqNDRUKSkpHgvn85zujEwFfdGx2unG9iWnyMhIVa1aVevXry9SDoXtQBQlJ2/HulwuSdLbb7+t+Pj4fMcV91mo+vfvr8cee0x79uxRRESEPvnkEw0YMOCsxh04cKBmzZqlFStWqGnTpvrkk0/c16M4k9KlS6tNmzZaunSpNm7cqKysLHXo0EFxcXE6fvy4Vq1apWXLlikxMVGVK1f2OT8psD/rRXXBBRd4FA7jxo3TQw89lO+4vO7J4MGDNXfu3LMe1+l0nvY98/Xzmpubq4svvlh79+7Vvffeq8TERJUrV05//vmnBg8e7P48FEVISIiSk5O1YsUK92mF/3kNk3bt2umNN97QsWPH9N1336lv377u+1wul5o2bapnn322wNinFltn42x+5hwOhz788EOtXLlSn376qRYsWKCbbrpJzzzzjFauXGmba+8AsAbFCUq8vIKjS5cueumll3TfffdJkj788EPVqVNHH3/8sccX73Hjxvk0Tt51LvL+2v9PGRkZ+Y796quvdOjQIY/uya+//uoRq7hcdtlleuWVV5SWlqbk5OQzHluzZk25XC5t2LDB3dmRpJ07d2r//v3FmmvdunUlSbGxserWrdtpj6tTp44keS24ijrFq3///ho/frw++ugjxcXF6eDBg7rmmmu8Pu5M4/To0UOVK1fWu+++qzZt2ujIkSO64YYbCpVPhw4dNGHCBH311VeqVKmSEhMT5XA41LhxYy1btkzLli0r1JW2A3Vl8byflYyMjHydooyMDPf9ef/duHFjvhin7nv33Xc9zmSV97NQkOuvv16PPvqoxo8fr3/9618+5Vac1q1bp99++01vvvmmBg4c6N6/cOHCs4p74YUX6osvvtAnn3yiXbt2uTsn0sni5D//+Y8+//xz/f333x5dt7p162rt2rW66KKLivwzU7NmzUK9f0XhLYe2bduqbdu2euyxxzRjxgxdd911mjlzpoYMGeLzmADsh2ldOCd07txZrVu31nPPPee+EGPeX+r++Ze5VatWKS0tzacxqlSpoubNm+vNN9/0mH6xcOFC/fzzzx7H9urVS7m5uXrppZc89k+cOFEOh0M9e/b0KYfCGj16tMqVK6chQ4Zo586d+e7ftGmTnn/+eXeukvTcc895HJP319RLL7202PLs3r27IiMj9fjjjxc4lzzvtMOVK1dWx44d9cYbbygzM9PjmH++v3nXoSjsFeIbNmyopk2b6v3339f777+vKlWqqGPHjl4fV65cudOOUapUKQ0YMEAffPCBpk+frqZNm6pZs2aFyqdDhw7KycnRc889pwsvvND9Za1Dhw56++23tX379kKtNzlTfsWpVatWio2N1ZQpUzym3HzxxRf65Zdf3D9LVatWVZMmTfTWW295TNNasmSJ+5S8edq3b69u3bq5tzMVJ3ndk/T0dH3yySc+5VacCvqdZIxxfxZ9lVdwTJgwQWXLlvVYB9K6dWuVKlVKTz75pMex0sk1Un/++WeBF1f8+++/lZ2dfdoxu3fvrrS0NKWnp7v37d2712O9VVGd7vO7b9++fB2WvOfI1C7g3EPnBOeMe+65R1dddZWmT5+uW2+9VZdddpk+/vhjXX755br00ku1efNmTZkyRY0aNTrtvHVvUlJSdOmll+rCCy/UTTfdpL179+rFF19U48aNPWL27t1bXbp00X/+8x/98ccfSkpK0pdffqm5c+dqxIgR7o5Bcalbt65mzJih/v37q2HDhho4cKCaNGmiY8eOacWKFZo1a5b7mgVJSUkaNGiQXnnlFe3fv1+dOnXSt99+qzfffFN9+/ZVly5dii3PyMhITZ48WTfccIPOP/98XXPNNapcubIyMzP12WefqX379u4C74UXXtCFF16o888/X7fccotq166tP/74Q5999pn7C1LLli0lSf/5z390zTXXqHTp0urdu/cZL57Xv39/jR07VmFhYbr55pu9Tr/KG2fy5Ml69NFHVa9ePcXGxnr8NX7gwIF64YUXtHjxYk2YMKHQr0dycrJKlSqljIwM3XLLLe79HTt21OTJkyWpUMVJy5Yt9dVXX+nZZ59V1apVVbt2bffi7LN1/PhxPfroo/n2x8TE6Pbbb9eECRN04403qlOnThowYIB27typ559/XrVq1dLIkSPdxz/++OPq06eP2rdvrxtvvFH79u3TSy+9pCZNmvj8+ZROrj155JFHPL40SyenzRU2t+KSmJiounXr6u6779aff/6pyMhIffTRR2e91qd169YqU6aM0tLS1LlzZ49piWXLllVSUpLS0tIUHR3tsW7rhhtu0AcffKBbb71VixcvVvv27ZWbm6tff/1VH3zwgRYsWOCePnuq0aNH65133tHFF1+sO+64Q+XKldNrr72mGjVqaO/evT5175o3b67Q0FBNmDBBBw4ckNPpVNeuXTVjxgy9/PLLuvzyy1W3bl0dOnRIr776qiIjI91/XAFwDvH/CcIA353uOifGnDzNat26dU3dunXNiRMnjMvlMo8//ripWbOmcTqdpkWLFmbevHlm0KBBHqcq/ecpSU8lyYwbN85j30cffWQaNmxonE6nadSokfn444/zxTTm5GlyR44caapWrWpKly5t6tevb5566imPU9/mjTFs2DCPfafLafHixUaSmTVrViFeLWN+++03M3ToUFOrVi1TpkwZExERYdq3b29efPFF93URjDHm+PHjZvz48aZ27dqmdOnSJiEhwYwZM8bjGGNOnhL00ksvzTdOp06dPE6te7r3KS//U08VunjxYtO9e3cTFRVl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r169dN999xU6pk/FyfLly7Vs2TI1b97cl4cDAAAAKOFiYmL06aefauTIkR77P/30U/eV47OzsxUREVHomD4VJwkJCfmmcgEAAAAIHg8++KBuu+02LV682L3m5LvvvtPnn3+uKVOmSJIWLlyoTp06FTqmT8XJc889p/vuu09Tp05VrVq1fAlR4v3ZpfAVYGFU/c7ScJIk5+fWB/1rSLKl8eIWbbc0niSd2LzF8pjA2XK0svYaUGb1ekvjFZcaV60LdArerfzR8pAnura0PGapr9dYGi+n5wWWxpMk5xfW/3/H+VmUpfHC97osjSdJoefVtTxm7m+bLI/pSFtrabyKadbFOmGOWxesuBjHyc2f49nc0KFD1ahRI7300kv6+OOPJUkNGjTQkiVL1K5dO0lyT+8qLJ+Kk/79++vIkSOqW7euypYtm+9S9Xv37vUlLAAAAIASpH379mrfvr1l8XwqTiZOnMgieAAAAAQPf18Y0aYrKA4ePKjIyEj3v88k77ii8PlsXQAAAACCS4UKFbRjxw7FxsYqOjq6wIaFMUYOh8Ony4v4VJx06tRJN998s6666iqFh4f7EgIAAABACfP111+7z8S1ePFiy+P7VJy0aNFCd999t+644w5dffXVuvnmm9W2bVurcwMAAADsgWldkuRx5q2inIWrsEJ8edBzzz2n7du3a9q0adq1a5c6duyoRo0a6emnn9bOnTsLHWfp0qXq3bu3qlatKofDoTlz5njcP3jwYDkcDo+tR48evqQMAAAAwGLLli3T9ddfr3bt2unPP/+UJL399ttavny5T/F8Kk4kqVSpUrriiis0d+5cbdu2Tddee60efPBBJSQkqG/fvvr666+9xsjOzlZSUpImTZp02mN69OihHTt2uLf33nvP15QBAAAAnziM/ze7++ijj9S9e3eFh4fr+++/V05OjiTpwIEDevzxx32K6dO0rn/69ttvNW3aNM2cOVOxsbEaPHiw/vzzT1122WW6/fbb9fTTT5/2sT179lTPnj3PGN/pdCo+Pv5s0wQAAABgoUcffVRTpkzRwIEDNXPmTPf+9u3b69FHH/Uppk+dk127dumZZ55RkyZN1KFDB+3evVvvvfee/vjjD40fP16vvfaavvzyS/eVIc9GamqqYmNj1aBBA912223666+/znh8Tk6ODh486LEBAAAAZ8UEYLO5jIwMdezYMd/+qKgo7d+/36eYPnVOqlevrrp16+qmm27S4MGDVbly5XzHNGvWTBdccHZXn+3Ro4euuOIK1a5dW5s2bdL999+vnj17Ki0tTaGhoQU+JiUlRePHjz+rcQEAAACcWXx8vDZu3KhatWp57F++fLnq1KnjU0yfipNFixapQ4cOZzwmMjLyrE8vds0117j/3bRpUzVr1kx169ZVamqqLrroogIfM2bMGI0aNcp9++DBg0pISDirPAAAAAB4Gjp0qO6880698cYbcjgc2r59u9LS0nT33XfrwQcf9CmmT8VJq1atdOTIEZUtW1aStGXLFs2ePVuNGjXSJZdc4lMihVGnTh1VqlRJGzduPG1x4nQ65XQ6iy0HAAAABCFOJey2efNm1a5dW/fdd59cLpcuuugiHTlyRB07dpTT6XRfcsQXPhUnffr00RVXXKFbb71V+/fvV5s2bVS6dGnt2bNHzz77rG677TafkvFm27Zt+uuvv1SlSpViiQ8AAADgzOrWrauaNWuqS5cu6tKli3755RcdOnRIhw8fVqNGjVS+fHmfY/u0IP777793T+v68MMPFRcXpy1btuitt97SCy+8UOg4hw8fVnp6utLT0yWdrMLS09OVmZmpw4cP65577tHKlSv1xx9/aNGiRerTp4/q1aun7t27+5I2AAAA4BNOJfw/X3/9tQYNGqTff/9dt9xyi2rVqqU+ffro9ddf12effVak6x6eyqfOyZEjRxQRESFJ+vLLL3XFFVcoJCREbdu21ZYtWwodZ/Xq1erSpYv7dt5akUGDBmny5Mn68ccf9eabb2r//v2qWrWqLrnkEj3yyCNM2wIAAAACpHPnzurcubMk6ejRo1qxYoVSU1OVmpqqN998U8ePH1diYqJ++umnIsf2qTipV6+e5syZo8svv1wLFizQyJEjJZ08xXBkZGSh43Tu3FnGnL4sXLBggS/pAQAAAPCDsLAwde3aVRdeeKG6dOmiL774QlOnTtWvv/7qUzyfpnWNHTtWd999t2rVqqXWrVsrOTlZ0skuSosWLXxKBAAAALAt4/D/ZmPHjh3T0qVLNX78eHXp0kXR0dG69dZbtW/fPr300kvavHmzT3F96pxceeWVuvDCC7Vjxw4lJSW591900UW6/PLLfUoEAAAAgP117dpVq1atUu3atdWpUyf93//9n2bMmGHJSat8Kk6k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+/Zp4MCBqlChgsqWLauePXtqw4YN7sdt2bJFvXv3VoUKFVSuXDk1btxYn3/+uf744w916dJFklShQgU5HA4NHjz4tOO//PLLql+/vsLCwhQXF6crr7xSkvTWW2+pYsWKysnJ8Ti+b9++uuGGGyRJDz30kJo3b663335btWrVUlRUlK655hodOnTIffz8+fN14YUXKjo6WhUrVtRll12mTZs2ue//448/5HA4NHPmTLVr105hYWFq0qSJlixZ4r7/dM/n1GldOTk5uvfee5WQkCCn06l69erp9ddfL+I7AgAIRhQnAFCA8PBwHTt2TIMHD9bq1av1ySefKC0tTcYY9erVS8ePH5ckDRs2TDk5OVq6dKnWrVunCRMmqHz58kpISNBHH30kScrIyNCOHTv0/PPPFzjW6tWr9e9//1sPP/ywMjIyNH/+fHXs2FGSdNVVVyk3N1effPKJ+/hdu3bps88+00033eTet2nTJs2ZM0fz5s3TvHnztGTJEj3xxBPu+7OzszVq1CitXr1aixYtUkhIiC6//HK5XC6PXO655x7ddddd+uGHH5ScnKzevXvrr7/+KtLzGThwoN577z298MIL+uWXXzR16lSVL1++qG8BACAIMa0LAP7BGKNFixZpwYIF6tmzp+bMmaNvvvlG7dq1kyS9++67SkhI0Jw5c3TVVVcpMzNT/fr1U9OmTSVJderUccfKm+4UGxur6Ojo046ZmZmpcuXK6bLLLlNERIRq1qypFi1aSDpZJF177bWaNm2arrrqKknSO++8oxo1aqhz587uGC6XS9OnT1dERIQk6YYbbtCiRYv02GOPSZL69evnMeYbb7yhypUr6+eff1aTJk3c+4cPH+4+dvLkyZo/f75ef/11jR49ulDP57ffftMHH3yghQsXqlu3bvleEwAAzoTOCQBImjdvnsqXL6+wsDD17NlT/fv31+DBg1WqVCm1adPGfVzFihXVoEED/fLLL5Kkf//733r00UfVvn17jRs3Tj/++OMZx3n33XdVvnx597Zs2TJdfPHFqlmzpurUqaMbbrhB7777ro4cOeJ+zNChQ/Xll1/qzz//lCRNnz7dvYg/T61atdyFiSRVqVJFu3btct/esGGDBgwYoDp16igyMlK1atWSdLIw+qfk5GT3v0uVKqVWrVq5n2thpKenKzQ0VJ06dSr0YwAAyENxAgCSunTpovT0dG3YsEF///233nzzTY8v/6czZMgQ/f7777rhhhu0bt06tWrVSi+++OJpj//Xv/6l9PR099aqVStFRETo+++/13vvvacqVapo7NixSkpKcp8Vq0WLFkpKStJbb72lNWvW6Keffsq3fqV06dIetx0Oh8eUrd69e2vv3r169dVXtWrVKq1atUqSdOzYsUK+QoUTHh5uaTwAQHChOAEASeXKlVO9evVUo0YNlSp1csZrw4YNdeLECfcXeUn666+/lJGRoUaNGrn3JSQk6NZbb9XHH3+su+66S6+++qokqUyZMpKk3Nxc97ERERGqV6+ee8v7Ml+qVCl169ZNTz75pH788Uf98ccf+vrrr92PGzJkiKZPn65p06apW7duSkhIKPRzy8v5gQce0EUXXaSGDRtq3759BR67cuVK979PnDihNWvWqGHDhqd9Pqdq2rSpXC6XeyE9AABFQXECAKdRv3599enTR0OHDtXy5cu1du1aXX/99apWrZr69OkjSRoxYoQWLFigzZs36/vvv9fixYvdX+Zr1qwph8OhefPmaffu3Tp8+HCB48ybN08vvPCC0tPTtWXLFr311ltyuVxq0KCB+5hrr71W27Zt06uvvuqxEL4wKlSooIoVK+qVV17Rxo0b9fXXX2vUqFEFHjtp0iTNnj1bv/76q4YNG6Z9+/a5xyvM86lVq5YGDRqkm266SXPmzNHmzZuVmpqqDz74oEg5AwCCE8UJAJzBtGnT1LJlS1122WVKTk6WMUaff/65expVbm6uhg0bpoYNG6pHjx4677zz9PLLL0uSqlWrpvHjx+u+++5TXFychg8fXuAY0dHR+vjjj9W1a1c1bNhQU6ZM0XvvvafGjRu7j4mKilK/fv1Uvnx59e3bt0jPISQkRDNnztSaNWvUpEkTjRw5Uk899VSBxz7xxBN64oknlJSUpOXLl+uTTz5RpUqVivR8Jk+erCuvvFK33367EhMTNXToUGVnZxcpZwBAcHIYY0ygkwAAeHfRRRepcePGeuGFFyyP/ccff6h27dr64Ycf1Lx5c8vjAwBQGJxKGABsbt++fUpNTVVqaqq7KwMAwLmI4gQAbK5Fixbat2+fJkyY4LEOBQCAcw3TugAAAADYAgviAQAAANgCxQkAAAAAW6A4AQAAAGALFCcAAAAAbIHiBAAAAIAtUJwAAAAAsAWKEwAAAAC2QHECAAAAwBb+H0REBZrM1TubAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    }
   ],
   "execution_count": 21
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.3 Degree Distribution\n",
    "\n",
    "The degree distribution shows how many connections each neuron has:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:05:00.582430Z",
     "start_time": "2025-10-01T16:05:00.363028Z"
    }
   },
   "source": [
    "# Test with random connectivity\n",
    "conn_test = conn.Random(prob=0.15, seed=42)\n",
    "result_test = conn_test(pre_size=200, post_size=200)\n",
    "\n",
    "# Calculate degrees\n",
    "pre_size = 200\n",
    "post_size = 200\n",
    "out_degree = np.bincount(result_test.pre_indices, minlength=pre_size)\n",
    "in_degree = np.bincount(result_test.post_indices, minlength=post_size)\n",
    "\n",
    "# Plot using vis.distribution_plot\n",
    "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n",
    "\n",
    "vis.distribution_plot(\n",
    "    out_degree,\n",
    "    bins=20,\n",
    "    alpha=0.7,\n",
    "    colors=['blue'],\n",
    "    edgecolor='black',\n",
    "    ax=axes[0],\n",
    "    xlabel='Out-Degree (outgoing connections)',\n",
    "    ylabel='Count',\n",
    "    title='Out-Degree Distribution'\n",
    ")\n",
    "\n",
    "vis.distribution_plot(\n",
    "    in_degree,\n",
    "    bins=20,\n",
    "    colors=['green'],\n",
    "    edgecolor='black',\n",
    "    alpha=0.7,\n",
    "    ax=axes[1],\n",
    "    xlabel='In-Degree (incoming connections)',\n",
    "    ylabel='Count',\n",
    "    title='In-Degree Distribution'\n",
    ")\n",
    "\n",
    "plt.suptitle('Random Connectivity (prob=0.15)', fontsize=14, y=1.02)\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "print(f\"Out-degree: mean={np.mean(out_degree):.2f}, std={np.std(out_degree):.2f}\")\n",
    "print(f\"In-degree:  mean={np.mean(in_degree):.2f}, std={np.std(in_degree):.2f}\")"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1400x500 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAIDCAYAAAB/zjwXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAripJREFUeJzs3Xd4lFX6//HPJJCZEFIgCUGKCSUqRUFpIkpgRaJiiQUQFAIqlp+hGMU1FpBFDSpgWEBZdcG2LCwW1rYoRhAUUAEVQUFUCAibECKkkUIy5/cH38wyzATSZjKB94uL62LOnOe5T5kMZ+48cx6LMcYIAAAAAAAAAOAT/Oq7AQAAAAAAAACA/yFpCwAAAAAAAAA+hKQtAAAAAAAAAPgQkrYAAAAAAAAA4ENI2gIAAAAAAACADyFpCwAAAAAAAAA+hKQtAAAAAAAAAPgQkrYAAAAAAAAA4ENI2gIAAAAAAACADyFpCwAAzhgxMTGKiYmp72bAC+pirn3h9ZKQkKBOnTqpvLy8XttxvCeeeEIWi0WrV6+u76b4pB07dqhRo0Z64YUX6rspAACgASNpCwAAamT37t2yWCxOfxs3bqzWrVtr2LBh2rhxY303scEzxuidd97RjTfeqDZt2shqtSo4OFjdunXT/fffrx9//LG+m1hvxowZI4vFot27d3s1rjcTlp9//rn+/e9/a+rUqfL39/d4PF9nt9s1d+5cnX/++QoMDFRkZKRGjBih3377rVrnef/99zV+/Hj169dPQUFBslgseuKJJyqt/+qrr7q81x3/98TXwrnnnqsRI0Zo2rRpys/Pr0FPAQAApEb13QAAANCwdejQQbfddpskqbCwUJs2bdKyZcu0fPlyffrpp+rfv389t7Bh+uOPPzR06FB99tlnCgsL0xVXXKH27durtLRU27Zt0wsvvKC//vWvSk9P14ABA+q7uT4nPT3dJ85RG48//riio6M1bNiwem2Hr7j77rv1yiuvqEuXLpowYYL279+vf/3rX/rkk0+0YcMGxcbGVuk8s2bN0ueff66QkBC1atVKv/zyS5WOu/7669W9e3eXcndXYz/00EN688039de//lWPPvpolc4PAABwPJK2AACgVjp27OhyldqMGTOUkpKixx9/XJ9//nn9NKwBKysr0w033KA1a9botttu0/z58xUSEuJU57///a8effRR5ebm1lMrfVuHDh184hw1tW3bNq1du1aPPvqo/Pz4ctyqVav0yiuvqH///lq5cqUCAgIkSSNHjtTVV1+tpKQkffzxx1U61/Tp09WyZUt17NhRS5cu1YgRI6p0XEJCgsaMGVOluueff74uuOACvfzyy0pJSWEOAQBAtbF6AAAAde6OO+6QJG3atMnluYULF+r6669XTEyMbDabmjdvrvj4eK1atcql7urVqx1fXd64caOuuOIKBQcHKzQ0VDfccEOlX43/97//rV69eikwMFBRUVEaN26cDh06VGl7Dx48qEmTJqldu3ayWq1q0aKFhg0bpq1bt7rUrfha/m+//aaZM2fqnHPOUWBgoDp37qwlS5ZIkkpLS/Xoo486+njBBRfoP//5T1WGTpL0xhtvaM2aNerfv79ee+01l4StJJ111llauHChrrzySqfyrVu3atiwYWrRooWsVqvatWunSZMmKScnx+UcFXu2FhQUaOLEiWrVqpWsVqsuuOACvfXWW5X2fdeuXfrrX/+q8847T1arVdHR0Zo2bZrsdrvb/vz73//W5ZdfrmbNmslms6lr166aOXNmpfu0/vvf/9bgwYMVHh4um82mmJgYjRo1yjEfMTExeu211yRJ7dq1c3xN/fgrjk/cj3b69OmyWCx6/fXX3cZ85513ZLFYnK6KPPEcAwYM0LRp0yRJAwcOdMSNiYmR3W5XdHS0wsPDVVJS4jZG//791ahRI/3+++9unz/eokWLJElDhw51ee741+Czzz6r2NhY2Ww2tWvXTn/5y1909OhRp/rH/xytW7dOgwcPVlhYmCwWi6NOYWGhpk6dqvPOO8/xczlkyBB9+eWXJ23n3//+d51//vmy2Wxq3bq17r//fo9sCfDyyy9LOjaPFQlbSbrqqqs0YMAAffLJJ9qzZ0+VznXZZZcpNjbWqf+eMGzYMGVkZLh9bwMAADgVrrQFAAAe06iR61LjvvvuU7du3TRo0CBFRkZq3759Wr58uQYNGqR33nlH119/vcsx33zzjZ599lkNHDhQd999t7799lstX75cP/zwg7Zu3Sqbzeao+/rrrysxMVEhISEaNWqUwsLC9MEHH2jQoEEqLS11SvhIUnZ2tvr27atff/1VAwYM0C233KJdu3bprbfe0ocffqiPP/5Yl156qUubkpOT9dVXX+naa6+Vv7+/lixZopEjR6pZs2aaO3eufvzxRw0ZMkTFxcVavHixrr/+ev30009Vunrz73//uyTpscceO+UVelar1fHvL774QvHx8SotLdXNN9+smJgYrV+/XnPmzNEHH3ygDRs2KCIiwun4o0ePavDgwTp06JBuuukmHTlyREuWLNGwYcO0YsUKDR482CXm5MmT9fnnn+uaa65RfHy8li9frieeeEKlpaV66qmnnOqmpKRoxowZat26tW688UaFhoZq7dq1mjx5sr766istW7bMqf4DDzyg2bNnq3nz5kpISFCLFi20d+9effrpp+rRo4e6du2qSZMm6dVXX9X333+viRMnKiwsTJL7r6lXuO222zR16lS9+eabGj16tMvzb7zxhiRp1KhRlZ6j4irLzz//XImJiY54YWFh8vPz05133qkpU6bo7bff1siRI52O3bFjh9auXashQ4aoTZs2lcaokJ6erqCgIHXt2rXSOpMmTdKXX36pYcOGqWnTpnr//fc1depUbdmyxW3Sfd26dXr66ac1cOBA3XXXXY4kZ3Fxsf70pz/p66+/1kUXXaRJkyYpKytLS5cu1ccff6x//vOfbpPHs2fPVnp6uoYPH64hQ4bo008/VVpamjZs2KA1a9aocePGp+xnVa1evVpBQUHq16+fy3Px8fFavXq1Pv/885POX219++23ysnJUVlZmWJiYjRo0CCFh4dXWr9v376Sjs3l5Zdf7rF2AQCA05QBAACogV27dhlJJj4+3uW5p59+2kgyQ4YMcXnut99+cynbv3+/adWqlYmNjXUqX7VqlZFkJJklS5Y4PTdq1Cgjyfzzn/90lOXm5pqQkBATFBRkduzY4SgvLS01/fv3N5JMdHS003nGjh1rJJmUlBSn8g8//NBIMh07djTl5eWO8sTERCPJnHPOOebAgQOO8q+++spIMmFhYebSSy81BQUFjueWLl1qJJnx48e79P1ER48eNY0bNzaNGjUyRUVFp6xfoby83HTo0MFIMitWrHB6bvLkyUaSuf32253Ko6OjjSRz/fXXm5KSEkf5p59+6nZuK/rerl07s3//fkd5dna2CQsLM8HBwU7n+eSTTxznOX487Ha7ueeee4wk89ZbbznK33//fSPJnH/++ebgwYMu45KZmenSll27drkdj+joaJe5vvTSS42/v79T240xJicnxwQEBJiePXue8hxTp041ksyqVatcYu7bt880atTIDBgwwOW5Bx980Egyy5cvd9ve4+Xn5xs/Pz/Tr18/t89X9D0yMtLs3bvXUV5SUuJ4nR8/rsf/HC1cuNDlfNOmTTOSzK233mrsdrujfPPmzSYgIMCEhYWZvLw8lzEICAgw33//vaPcbrebkSNHGklm5syZTjEWLVpkpk6dWuW/x49vQUGBkWS6du3qdjzeeustI8k8/vjjlYxo5f75z38aSWbq1KmV1lm0aJFj/I7/GxgYaGbMmFHpcbm5uUaS6d+/f7XbBQAAQNIWAADUSEXStkOHDo5Ey4MPPmgGDhxoJJmoqCjz448/Vvl848ePN5LM7t27HWUVySZ3SY+K55KTkx1lr732WqXJ0bVr17okbUtKSozNZjPh4eGmsLDQ5ZgrrrjCSDJr1qxxlFUkzF577TWX+u3btzeSzOeff+5UXlZWZho3blyl5E1mZqaRZFq2bHnKusdbs2aNkWSuuuoql+fy8/NN8+bNjc1mc0qqViRt3SXSo6OjTfPmzZ3KKvruLvFX8dyWLVscZdddd52RZDIyMlzqHz582FgsFnPTTTc5yq666iojyXz22Wen7G9NkrZ/+9vfjCQza9Ysp/IXXnjBSDJpaWmnPMfJkrbGGHPDDTcYi8Vidu7c6SgrLS01LVq0MGeddZY5evToKfu2Y8cOI8nceOONbp+v6PuTTz7p8lzF6/yaa65xlFX8rFx00UVuz9e+fXvTuHFjpwRwhXHjxhlJ5vXXX3eUVYzBnXfe6VJ/9+7dxt/f3yXBGhcX5zbxWdnf45Oo+/btM5IqTWJX/HJgwoQJbp8/maokbVevXm3mzp1rfv75Z3PkyBHz+++/m9dff920bt3aSDJ//etfKz3WZrOZ9u3bV7tdAAAAbI8AAABq5ddff3Xs81mhZcuWWrt2rTp27OhS/7ffflNqaqo+++wz7du3z2X/z/379ys6OtqprEePHi7nqfiK+eHDhx1l33//vaRje1aeqG/fvi7bNWzfvl3FxcUaOHCgmjRp4nLMwIEDtXLlSn333Xcu53R3F/mzzjpLv/32m8tz/v7+atGihfbv3+9yTF359ttvJclpX9cKTZs2Vc+ePfXJJ59ox44dOv/88x3PhYWFqV27di7HtGnTRuvXr3cbq6rzsWHDBgUFBWnhwoVuzxMYGKjt27c7Hn/99deyWq2Ki4tzW7+2hg0bpgkTJuiNN95QcnKyo/zNN99Uo0aNqnxDqpO5++679e677+qVV17RjBkzJEnvvfeeDhw4oEceecTtliEnqth/uGLbh8qc7HVe8Xo4Xq9evVzK8vLy9Ntvv6lTp05ut20YOHCgXn75ZX333XcuWw+4ix8dHa22bdtq27ZtTtuRrF69+qR98WVxcXFOr8nWrVtr1KhRuuiii9SzZ0898cQTuvfee93ObfPmzXXw4EFvNhcAAJwmSNoCAIBaiY+P14oVKyQd2x/2tdde05///Gddd911+vrrr9W0aVNH3V9++UW9e/dWXl6eBg4cqGuvvVYhISHy8/Nz7Enp7iZO7m7EVZEgOf5mVrm5uZKkFi1auNT39/d32X8yLy9PkhQVFeW2b2eddZZTvaq2qbLnTrxBlDvh4eFq3LixcnJyVFJS4rRn7cnUtC+hoaFu6zdq1KjSG4tVdT7++OMPlZWVuST1j1dYWOj4d25urlq3bn3KfXxrKiwsTNdcc43efvtt/fjjj+rcubN+/fVXrVu3TldffbXb1011DR48WO3atdNrr72mJ598Uo0aNdIrr7wii8XiuEHfqQQGBko6ttfsybib64rXecXPwqnq1+ZnoLJjoqKitHv3buXn5590z9eqqniNuuvT8W2r7LXsKV26dNGll16qTz/9VD/99JPTL0MqFBUVuf2FEAAAwKmQtAUAAHUmMjJSDz74oHJzc/Xkk0/qscceU1pamuP5559/XocOHdIbb7yh2267zenYe+65R59//nmt4lckbQ4cOODyXHl5uXJyctS6dWtHWUXyMSsry+35MjMznep5Q6NGjdS7d299+eWXWrNmja644ooqHeeLfQkJCZHFYqnylYZhYWHKzMyU3W73WOJ21KhRevvtt/XGG28oNTVVb775pqO8LlgsFt11111KSUnR+++/77jC+fLLL1f79u2rdI7IyEhJx5LeJ5OVlaVzzz3Xqazide4uoWqxWFzKavO6qeyYrKwsWSwWBQcHO8peffVV7d69231H3BgwYIDjqvGgoCCdddZZ2rVrl8rLy+Xv7+9Ud+fOnZKk2NjYKp+/rlTc2O/4Xz5UsNvtys3NVZcuXbzdLAAAcBogaQsAAOrcI488ooULF+qFF17QpEmTFBMTI+nYVgqSdP311zvVN8boyy+/rHXcbt26SZLWrl3rcrf79evXq6yszKnsvPPOk81m0zfffKMjR464XBFX8ZVud1sheNIdd9yhL7/8Uk8//bQGDRrkNtlWoeJq3AsvvFDSsTY/9NBDTnUKCwu1ceNGBQYGuiT5PKlPnz76z3/+o507d1Ypoda7d2999NFH+vzzzzVw4MCT1q1I3B1/ZW9VXH311QoPD9fixYv11FNP6R//+IeCg4NdXpO1iTt27FhNmTJFr7zyirZs2SK73a5x48ZVuY2tWrVSeHi4duzYcdJ6a9euVf/+/Z3KKl7nFa+HUwkJCVH79u31yy+/aN++fU6/1JBO/jOwdu1ajR492qksIyNDe/fuVZcuXRxbI0jHkrbV/aXM8Vt9xMXFacmSJfryyy9d+vzxxx9Lkku5p5WXl2vjxo2S5LKli3QsmWy3291egQsAAHAqnrmEAQAAnNECAwP15z//WUePHtX06dMd5RWJjS+++MKp/owZM7R169Zax73++usVEhKihQsX6ueff3aUHz16VI899phL/YCAAI0YMUIHDx5Uamqq03MrVqzQxx9/rI4dO6pfv361blt1jBo1SpdddplWr16tsWPHKj8/36VOVlaWxo0b59iaol+/furQoYP+85//6NNPP3Wq++STTyonJ0cjRoxwSqR52oQJEyRJt99+u2Of1uNlZmbqp59+cjy+7777JEkTJ050ucq0rKzM6crO5s2bS5L27t1brTY1btxYw4cP1549e/Tss89q586duummmxxbEpxKVeJGRUUpISFBK1as0IsvvqiIiAglJCRUuY0Wi0WXXXaZdu3apezs7ErrzZkzR7///rvjcWlpqR599FFJ0pgxY6ocLzExUUePHlVKSoqMMY7yLVu26NVXX1VoaKjb9r/++uvasmWL47ExRo888ojKy8td4q9evVrm2E2Qq/T3iSeecDr+rrvukiQ9/vjjKi0tdZT/5z//0erVqzV48GCXxOn27dud9kyuqU2bNrmUlZeX6+GHH9Yvv/yigQMHOraRON5XX30lSR7boxkAAJzeuNIWAAB4xF133aVnnnlGr7/+uh555BF16NBB99xzjxYtWqSbbrpJw4YNU3h4uDZs2KDNmzdryJAh+vDDD2sVMzQ0VH/96181ZswY9erVS7fccotCQ0P1wQcfKDAw0G1i5ZlnntHnn3+uJ598UuvWrVOfPn20e/duLVu2TE2aNNGiRYs89lX9yjRq1EjLly/X0KFD9dprr+m9995z7JVaWlqqH3/8UatXr9bRo0cd20z4+fnp1VdfVXx8vK6++moNHTpU0dHRWr9+vVavXq0OHTo4bozlLVdeeaUef/xxTZ8+XR07dtSVV16p6Oho5eTk6JdfftHatWv15JNPqlOnTpKOXQX74IMPaubMmYqNjdUNN9ygFi1aaN++fUpPT9eDDz6oSZMmSZL+9Kc/aebMmbrrrrt00003KSgoSNHR0VXa5mDUqFF64YUXNGXKFMfjqho4cKAsFoseeeQRbdu2TaGhoQoLC1NSUpJTvXvuuUfLli1TVlaWHnjggWony2+44QYtX75cK1eu1MiRI93Wufjii9WtWzcNHz5cQUFBev/997Vjxw7deOONuummm6oc66GHHtKHH36oN954Qz/99JMuv/xyHThwQEuXLlVZWZlefvllp60OKsTHx6tv37665ZZbFBkZqfT0dG3cuFEXX3yxxo8fX63+nsrAgQN155136pVXXtFFF12kIUOG6L///a+WLl2q5s2ba+7cuS7HVLyujk9ES9Ly5cu1fPlySdKuXbscZRXbN5x33nl6+OGHHfV79uypCy64QBdccIFat26tP/74Q59//rl+/vlntWnTRq+88orbNq9cuVKNGjXSNddcU9vuAwCAM5EBAACogV27dhlJJj4+vtI6c+fONZLMqFGjHGWrVq0y/fr1M8HBwSYsLMxcffXVZtOmTWbq1KlGklm1apVTXUlm6tSplcZPTEx0ee7dd981PXr0MFar1bRo0cLceeed5o8//jDR0dEmOjrapX52draZMGGCiY6ONo0bNzYRERHm5ptvNj/88INL3cTERCPJ7Nq1y+W5uLg4U9nyqrLYJ2O3281bb71lEhISTKtWrUxAQIBp0qSJ6dq1q5kwYYL58ccfXY7ZsmWLufnmm01ERIRp3LixiY6ONhMnTjTZ2dnVapO7vpys7+7mr8LKlSvNtddeayIjI03jxo1Ny5YtTd++fc306dPNnj17XOq//fbbZuDAgSY0NNRYrVYTExNjRo0aZbZu3epU79lnnzWxsbGmcePGRpKJi4urUt+MMSY2NtZIMm3atDHl5eVu61R2jldffdWcf/75xmq1Gklu69jtdnP22WcbSeann36qtB2VKSoqMs2bNzdXXXWVy3MV8/Drr7+aGTNmmI4dO5qAgAATHR1tnnji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Li5OX375pcs5Vq9erZ49e8pms6lDhw7629/+5navKYvFoqSkJP3jH/9Qly5dZLVatWLFCknSvn37dPvttysqKkpWq1VdunTRwoULXWKVlJRo6tSp6tixo6xWq9q2bauHHnqo1ls8PPzwwxo8eLCWLVumn3/+2VHubk/buXPnqkuXLmrSpImaNWumnj17avHixZKOzdfkyZMlSe3atXPMUcX+YicbgxP3tK1w8OBBDRs2TCEhIQoPD9fEiRNVXFzseL7iq4Svvvqqy7HHn/NUbXO3p+1vv/2moUOHqnnz5mrSpIkuvvhiffjhh051Kr7C969//UtPPfWU2rRpI5vNpssvv1y//PJLpWMOAABOL2PGjFHTpk21b98+JSQkqGnTpoqMjNSDDz6o8vLyWp07Ojpar776qkpLS53W0JJ0+PBhTZo0SW3btpXValXHjh31zDPPuFwNmpOTo1GjRikkJERhYWFKTEzU999/77KOqujHr7/+qquvvlrBwcG69dZbJR37hXtaWpq6dOkim82mqKgo3X333Tp06JBLm//zn//osssuU1BQkIKDgzVkyJBab5PWrVs3paWl6fDhw5o3b56j3N2eths3blR8fLwiIiIUGBiodu3a6fbbb5d0bP1Y8Tll2rRpjnVhxbrxZGNQ2ecWSXr++ecVHR2twMBAxcXFaevWrU7PV3a/iOPPeaq2ufucUVZWpunTp6tDhw6yWq2KiYnRI4884vIZISYmRtdcc42++OIL9e7dWzabTe3bt9frr7/ufsAB1At+LQPAY95//33FxMTosssuc/t8//79FRMT45L8qoo33nhDd955p3r37q277rpLktShQ4datXfUqFF66aWX9Mknn+iKK66QJH322We66qqr1KNHD02dOlV+fn5atGiR/vSnP2nt2rXq3bu3JOnbb7/VlVdeqbPOOkvTpk1TeXm5/vKXv7gkqyt89tln+te//qWkpCRFREQoJiZGWVlZuvjiix0JzcjISP3nP//RHXfcoby8PE2aNEnSsUXyddddpy+++EJ33XWXOnXqpB9++EHPP/+8fv7552rt81vZOHzyySdauXKlzjnnHLd1Xn75ZU2YMEE333yzI3m6ZcsWffXVVxo5cqRuvPFG/fzzz/rnP/+p559/3nFl8/Hj4W4MTmbYsGGKiYlRamqqNmzYoL/+9a86dOhQtReX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0EEzZ850fAXteNnZ2ZKO/ZZ60KBBWr58ufbv3+94/pdfftF//vOfU8auOMdNN92kt99+23Glq7tYkjRs2DDt27dPL7/8sku9oqIiFRYWVimmOzNmzNAnn3yi4cOHu/1qV4UT5zMgIECdO3eWMcaxX1hQUJAk1yRqTc2fP9/p8dy5cyXJsW9wSEiIIiIiHHu2VXjhhRdczlWdtl199dX6+uuvtX79ekdZYWGhXnrpJcXExFRrX14AAIAK/fr1c1qzViVpm5GRoTFjxiggIMBpDT1s2DCtX79eH3/8scsxhw8fVllZmaRjFyccPXrUaR1pt9td1lknM2zYMJWXl2v69Okuz5WVlTnWV/Hx8QoJCdHTTz/tdj/Z49e31fX9999r0qRJatas2Un34z106JDLlaMV36ArKSmRJEfyuq7WrMuXL9e+ffscj7/++mt99dVXTve66NChg7Zv3+40Bt9//72+/PJLp3NVp21XX321JCktLc2pvOLbeUOGDKlWPwDUP660BeAxsbGxeu2113Trrbfq/PPP1x133KF27dpp9+7d+vvf/66DBw/qn//8p+O38JJ0yy236M9//rNuuOEGTZgwQUeOHNGLL76oc845x3Ejrgo9evTQp59+qtmzZ6tVq1Zq166d271HT/TWW2+padOmKi0t1b59+/Txxx/ryy+/VLdu3bRs2TJHPT8/P73yyiu66qqr1KVLF40dO1atW7fWvn37tGrVKoWEhOj999+XJD3xxBP65JNP1K9fP917770qLy/XvHnz1LVrV3333XdVGq8ZM2Zo1apV6tOnj8aNG6fOnTvrjz/+0ObNm/Xpp5869uodNWqU/vWvf+mee+7RqlWr1K9fP5WXl2v79u3617/+pY8//lg9e/Y8aayysjK9+eabkqTi4mJlZGTovffe05YtWzRw4MBK99WtMHjwYLVs2VL9+vVTVFSUfvrpJ82bN09Dhgxx7CvWo0cPSdKjjz6qW265RY0bN9a1117rSJhW165du3Tdddfpyiuv1Pr16/Xmm29q5MiR6tatm6POnXfeqRkzZujOO+9Uz549tWbNGv38888u56pO2x5++GH985//1FVXXaUJEyaoefPmeu2117Rr1y69/fbbdf51OQAAAEnavHmz3nzzTdntdh0+fFjffPON3n77bVksFr3xxhuOrbOkYxdLvPfee7rmmms0ZswY9ejRQ4WFhfrhhx/01ltvaffu3YqIiFBCQoJ69+6tBx54QL/88ovOO+88vffee451ZlWu7IyLi9Pdd9+t1NRUfffddxo8eLAaN26snTt3atmyZZozZ45uvvlmhYSE6MUXX9SoUaN00UUX6ZZbblFkZKT27NmjDz/8UP369dO8efNOGW/t2rUqLi5WeXm5cnJy9OWXX+q9995TaGio3n333ZN+q+61117TCy+8oBtuuEEdOnRQfn6+Xn75ZYWEhDiSnIGBgercubOWLl2qc845R82bN1fXrl1Puu3CyXTs2FGXXnqp7r33XpWUlCgtLU3h4eFOW1fcfvvtmj17tuLj43XHHXfowIEDWrBggbp06eJ0g+bqtK1bt25KTEzUSy+9pMOHDysuLk5ff/21XnvtNSUkJLhsIQegATAA4GFbtmwxI0aMMGeddZZp3LixadmypRkxYoT54Ycf3Nb/5JNPTNeuXU1AQIA599xzzZtvvmmmTp1qTnzL2r59u+nfv78JDAw0kkxiYuJJ21Fxjoq/NpvNtGnTxlxzzTVm4cKFpri42O1x3377rbnxxhtNeHi4sVqtJjo62gwbNsykp6c71UtPTzcXXnihCQgIMB06dDCvvPKKeeCBB4zNZnOqJ8ncd999bmNlZWWZ++67z7Rt29YxVpdffrl56aWXnOqVlpaaZ555xnTp0sVYrVbTrFkz06NHDzNt2jSTm5t70nFITEx0GocmTZqYmJgYc9NNN5m33nrLlJeXuxwTFxdn4uLiHI//9re/mf79+zvGpEOHDmby5MkusadPn25at25t/Pz8jCSza9euU46BJDN16lTH44p5+/HHH83NN99sgoODTbNmzUxSUpIpKipyOvbIkSPmjjvuMKGhoSY4ONgMGzbMHDhwwOWcJ2tbdHS0y2vp119/NTfffLMJCwszNpvN9O7d23zwwQdOdVatWmUkmWXLljmV79q1y0gyixYtcttfAADQcC1atMhIMt98842jLDEx0QQFBbnUdbeedadi7VDxt1GjRqZ58+amT58+JiUlxWRkZLg9Lj8/36SkpJiOHTuagIAAExERYS655BIzc+ZMU1pa6qiXnZ1tRo4caYKDg01oaKgZM2aM+fLLL40ks2TJklP2o8JLL71kevToYQIDA01wcLA5//zzzUMPPWT279/vVG/VqlUmPj7ehIaGGpvN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"
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Out-degree: mean=29.86, std=4.74\n",
      "In-degree:  mean=29.86, std=5.55\n"
     ]
    }
   ],
   "execution_count": 22
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.4 Advanced Visualization: Correlation Matrix\n",
    "\n",
    "Let's visualize correlations between neurons' connectivity patterns:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T16:05:04.601718Z",
     "start_time": "2025-10-01T16:05:04.452891Z"
    }
   },
   "source": [
    "# Create a network with some structure\n",
    "conn_struct = conn.Random(prob=0.15, seed=42)\n",
    "result_struct = conn_struct(pre_size=50, post_size=50)\n",
    "\n",
    "# Create connectivity matrix\n",
    "conn_mat = result_to_matrix(result_struct)\n",
    "\n",
    "# Sample subset for visualization clarity\n",
    "subset_size = 20\n",
    "conn_subset = conn_mat[:subset_size, :subset_size]\n",
    "\n",
    "# Plot correlation matrix\n",
    "fig, ax = plt.subplots(figsize=(10, 8))\n",
    "vis.correlation_matrix(\n",
    "    conn_subset,\n",
    "    method='pearson',\n",
    "    cmap='RdBu_r',\n",
    "    show_values=False,\n",
    "    ax=ax,\n",
    "    title='Connectivity Pattern Correlation (20×20 subset)'\n",
    ")\n",
    "plt.show()\n",
    "\n",
    "print(\"\\nThis shows correlations between neurons' connectivity patterns.\")\n",
    "print(\"High correlation means neurons have similar connection patterns.\")"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x800 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzEAAAKqCAYAAAAKQNC0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAfKRJREFUeJzt3Xd8VFX+//H3TEihZBIQSBGkS5Nm1BgbKJGAqGAFll2KCMoSG9hwlVBUVkFFhQUbbRcEdRWxfEGIgIUICmQFBAQEgkJCMwkJksDM+f3BLyNDCgQmc5nM6/l43IfOvWfO59ybmyGf+Zx7r80YYwQAAAAAfsJu9QAAAAAAoDxIYgAAAAD4FZIYAAAAAH6FJAYAAACAXyGJAQAAAOBXSGIAAAAA+BWSGAAAAAB+hSQGAAAAgF8hiQEAAADgV0higPNIw4YNNWDAgHK/b+bMmbLZbNq5c6fXx4TKwWazafTo0V7ts1OnTurUqZNX+yyP9957T7Vq1VJeXp5lY6hsij5LfvjhB6uHIklatGiRatSoof3791s9FADnGZIYWG779u2677771LhxY4WFhcnhcOjqq6/Wq6++qj/++MPq4XndypUrNXr0aGVnZ1donH/961+aOXOmV/vcuXOnbDabewkKCtJFF12k2267Tenp6eXub+7cuZo0aVKx9Xv27NHo0aPPqk9fOXr0qF555RXFx8crIiJCYWFhuvjii5WcnKyff/7Z6uF5zU8//aTRo0efdwmy0+lUSkqKHnjgAdWoUUOSdOTIEU2ZMkVdunRRTEyMwsPD1aFDB02dOlVOp7NYHy6XSy+++KIaNWqksLAwtW3bVu+++65Xxnc+jcUflPZ51bVrVzVt2lTjx4/3/aAAnN8MYKFPP/3UVK1a1URGRpoHH3zQvPnmm2by5Mmmd+/eJjg42AwePNjqIXrdhAkTjCSzY8eOYtuOHj1qCgsLy93n8ePHzR9//GFcLpd7XevWrU3Hjh3PYaTF7dixw0gyffr0Mf/+97/NzJkzzRNPPGEcDocJDQ0169atK1d/3bt3Nw0aNCi2/vvvvzeSzIwZM7wybm/bv3+/iYuLM5LMzTffbCZNmmTefvtt89hjj5n69eub4OBgq4dYjCSTkpJS7ve9//77RpJZtmxZsW0FBQWmoKDg3Ad3Fj766CNjs9nMr7/+6l63fv16Y7PZTGJionnxxRfNtGnTzG233WYkmX79+hXr48knnzSSzODBg82bb75punfvbiSZd99995zHdz6NpTxmzJhhJJnvv//ep3HL+rz617/+ZapVq2Zyc3N9OiYA5zeSGFjml19+MTVq1DAtWrQwe/bsKbZ969atZtKkSRaMrGKVlcR4U0UmMRMmTPBYv3DhQiPJDBkypFz9+TqJycvL80o/3bt3N3a73XzwwQfFth09etSMGDHCK3FKG6/L5TJHjhwpV18VkcRY6dZbbzXXXHONx7r9+/ebDRs2FGs7cOBAI8ls3brVve7XX381wcHBZtiwYe51LpfLXHvttaZevXrm+PHjHn0sXrzY7Nq1q8SxHD582MydO9dnY6lI52MSk5WVZYKCgsw777zj0zEBOL+RxMAy999/v5Fkvv322zNqf+zYMTN27FjTuHFjExISYho0aGBGjhxpjh496tGuQYMGpnv37ubrr782l19+uQkNDTWNGjUys2bN8mhX9I/1N998Yx555BFTu3ZtU61aNdOzZ0+zb9++YvE///xzc80115hq1aqZGjVqmJtuuqnEP1I2bdpk7rrrLlO7dm0TFhZmLr74YvPUU08ZY4xJSUkxkootRQlNgwYNTP/+/Y0xf/4hP3PmzGIxFi1aZCSZTz75xGNfTu7n1BgdO3Y027dvN5LMyy+/XKzPb7/91kgq9sfYyUpLYvLy8owkc+ONNxpjjFmwYIG56aabTExMjAkJCTGNGzc2Y8eO9fhjrGPHjsXG2KBBA7Ns2bISj9HJCc13331nkpKSjMPhMFWrVjXXXXed+eabbzzGVHSsN27caPr06WMiIyNN+/bt3cfnTM6Rknz33Xfub8zPVGpqqvvciYiIMLfeeqv56aefyj3eRYsWmbi4OBMaGmpeeeUVY4wxv//+u3nooYdMvXr1TEhIiGnSpIn55z//aZxOp0f/pyYxO3fuNEOHDjUXX3yxCQsLM7Vq1TJ33nmnR3JddF6duhQlNB07diz2h2dWVpa55557TN26dU1oaKhp27ZtsXP45PPojTfecP9OX3bZZWb16tWnPZ5//PGHCQkJMaNHjz5tW2P+TLIXLlzoXjdlyhT38T7Z3LlzjSTz9ddfu9c5nU5z8cUXm+bNmxf7bCgoKDCJiYmmevXqJX5ueHssJdm7d68ZMGCAufDCC01ISIiJjo42t956q8fPsrQk9uTPHGP+/JmvWLHCDBkyxNSqVcuEh4ebv/3tb+bQoUMe7/3+++9Nly5dzAUXXGDCwsJMw4YNzcCBAz3aOJ1O88orr5hWrVqZ0NBQU7duXTNkyBCPvkr7vDpZhw4dzK233lrmcQAQWKqcw0w04Jx88sknaty4sa666qozan/vvfdq1qxZuvPOOzVixAitWrVK48eP16ZNm/TRRx95tN22bZvuvPNODRo0SP3799f06dM1YMAAxcXFqXXr1h5tH3jgAdWsWVMpKSnauXOnJk2apOTkZM2fP9/d5t///rf69++vpKQkvfDCCzpy5IimTp2qa665RuvWrVPDhg0lST/++KOuvfZaBQcHa8iQIWrYsKG2b9+uTz75RM8995xuv/12/fzzz3r33Xf1yiuvqHbt2pKkOnXqFNvfyy67TI0bN9Z7772n/v37e2ybP3++atasqaSkpBKP1aRJk9zXCvzjH/+QJEVFRalx48a6+uqrNWfOHD3yyCMe75kzZ47Cw8PVo0ePM/hpeNq+fbsk6YILLpB04uLgGjVqaPjw4apRo4a+/PJLjRo1Srm5uZowYYIk6R//+IdycnL066+/6pVXXpEk1ahRQy1bttTYsWM1atQoDRkyRNdee60kuc+TL7/8Ut26dVNcXJxSUlJkt9s1Y8YM3XDDDfr66691xRVXeIztrrvuUrNmzfT888/LGONeX55z5GQLFy6UJP3tb387o2OzdOlSdevWTY0bN9bo0aP1xx9/6PXXX9fVV1+ttWvXus+d0413y5Yt6tOnj+677z4NHjxYzZs315EjR9SxY0f99ttvuu+++3TRRRdp5cqVGjlypPbu3Vvi9UZFvv/+e61cuVK9e/dWvXr1tHPnTk2dOlWdOnXSTz/9pGrVqum6667Tgw8+qNdee01PPfWUWrZsKUnu/57qjz/+UKdOnbRt2zYlJyerUaNGev/99zVgwABlZ2froYce8mg/d+5cHT58WPfdd59sNptefPFF3X777frll18UHBxc6tjXrFmjwsJCXXrppac5+idkZmZKkvv3TZLWrVun6tWrF9uXovNn3bp1uuaaayRJdrtdCxYs0LXXXqukpCQtX75cDodDTqdTf/nLX7RixQp9/PHHJf4ee3ssJbnjjju0ceNGPfDAA2rYsKH27dunJUuWKCMjo9j5daaSk5MVGRmp0aNHa8uWLZo6dap27dql5cuXy2azad++ferSpYvq1KmjJ598UpGRkdq5c6c+/PBDj37uu+8+zZw5UwMHDtSDDz6oHTt2aPLkyVq3bp2+/fZbBQcHl/p5dbK4uDgtWLDgrPYFQCVldRaFwJSTk2MkmR49epxR+/T0dCPJ3HvvvR7rH330USPJfPnll+51Rd/qffXVV+51+/btM6GhoR7TfIq+cUxMTPS4luSRRx4xQUFBJjs72xhzYqpIZGRksW/eMzMzTUREhMf66667zoSHhxebdnJy/2VNJzv1W9GRI0ea4OBgj28tCwoKTGRkpLnnnnuK7cvJfZY2PeONN94wksymTZvc6woLC03t2rU9Ypek6Bv0MWPGmP3795vMzEyzfPly06FDByPJ/Pe//zXGmBKnOt13332mWrVqHpWz8k4nc7lcplmzZiYpKcnjmB45csQ0atTIXQky5s/KRp8+fYr1f6bnSEmKrmv4/fffy2xXpH379qZu3brm4MGD7nX/+9//jN1u97g24kzGu2jRIo/148aNM9WrVzc///yzx/onn3zSBAUFmYyMDPc6nfJNfEk/o7S0NCPJzJ49272urOlkp1ZiJk2aZCSZ//znP+51hYWFJiEhwdSoUcN9TUPReXTBBRd4nNsff/yxR4WxNG+//baRZNavX19mO2NO/L60atXKNGrUyBw7dsy9vnv37qZx48bF2ufn5xtJ5sknnyy2bfXq1aZGjRrmuuuuM0eOHDH33nuvsdlsZVYvK2osRX7//fcSq6OnOvXnX6S0SkxcXJzH9XkvvviikWQ+/vhjY8yJa5J0mmlnX3/9tZFk5syZ47G+qJJ88vrTTX99/vnnjSSTlZVV5n4CCBzcnQyWyM3NlSSFh4efUfvPP/9ckjR8+HCP9SNGjJAkffbZZx7rW7Vq5f4GXzpR6WjevLl++eWXYn0PGTJENpvN/fraa6+V0+nUrl27JElLlixRdna2+vTpowMHDriXoKAgxcfHa9myZZKk/fv366uvvtI999yjiy66yCPGyf2XR69evXTs2DGPbze/+OILZWdnq1evXmfV5913362wsDDNmTPHvW7x4sU6cOCA/vrXv55RHykpKapTp46io6PVqVMnbd++XS+88IJuv/12SVLVqlXdbQ8fPqwDBw7o2muv1ZEjR7R58+azGrckpaena+vWrfrLX/6igwcPun8W+fn56ty5s7766iu5XC6P99x///0l9lWec+Rk5Tl39+7dq/T0dA0YMEC1atVyr2/btq1uvPFG93l9JuNt1KhRscrb+++/r2uvvVY1a9b0ODcTExPldDr11VdflTq2k39Gx44d08GDB9W0aVNFRkZq7dq1p923knz++eeKjo5Wnz593OuCg4P14IMPKi8vTytWrPBo36tXL9WsWdP9uujncbqfwcGDByXJ472lSU5O1k8//aTJkyerSpU/Jx/88ccfCg0NLdY+LCzMvf1Ul19+uRYsWKBVq1apRYsWevvtt/X666977K+vxlKkatWqCgkJ0fLly/X777+f0TjOxJAhQzyqYUOHDlWVKlXc52xkZKQk6dNPP9WxY8dK7OP9999XRESEbrzxRo/zMy4uTjVq1HB/dp6Jop/1gQMHznKPAFQ2TCeDJRwOh6QTf+CeiV27dslut6tp06Ye66OjoxUZGelOOIqcmkRIJ/4RLOkf+VPbFv1jWdR269atkqQbbrihxLEV7UvRH16XXHLJaffnTLVr104tWrTQ/PnzNWjQIEknppLVrl271PGcTmRkpG655RbNnTtX48aNk3RiKtmFF154xn0OGTJEd911l+x2uyIjI9W6dWuPP8I2btyop59+Wl9++aX7j/4iOTk5ZzVu6c+fxanT607t/+Q/bhs1alRiu/KcIyc7+dwt+kOuNEXnZfPmzYtta9mypRYvXqz8/HxVr179tOMtaf3WrVv1448/ljqNad++faWO7Y8//tD48eM1Y8YM/fbbbx5T1872Z7Rr1y41a9ZMdrvn92NF06RO93t66u/e6Zw85pJMmDBBb731lsaNG6ebbrrJY1vVqlVVUFBQ7D1Hjx51by9J586d1atXL82ePVsdOnTQ0KFDz2isFTEWSQoNDdULL7ygESNGKCoqSldeeaVuvvlm9evXT9HR0Wc0tpI0a9bM43WNGjUUExPjvtV2x44ddccdd2jMmDF65ZVX1KlTJ/Xs2VN/+ctf3J8FW7duVU5OjurWrVtijLLOz1MV/azP9gshAJUPSQws4XA4FBsbqw0bNpTrfWf6D1hQUFCJ60v6o+d0bYu+2f/3v/9d4h8FJ3+jWhF69eql5557TgcOHFB4eLgWLlyoPn36nFPcfv366f3339fKlSvVpk0bLVy4UH//+9+L/fFZmmbNmikxMbHEbdnZ2erYsaMcDofGjh2rJk2aKCwsTGvXrtUTTzxRrFJSHkXvnTBhgtq3b19im6JnhhQp7Q/A8pwjJ2vRooUkaf369R6VHG8pbbwlrXe5XLrxxhv1+OOPl/ieiy++uNQ4DzzwgGbMmKGHH35YCQkJioiIkM1mU+/evc/pZ1QeZ/szKLr26vfff1e9evVKbDNz5kw98cQTuv/++/X0008X2x4TE6Nly5bJGOPxubJ3715JUmxsbIn9Tp06VbNnz9aNN96opUuXatiwYZo6dWqZ462osRR5+OGHdcstt2jBggVavHixnnnmGY0fP15ffvmlOnToUOZ7S3pmzZmw2Wz64IMP9N133+mTTz7R4sWLdc899+ill17Sd999pxo1asjlcqlu3boeVd+Tnck1REWKEtuTryUCENhIYmCZm2++WW+++abS0tKUkJBQZtsGDRrI5XJp69atHhe/ZmVlKTs7Ww0aNKiwcTZp0kSSVLdu3VL/cJekxo0bS9JpE7PyfpPYq1cvjRkzRv/9738VFRWl3Nxc9e7d+7TvKytO165dVadOHc2ZM0fx8fE6cuTIGV+ofjrLly/XwYMH9eGHH+q6665zr9+xY8cZj7G09UU/C4fDUebPoiLdcsstGj9+vP7zn/+cNokpOi+3bNlSbNvmzZtVu3ZtjypMeTVp0kR5eXlndSw++OAD9e/fXy+99JJ73dGjR4s9hLU852uDBg30448/yuVyeSTERVMIvfV7WpRI7tixQ23atCm2/eOPP9a9996r22+/XVOmTCmxj/bt2+vtt9/Wpk2b1KpVK/f6VatWubefat68eUpOTtagQYP09ttv69VXX9XDDz+smjVr6vnnny8xTkWN5VRNmjTRiBEjNGLECG3dulXt27fXSy+9pP/85z+STlS5Tv3ZFhYWuhOlU23dulXXX3+9+3VeXp727t1brIp05ZVX6sorr9Rzzz2nuXPnqm/fvpo3b57uvfdeNWnSREuXLtXVV19dZjVJOv15tmPHDtWuXbtciQ+Ayo1rYmCZxx9/XNWrV9e9996rrKysYtu3b9+uV199VZLc/3Ceerell19+WZLUvXv3ChtnUlKSHA6Hnn/++RLnfu/fv1/SiW8Vr7vuOk2fPl0ZGRkebU7+Zrnoj9ZT/6AoTcuWLdWmTRvNnz9f8+fPV0xMjEdyUJrq1auXGqNKlSrq06eP3nvvPc2cOVNt2rRR27Ztz2g8p1P07frJ+1xYWKh//etfJY6xpKlLpR2juLg4NWnSRBMnTlReXl6x9xX9LCpSQkKCunbtqrfffrvEuyUVFhbq0UcflXTiG/b27dtr1qxZHvuyYcMGffHFF8X+ICyvu+++W2lpaVq8eHGxbdnZ2Tp+/Hip7w0KCipW8Xj99deLfTNfnvP1pptuUmZmpsed/Y4fP67XX39dNWrUUMeOHU/bx5mIi4tTSEiIfvjhh2LbvvrqK/Xu3VvXXXed5syZU2p1sUePHgoODvY4L40xmjZtmi688MJid038/PPP1a9fP91+++164403JEkPPfSQRo0apfHjx3skgxU9lpMdOXLEPe2sSJMmTRQeHu4xRa1JkybFrpF68803S63EvPnmmx6fd1OnTtXx48fVrVs3SScqI6eeP0XJVlHcu+++W06n0z1t9WTHjx/3OKfK+rySTtyR7nRfdgEILFRiYJkmTZpo7ty56tWrl1q2bKl+/frpkksuUWFhoVauXOm+Nat04tqQ/v37680333RPV1q9erVmzZqlnj17enxj6G0Oh0NTp07V3/72N1166aXq3bu36tSpo4yMDH322We6+uqrNXnyZEnSa6+9pmuuuUaXXnqphgwZokaNGmnnzp367LPPlJ6eLunEH2DSiVsM9+7dW8HBwbrlllvK/Ea+V69eGjVqlMLCwjRo0KAzmvYVFxenqVOn6tlnn1XTpk1Vt25dj2te+vXrp9dee03Lli3TCy+8cA5HyNNVV12lmjVrqn///nrwwQdls9n073//u8QpQnFxcZo/f76GDx+uyy+/XDVq1NAtt9yiJk2aKDIyUtOmTVN4eLiqV6+u+Ph4NWrUSG+//ba6deum1q1ba+DAgbrwwgv122+/admyZXI4HPrkk0+8ti+lmT17trp06aLbb79dt9xyizp37qzq1atr69atmjdvnvbu3auJEydKOjH1rVu3bkpISNCgQYPct1iOiIjQ6NGjz2kcjz32mBYuXKibb77ZfXvo/Px8rV+/Xh988IF27txZ6vSbm2++Wf/+978VERGhVq1aKS0tTUuXLnVP1SrSvn17BQUF6YUXXlBOTo5CQ0N1ww03lHidw5AhQ/TGG29owIABWrNmjRo2bKgPPvhA3377rSZNmnTGN/I4nbCwMHXp0kVLly7V2LFj3et37dqlW2+9VTabTXfeeafef/99j/e1bdvWnazXq1dPDz/8sCZMmKBjx465L9r/+uuvNWfOHI+pbi6XS4888oiuv/76YtvGjBmj33//XSkpKerXr5+7UlBRYznVzz//rM6dO+vuu+9Wq1atVKVKFX300UfKysryqNjee++9uv/++3XHHXfoxhtv1P/+9z8tXry41POjsLDQ3e+WLVv0r3/9S9dcc41uvfVWSdKsWbP0r3/9S7fddpuaNGmiw4cP66233pLD4XAn5x07dtR9992n8ePHKz09XV26dFFwcLC2bt2q999/X6+++qruvPNOSWV/Xu3bt08//vijhg0bVupxABCAfH9DNMDTzz//bAYPHmwaNmxoQkJCTHh4uLn66qvN66+/7nE73mPHjpkxY8aYRo0ameDgYFO/fv0yH3Z5qlNvB1vak6mLHrZ46i1lly1bZpKSkkxERIQJCwszTZo0MQMGDDA//PCDR7sNGzaY2267zURGRpqwsDDTvHlz88wzz3i0GTdunLnwwguN3W4v9WGXJ9u6dav7IXCnPtTx5H05+RbLmZmZpnv37iY8PLzEh8cZc+K2pna73fz666/FtpWktIddnurbb781V155palataqJjY01jz/+uFm8eHGx45qXl2f+8pe/mMjISPfDLot8/PHHplWrVqZKlSrFbre8bt06c/vtt5sLLrjAhIaGmgYNGpi7777bpKamutsU3bJ4//79xcZ3pudIWY4cOWImTpxoLr/8clOjRg0TEhJimjVrZh544AGzbds2j7ZLly41V199talatapxOBzmlltuKfVhl+UZrzEnbgE+cuRI07RpUxMSEmJq165trrrqKjNx4kSPW+TqlFvs/v7772bgwIGmdu3apkaNGiYpKcls3ry5xHPwrbfeMo0bNzZBQUFn9LDLon5DQkJMmzZtit0qu6zz6NRxlubDDz80NpvN4zbSpT0otWg5tV+n02mef/5506BBAxMSEmJat27tcXvok/38888mPz+/xG0ul8v873//81hXkWM52YEDB8ywYcNMixYtTPXq1U1ERISJj4837733XrH+n3jiCfdDfZOSksy2bdtO+7DLmjVrmho1api+fft63CZ87dq1pk+fPuaiiy5yP8Ty5ptvLvZ5aIwxb775pomLizNVq1Y14eHhpk2bNubxxx83e/bscbcp6/Nq6tSpplq1au5bdAOAMcbY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iQEAAABQYVq1aqWvv/662PoPPvhAHTp0OKs+qcQAAAAAqDCjRo1S//799dtvv8nlcunDDz/Uli1bNHv2bH366adn1SeVGAAAAAQkl7FmCTQ9evTQJ598oqVLl6p69eoaNWqUNm3apE8++UQ33njjWfVZ7iTmq6++0i233KLY2FjZbDYtWLDAY7sxRqNGjVJMTIyqVq2qxMREbd269bT9TpkyRQ0bNlRYWJji4+O1evXq8g4NAAAAwHnk+PHjGjt2rBo1aqQlS5Zo3759OnLkiL755ht16dLlrPstdxKTn5+vdu3aacqUKSVuf/HFF/Xaa69p2rRpWrVqlapXr66kpKQyH2wzf/58DR8+XCkpKVq7dq3atWunpKQk7du3r7zDAwAAAM6IMcaSJZBUqVJFL774oo4fP+7VfsudxHTr1k3PPvusbrvttmLbjDGaNGmSnn76afXo0UNt27bV7NmztWfPnmIVm5O9/PLLGjx4sAYOHKhWrVpp2rRpqlatmqZPn17e4QEAAAA4j3Tu3FkrVqzwap9evbB/x44dyszMVGJiontdRESE4uPjlZaWpt69exd7T2FhodasWePxlFG73a7ExESlpaV5c3gAAAAAfKxbt2568skntX79esXFxal69eoe22+99dZy9+nVJCYzM1OS3E8PLRIVFeXedqoDBw7I6XSW+J7SHn5TUFCggoIC9+vc3NxzGTYAAAACkBUX2gfihf1///vfJZ2YfXUqm80mp9NZ7j798u5k48ePV0REhHupX7++1UMCAAAAUAKXy1XqcjYJjOTlJCY6OlqSlJWV5bE+KyvLve1UtWvXVlBQULneM3LkSOXk5LiX3bt3e2H0AAAACDTGx0ugOXbsmKpUqaINGzZ4tV+vJjGNGjVSdHS0UlNT3etyc3O1atUqJSQklPiekJAQxcXFebzH5XIpNTW11PeEhobK4XB4LAAAAADOL8HBwbrooovOuuJSmnInMXl5eUpPT1d6erqkExfzp6enKyMjQzabTQ8//LCeffZZLVy4UOvXr1e/fv0UGxurnj17uvvo3LmzJk+e7H49fPhwvfXWW5o1a5Y2bdqkoUOHKj8/XwMHDjznHQQAAABgnX/84x966qmndOjQIa/1We4L+3/44Qddf/317tfDhw+XJPXv318zZ87U448/rvz8fA0ZMkTZ2dm65pprtGjRIoWF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8CskMQAAAAD8SsAkMVOmTFHDhg0VFham+Ph4rV69usz277//vlq0aKGwsDC1adNGn3/+uY9Gar3x48fr8ssvV3h4uOrWrauePXtqy5YtZb5n5syZstlsHos/PEDKW0aPHl1s/0/35NxAPsckqWHDhsWOmc1m07Bhw0psH4jn2FdffaVbbrlFsbGxstlsWrBggcd2Y4xGjRqlmJgYVa1aVYmJidq6detp+y3v56E/KeuYHTt2TE888YTatGmj6tWrKzY2Vv369dOePXvK7PNsfr/9yenOswEDBhTb/65du56230A9zySV+Nlms9k0YcKEUvus7OcZ4G0BkcTMnz9fw4cPV0pKitauXat27dopKSmp2NNHi6xcuVJ9+vTRoEGDtG7dOvXs2VM9e/bUhg0bfDxya6xYsULDhg3Td999pyVLlujYsWPq0qWL8vPzy3yfw+HQ3r173cuuXbt8NOLzQ+vWrT32/5tvvim1baCfY5L0/fffexyvJUuWSJLuuuuuUt8TaOdYfn6+2rVrpylTppS4/cUXX9Rrr72madOmadWqVapevbqSkpJ09OjRUvss7+ehvynrmB05ckRr167VM888o7Vr1+rDDz/Uli1bdOutt5623/L8fvub051nktS1a1eP/X/33XfL7DOQzzNJHsdq7969mj59umw2m+64444y+63M5xngdSYAXHHFFWbYsGHu106n08TGxprx48eX2P7uu+823bt391gXHx9v7rvvvgod5/lq3759RpJZsWJFqW1mzJhhIiIifDeo80xKSopp167dGbfnHCvuoYceMk2aNDEul6vE7YF+jkkyH330kfu1y+Uy0dHRZsKECe512dnZJjQ01Lz77rul9lPez0N/duoxK8nq1auNJLNr165S25T399uflXTM+vfvb3r06FGufjjPPPXo0cPccMMNZbYJpPMM8IZKX4kpLCzUmjVrlJiY6F5nt9uVmJiotLS0Et+Tlpbm0V6SkpKSSm1f2RU9EKlWrVpltsvLy1ODBg1Uv3599ejRQxs3bvTF8M4bW7duVWxsrBo3bqy+ffsqIyOj1LacY54KCwv1n//8R/fcc49sNlup7QL9HDvZjh07lJmZ6XEeRUREKD4+vtTz6Gw+Dyu7nJwc2Ww2RUZGltmuPL/fldHy5ctVt25dNW/eXEOHDtXBgwdLbct55ikrK0ufffaZBg0adNq2gX6eAeVR6ZOYAwcOyOl0KioqymN9VFSUMjMzS3xPZmZmudpXZi6XSw8//LCuvvpqXXLJJaW2a968uaZPn66PP/5Y//nPf+RyuXTVVVfp119/9eForRMfH6+ZM2dq0aJFmjp1qnbs2KFrr71Whw8fLrE955inBQsWKDs7WwMGDCi1TaCfY6cqOlfKcx6dzedhZXb06FE98cQT6tOnjxwOR6ntyvv7Xdl07dpVs2fPVmpqql544QWtWLFC3bp1k9PpLLE955mnWbNmKTw8XLfffnuZ7QL9PAPKq4rVA8D5bdiwYdqwYcNp5+UmJCQoISHB/fqqq65Sy5Yt9cYbb2jcuHEVPUzLdevWzf3/bdu2VXx8vBo0aKD33nvvjL59C3TvvPOOunXrptjY2FLbBPo5Bu86duyY7r77bhljNHXq1DLbBvrvd+/evd3/36ZNG7Vt21ZNmjTR8uXL1blzZwtH5h+mT5+uvn37nvZGJIF+ngHlVekrMbVr11ZQUJCysrI81mdlZSk6OrrE90RHR5erfWWVnJysTz/9VMuWLVO9evXK9d7g4GB16NBB27Ztq6DRnd8iIyN18cUXl7r/nGN/2rVrl5YuXap77723XO8L9HOs6Fwpz3l0Np+HlVFRArNr1y4tWbKkzCpMSU73+13ZNW7cWLVr1y51/znP/vT1119ry5Yt5f58kzjPgNOp9ElMSEiI4uLilJqa6l7ncrmUmprq8a3uyRISEjzaS9KSJUtKbV/ZGGOUnJysjz76SF9++aUaNWpU7j6cTqfWr1+vmJiYChjh+S8vL0/bt28vdf8D/Rw72YwZM1S3bl117969XO8L9HOsUaNGio6O9jiPcnNztWrVqlLPo7P5PKxsihKYrVu3aunSpbrgggvK3cfpfr8ru19//VUHDx4sdf85z/70zjvvKC4uTu3atSv3ewP9PANOy+o7C/jCvHnzTGhoqJk5c6b56aefzJAhQ0xkZKTJzMw0xhjzt7/9zTz55JPu9t9++62pUqWKmThxotm0aZNJSUkxwcHBZv369Vbtgk8NHTrUREREmOXLl5u9e/e6lyNHjrjbnHrMxowZYxYvXmy2b99u1qxZY3r37m3CwsLMxo0brdgFnxsxYoRZvny52bFjh/n2229NYmKiqV27ttm3b58xhnOsNE6n01x00UXmiSeeKLaNc8yYw4cPm3Xr1pl169YZSebll18269atc99J65///KeJjIw0H3/8sfnxxx9Njx49TKNGjcwff/zh7uOGG24wr7/+uvv16T4P/V1Zx6ywsNDceuutpl69eiY9Pd3j862goMDdx6nH7HS/3/6urGN2+PBh8+ijj5q0tDSzY8cOs3TpUnPppZeaZs2amaNHj7r74Dzz/N00xpicnBxTrVo1M3Xq1BL7CLTzDPC2gEhijDHm9ddfNxdddJEJCQkxV1xxhfnuu+/c2zp27Gj69+/v0f69994zF198sQkJCTGtW7c2n332mY9HbB1JJS4zZsxwtzn1mD388MPu4xsVFWVuuukms3btWt8P3iK9evUyMTExJiQkxFx44YWmV69eZtu2be7tnGMlW7x4sZFktmzZUmwb55gxy5YtK/F3sei4uFwu88wzz5ioqCgTGhpqOnfuXOxYNmjQwKSkpHisK+vz0N+Vdcx27NhR6ufbsmXL3H2cesxO9/vt78o6ZkeOHDFdunQxderUMcHBwaZBgwZm8ODBxZIRzjPP301jjHnjjTdM1apVTXZ2dol9BNp5BnibzRhjKrTUAwAAAABeVOmviQEAAABQuZDEAAAAAPArJDEAAAAA/ApJDAAAAAC/QhIDAAAAwK+QxAAAAADwKyQxAAAAAPwKSQwAAAAAv0ISAwAAAMCvkMQAAAAA8CskMQAAAAD8CkkMAAAAAL/y/wDnovShf6Ol5wAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "This shows correlations between neurons' connectivity patterns.\n",
      "High correlation means neurons have similar connection patterns.\n"
     ]
    }
   ],
   "execution_count": 23
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 7. Exercises <a name=\"exercises\"></a>\n",
    "\n",
    "Try these exercises to reinforce your understanding:\n",
    "\n",
    "### Exercise 1: Connection Probability Calibration\n",
    "\n",
    "Create a function that finds the connection probability needed to achieve a target number of connections:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def find_target_probability(pre_size, post_size, target_connections, tolerance=50, max_iterations=20):\n",
    "    \"\"\"\n",
    "    Find connection probability to achieve target number of connections.\n",
    "    \n",
    "    Parameters\n",
    "    ----------\n",
    "    pre_size : int\n",
    "        Number of presynaptic neurons\n",
    "    post_size : int\n",
    "        Number of postsynaptic neurons\n",
    "    target_connections : int\n",
    "        Desired number of connections\n",
    "    tolerance : int\n",
    "        Acceptable deviation from target\n",
    "    max_iterations : int\n",
    "        Maximum search iterations\n",
    "    \n",
    "    Returns\n",
    "    -------\n",
    "    prob : float\n",
    "        Connection probability\n",
    "    actual : int\n",
    "        Actual connections achieved\n",
    "    \"\"\"\n",
    "    # YOUR CODE HERE\n",
    "    # Hint: Use binary search or gradient descent approach\n",
    "    # Start with initial probability estimate: target_connections / (pre_size * post_size)\n",
    "    \n",
    "    pass\n",
    "\n",
    "# Test your function\n",
    "# prob, actual = find_target_probability(pre_size=100, post_size=100, target_connections=1000)\n",
    "# print(f\"Target: 1000 connections\")\n",
    "# print(f\"Probability: {prob:.4f}\")\n",
    "# print(f\"Actual: {actual} connections\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercise 2: Weight Scaling\n",
    "\n",
    "Create a custom weight initialization that scales weights inversely with the number of incoming connections (to maintain constant total input):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_scaled_weights(result, base_weight=1.0 * u.nS):\n",
    "    \"\"\"\n",
    "    Scale weights inversely with in-degree to maintain constant total input.\n",
    "    \n",
    "    Parameters\n",
    "    ----------\n",
    "    result : ConnectionResult\n",
    "        Connectivity result\n",
    "    base_weight : Quantity\n",
    "        Base weight value\n",
    "    \n",
    "    Returns\n",
    "    -------\n",
    "    scaled_weights : array\n",
    "        Scaled weight array\n",
    "    \"\"\"\n",
    "    # YOUR CODE HERE\n",
    "    # Hint: Calculate in-degree for each post neuron\n",
    "    # Then scale weights: w_scaled = base_weight / in_degree\n",
    "    \n",
    "    pass\n",
    "\n",
    "# Test your function\n",
    "# conn_test = conn.Random(prob=0.1, seed=42)\n",
    "# result_test = conn_test(pre_size=100, post_size=100)\n",
    "# scaled_weights = create_scaled_weights(result_test, base_weight=1.0 * u.nS)\n",
    "# \n",
    "# # Verify constant total input\n",
    "# post_size = 100\n",
    "# total_inputs = np.zeros(post_size)\n",
    "# for post_idx in range(post_size):\n",
    "#     mask = result_test.post_indices == post_idx\n",
    "#     total_inputs[post_idx] = np.sum(u.get_mantissa(scaled_weights[mask]))\n",
    "# \n",
    "# print(f\"Total input per neuron - Mean: {np.mean(total_inputs):.3f}, Std: {np.std(total_inputs):.3f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exercise 3: Connectivity Statistics\n",
    "\n",
    "Write a function that computes comprehensive connectivity statistics:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def analyze_connectivity(result):\n",
    "    \"\"\"\n",
    "    Compute comprehensive connectivity statistics.\n",
    "    \n",
    "    Should calculate:\n",
    "    - Connection density\n",
    "    - Mean/std of in-degree and out-degree\n",
    "    - Weight statistics (if present)\n",
    "    - Delay statistics (if present)\n",
    "    - Reciprocal connections (if pre_size == post_size)\n",
    "    \n",
    "    Returns\n",
    "    -------\n",
    "    stats : dict\n",
    "        Dictionary of statistics\n",
    "    \"\"\"\n",
    "    # YOUR CODE HERE\n",
    "    \n",
    "    pass\n",
    "\n",
    "# Test your function\n",
    "# conn_test = conn.Random(prob=0.15, weight=Normal(mean=1.0*u.nS, std=0.2*u.nS), seed=42)\n",
    "# result_test = conn_test(pre_size=100, post_size=100)\n",
    "# stats = analyze_connectivity(result_test)\n",
    "# \n",
    "# for key, value in stats.items():\n",
    "#     print(f\"{key}: {value}\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
