{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f11baf31",
   "metadata": {},
   "source": [
    "# How to add synaptic delays\n",
    "\n",
    "**Task.** Give a projection an axonal/synaptic transmission delay, so\n",
    "presynaptic spikes arrive at the target some milliseconds later.\n",
    "\n",
    "**Audience.** Simulation. Assumes {doc}`../tutorials/02-synapse-and-projection`.\n",
    "\n",
    "A projection reads its presynaptic signal through a **prefetch**. To delay that\n",
    "signal, attach `.delay.at(<delay>)` to the prefetched state. Because the\n",
    "built-in neurons expose their membrane potential `V` (not a stored spike), we\n",
    "prefetch `V`, delay it, and re-derive the delayed spikes with `get_spike`. This\n",
    "is the same idiom the gallery's large networks use."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4c16a77c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:07:57.501951Z",
     "iopub.status.busy": "2026-06-17T09:07:57.501628Z",
     "iopub.status.idle": "2026-06-17T09:08:01.862291Z",
     "shell.execute_reply": "2026-06-17T09:08:01.861363Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n"
     ]
    }
   ],
   "source": [
    "import brainpy\n",
    "import brainstate\n",
    "import braintools\n",
    "import brainunit as u\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b6af20a",
   "metadata": {},
   "source": [
    "## A delayed projection\n",
    "\n",
    "The projection is built **once** with the delayed prefetch as its spike\n",
    "generator, then called with no arguments inside `update()` (it pulls the delayed\n",
    "signal itself)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a08859d5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:08:01.864939Z",
     "iopub.status.busy": "2026-06-17T09:08:01.864581Z",
     "iopub.status.idle": "2026-06-17T09:08:01.870048Z",
     "shell.execute_reply": "2026-06-17T09:08:01.869202Z"
    }
   },
   "outputs": [],
   "source": [
    "class DelayedNet(brainstate.nn.Module):\n",
    "    def __init__(self, delay, n_pre=100, n_post=100):\n",
    "        super().__init__()\n",
    "        self.pre = brainpy.state.LIFRef(\n",
    "            n_pre, tau=20. * u.ms, tau_ref=5. * u.ms,\n",
    "            V_rest=-60. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV)\n",
    "        self.post = brainpy.state.LIFRef(\n",
    "            n_post, tau=20. * u.ms, tau_ref=5. * u.ms,\n",
    "            V_rest=-60. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV)\n",
    "        self.proj = brainpy.state.AlignPostProj(\n",
    "            # delay the presynaptic V, then decode spikes from the delayed V\n",
    "            self.pre.prefetch('V').delay.at(delay),\n",
    "            lambda v: self.pre.get_spike(v) != 0.,\n",
    "            comm=brainstate.nn.EventFixedProb(\n",
    "                n_pre, n_post, conn_num=0.1, conn_weight=0.5 * u.mS),\n",
    "            syn=brainpy.state.Expon.desc(n_post, tau=5. * u.ms),\n",
    "            out=brainpy.state.COBA.desc(E=0. * u.mV),\n",
    "            post=self.post)\n",
    "\n",
    "    def update(self, t, drive):\n",
    "        with brainstate.environ.context(t=t):\n",
    "            self.proj()                       # pulls the delayed presynaptic spikes\n",
    "            self.pre(drive)\n",
    "            self.post(0. * u.mA)\n",
    "            return self.pre.get_spike(), self.post.get_spike()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ace2cbb0",
   "metadata": {},
   "source": [
    "## Compare two delays\n",
    "\n",
    "Run the network with a short delay and a long delay and look at when\n",
    "postsynaptic activity appears relative to presynaptic activity."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5ae78320",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:08:01.872211Z",
     "iopub.status.busy": "2026-06-17T09:08:01.872027Z",
     "iopub.status.idle": "2026-06-17T09:08:06.063229Z",
     "shell.execute_reply": "2026-06-17T09:08:06.051871Z"
    }
   },
   "outputs": [],
   "source": [
    "def run(delay, t_stop=150. * u.ms):\n",
    "    with brainstate.environ.context(dt=0.1 * u.ms):\n",
    "        net = DelayedNet(delay)\n",
    "        brainstate.nn.init_all_states(net)\n",
    "        times = u.math.arange(0. * u.ms, t_stop, brainstate.environ.get_dt())\n",
    "        pre_spk, post_spk = brainstate.transform.for_loop(\n",
    "            lambda t: net.update(t, 30. * u.mA), times)\n",
    "    return times, pre_spk, post_spk\n",
    "\n",
    "\n",
    "with brainstate.environ.context(dt=0.1 * u.ms):\n",
    "    res = {'1 ms delay': run(1. * u.ms), '10 ms delay': run(10. * u.ms)}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a0d124b5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:08:06.069075Z",
     "iopub.status.busy": "2026-06-17T09:08:06.068429Z",
     "iopub.status.idle": "2026-06-17T09:08:08.299711Z",
     "shell.execute_reply": "2026-06-17T09:08:08.298884Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/MAAAGbCAYAAACIxMC9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhIZJREFUeJzt3Xl4VPXd/vH3QEjCGmQHCRAVN4KKoohotRZBUR99arVQBFwqtQKCWre2qFWU6tOKFS22tgVtEaz+tG5Vi9alVkABt6BFlABxCajIbghJzu8PyoyRAEk4M7nnzP2+rrmUmUnmdfDgN1/mk5NYEAQBzjnnnHPOOeecS5saNTTAOeecc84555xzdcubeeecc84555xzLs3yZt4555xzzjnnnEuzvJl3zjnnnHPOOefSLG/mnXPOOeecc865NMubeeecc84555xzLs3yZt4555xzzjnnnEuzvJl3zjnnnHPOOefSLG/mnXPOOeecc865NMubeeecZDNmzCAWi7F8+fI6f+wNN9xALBYLH+Wcc8653dajRw/OO++8en1sLBbjhhtuCNXjXFTzZt65iLRx40auv/56Tj75ZNq0aUMsFmPGjBkNzXLOOecysrquy++99x4nn3wyLVq0oE2bNowYMYLPPvssdWDnXNrlzbxzEenzzz/nxhtv5L333uPQQw9taI5zzjmX0dVlXf7oo4/41re+xQcffMAtt9zCT37yE5566ilOOukkysvLUyR2zqVbWQ0NcM6FU+fOnfn000/p1KkTCxYs4Mgjj2xoknPOOZex1WVdvuWWW9i0aRMLFy6kW7duABx11FGcdNJJzJgxg9GjR6eK7ZxLo/zOvHMRKScnh06dOtX748877zxatGjBypUrOe2002jRogV77703d999NwDvvPMOJ554Is2bN6d79+488MAD1T5+69at/OIXv6Bnz57k5ubStm1bjj32WObMmbPb1168eDEnnngiTZs2pWvXrkyaNImqqqoan/v0009z3HHH0bx5c1q2bMmpp57K4sWLd/sa06dP58QTT6RDhw7k5ORw8MEHM23atGrPGTVqFO3atWPr1q07fPygQYM44IADdvs6zjnnHNRtXf5//+//cdppp8U38gADBw5k//33569//esuP3b58uXEYjF+9atfcffdd7PPPvvQrFkzBg0aRElJCUEQcNNNN9G1a1eaNm3KGWecwZo1a6p9jgULFjB48GDatWtH06ZNKSgo4IILLtitOwgCJk2aRNeuXWnWrBnf/va3d7omr127lgkTJpCfn09OTg777bcft956607X++2tWLGCSy65hAMOOICmTZvStm1bzj777GrX1Fm2bBmxWIwpU6bs8PGvvvoqsViMWbNm7fZ4nEu3/M68cy5eZWUlp5xyCt/61re47bbbmDlzJmPHjqV58+b87Gc/Y/jw4Xz3u9/lnnvuYeTIkfTv35+CggJg20XnJk+ezA9/+EOOOuoo1q9fz4IFC1i0aBEnnXTSTl+ztLSUb3/721RUVHDNNdfQvHlzfv/739O0adMdnvvnP/+ZUaNGMXjwYG699VY2b97MtGnTOPbYY3njjTfo0aPHTl9n2rRp9OrVi//5n/8hKyuLJ554gksuuYSqqirGjBkDwIgRI7j//vt59tlnOe2006oZ//nPf3L99dfX83fWOeecq7mPP/6Y1atX07dv3x0eO+qoo/j73/9eq88zc+ZMysvLGTduHGvWrOG2227jnHPO4cQTT+TFF1/k6quv5oMPPmDq1Kn85Cc/4U9/+hMAq1evZtCgQbRv355rrrmG1q1bs3z5ch555JHdvuZ1113HpEmTGDJkCEOGDGHRokUMGjRoh28N2Lx5M8cffzwff/wxP/rRj+jWrRuvvvoq1157LZ9++il33HHHTl/j9ddf59VXX2Xo0KF07dqV5cuXM23aNE444QTeffddmjVrxj777MOAAQOYOXMml1122Q6/Ly1btuSMM86o1e+jc2lV4JyLXK+//noABNOnT6/1x4waNSoAgltuuSV+35dffhk0bdo0iMViwezZs+P3/+c//wmA4Prrr4/fd+ihhwannnpqna0TJkwIgGD+/Pnx+1avXh3k5eUFQFBcXBwEQRBs2LAhaN26dXDRRRdV+/jS0tIgLy+v2v3XX3998M3/vW3evHmH1x48eHCwzz77xH9dWVkZdO3aNfj+979f7Xm33357EIvFgmXLltX5+JxzzrldrcvbH7v//vt3eOzKK68MgKCsrGynn7u4uDgAgvbt2wdr166N33/ttdcGQHDooYcGW7dujd8/bNiwIDs7O/45H3300QAIXn/99Tod0+rVq4Ps7Ozg1FNPDaqqquL3//SnPw2AYNSoUfH7brrppqB58+bB+++/X+1zXHPNNUHjxo2DlStXxu/75tcXNa3fc+fO3eH37He/+10ABO+99178vvLy8qBdu3bVLM5FKY/ZO+eq9cMf/jD+761bt+aAAw6gefPmnHPOOfH7DzjgAFq3bs2yZcuqPXfx4sUsXbq0Tq/397//naOPPpqjjjoqfl/79u0ZPnx4tefNmTOHtWvXMmzYMD7//PP4rXHjxvTr148XXnhhl6/z9Xf6161bx+eff87xxx/PsmXLWLduHQCNGjVi+PDhPP7442zYsCH+/JkzZ3LMMcfEpxCcc865sPrqq6+AbWP53yw3N7fac3bV2WefTV5eXvzX/fr1A+Dcc88lKyur2v3l5eV8/PHHwLb1G+DJJ5+s8dvMdtZzzz0XnwT4+o+DnTBhwg7PfeihhzjuuOPYa6+9qq3hAwcOpLKykpdffnmnr/P19Xvr1q188cUX7LfffrRu3ZpFixbFHzvnnHPIzc1l5syZ8fueffZZPv/8c84999xaH5dz6ZQ38865eLm5ubRv377afXl5eXTt2nWHn9uel5fHl19+Gf/1jTfeyNq1a9l///3p3bs3V155JW+//fZuX3PFihX07Nlzh/u/+f3p2/+S4MQTT6R9+/bVbv/4xz9YvXr1Ll/n3//+NwMHDqR58+a0bt2a9u3b89Of/hQgvpkHGDlyJF999RWPPvooAEuWLGHhwoWMGDFit8finHPO1bXtm9UtW7bs8FhZWVm15+yqr3+/PRDf2Ofn59d4//Y1/Pjjj+ess87iF7/4Be3ateOMM85g+vTpNXq+3ooVKwB2WMPbt2/PXnvtVe2+pUuX8swzz+ywfg8cOBBgl2v4V199xXXXXRf/Xvt27drRvn171q5dW239bt26Naeffnq1a/rMnDmTvffemxNPPHGXx+JcuubvmXfOxWvcuHGd7g+CIP7v3/rWt/jwww957LHH+Mc//sEf/vAHpkyZwj333FPt3f76tv0COX/+859rvKDQ1991+GYffvgh3/nOdzjwwAO5/fbbyc/PJzs7m7///e9MmTKl2sV3Dj74YI444gj+8pe/MHLkSP7yl7+QnZ1dbTLBOeecC6vOnTsD8Omnn+7w2KeffkqbNm1qfNf+m9V3DY/FYjz88MPMmzePJ554gmeffZYLLriAX//618ybN48WLVrU9lB2WlVVFSeddBJXXXVVjY/vv//+O/3YcePGMX36dCZMmED//v3Jy8sjFosxdOjQHS6eN3LkSB566CFeffVVevfuzeOPP84ll1xCo0Z+/9JFM2/mnXOh1aZNG84//3zOP/98Nm7cyLe+9S1uuOGGXW7mu3fvXuNo/pIlS6r9et999wWgQ4cO8b/Jr21PPPEEW7Zs4fHHH6/2zsXORvNHjhzJ5ZdfzqeffsoDDzzAqaeeusO7DM4551wY7b333rRv354FCxbs8Nhrr73GYYcdlhLH0UcfzdFHH83NN9/MAw88wPDhw5k9e/ZO1/Du3bsD295132effeL3f/bZZ9Um92DbGr5x48Y6r98ADz/8MKNGjeLXv/51/L6ysjLWrl27w3NPPvlk2rdvz8yZM+nXrx+bN2/2ZJ2LdP5rKudcKH3xxRfVft2iRQv222+/3Y7pDRkyhHnz5vHaa6/F7/vss8+qfc8bwODBg2nVqhW33HJLjd/T99lnn+30Nba/K/H1SYJ169Yxffr0Gp8/bNgwYrEY48ePZ9myZf5eO+ecc0ntrLPO4sknn6SkpCR+3/PPP8/777/P2WefndTX/vLLL6utj0D8LxB2tYYPHDiQJk2aMHXq1GofX9OV6c855xzmzp3Ls88+u8Nja9eupaKiYqev07hx4x18U6dOpbKycofnZmVlMWzYMP76178yY8YMevfuzSGHHLLTz+1cuud35p2LUHfddRdr167lk08+Aba9I/3RRx8B28bUvn5hnLA7+OCDOeGEEzjiiCNo06YNCxYs4OGHH2bs2LG7/LirrrqKP//5z5x88smMHz8+/qPpunfvXu177lu1asW0adMYMWIEhx9+OEOHDqV9+/asXLmSp556igEDBnDXXXfV+BqDBg0iOzub008/nR/96Eds3LiRe++9lw4dOtQ41ti+fXtOPvlkHnroIVq3bs2pp566Z785zjnnMrLarss//elPeeihh/j2t7/N+PHj2bhxI//3f/9H7969Of/885NqvO+++/jtb3/L//7v/7LvvvuyYcMG7r33Xlq1asWQIUN2+nHt27fnJz/5CZMnT+a0005jyJAhvPHGGzz99NO0a9eu2nOvvPJKHn/8cU477TTOO+88jjjiCDZt2sQ777zDww8/zPLly3f4mO2ddtpp/PnPfyYvL4+DDz6YuXPn8txzz9G2bdsanz9y5EjuvPNOXnjhBW699db6/8Y4lw415KX0nXPh1r179wCo8bb9R7ztrFGjRgXNmzff4f7jjz8+6NWrV42v9fUfRTdp0qTgqKOOClq3bh00bdo0OPDAA4Obb745KC8v36377bffDo4//vggNzc32HvvvYObbrop+OMf/1ij+4UXXggGDx4c5OXlBbm5ucG+++4bnHfeecGCBQviz6npR9M9/vjjwSGHHBLk5uYGPXr0CG699dbgT3/6005/b/76178GQDB69Ojd+p1zzrmaqsu6XFRUFAwaNCho1qxZ0Lp162D48OFBaWnpbl9j+4+m+7//+79q97/wwgsBEDz00EPV7p8+fXq1H0W3aNGiYNiwYUG3bt2CnJycoEOHDsFpp51WbV3dWZWVlcEvfvGLoHPnzkHTpk2DE044ISgqKgq6d+++w4+D27BhQ3DttdcG++23X5CdnR20a9cuOOaYY4Jf/epX1b5W4Bs/mu7LL78Mzj///KBdu3ZBixYtgsGDBwf/+c9/anyN7fXq1Sto1KhR8NFHH+32GJxL52JB8I25Feecczz22GOceeaZvPzyyxx33HENzXHOOedcLevTpw9t2rTh+eefb2iKc0nN3zPvnHM1dO+997LPPvtw7LHHNjTFOeecc7VswYIFvPnmm4wcObKhKc4lPX/PvHPOfa3Zs2fz9ttv89RTT/Gb3/yGWCzW0CTnnHPO7aaioiIWLlzIr3/9azp37sz3v//9hiY5l/S8mXfOua81bNgwWrRowYUXXsgll1zS0BznnHPO1aKHH36YG2+8kQMOOIBZs2aRm5vb0CTnkp6/Z94555xzzjnnnEuz/D3zzjnnnHPOOedcmuXNvHPOOeecc845l2b5e+aBqqoqPvnkE1q2bOmLXTnnnIt0QRCwYcMGunTpQqNG6fN3+l6rnXPOZUq1Xau9mQc++eQT8vPzG5rhnHPOpaySkhK6du3a0Ixa57XaOedcprW7tdqbeaBly5bAtt+sVq1aNbDGOeecS17r168nPz8/vvalS16rnXPOZUq1Xau9mYf4uF6rVq38BYJzzrmMKN1G1b1WO+ecy7R2t1anzzfLOeecc84555xzDvBm3jnnnHPOOeecS7u8mXfOOeecc84559Isb+adc84555xzzrk0y5t555xzzjnnnHMuzWrQzfzLL7/M6aefTpcuXYjFYvztb3+r9ngQBFx33XV07tyZpk2bMnDgQJYuXVrtOWvWrGH4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YaVkaYjSYa3uXtgzaSP0tUnpz7KSRc2jZFHzKFnUPEoWNY8tiWJBoDCbUP/Ky8tp1qwZDz/8MGeeeWb8/lGjRrF27Voee+yx3X6O9evXk5eXx7p162jVqtUem9Z9toa5f3iQrv37cED/w2mSk12rj6uorGLlms10a9OMLIEfQaTkUbKoeZQsah4li5pHyVKTp6ysjOLiYgoKCsitxSY8zIIgoLyiiuysRtV+xFxtOuGEEzjssMO44447GtSyq9+/sNe82hTltTqoqKC8pITs/Pyk/1z52ngaMiWLmkfJouZRsqh5lCxqnqhbarvmpf1mHqBfv34cddRRTJ06FYCqqiq6devG2LFjueaaa3b78Q3xhY1zzrmd15Cb+SiktpkHr9XOOedcbavtmpf6v0JOQpdffjmjRo2ib9++HHXUUdxxxx1s2rSJ888/v6FpzjnnnMNrtXPOORd2kdjMf//73+ezzz7juuuuo7S0lMMOO4xnnnlmhwvtOOecS68iMDzWICn+vnmtds4558ItEmP2e5pH95xzTqutW7fywQcf0KVLF/Ly8hqak3Z98cUXrF69mv3335/G37h6f7queenqds455+paRo3ZO+eci1ZZWVk0a9aMzz77jCZNmtCoUcNf+CcdCoKAzZs3s3r1alq3br3DRt4555xz0cmbeeecc3LFYjE6d+5McXExK1asaGhO2tW6dWs6derU0AznnHPOJTFv5p1zzkmWnZ1Nz549KS8vb2hKWtWkSRO/I++cc85lQN7MO+eck61Ro0b+0XTOOeecczXkb0J0zjnnnHPOOefSLG/mnXPOOeecc865NMubeeecc84555xzLs3y98yz7Uf5wLaf5+ecc85Fue1r3fa1L13yWu2ccy5Tqu1a7c08sGHDBgDy8/MbWOKcc86lpg0bNpCXl9fQjFrntdo551ymtbu1Ohak21/NJ6Gqqio++eQTWrZsSSwW2+PPt379evLz8ykpKaFVq1YhCDWK6nFBdI8tqscF0T22qB4XRPfY0u24giBgw4YNdOnShUaN0ue77bxW166oHhdE99iielwQ3WOL6nFBdI8t3Y6rtmu135ln248+6tq1a+ift1WrVmlxstS1qB4XRPfYonpcEN1ji+pxQXSPLZ2OK53ekd+e1+q6FdXjgugeW1SPC6J7bFE9LojusaXTcdVmrU6fv5J3zjnnnHPOOecc4M28c84555xzzjmXdnkzn4RycnK4/vrrycnJaWhKqEX1uCC6xxbV44LoHltUjwuie2xRPa6oF9X/blE9LojusUX1uCC6xxbV44LoHltUj8sXwHPOOeecc84559IsvzPvnHPOOeecc86lWd7MO+ecc84555xzaZY3884555xzzjnnXJrlzbxzzjnnnHPOOZdmeTMfcnfffTc9evQgNzeXfv368dprrzU0qc5NnjyZI488kpYtW9KhQwfOPPNMlixZUu05ZWVljBkzhrZt29KiRQvOOussVq1a1UDi+vXLX/6SWCzGhAkT4vel63F9/PHHnHvuubRt25amTZvSu3dvFixYEH88CAKuu+46OnfuTNOmTRk4cCBLly5tQHHtqqysZOLEiRQUFNC0aVP23XdfbrrpJr5+3c50OLaXX36Z008/nS5duhCLxfjb3/5W7fHaHMOaNWsYPnw4rVq1onXr1lx44YVs3LgxhUdRc7s6tq1bt3L11VfTu3dvmjdvTpcuXRg5ciSffPJJtc+heGy7+2/29S6++GJisRh33HFHtfsVj8tty2t1+uS1Wms9q6morNUQ3fXaa3V012pv5kPswQcf5PLLL+f6669n0aJFHHrooQwePJjVq1c3NK1OvfTSS4wZM4Z58+YxZ84ctm7dyqBBg9i0aVP8OZdddhlPPPEEDz30EC+99BKffPIJ3/3udxtQXbdef/11fve733HIIYdUuz8dj+vLL79kwIABNGnShKeffpp3332XX//61+y1117x59x2223ceeed3HPPPcyfP5/mzZszePBgysrKGlC++2699VamTZvGXXfdxXvvvcett97KbbfdxtSpU+PPSYdj27RpE4ceeih33313jY/X5hiGDx/O4sWLmTNnDk8++SQvv/wyo0ePTtUh7LRdHdvmzZtZtGgREydOZNGiRTzyyCMsWbKE//mf/6n2PMVj291/s+09+uijzJs3jy5duuzwmOJxOa/V6mva1/Narbee1VRU1mqI7nrttTrCa3XgQuuoo44KxowZE/91ZWVl0KVLl2Dy5MkNqNrzVq9eHQDBSy+9FARBEKxduzZo0qRJ8NBDD8Wf89577wVAMHfu3IZi1roNGzYEPXv2DObMmRMcf/zxwfjx44MgSN/juvrqq4Njjz12p49XVVUFnTp1Cv7v//4vft/atWuDnJycYNasWakg1rtTTz01uOCCC6rd993vfjcYPnx4EATpeWxA8Oijj8Z/XZtjePfddwMgeP311+PPefrpp4NYLBZ8/PHHKbPvrm8eW0299tprARCsWLEiCIL0OLadHddHH30U7L333kFRUVHQvXv3YMqUKfHH0uG4MjWv1dpr2va8VuuvZ9uL4lodBNFdr71WT4k/lg7Htbv8znxIlZeXs3DhQgYOHBi/r1GjRgwcOJC5c+c2oGzPW7duHQBt2rQBYOHChWzdurXasR544IF069YtLY51zJgxnHrqqdX8kL7H9fjjj9O3b1/OPvtsOnToQJ8+fbj33nvjjxcXF1NaWlrtuPLy8ujXr5/0cQEcc8wxPP/887z//vsAvPXWW7zyyiuccsopQHof2/Zqcwxz586ldevW9O3bN/6cgQMH0qhRI+bPn59y8560bt06YrEYrVu3BtL32KqqqhgxYgRXXnklvXr12uHxdD2uqOe1Wn9N257X6vRZzzJhrYbMWq+9Vmsf19fLamhAVPr888+prKykY8eO1e7v2LEj//nPfxpItedVVVUxYcIEBgwYQGFhIQClpaVkZ2fH/4Bvr2PHjpSWljaAsvbNnj2bRYsW8frrr+/wWLoe17Jly5g2bRqXX345P/3pT3n99de59NJLyc7OZtSoUXF7Teem8nEBXHPNNaxfv54DDzyQxo0bU1lZyc0338zw4cMB0vrYtlebYygtLaVDhw7VHs/KyqJNmzZpc5yw7ftcr776aoYNG0arVq2A9D22W2+9laysLC699NIaH0/X44p6XqvT4/+PXqsTqR8XZMZaDZmzXnut1j+ur+fNvNtlY8aMoaioiFdeeaWhKXtcSUkJ48ePZ86cOeTm5jY0J7Sqqqro27cvt9xyCwB9+vShqKiIe+65h1GjRjWwbs/661//ysyZM3nggQfo1asXb775JhMmTKBLly5pf2yZ1tatWznnnHMIgoBp06Y1NGePWrhwIb/5zW9YtGgRsVisoTnOea1Og7xWu3TIa3X65TH7kGrXrh2NGzfe4Wqqq1atolOnTg2k2rPGjh3Lk08+yQsvvEDXrl3j93fq1Iny8nLWrl1b7fnqx7pw4UJWr17N4YcfTlZWFllZWbz00kvceeedZGVl0bFjx7Q8rs6dO3PwwQdXu++ggw5i5cqVAHF7Op6bV155Jddccw1Dhw6ld+/ejBgxgssuu4zJkycD6X1s26vNMXTq1GmHi3NVVFSwZs2atDjO7V8crFixgjlz5sT/ph/S89j+9a9/sXr1arp16xb/f8mKFSu44oor6NGjB5Cex5UJea3WP1av1el3bmbCWg3RX6+9Vm9L/bi+mTfzIZWdnc0RRxzB888/H7+vqqqK559/nv79+zegrO4FQcDYsWN59NFH+ec//0lBQUG1x4844giaNGlS7ViXLFnCypUrpY/1O9/5Du+88w5vvvlm/Na3b1+GDx8e//d0PK4BAwbs8OOI3n//fbp37w5AQUEBnTp1qnZc69evZ/78+dLHBduusNqoUfX/TTVu3JiqqiogvY9te7U5hv79+7N27VoWLlwYf84///lPqqqq6NevX8rNdWn7FwdLly7lueeeo23bttUeT8djGzFiBG+//Xa1/5d06dKFK6+8kmeffRZIz+PKhLxW669pXqvTbz3LhLUaor1ee61On+PaoYa9/l60mj17dpCTkxPMmDEjePfdd4PRo0cHrVu3DkpLSxuaVqd+/OMfB3l5ecGLL74YfPrpp/Hb5s2b48+5+OKLg27dugX//Oc/gwULFgT9+/cP+vfv34Dq+vX1K+QGQXoe12uvvRZkZWUFN998c7B06dJg5syZQbNmzYK//OUv8ef88pe/DFq3bh089thjwdtvvx2cccYZQUFBQfDVV181oHz3jRo1Kth7772DJ598MiguLg4eeeSRoF27dsFVV10Vf046HNuGDRuCN954I3jjjTcCILj99tuDN954I36V2Nocw8knnxz06dMnmD9/fvDKK68EPXv2DIYNG9ZQhxRvV8dWXl4e/M///E/QtWvX4M0336z2/5MtW7bEP4fise3uv9k3++YVcoNA87ic12r1Na2mvFbrrGc1FZW1Ogiiu157rd5WFNdqb+ZDburUqUG3bt2C7Ozs4KijjgrmzZvX0KQ6B9R4mz59evw5X331VXDJJZcEe+21V9CsWbPgf//3f4NPP/204dD17JtfIKTrcT3xxBNBYWFhkJOTExx44IHB73//+2qPV1VVBRMnTgw6duwY5OTkBN/5zneCJUuWNJC29q1fvz4YP3580K1btyA3NzfYZ599gp/97GfVFpd0OLYXXnihxj9To0aNCoKgdsfwxRdfBMOGDQtatGgRtGrVKjj//PODDRs2NMDRVG9Xx1ZcXLzT/5+88MIL8c+heGy7+2/2zWr6AkHxuNy2vFanV16rtYvKWh0E0V2vvVZvK4prdSwIgiCc9/idc84555xzzjmXivw9884555xzzjnnXJrlzbxzzjnnnHPOOZdmeTPvnHPOOeecc86lWd7MO+ecc84555xzaZY3884555xzzjnnXJrlzbxzzjnnnHPOOZdmeTPvnHPOOeecc86lWd7MO+ecc84555xzaZY38865HTrvvPM488wzG+z1R4wYwS233JK0z//uu+/StWtXNm3alLTXcM4555KZ12rnXCwIgqChEc651BWLxXb5+PXXX89ll11GEAS0bt06Naiv9dZbb3HiiSeyYsUKWrRokbTX+d73vsehhx7KxIkTk/YazjnnXH3yWr0tr9XO7Tpv5p3LsEpLS+P//uCDD3LdddexZMmS+H0tWrRI6sK8u374wx+SlZXFPffck9TXeeqpp7joootYuXIlWVlZSX0t55xzri55rd6W12rndp3H7J3LsDp16hS/5eXlEYvFqt3XokWLHUb3TjjhBMaNG8eECRPYa6+96NixI/feey+bNm3i/PPPp2XLluy33348/fTT1V6rqKiIU045hRYtWtCxY0dGjBjB559/vlNbZWUlDz/8MKeffnq1+3v06MGkSZMYOXIkLVq0oHv37jz++ON89tlnnHHGGbRo0YJDDjmEBQsWxD9mxYoVnH766ey11140b96cXr168fe//z3++EknncSaNWt46aWX9vB31DnnnAs3r9Xb8lrt3K7zZt45V6vuu+8+2rVrx2uvvca4ceP48Y9/zNlnn80xxxzDokWLGDRoECNGjGDz5s0ArF27lhNPPJE+ffqwYMECnnnmGVatWsU555yz09d4++23WbduHX379t3hsSlTpjBgwADeeOMNTj31VEaMGMHIkSM599xzWbRoEfvuuy8jR45k+7DRmDFj2LJlCy+//DLvvPMOt956a7V3MbKzsznssMP417/+FfLvlHPOOdcwea12LsMKnHMZ2/Tp04O8vLwd7h81alRwxhlnxH99/PHHB8cee2z81xUVFUHz5s2DESNGxO/79NNPAyCYO3duEARBcNNNNwWDBg2q9nlLSkoCIFiyZEmNnkcffTRo3LhxUFVVVe3+7t27B+eee+4OrzVx4sT4fXPnzg2A4NNPPw2CIAh69+4d3HDDDbs8/v/93/8NzjvvvF0+xznnnGvIvFZ7rXZuZ/mdeedcrTrkkEPi/964cWPatm1L79694/d17NgRgNWrVwPbLo7zwgsvxL+vr0WLFhx44IEAfPjhhzW+xldffUVOTk6NF/75+utvf61dvf6ll17KpEmTGDBgANdffz1vv/32Dp+zadOm8XcnnHPOuXTPa7VzmZU38865WtWkSZNqv47FYtXu276oV1VVAbBx40ZOP/103nzzzWq3pUuX8q1vfavG12jXrh2bN2+mvLx8l6+//bV29fo//OEPWbZsGSNGjOCdd96hb9++TJ06tdrnXLNmDe3bt6/db4Bzzjknntdq5zIrb+adc0np8MMPZ/HixfTo0YP99tuv2q158+Y1fsxhhx0GbPvZsmGUn5/PxRdfzCOPPMIVV1zBvffeW+3xoqIi+vTpE8prOeecc+mW12rn0jtv5p1zSWnMmDGsWbOGYcOG8frrr/Phhx/y7LPPcv7551NZWVnjx7Rv357DDz+cV155ZY9ff8KECTz77LMUFxezaNEiXnjhBQ466KD448uXL+fjjz9m4MCBe/xazjnnXDrmtdq59M6beedcUurSpQv//ve/qaysZNCgQfTu3ZsJEybQunVrGjXa+f96fvjDHzJz5sw9fv3KykrGjBnDQQcdxMknn8z+++/Pb3/72/jjs2bNYtCgQXTv3n2PX8s555xLx7xWO5fexYLgvz8bwjnnBPrqq6844IADePDBB+nfv39SXqO8vJyePXvywAMPMGDAgKS8hnPOORfVvFY7p5HfmXfOSdW0aVPuv/9+Pv/886S9xsqVK/npT3/qLw6cc865euS12jmN/M68c84555xzzjmXZvmdeeecc84555xzLs3yZt4555xzzjnnnEuzvJl3zjnnnHPOOefSLG/mnXPOOeecc865NMubeeecc84555xzLs3yZt4555xzzjnnnEuzvJl3zjnnnHPOOefSLG/mnXPOOeecc865NMubeeecc84555xzLs36/2eMHymaVPvVAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, gs = braintools.visualize.get_figure(1, 2, 4.0, 5.0)\n",
    "for k, (title, (times, pre_spk, post_spk)) in enumerate(res.items()):\n",
    "    ax = fig.add_subplot(gs[0, k])\n",
    "    ti, ni = u.math.where(pre_spk)\n",
    "    ax.scatter(times[ti].to_decimal(u.ms), ni, s=2, color='C0', label='pre')\n",
    "    ti, ni = u.math.where(post_spk)\n",
    "    ax.scatter(times[ti].to_decimal(u.ms), ni, s=2, color='C3', label='post')\n",
    "    ax.set_title(title); ax.set_xlabel('Time (ms)')\n",
    "    if k == 0:\n",
    "        ax.set_ylabel('Neuron index'); ax.legend(loc='lower right', markerscale=3)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90ab7acd",
   "metadata": {},
   "source": [
    "## See also\n",
    "\n",
    "- {doc}`../tutorials/02-synapse-and-projection` — the undelayed baseline.\n",
    "- {doc}`/concepts/alignpre-alignpost` — prefetch and projection routing.\n",
    "- {doc}`sim-reproduce-a-paper` — delays in a published network."
   ]
  }
 ],
 "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.13.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
