{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# Construction and Electrophysiological Simulation of Thalamic Neuron Models\n",
    "\n",
    "This example demonstrates how to implement thalamic neuron models using the `braincell` framework, including four typical thalamic neuron types: `HTC`, `RTC`, `IN`, and `TRN`.\n",
    "By constructing these neurons with complex combinations of ion channels, you will learn how to simulate the electrophysiological properties of thalamic neurons and understand the functional significance of differences in channel composition among neuron types.\n",
    "\n",
    "## Preparation\n",
    "First, ensure that the necessary libraries (`braincell`, `brainstate`, `brainunit`, `matplotlib`) are installed, and import the required modules:\n"
   ],
   "id": "3e316db481ea72fe"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:25:02.108097Z",
     "start_time": "2025-10-13T09:25:02.105610Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import time  # 用于记录模拟耗时\n",
    "\n",
    "import brainstate\n",
    "import braintools\n",
    "import brainunit as u\n",
    "import matplotlib.pyplot as plt\n",
    "import braincell"
   ],
   "id": "3127da63817f773a",
   "outputs": [],
   "execution_count": 22
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## Code Explanation\n",
    "\n",
    "### Base Class for Thalamic Neurons\n",
    "\n",
    "Define a base class for all thalamic neurons, encapsulating common functionalities:\n"
   ],
   "id": "de625e637a78e3fa"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:25:02.121103Z",
     "start_time": "2025-10-13T09:25:02.117631Z"
    }
   },
   "cell_type": "code",
   "source": [
    "class ThalamusNeuron(braincell.SingleCompartment):\n",
    "    def compute_derivative(self, I_ext=0. * u.nA):\n",
    "        I_ext = self.sum_current_inputs(I_ext, self.V.value) * self.area\n",
    "        for key, ch in self.nodes(braincell.IonChannel, allowed_hierarchy=(1, 1)).items():\n",
    "            I_ext = I_ext + ch.current(self.V.value)\n",
    "        self.V.derivative = I_ext / self.C\n",
    "        for key, node in self.nodes(braincell.IonChannel, allowed_hierarchy=(1, 1)).items():\n",
    "            node.compute_derivative(self.V.value)\n",
    "\n",
    "    def step_run(self, t, inp):\n",
    "        # Define update rule at each time step\n",
    "        with brainstate.environ.context(t=t):\n",
    "            self.update(inp)\n",
    "            return self.V.value\n"
   ],
   "id": "442d98ad44653814",
   "outputs": [],
   "execution_count": 23
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### Implementation of Four Thalamic Neuron Types\n",
    "\n",
    "In the thalamus, different neuron types achieve distinct functions through specific combinations of ion channels. The following describes their channel composition:\n",
    "\n",
    "#### HTC\n"
   ],
   "id": "a8dfd148e1bd6ac0"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:25:02.135968Z",
     "start_time": "2025-10-13T09:25:02.130762Z"
    }
   },
   "cell_type": "code",
   "source": [
    "class HTC(ThalamusNeuron):\n",
    "    def __init__(\n",
    "        self,\n",
    "        size,\n",
    "        gKL=0.01 * (u.mS / u.cm **2),  # Potassium leak channel conductance\n",
    "        V_initializer=braintools.init.Constant(-65. * u.mV),  # Initial membrane potential\n",
    "        solver: str = 'ind_exp_euler'  # Integration method\n",
    "    ):\n",
    "        super().__init__(size, V_initializer=V_initializer, V_th=20. * u.mV, solver=solver)\n",
    "\n",
    "        # Membrane area parameter\n",
    "        self.area = 1e-3 / (2.9e-4 * u.cm** 2)\n",
    "\n",
    "        # Sodium channel\n",
    "        self.na = braincell.ion.SodiumFixed(size, E=50. * u.mV)  # Sodium reversal potential 50 mV\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-30 * u.mV))\n",
    "\n",
    "        # Potassium channel\n",
    "        self.k = braincell.ion.PotassiumFixed(size, E=-90. * u.mV)  # Potassium reversal potential -90 mV\n",
    "        self.k.add(IKL=braincell.channel.IK_Leak(size, g_max=gKL))  # Potassium leak current\n",
    "        self.k.add(IDR=braincell.channel.IKDR_Ba2002(size, V_sh=-30. * u.mV, phi=0.25))  # Delayed rectifier potassium current\n",
    "\n",
    "        # Calcium channel\n",
    "        self.ca = braincell.ion.CalciumDetailed(\n",
    "            size,\n",
    "            C_rest=5e-5 * u.mM,  # Resting calcium concentration\n",
    "            tau=10. * u.ms,  # Calcium decay time constant\n",
    "            d=0.5 * u.um  # Calcium diffusion distance\n",
    "        )\n",
    "        self.ca.add(ICaL=braincell.channel.ICaL_IS2008(size, g_max=0.5 * (u.mS / u.cm **2)))  # L-type calcium channel\n",
    "        self.ca.add(ICaN=braincell.channel.ICaN_IS2008(size, g_max=0.5 * (u.mS / u.cm** 2)))  # N-type calcium channel\n",
    "        self.ca.add(ICaT=braincell.channel.ICaT_HM1992(size, g_max=2.1 * (u.mS / u.cm **2)))  # T-type calcium channel (low-threshold)\n",
    "        self.ca.add(ICaHT=braincell.channel.ICaHT_HM1992(size, g_max=3.0 * (u.mS / u.cm** 2)))  # High-threshold calcium channel\n",
    "\n",
    "        # Calcium-activated potassium channel (IAHP)\n",
    "        self.kca = braincell.MixIons(self.k, self.ca)  # Mix potassium and calcium ions\n",
    "        self.kca.add(IAHP=braincell.channel.IAHP_De1994(size, g_max=0.3 * (u.mS / u.cm **2)))\n",
    "\n",
    "        # Hyperpolarization-activated cation current (Ih) and leak current (IL)\n",
    "        self.Ih = braincell.channel.Ih_HM1992(size, g_max=0.01 * (u.mS / u.cm** 2), E=-43 * u.mV)  # Regulates resting potential and rhythm\n",
    "        self.IL = braincell.channel.IL(size, g_max=0.0075 * (u.mS / u.cm **2), E=-70 * u.mV)  # Background leak current\n"
   ],
   "id": "d856d4866382d6dc",
   "outputs": [],
   "execution_count": 24
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### RTC",
   "id": "c519f384afa6ff61"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:25:02.167383Z",
     "start_time": "2025-10-13T09:25:02.162904Z"
    }
   },
   "cell_type": "code",
   "source": [
    "class RTC(ThalamusNeuron):\n",
    "    def __init__(\n",
    "        self,\n",
    "        size,\n",
    "        gKL=0.01 * (u.mS / u.cm** 2),\n",
    "        V_initializer=braintools.init.Constant(-65. * u.mV),\n",
    "        solver: str = 'ind_exp_euler'\n",
    "    ):\n",
    "        super().__init__(size, V_initializer=V_initializer, V_th=20 * u.mV, solver=solver)\n",
    "\n",
    "        self.area = 1e-3 / (2.9e-4 * u.cm **2)  # Membrane area parameter\n",
    "\n",
    "        # Sodium channel\n",
    "        self.na = braincell.ion.SodiumFixed(size)\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-40 * u.mV))\n",
    "\n",
    "        # Potassium channel\n",
    "        self.k = braincell.ion.PotassiumFixed(size, E=-90. * u.mV)\n",
    "        self.k.add(IDR=braincell.channel.IKDR_Ba2002(size, V_sh=-40 * u.mV, phi=0.25))  # Gating shift\n",
    "        self.k.add(IKL=braincell.channel.IK_Leak(size, g_max=gKL))\n",
    "\n",
    "        # Calcium channel\n",
    "        self.ca = braincell.ion.CalciumDetailed(size, C_rest=5e-5 * u.mM, tau=10. * u.ms, d=0.5 * u.um)\n",
    "        self.ca.add(ICaL=braincell.channel.ICaL_IS2008(size, g_max=0.3 * (u.mS / u.cm** 2)))\n",
    "        self.ca.add(ICaN=braincell.channel.ICaN_IS2008(size, g_max=0.6 * (u.mS / u.cm **2)))\n",
    "        self.ca.add(ICaT=braincell.channel.ICaT_HM1992(size, g_max=2.1 * (u.mS / u.cm** 2)))\n",
    "        self.ca.add(ICaHT=braincell.channel.ICaHT_HM1992(size, g_max=0.6 * (u.mS / u.cm **2)))\n",
    "\n",
    "        # Calcium-activated potassium channel (IAHP)\n",
    "        self.kca = braincell.MixIons(self.k, self.ca)\n",
    "        self.kca.add(IAHP=braincell.channel.IAHP_De1994(size, g_max=0.1 * (u.mS / u.cm** 2)))\n",
    "\n",
    "        # Ih and IL currents\n",
    "        self.Ih = braincell.channel.Ih_HM1992(size, g_max=0.01 * (u.mS / u.cm **2), E=-43 * u.mV)\n",
    "        self.IL = braincell.channel.IL(size, g_max=0.0075 * (u.mS / u.cm** 2), E=-70 * u.mV)\n"
   ],
   "id": "d1145a1a4b5adb37",
   "outputs": [],
   "execution_count": 25
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### IN",
   "id": "17c464d4af82fcbb"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:25:02.181844Z",
     "start_time": "2025-10-13T09:25:02.177974Z"
    }
   },
   "cell_type": "code",
   "source": [
    "class IN(ThalamusNeuron):\n",
    "    def __init__(\n",
    "        self,\n",
    "        size,\n",
    "        gKL=0.01 * (u.mS / u.cm **2),\n",
    "        V_initializer=braintools.init.Constant(-70. * u.mV),  # More hyperpolarized initial membrane potential\n",
    "        solver: str = 'ind_exp_euler'\n",
    "    ):\n",
    "        super().__init__(size, V_initializer=V_initializer, V_th=20. * u.mV, solver=solver)\n",
    "\n",
    "        self.area = 1e-3 / (1.7e-4 * u.cm** 2)\n",
    "\n",
    "        # Sodium channel\n",
    "        self.na = braincell.ion.SodiumFixed(size)\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-30 * u.mV))\n",
    "\n",
    "        # Potassium channel\n",
    "        self.k = braincell.ion.PotassiumFixed(size, E=-90. * u.mV)\n",
    "        self.k.add(IDR=braincell.channel.IKDR_Ba2002(size, V_sh=-30 * u.mV, phi=0.25))\n",
    "        self.k.add(IKL=braincell.channel.IK_Leak(size, g_max=gKL))\n",
    "\n",
    "        # Calcium channel\n",
    "        self.ca = braincell.ion.CalciumDetailed(size, C_rest=5e-5 * u.mM, tau=10. * u.ms, d=0.5 * u.um)\n",
    "        self.ca.add(ICaN=braincell.channel.ICaN_IS2008(size, g_max=0.1 * (u.mS / u.cm **2)))\n",
    "        self.ca.add(ICaHT=braincell.channel.ICaHT_HM1992(size, g_max=2.5 * (u.mS / u.cm** 2)))\n",
    "\n",
    "        # Calcium-activated potassium channel (IAHP)\n",
    "        self.kca = braincell.MixIons(self.k, self.ca)\n",
    "        self.kca.add(IAHP=braincell.channel.IAHP_De1994(size, g_max=0.2 * (u.mS / u.cm **2)))\n",
    "\n",
    "        # Leak (IL) and hyperpolarization-activated current (Ih)\n",
    "        self.IL = braincell.channel.IL(size, g_max=0.0075 * (u.mS / u.cm** 2), E=-60 * u.mV)\n",
    "        self.Ih = braincell.channel.Ih_HM1992(size, g_max=0.05 * (u.mS / u.cm **2), E=-43 * u.mV)\n"
   ],
   "id": "b8848c7317a31960",
   "outputs": [],
   "execution_count": 26
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### TRN",
   "id": "8de99a6ba6eced59"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:25:02.197006Z",
     "start_time": "2025-10-13T09:25:02.192835Z"
    }
   },
   "cell_type": "code",
   "source": [
    "class TRN(ThalamusNeuron):\n",
    "    def __init__(\n",
    "        self,\n",
    "        size,\n",
    "        gKL=0.01 * (u.mS / u.cm** 2),\n",
    "        V_initializer=braintools.init.Constant(-70. * u.mV),\n",
    "        gl=0.0075,  # Leak conductance coefficient\n",
    "        solver: str = 'ind_exp_euler'\n",
    "    ):\n",
    "        super().__init__(size, V_initializer=V_initializer, V_th=20. * u.mV, solver=solver)\n",
    "\n",
    "        self.area = 1e-3 / (1.43e-4 * u.cm **2)\n",
    "\n",
    "        # Sodium channel\n",
    "        self.na = braincell.ion.SodiumFixed(size)\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-40 * u.mV))\n",
    "\n",
    "        # Potassium channel\n",
    "        self.k = braincell.ion.PotassiumFixed(size, E=-90. * u.mV)\n",
    "        self.k.add(IDR=braincell.channel.IKDR_Ba2002(size, V_sh=-40 * u.mV))\n",
    "        self.k.add(IKL=braincell.channel.IK_Leak(size, g_max=gKL))\n",
    "\n",
    "        # Calcium channel\n",
    "        self.ca = braincell.ion.CalciumDetailed(size, C_rest=5e-5 * u.mM, tau=100. * u.ms, d=0.5 * u.um)\n",
    "        self.ca.add(ICaN=braincell.channel.ICaN_IS2008(size, g_max=0.2 * (u.mS / u.cm** 2)))\n",
    "        self.ca.add(ICaT=braincell.channel.ICaT_HP1992(size, g_max=1.3 * (u.mS / u.cm **2)))\n",
    "\n",
    "        # Calcium-activated potassium channel (IAHP)\n",
    "        self.kca = braincell.MixIons(self.k, self.ca)\n",
    "        self.kca.add(IAHP=braincell.channel.IAHP_De1994(size, g_max=0.2 * (u.mS / u.cm** 2)))\n",
    "\n",
    "        # Leak current (IL)\n",
    "        self.IL = braincell.channel.IL(size, g_max=gl * (u.mS / u.cm **2), E=-60 * u.mV)\n"
   ],
   "id": "4d459cf6562f41f3",
   "outputs": [],
   "execution_count": 27
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### Simulating Thalamic Neuron Electrical Activity\n",
    "\n",
    "Define the `try_trn_neuron` function to set input currents, simulation parameters, run the simulation, and visualize the results:\n"
   ],
   "id": "b5405d5120eedd72"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:25:03.733730Z",
     "start_time": "2025-10-13T09:25:02.225284Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def try_trn_neuron():\n",
    "    # Set the simulation time step\n",
    "    brainstate.environ.set(dt=0.02 * u.ms)\n",
    "\n",
    "    # Generate stepwise input current\n",
    "    I = braintools.input.section(\n",
    "        values=[0, 0.05, 0],  # Current amplitudes\n",
    "        durations=[50 * u.ms, 200 * u.ms, 100 * u.ms]  # Duration of each segment\n",
    "    ) * u.uA\n",
    "\n",
    "    # Generate simulation time series\n",
    "    times = u.math.arange(I.shape[0]) * brainstate.environ.get_dt()\n",
    "\n",
    "    # Select the neuron type to simulate (HTC here; can be replaced with RTC, IN, TRN)\n",
    "    neu = HTC(1, solver='ind_exp_euler')  # Use independent exponential Euler method\n",
    "    neu.init_state()  # Initialize neuron state\n",
    "\n",
    "    # Run the simulation and record elapsed time\n",
    "    t0 = time.time()\n",
    "    vs = brainstate.transform.for_loop(neu.step_run, times, I)  # Loop to update neuron state\n",
    "    t1 = time.time()\n",
    "    print(f\"Simulation elapsed time: {t1 - t0:.4f} seconds\")  # Output computation time\n",
    "\n",
    "    # Visualize membrane potential changes\n",
    "    plt.plot(\n",
    "        times.to_decimal(u.ms),  # x-axis: time\n",
    "        u.math.squeeze(vs.to_decimal(u.mV))  # y-axis: membrane potential\n",
    "    )\n",
    "    plt.xlabel('Time (ms)')\n",
    "    plt.ylabel('Membrane Potential (mV)')\n",
    "    plt.title('HTC neuron response to step current')\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "# Execute the simulation\n",
    "if __name__ == '__main__':\n",
    "    try_trn_neuron()\n"
   ],
   "id": "5b1dff1ed3d6567c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Simulation elapsed time: 1.4482 seconds\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## Results Interpretation\n",
    "\n",
    "After running the code, you will obtain the membrane potential trace of an HTC neuron under step current stimulation. Typical characteristics are as follows:\n",
    "\n",
    "- 0–50 ms (no current): The neuron remains at rest, with a stable membrane potential around -65 mV, maintained by the balance of leak current and Ih current.\n",
    "\n",
    "- 50–250 ms (0.05 uA current injection):\n",
    "   - The injected current depolarizes the membrane, reaching threshold and triggering action potentials.\n",
    "   - Due to the involvement of T-type calcium channels and IAHP currents, burst firing may occur, which is a hallmark of thalamic neurons participating in rhythmic oscillations.\n",
    "\n",
    "- 250–350 ms (current off):\n",
    "   - The membrane potential gradually returns to the resting level, but afterhyperpolarization may appear due to the sustained action of calcium-activated potassium channels.\n",
    "\n",
    "## Extended Exercises\n",
    "\n",
    "- Replace the neuron type, e.g., `neu = TRN(1)`, to compare how TRN and HTC neurons respond to the same current.\n",
    "- Modify the conductance of T-type calcium channels, e.g., `ICaT_HM1992(g_max=1.0 * ...)`, to observe its effect on burst firing.\n",
    "- Extend the simulation time and analyze the spontaneous rhythmic activity of different thalamic neuron types.\n",
    "\n",
    "Through these exercises, you will gain a deeper understanding of thalamic neuron electrophysiological properties and their role in regulating brain rhythms.\n"
   ],
   "id": "9f34a308cd614c8c"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
