{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 丘脑神经元模型的构建与电活动模拟\n",
    "\n",
    "本实例将基于 `braincell` 框架实现丘脑神经元模型，包括四种典型丘脑神经元类型： `HTC`、`RTC`、`IN`、`TRN`。\n",
    "通过构建这些包含复杂离子通道组合的神经元模型，你将学习如何模拟丘脑神经元的电生理特性，理解不同神经元类型的通道组成差异及其功能意义。\n",
    "\n",
    "## 准备工作\n",
    "首先确保已安装必要的库（`braincell`、`brainstate`、`brainunit`、`matplotlib`），并导入所需模块："
   ],
   "id": "3e316db481ea72fe"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:24:48.222727Z",
     "start_time": "2025-10-13T09:24:48.220484Z"
    }
   },
   "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": 15
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 代码详解\n",
    "\n",
    "### 丘脑神经元基类\n",
    "\n",
    "定义所有丘脑神经元的基类，封装通用功能："
   ],
   "id": "de625e637a78e3fa"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:24:48.237679Z",
     "start_time": "2025-10-13T09:24:48.234569Z"
    }
   },
   "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",
    "        # 定义每个时间的更新规则\n",
    "        with brainstate.environ.context(t=t):\n",
    "            self.update(inp)\n",
    "            return self.V.value"
   ],
   "id": "442d98ad44653814",
   "outputs": [],
   "execution_count": 16
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 四种丘脑神经元类型的实现\n",
    "\n",
    "在丘脑中，不同神经元类型通过特定的离子通道组合实现不同功能。以下分别解析其通道组成：\n",
    "\n",
    "#### HTC"
   ],
   "id": "a8dfd148e1bd6ac0"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:24:48.270143Z",
     "start_time": "2025-10-13T09:24:48.264887Z"
    }
   },
   "cell_type": "code",
   "source": [
    "class HTC(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",
    "        # 膜面积参数\n",
    "        self.area = 1e-3 / (2.9e-4 * u.cm** 2)\n",
    "\n",
    "        # 钠离子通道\n",
    "        self.na = braincell.ion.SodiumFixed(size, E=50. * u.mV)  # 钠反转电位 50 mV\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-30 * u.mV))\n",
    "\n",
    "        # 钾离子通道\n",
    "        self.k = braincell.ion.PotassiumFixed(size, E=-90. * u.mV)  # 钾反转电位 -90 mV\n",
    "        self.k.add(IKL=braincell.channel.IK_Leak(size, g_max=gKL))  # 钾漏电流\n",
    "        self.k.add(IDR=braincell.channel.IKDR_Ba2002(size, V_sh=-30. * u.mV, phi=0.25))  # 延迟整流钾电流\n",
    "\n",
    "        # 钙离子通道\n",
    "        self.ca = braincell.ion.CalciumDetailed(\n",
    "            size,\n",
    "            C_rest=5e-5 * u.mM,  # 静息钙浓度\n",
    "            tau=10. * u.ms,  # 钙浓度衰减时间常数\n",
    "            d=0.5 * u.um  # 钙扩散距离\n",
    "        )\n",
    "        self.ca.add(ICaL=braincell.channel.ICaL_IS2008(size, g_max=0.5 * (u.mS / u.cm **2)))  # L型钙通道\n",
    "        self.ca.add(ICaN=braincell.channel.ICaN_IS2008(size, g_max=0.5 * (u.mS / u.cm** 2)))  # N型钙通道\n",
    "        self.ca.add(ICaT=braincell.channel.ICaT_HM1992(size, g_max=2.1 * (u.mS / u.cm **2)))  # T型钙通道（低阈值）\n",
    "        self.ca.add(ICaHT=braincell.channel.ICaHT_HM1992(size, g_max=3.0 * (u.mS / u.cm** 2)))  # 高阈值钙通道\n",
    "\n",
    "        # 钙激活钾通道（IAHP）\n",
    "        self.kca = braincell.MixIons(self.k, self.ca)  # 混合钾离子和钙离子\n",
    "        self.kca.add(IAHP=braincell.channel.IAHP_De1994(size, g_max=0.3 * (u.mS / u.cm **2)))\n",
    "\n",
    "        # 超极化激活阳离子电流（Ih）和漏电流（IL）\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)  # 背景漏电流"
   ],
   "id": "d856d4866382d6dc",
   "outputs": [],
   "execution_count": 17
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### RTC",
   "id": "c519f384afa6ff61"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:24:48.300117Z",
     "start_time": "2025-10-13T09:24:48.295845Z"
    }
   },
   "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)  # 膜面积参数\n",
    "\n",
    "        # 钠离子通道\n",
    "        self.na = braincell.ion.SodiumFixed(size)\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-40 * u.mV))\n",
    "\n",
    "        # 钾离子通道\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))  # 门控偏移\n",
    "        self.k.add(IKL=braincell.channel.IK_Leak(size, g_max=gKL))\n",
    "\n",
    "        # 钙离子通道\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",
    "        # 钙激活钾通道（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 和 IL 电流\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)"
   ],
   "id": "d1145a1a4b5adb37",
   "outputs": [],
   "execution_count": 18
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### IN",
   "id": "17c464d4af82fcbb"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:24:48.319078Z",
     "start_time": "2025-10-13T09:24:48.315064Z"
    }
   },
   "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),  # 初始膜电位更负\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",
    "        # 钠离子通道\n",
    "        self.na = braincell.ion.SodiumFixed(size)\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-30 * u.mV))\n",
    "\n",
    "        # 钾离子通道\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",
    "        # 钙离子通道\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",
    "        # 钙激活钾通道（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",
    "        # 漏电流（IL）和 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)"
   ],
   "id": "b8848c7317a31960",
   "outputs": [],
   "execution_count": 19
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "#### TRN",
   "id": "8de99a6ba6eced59"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:24:48.346690Z",
     "start_time": "2025-10-13T09:24:48.342445Z"
    }
   },
   "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,  # 漏通道电导系数\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",
    "        # 钠离子通道\n",
    "        self.na = braincell.ion.SodiumFixed(size)\n",
    "        self.na.add(INa=braincell.channel.INa_Ba2002(size, V_sh=-40 * u.mV))\n",
    "\n",
    "        # 钾离子通道\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",
    "        # 钙离子通道\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",
    "        # 钙激活钾通道（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",
    "        # 漏电流（IL）\n",
    "        self.IL = braincell.channel.IL(size, g_max=gl * (u.mS / u.cm **2), E=-60 * u.mV)"
   ],
   "id": "4d459cf6562f41f3",
   "outputs": [],
   "execution_count": 20
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 模拟丘脑神经元电活动\n",
    "\n",
    "定义 `try_trn_neuron` 函数，设置输入电流、模拟参数，运行仿真并可视化结果："
   ],
   "id": "b5405d5120eedd72"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-13T09:24:49.873993Z",
     "start_time": "2025-10-13T09:24:48.363368Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def try_trn_neuron():\n",
    "    # 设置模拟时间步长\n",
    "    brainstate.environ.set(dt=0.02 * u.ms)\n",
    "\n",
    "    # 生成分段输入电流\n",
    "    I = braintools.input.section(\n",
    "        values=[0, 0.05, 0],  # 电流强度\n",
    "        durations=[50 * u.ms, 200 * u.ms, 100 * u.ms]  # 各阶段持续时间\n",
    "    ) * u.uA\n",
    "\n",
    "    # 生成模拟时间序列\n",
    "    times = u.math.arange(I.shape[0]) * brainstate.environ.get_dt()\n",
    "\n",
    "    # 选择模拟的神经元类型（此处以 HTC 为例，可替换为 RTC、IN、TRN）\n",
    "    neu = HTC(1, solver='ind_exp_euler')  # 使用独立指数欧拉法积分\n",
    "    neu.init_state()  # 初始化神经元状态\n",
    "\n",
    "    # 运行模拟并记录耗时\n",
    "    t0 = time.time()\n",
    "    vs = brainstate.transform.for_loop(neu.step_run, times, I)  # 循环更新神经元状态\n",
    "    t1 = time.time()\n",
    "    print(f\"模拟耗时：{t1 - t0:.4f} 秒\")  # 输出计算效率\n",
    "\n",
    "    # 可视化膜电位变化\n",
    "    plt.plot(\n",
    "        times.to_decimal(u.ms),  # 横轴：时间\n",
    "        u.math.squeeze(vs.to_decimal(u.mV))  # 纵轴：膜电位\n",
    "    )\n",
    "    plt.xlabel('时间（ms）')\n",
    "    plt.ylabel('膜电位（mV）')\n",
    "    plt.title('HTC 神经元对分段电流的响应')\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "# 执行模拟\n",
    "if __name__ == '__main__':\n",
    "    try_trn_neuron()"
   ],
   "id": "5b1dff1ed3d6567c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模拟耗时：1.4487 秒\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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9SuJ/jVI9NevJPrXoMbC16/ijAo9gwYNkuTk4J08VHz8qC/WkCFDLHt89Y1OxDe7IdFfv5LoX4NEf/1Kon8NEv31K4n+Nci36PV3V+kx0NwMAAASBsEHAAAkDIJPlGRkZMgtt9yizxNRor9+JdG/Bon++pVE/xok+utXEv1rkBEDr5/mZgAAkDCo+AAAgIRB8AEAAAmD4AMAABIGwQcAACQMgk+UPPjggzJixAjJzMyUGTNmyIcffijx6NZbb9UrXptP48aN897e1NQkCxculOLiYsnNzZVzzz1X9u3bJ0717rvvyplnnqlXClWv9Z///KfP7WruwM033ywDBw6UrKwsOfXUU+WLL77wuc/Bgwfloosu0ot5FRYWyvz586Wurk7i5Wswd+7cLu+J008/PW6+BosXL5Zp06bp1d4HDBggZ599tmzevNnnPqG873fs2CHf/OY3JTs7Wz/OddddJ21tbRIPr3/27Nld3gM//vGP4+L1Kw899JBMnjzZuyjfzJkz5fXXX0+I738orz/Wvv8Enyh45pln5JprrtFT+NasWSNHHnmkzJkzRyoqKiQeTZgwQfbu3es9vf/++97brr76annllVfk2WeflXfeeUdvD3LOOeeIU9XX1+vvpwq2gdx9991y//33y8MPPyyrVq2SnJwc/b1XPwgN6hf+xo0b5c0335RXX31VB4nLL79c4uVroKigY35P/P3vf/e53clfA/U+Vr/UPvjgA338ra2tctppp+mvS6jv+/b2dv1Dv6WlRVasWCGPP/64LFmyRIfmeHj9yoIFC3zeA+r/Rjy8fkWt9n/XXXfJ6tWr5eOPP5aTTz5ZzjrrLP2ejvfvfyivP+a+/2o6O6w1ffp018KFC70ft7e3uwYNGuRavHixK97ccsstriOPPDLgbVVVVa60tDTXs88+673us88+U8spuFauXOlyOvU6XnzxRe/HHR0drrKyMtc999zj8zXIyMhw/f3vf9cff/rpp/rzPvroI+99Xn/9dVdSUpJr9+7dLqd/DZRLLrnEddZZZwX9nHj7GlRUVOjX884774T8vn/ttddcycnJrvLycu99HnroIVd+fr6rubnZ5eTXr5x44omun/3sZ0E/J55ev6Ffv36uRx55JOG+//6vPxa//1R8LKYSrErBaojDvB+Y+njlypUSj9RQjhr2GDVqlP5LXpUwFfV1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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 结果解读\n",
    "\n",
    "运行代码后，将得到 HTC 神经元在分段电流刺激下的膜电位变化曲线，典型特征如下：\n",
    "\n",
    "0~50 ms（无电流）：神经元处于静息状态，膜电位稳定在约 -65 mV，由漏电流和 Ih 电流平衡维持。\n",
    "\n",
    "50~250 ms（注入 0.05 uA 电流）：\n",
    "   - 电流注入导致膜电位去极化，达到阈值后产生动作电位。\n",
    "   - 由于 T 型钙通道和 IAHP 电流的作用，可能出现爆发式放电，这是丘脑神经元参与节律振荡的典型特征。\n",
    "\n",
    "250~350 ms（电流关闭）：\n",
    "   - 膜电位逐渐恢复静息水平，但可能因钙激活钾通道的持续作用出现超极化后电位。\n",
    "\n",
    "## 扩展练习\n",
    "\n",
    "- 替换神经元类型，如 ``neu = TRN(1)``，对比 TRN 与 HTC 对相同电流的响应差异。\n",
    "- 修改 T 型钙通道电导，如 ``ICaT_HM1992(g_max=1.0 * ...)``，观察对神经元爆发式放电的影响。\n",
    "- 延长模拟时间并分析不同丘脑神经元的自发节律特性。\n",
    "\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
}
