{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "887e25bb",
   "metadata": {},
   "source": [
    "# Tutorial 1 · Your first neuron\n",
    "\n",
    "**What you'll learn.** How to instantiate a single spiking neuron from the\n",
    "BrainPy-style library, inject an input current, run it forward in time, and\n",
    "inspect its membrane potential and spike train.\n",
    "\n",
    "**Who it's for.** Everyone — this is the entry point. No prior knowledge of the\n",
    "API is assumed. (Audience: simulation and training.)\n",
    "\n",
    "We use the leaky integrate-and-fire neuron with a refractory period,\n",
    "`brainpy.state.LIFRef`. A neuron is a state-based `Module`: it owns its dynamical\n",
    "variables (here the membrane potential `V`) as explicit `State` objects, and you\n",
    "advance it one time step per call. To run it over many steps we never write a\n",
    "bare Python `for` loop — we hand the per-step function to\n",
    "`brainstate.transform.for_loop`, which compiles the whole rollout into a single\n",
    "XLA program and stacks the outputs for us."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "77f56816",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:09:31.388973Z",
     "iopub.status.busy": "2026-06-17T09:09:31.388782Z",
     "iopub.status.idle": "2026-06-17T09:09:35.473780Z",
     "shell.execute_reply": "2026-06-17T09:09:35.471434Z"
    }
   },
   "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": "9c523af6",
   "metadata": {},
   "source": [
    "## Create the neuron\n",
    "\n",
    "All quantities carry physical units (millivolts, milliseconds, …) via\n",
    "`brainunit`. The constructor takes the population size first — here a single\n",
    "neuron — followed by the membrane parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ff9bacee",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:09:35.477592Z",
     "iopub.status.busy": "2026-06-17T09:09:35.477095Z",
     "iopub.status.idle": "2026-06-17T09:09:38.315339Z",
     "shell.execute_reply": "2026-06-17T09:09:38.314485Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LIFRef(\n",
      "  in_size=(1,),\n",
      "  out_size=(1,),\n",
      "  spk_reset=soft,\n",
      "  spk_fun=ReluGrad(alpha=0.3, width=1.0),\n",
      "  R=Quantity(1., \"ohm\"),\n",
      "  tau=Quantity(20., \"ms\"),\n",
      "  tau_ref=Quantity(5., \"ms\"),\n",
      "  V_th=Quantity(-50., \"mV\"),\n",
      "  V_rest=Quantity(-60., \"mV\"),\n",
      "  V_reset=Quantity(-60., \"mV\"),\n",
      "  V_initializer=Constant(value=0. mV),\n",
      "  V=HiddenState(\n",
      "    value=Quantity(~float32[1], \"mV\")\n",
      "  ),\n",
      "  last_spike_time=ShortTermState(\n",
      "    value=Quantity(~float32[1], \"ms\")\n",
      "  )\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "with brainstate.environ.context(dt=0.1 * u.ms):\n",
    "    neuron = brainpy.state.LIFRef(\n",
    "        1,                     # one neuron\n",
    "        R=1. * u.ohm,          # membrane resistance\n",
    "        tau=20. * u.ms,        # membrane time constant\n",
    "        V_rest=-60. * u.mV,    # resting potential\n",
    "        V_th=-50. * u.mV,      # spike threshold\n",
    "        V_reset=-60. * u.mV,   # reset after a spike\n",
    "        tau_ref=5. * u.ms,     # refractory period\n",
    "    )\n",
    "    # Allocate the neuron's state variables (V, last_spike_time).\n",
    "    brainstate.nn.init_all_states(neuron)\n",
    "\n",
    "print(neuron)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3660a91d",
   "metadata": {},
   "source": [
    "## Drive it with a constant current\n",
    "\n",
    "We define a single-step function that (1) opens an `environ.context` so the\n",
    "model knows the current time `t`, (2) advances the neuron by one step with an\n",
    "injected current, and (3) returns what we want to record. Then `for_loop`\n",
    "repeats it across an array of time points.\n",
    "\n",
    "`get_spike()` returns the spike output of the neuron for the current step."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "84a0bb88",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:09:38.317584Z",
     "iopub.status.busy": "2026-06-17T09:09:38.317064Z",
     "iopub.status.idle": "2026-06-17T09:09:38.569405Z",
     "shell.execute_reply": "2026-06-17T09:09:38.568691Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "membrane trace shape: (2000, 1)\n",
      "total spikes: 17.0\n"
     ]
    }
   ],
   "source": [
    "with brainstate.environ.context(dt=0.1 * u.ms):\n",
    "    times = u.math.arange(0. * u.ms, 200. * u.ms, brainstate.environ.get_dt())\n",
    "\n",
    "    def step(t):\n",
    "        with brainstate.environ.context(t=t):\n",
    "            neuron(25. * u.mA)                 # inject a supra-threshold current\n",
    "            return neuron.V.value, neuron.get_spike()\n",
    "\n",
    "    vs, spikes = brainstate.transform.for_loop(step, times)\n",
    "\n",
    "print('membrane trace shape:', vs.shape)\n",
    "print('total spikes:', float(u.math.sum(spikes)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "567cbb91",
   "metadata": {},
   "source": [
    "## Plot the membrane potential and spikes\n",
    "\n",
    "`vs` is a `brainunit` quantity; convert it to millivolts for plotting. The spike\n",
    "times are simply the time points where the spike output is non-zero."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "59cdfb30",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:09:38.571364Z",
     "iopub.status.busy": "2026-06-17T09:09:38.571130Z",
     "iopub.status.idle": "2026-06-17T09:09:39.551130Z",
     "shell.execute_reply": "2026-06-17T09:09:39.550444Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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B1EdN2/ehKurKw4ePIh+/fqVO83YsWORnZ2N7du364Y98MAD6N69O1avXl2t9WRkZMDBwQHp6emspiQiIiKDVTenqLMlY/dKT08HADg5OVU4TVhYGAICAvSGDRkyBGFhYRXOk5+fj4yMDL0PERERkanUi2RMo9HgpZdeQt++fdGlS5cKp0tKSoKbm5veMDc3NyQlJVU4z7Jly+Dg4KD7sFsLIiIiMqV6kYwFBwfj7Nmz2Lhxo+TLDgkJQXp6uu5z9epVyddBREREVJE637XF888/j+3bt+PQoUOVdpgGAO7u7khOTtYblpycDHd39wrnUalUUKlUksRKREREVFN1tmRMCIHnn38ev/32G/bt24eWLVtWOY+/vz/27t2rNyw0NBT+/v7GCpOIiIioVupsyVhwcDB++ukn/P7777Czs9O1+3JwcIC1tTUAYNKkSWjatCmWLVsGAHjxxRfRv39/fPTRRxg2bBg2btyI8PBwfP3117JtBxEREVFl6mzJ2KpVq5Ceno4BAwbAw8ND99m0aZNumoSEBCQmJur+fvDBB/HTTz/h66+/ho+PD3799Vds27at0kb/RERERHKqN/2MmQr7GSMiIiIpNLh+xoiIiIgaIiZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkozqbjB06dAiPP/44PD09oVAosG3btkqnP3DgABQKRZlPUlKSaQImIiIiMkCdTcays7Ph4+ODlStX1mi+6OhoJCYm6j6urq5GipCIiIio9szlDqAigYGBCAwMrPF8rq6ucHR0lD4gIiIiIiOosyVjhurevTs8PDzwyCOP4J9//qly+vz8fGRkZOh9iIiIiEylwSRjHh4eWL16NbZs2YItW7bAy8sLAwYMQGRkZKXzLVu2DA4ODrqPl5eX0WKMjY3Va8+WnZ1drfmys7NrPI+pMDbD1OXYgLodH2MzTF2ODajb8TE2wzC26quz1ZQ11b59e7Rv317394MPPogrV65gxYoV+OGHHyqcLyQkBPPmzdP9nZGRYdSEjIiIiKi0BpOMladPnz44cuRIpdOoVCqoVCoTRURERESkr8FUU5YnKioKHh4ecodBREREVKE6WzKWlZWFmJgY3d+xsbGIioqCk5MTvL29ERISguvXr+P7778HAHzyySdo2bIlOnfujLy8PHz77bfYt28fdu/eLdcmEBEREVWpziZj4eHhGDhwoO5vbbuuyZMnY926dUhMTERCQoJufEFBAebPn4/r16/DxsYG3bp1w549e/SWQURERFTX1NlkbMCAARBCVDh+3bp1en8vWLAACxYsMHJURERERNJq0G3GiIiIiOo6JmNEREREMmIyRkRERCQjJmNEREREMmIyRkRERCQjJmNEREREMmIyRkRERCQjJmNEREREMmIyRkRERCQjkyRjaWlpplgNERERUb0jeTL2/vvvY9OmTbq/x4wZgyZNmqBp06b4999/pV4dERERUb0meTK2evVqeHl5AQBCQ0MRGhqKnTt3IjAwEK+88orUqyMiIiKq1yR/UXhSUpIuGdu+fTvGjBmDwYMHo0WLFvDz85N6dURERET1muQlY40bN8bVq1cBALt27UJAQAAAQAgBtVot9eqIiIiI6jXJS8ZGjRqFp59+Gm3btsXt27cRGBgIADh16hTatGkj9eqIiIiI6jXJk7EVK1agRYsWuHr1Kj744APY2toCABITE/Hcc89JvToiIiKiek3yZMzCwgIvv/xymeFz586VelVERERE9Z5R+hn74Ycf8H//93/w9PREfHw8AOCTTz7B77//bozVEREREdVbkidjq1atwrx58xAYGIi0tDRdo31HR0d88sknUq+OiIiIqF6TPBn7/PPP8c033+D111+HmZmZbnivXr1w5swZqVdHREREVK9JnozFxsbC19e3zHCVSoXs7GypV0dERERUr0mejLVs2RJRUVFlhu/atQsdO3aUenVERERE9ZrkT1POmzcPwcHByMvLgxACJ06cwM8//4xly5bh22+/lXp1RERERPWa5MnYjBkzYG1tjTfeeAM5OTl4+umn4enpiU8//RTjxo2TenVERERE9ZrkyVhGRgaCgoIQFBSEnJwcZGVlwdXVFQAQExPDXviJiIiISpG8zdiwYcOQn58PALCxsdElYtHR0RgwYEC1l3Po0CE8/vjj8PT0hEKhwLZt26qc58CB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nz598MknnyA7OxtTp04FAEyaNAlNmzbFsmXLAABLly7FAw88gDZt2iAtLQ3Lly9HfHw8ZsyYIedmEBEREVWoTidjY8eOxc2bN7Fo0SIkJSWhe/fu2LVrl65Rf0JCApTKu4V7d+7cwcyZM5GUlITGjRujZ8+eOHr0KDp16iTXJhARERFVSiHq0uMEdUBGRgYcHByQnp4Oe3t7ucMhIiKieqq6OUWdbTNGREREdD9gMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDJiMkZEREQkIyZjRERERDKq88nYypUr0aJFC1hZWcHPzw8nTpyodPrNmzejQ4cOsLKyQteuXfHXX3+ZKFIiIiKimqvTydimTZswb948LF68GJGRkfDx8cGQIUOQkpJS7vRHjx7F+PHjMX36dJw6dQojR47EyJEjcfbsWRNHTkRERFQ9CiGEkDuIivj5+aF379744osvAAAajQZeXl6YM2cOXn311TLTjx07FtnZ2di+fbtu2AMPPIDu3btj9erV1VpnRkYGHBwckJ6eDnt7e2k2hIiIiO471c0p6mzJWEFBASIiIhAQEKAbplQqERAQgLCwsHLnCQsL05seAIYMGVLh9ACQn5+PjIwMvQ8RERGRqdTZZOzWrVtQq9Vwc3PTG+7m5oakpKRy50lKSqrR9ACwbNkyODg46D5eXl61D56IiIiomupsMmYqISEhSE9P132uXr0qd0hERER0HzGXO4CKODs7w8zMDMnJyXrDk5OT4e7uXu487u7uNZoeAFQqFVQqVe0DJiIiIjJAnS0Zs7S0RM+ePbF3717dMI1Gg71798Lf37/cefz9/fWmB4DQ0NAKpyciIiKSW50tGQOAefPmYfLkyejVqxf69OmDTz75BNnZ2Zg6dSoAYNKkSWjatCmWLVsGAHjxxRfRv39/fPTRRxg2bBg2btyI8PBwfP3113JuBhEREVGF6nQyNnbsWNy8eROLFi1CUlISunfvjl27duka6SckJECpvFu49+CDD+Kn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",
      "text/plain": [
       "<Figure size 600x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "t_ms = times.to_decimal(u.ms)\n",
    "v_mV = vs.to_decimal(u.mV)[:, 0]\n",
    "\n",
    "fig, gs = braintools.visualize.get_figure(2, 1, 2.0, 6.0)\n",
    "\n",
    "ax = fig.add_subplot(gs[0, 0])\n",
    "ax.plot(t_ms, v_mV)\n",
    "ax.axhline(-50., ls='--', color='gray', lw=1, label='threshold')\n",
    "ax.set_ylabel('V (mV)')\n",
    "ax.legend(loc='upper right')\n",
    "\n",
    "ax = fig.add_subplot(gs[1, 0])\n",
    "spk_idx, _ = u.math.where(spikes)\n",
    "ax.eventplot(t_ms[spk_idx], colors='k')\n",
    "ax.set_xlabel('Time (ms)')\n",
    "ax.set_ylabel('Spikes')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3791a172",
   "metadata": {},
   "source": [
    "## Sub-threshold vs. supra-threshold input\n",
    "\n",
    "A weaker current never reaches threshold, so the neuron charges toward a steady\n",
    "state and never fires. Re-initialize the state and drive it more gently to see\n",
    "the difference."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1b25a9e5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-17T09:09:39.553016Z",
     "iopub.status.busy": "2026-06-17T09:09:39.552751Z",
     "iopub.status.idle": "2026-06-17T09:09:39.695523Z",
     "shell.execute_reply": "2026-06-17T09:09:39.694132Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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20yz3iOXiG55q1atEnq9vsb0MWPGiCFDhsiv+/btK/7xj3/IrysqKoSbm5sYNWqUPC0rK0sAEKmpqUIIIV577TURFxenqPfcuXMCgEhPT681ni+++EKo1WphNpsV08PCwsTIkSNrLOvVV1+Vp6WmpgoA8i3Fo6KixJw5c264/g8++KBITEy84TxEdGM880FEVtO5c2f5uVqtRqtWrRAVFSVPCwgIAADk5OQAqOw4un37drkPibu7O+644w4AwOnTp2tdRklJCXQ6Xa2dYqsv37KsGy3/2Wefxeuvv45evXph9uzZOHLkSI06XVxc5DM1RNQ0TD6IyGo0Go3itSRJimmWhMFsNgMArl69ivvvvx9paWmKxx9//IE+ffrUugxfX18UFxfDaDTecPmWZd1o+RMmTMCff/6JUaNG4ejRo+jevTs++OADRZ25ubnw8/Nr2AYgolox+SCiFqNr1644fvw4wsPD0a5dO8XDzc2t1vfcfffdACrH4WgOISEheOKJJ7Bx40ZMnToVK1asUJQfO3YM0dHRzbIsotsVkw8iajGSkpKQm5uLYcOGYf/+/Th9+jS2bNmCsWPHwmQy1foePz8/dO3aFbt3777p5U+ePBlbtmxBRkYGDh06hO3bt6Njx45y+ZkzZ3D+/HnExsbe9LKIbmdMPoioxQgODsbPP/8Mk8mEuLg4REVFYfLkyfDy8oJKVffhasKECVi7du1NL99kMiEpKQkdO3ZEQkICOnTogH//+99y+aeffoq4uDiEhYXd9LKIbmccZIyIHF5JSQkiIyOxfv16xMTEWGUZRqMR7du3x//+7/+iV69eVlkG0e2CZz6IyOG5uLjg448/vuFgZDcrMzMTL730EhMPombAMx9ERERkUzzzQURERDbF5IOIiIhsiskHERER2RSTDyIiIrIpJh9ERERkU0w+iIiIyKaYfBAREZFNMfkgIiIim2LyQURERDb1/wFSi2ZECKnjmgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 600x250 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with brainstate.environ.context(dt=0.1 * u.ms):\n",
    "    brainstate.nn.init_all_states(neuron)   # reset V back to rest\n",
    "\n",
    "    def step_weak(t):\n",
    "        with brainstate.environ.context(t=t):\n",
    "            neuron(8. * u.mA)                 # sub-threshold drive\n",
    "            return neuron.V.value\n",
    "\n",
    "    vs_weak = brainstate.transform.for_loop(step_weak, times)\n",
    "\n",
    "plt.figure(figsize=(6, 2.5))\n",
    "plt.plot(t_ms, vs_weak.to_decimal(u.mV)[:, 0])\n",
    "plt.axhline(-50., ls='--', color='gray', lw=1, label='threshold')\n",
    "plt.xlabel('Time (ms)')\n",
    "plt.ylabel('V (mV)')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "918e2e71",
   "metadata": {},
   "source": [
    "## See also\n",
    "\n",
    "- {doc}`02-synapse-and-projection` — connect two populations of these neurons.\n",
    "- {doc}`/concepts/state-paradigm` — why models hold explicit `State` and why we\n",
    "  drive them with `transform` loops instead of Python loops.\n",
    "- {doc}`/concepts/physical-units` — the `brainunit` quantities used throughout.\n",
    "- {doc}`/concepts/model-anatomy` — the `Dynamics → Neuron` hierarchy and the\n",
    "  current-input contract.\n",
    "- {doc}`../howto/sim-choose-neuron` — pick a different neuron model."
   ]
  }
 ],
 "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
}
