NeuroBuilderCloud(NBC)用户手册
## 基本概念介绍 - **Neuron** :神经元,也即神经细胞,是神经系统最基本的结构和功能单位。 - **Compartment**:树突,一个神经元可以有多个树突,树突之下还可以添加树突分支。 - **Connection**:连接,神经元间的连接。 - **Receptor**:感受器 - **Channel**:离子通道,一个神经元可以包含多个离子通道。 ## 核心功能简介 - 创建、运行、暂停神经网络 - 支持实时渲染神经网络运行状态 - 内置80余种的离子通道,支持添加、修改自定义神经元离子通道 - 支持下载、上传网络项目文件,便于用户之间共享项目 - 支持实时绘制选择的神经元的Spike信息 ## 界面介绍  如上图,平台操作界面主要分为以下几个模块 + **菜单工具条**:这里可以打开、保存文件,获得帮助。  + **结构窗口**:对神经元的添加、离子通道的添加等结构修改都在这里进行。结构窗口上的工具栏功能具体如下图:  + **属性窗口**:对各元素(元素的选择通过结构窗口)的属性设置在这里进行。 + **神经元及神经环路显示窗口**:显示神经元和神经环路,且可以与结构窗口交互使用。 + **神经活动窗口**:神经脉冲序列、突触电导变化、刺激电流、钙离子浓度等信号的展示。 ## 创建一个NBC项目 ### 新建一个NBC项目 点击菜单栏中的【New】按钮,在弹出的窗口中填写表单。  + **Project Name** 项目名称 + **Project Description** 项目描述 创建项目完成后将自动弹出神经元库窗口,如下图:  上图左侧是神经元列表,右侧是神经元的预览图。 + **Public** 公共神经元库,包含几十个不同脑区的单房室或多房室的神经元模型,所有用户均可以使用这些神经元模型 + **Private** 私有神经元库,新创建的神经元或从项目中导出的神经元均会保存在私有神经元库中 + **Local** 本地神经元库,该功能一般配合本地版的软件使用。 您可以选中一个神经元后单击【Add】按钮添加至项目,也可以直接关闭该界面后创建新的神经元。 ### 新建一个Neuron 真实大脑中的神经元并不是一个点,而是有着复杂的形态,也就是说,在一个神经元上就可以进行复杂的树突计算,因此,对神经元形态的模拟非常重要。NBC-NB支持多房室神经元的模拟,在构建多房室神经元的过程中,首先点击平台主界面左侧工具栏中【+】按钮,系统弹出“Add Neuron”界面,如下图所示。   输入Neuron Name后单击【OK】即可创建一个单胞体的神经元。 ### 新建一个房室(树突) 在结构窗格中选中一个Neuron的房室,如下图:  单击添加房室按钮弹出新房室的配置窗口如下图:   表单参数说明如下: + **Name** 房室名称,在当前Neuron中不可重复 + **Length** 长度 + **Radius** 半径 + **Color** 颜色,单击颜色按钮可以打开颜色选择界面。 ### 导入一个Neuron 单击导航窗格中的导入按钮,弹出神经元列表如下图:   选中某一个神经元后,单击【Add】按钮添加至项目中。 经过上述步骤以后创建的项目渲染图类似下图:  ### 创建连接(突触) 选中某一个房室,如下图  单击结构窗格中的创建连接,弹出创建连接的窗口如下图:   其中: + **Pre-Soma** + **Pre-Synaptic** 突触类型 + **Receptors** 接收器类型 创建连接完成之后的项目渲染图类似下图:  如上图,六边形节点代表连接为AMPA或GABA受体,如果四边形,则代表该连接有NMDA受体。 ### 运行网络 单击菜单栏中的【Start】即可开始运行当前的网络。 网络运行的结果类似下图:  在上图中可以看到神经元每个房室的活动状态。单击SpikeTrain界面上的设置按钮,在弹出的窗口中如下图:  在上图中选中或者取消显示某些线条,在SpikeTrain中将会显示或隐藏相应的线条。 如要修改线条的颜色可以单击左侧结构窗口上的LocalSetting,如下图:  弹出的设置窗口如下图:  在上图所示的窗口中可以对相应的线条颜色进行修改,同时也可以设置某些线条在纵向上的缩放程度,这对观察某些变化较小或较大的线条会很有用。 单击菜单栏中的【RunNext】可以继续运行下一个Runcourse ### 删除连接、离子通道、房室、神经元 在本平台中删除按钮位于左侧工具栏当中,如下图:  该删除按钮可以用来删除项目中的连接、房室、离子通道、神经元,具体删除哪一个元素,取决于左侧神经网络结构图中选中的是哪一个元素。如果左侧选中的是连接,则删除功能将删除选中的连接;如果选中的是离子通道,则删除离子通道;如果选中的是房室,则删除选中的房室;同理,神经元也是如此。 可以通过神经环路显示窗口中直接单击连接进行选中,也可以在左侧神经网络树形结构中通过【神经元】-->【树突】-->【Synaptic Inputs】-->【神经元名称】的方式进行选中。 ## 相关属性介绍 ### 项目相关属性说明 #### 项目属性 LabSetting + **RunCourse** 单次运行时长 #### 本地设置 LocalSetting LocalSetting中包含了一些自定义的设置。例如可以自行设置电压信息、钙离子浓度的线条绘制颜色以及纵向缩放参数。所设置的信息将保存在本地。 + **CompartmentSetting** 房室设置 + **Potential** 电压信息 + **Ca** 钙离子浓度 + **STC_Ca_d** + **Stimulator** 刺激信号 + **ScaleY** 纵向缩放参数 + **SynapseSetting** 突触连接设置 + **NTReleasableRate** + **Conductance** 电导 ### Neuron 相关属性 + **UID** 唯一ID + **Name** 名称 + **Geometry Mode** 是否采用几何形态定义多房室神经元 + **Axial Resistivity** 多房室模型中的Ra + **Compartmental Conductances** (仅用于多房室神经元模型) #### 房室相关属性 + **Biophysical Properties** 房室的生理属性 + **Capacitance** 膜电容 + **gLeak** 漏电流电导 + **Eleak** 漏电流的反转电位 + **LC Method Properties** LC算法涉及到的一些参数,不建议修改 + **Geometric Properties** 房室(圆柱体)的几何属性 + **Length** 长度 + **Radius** 圆柱体半径 + ~**Alpha** 角度~ 该属性已弃用 + **Color** 颜色 + **Ca Dynamical Properties** 房室中Ca的动力学演化 本平台采用的Ca动力学方程为 $${d(Ca)\over dt}=-ICaCof\cdot I_{Ca} - {{CaBase-Ca}\over CaDecayT}$$ + **CaMax** 该房室允许的最大钙浓度,计算钙浓度时若超过CaMax则强制性取为CaMax #### 离子通道相关属性 + **Name** 离子通道名称 + **bCaChannel** 是否是Ca通道,如果是,则选择True,该通道就会参与到Ca电流的计算中,否则选择False + **CaPct** 如果bCaChannel为True,则我们需要计算通过这个Ca通道进来的Ca离子的比例(可能会有其他离子通过Ca通道进入),这个CaPct就是比例,范围是0-1,对应0%到100% + **Erevs** 该通道的反转电位 + **Gmax** 该通道的最大电导,非负 + **GateP** 离子通道的第一个门X,计算神经科学常用这样的方式来描述离子通道的电导 $$g=g_{max}(X(V,t))^P(Y(V,t))^Q(Z(V,Ca,t))^R$$ $$\begin{aligned} {d(X(V,t))\over dt}&=\alpha_X(V)(1-X(V,t))+\beta_X(V)X(V,t) \\\\ &={{X_\infty(V)-X(V,t)}\over \tau_X} \end{aligned} $$ + **P** $$X(V,t)$$的幂,为非负整数 + **P_AlphaBetaType** 用**alpha/beta**的形式还是**inf/tau**的形式来描述这个离子通道,如果为True,则用**alpha/beta**的形式,否则用**inf/tau**的形式 + **P_InfNow** 有的离子通道采用**inf/tau**的方式来表达,但只有**inf**,没有**tau**,其意义是用无限短的时间就可以到达**inf**,如果模型中是这样的离子通道,则**P_InfNow**为True,否则为False + **P_Inf_Alpha** 上面公式中的$$\alpha_X(V)$$(当**P_AlphaBetaType=True**)或$$X_\infty(V)$$(当**P_AlphaBetaType=False**),目前NeuNet提供两种描述$$\alpha_X(V)$$的方法,一种是根据大量的离子通道总结出了$$\alpha_X(V)$$的几种一般形式,包括以下几种: ```katex p0+p1 \cdot V \tag{1} ``` ```katex p0+p1\cdot e^{V-p2\over p3} \tag{2} ``` ```katex p0+{p1\over p2+e^{V-p3\over p4}} \tag{3} ``` ```katex {p0\cdot(V-p1)\over p2-e^{V-p3\over p4}} \tag{4} ``` ```katex {p0 \over p1 \cdot e^{p2\cdot V} + p3\cdot e^{p4\cdot V}} \tag{5} ``` ```katex {1\over \sqrt {1+e^{V+p0\over p1}}} \tag{6} ``` ```katex p0+{p1\over p2+e^{V+p3\over p4}+e^{V+p5\over p6}} \tag{7} ``` 如上图,上面列表中的第1个到第7个就是这些一般形式,用户在使用的过程中,只需要输入公式**ID; p0; p1; pn**即可,如**4;0.3;9;1;9;-5**,注意各个元素要用分号隔开,不要多输入或者少输入。 另一种是对于一些无法用这些一般形式表达的离子通道,NeuNet还提供了script的表达方式,用户只需要把公式输进去就行了,如 **OUT=1+2*EXP\(-\(V+56.1\)\/23.6\)**。这里要注意的是,对于能够用一般形式表达的方程,请务必用一般形式表达,因为script采用查表的方式,一方面会降低计算精度,另一方面会影响计算速度。 + **P_Tau_Beta** 上面公式中的$$\beta_X(V)$$或$$\tau_X$$ + **GateQ** 离子通道的第二个门Y,所有参数的含义同**GateP** + **Q** $$X(V,t)$$的幂,为非负整数 + **Type** 用**alpha/beta**的形式还是**inf/tau**的形式来描述这个离子通道,如果为True,则用**alpha/beta**的形式,否则用**inf/tau**的形式 + **InfNow** 有的离子通道采用**inf/tau**的方式来表达,但只有**inf**,没有**tau**,其意义是用无限短的时间就可以到达**inf**,如果模型中是这样的离子通道,则**P_InfNow**为True,否则为False + **Inf_Alpha** 上面公式中的$$\alpha_X(V)$$(当**Type=True**)或$$X_\infty(V)$$(当**Type=False**) + **Tau_Beta** 上面公式中的$$\beta_X(V)$$或$$\tau_X$$ + **GateZ** 离子通道的第三个门Z,一般来说,离子通道只有1个或2个门,但有的K离子通道的电导不仅会跟电压有关,还可能会跟Ca有关,GateZ就是为这些Ca依赖的K离子通道准备的,其参数含义与**GateP**基本一致,需要注意的是,对于**Z_inf_alpha**和**Z_tau_beta**,其一般公式与**GateP**和**GateQ**是不同的,是考虑到Ca依赖的K离子通道中常见的公式而归纳出来的,如下: ```katex \quad {Ca\over Ca+p0} \tag{1} ``` ```katex \quad {p0+p1\cdot {Ca}^2 \over p2+p3\cdot {Ca}^2} \tag{2} ``` ```katex \quad {p0+p1\cdot {Ca}^4 \over p2+p3\cdot {Ca}^4} \tag{3} ``` ```katex \quad {p0\cdot e^{p1\cdot log_{10}(Ca)+p2\over p3}} \tag{4} ``` ```katex \quad {\max(p0,{p1\over p2+p3\cdot {Ca}^2})} \tag{5} ``` ```katex \quad p0+{p1\over p2+({p3\over Ca})^{p4}} \tag{6} ``` ```katex \quad \min(p0,p1+p2\cdot Ca+p3\cdot {Ca}^2) \tag{7} ``` #### Stimulator 相关属性 在NB家族的NB和NNB中,每个神经元都具有刺激器,用于模拟对神经元注入电流的情况 + **Start Time** 刺激的起始时间 + **Mode** 刺激类型,目前提供5种类型,分别为0(方波刺激),1(斜坡刺激),2(三角波刺激,先上后下),3(正弦波刺激),4(噪声刺激) + **Duration** 刺激的持续时间 + **Max Current** 刺激的最大电流 + **Min Current** 刺激的最小电流 + **Frequency** 刺激的频率,仅在Mode为3,即正弦波刺激时有效 ## FAQ ### 1.如何为房室添加离子通道 单击左侧工具栏中的离子通道按钮即可弹出离子通道添加窗口如下图:   上图中左侧的Public标签对应的是公共的离子通道库,Private对应的是自定义的离子通道库,您可以通过对公共离子通道库的参数进行修改后另存为获得自定义的离子通道库。Local仅用于配合本地版的NeuroBuilder 右侧对应的是离子通道的跟随电压变化的参数图表。 在中间的Property List中修改 **Inf_Alpha** 或 **Tau_Beta** 后,右侧的图表将会立即更新。 ### 2.如何修改离子通道中Inf_Alpha和Tau_Beta的值 在属性列表中单击 **Inf_alpha** 或 **Tau_Beta**的值后弹出设置窗口如下图:  **Inf_alpha** 和 **Tau_Beta** 的值支持分段函数。在上图中,**Piecewise Formula**模块为公式中的分段函数列表。 **Formula List** 中列出了可用的公式列表。选中某一个公式后单击 Add按钮,填写分段函数条件后将添加至左侧的分段函数列表中。 对于某一个选中的公式,需要在**Parameter Setting**中对 **p{n}** 参数进行设置。调整参数的值,右侧的图表会进行即时更新以便于更好的评估参数的合理性。 ### 3.如何将编辑好的神经元存储到私有库中 如下图操作:   选中某个神经元后单击结构窗口中的导出按钮填写合适的名称后单击OK即可保存至私有神经元库中。 ### 4.如何将编辑好的离子通道存储到私有库中 有两种方式可以保存至私有库。 其一:通过单击菜单栏中的【Channel】按钮在弹出的**Add Channel**窗口中,对公共的离子通道修改后进行另存为(Save AS)操作,保存至私有的库。 其二:类似保存神经元的功能。选中某个房室中的某个离子通道后,单击导出按钮,对其命名并选择类型后进行保存。如下图:   ### 5.如何在离子通道中的Inf_Alpha和Tau_Beta使用自定义的公式 在 Inf_Alpha和Tau_Beta 编辑器中的**Formula List**中选中**Custom Function**后编辑器将变为如下界面:  用户可以在**Custom Function**模块中编辑自定义的函数。函数示例**OUT=1.0+2*Ca*EXP\(-\(V+56.1\)/23.6\)**,也可以使用E0,E1的方式内接常用公式。如下示例:**OUT=MAX\(1/\(E0+E1\), EXP\(-\(V+56.1\)/23.6\)/3.4\)**,公式中的E0和E1将分别开启界面下方的E0和E1的输入权限,用户可以分别对E0和E1进行选择、设置公式。 **备注**:一般而言,尽可能的使用内置的公式,较为复杂的自定义公式将会降低计算速度。 ### 6.阻断突触连接或刺激输入 在NBC中突触连接和刺激输入是可以阻断的。选中突触连接后,单击左侧工具栏中的阻断按钮。如下图:   如上图,阻断了**l1**神经元的刺激输入以及来自神经元**E1**的突触连接 解除阻断,只需要选中相应的刺激输入或者突触连接,再次点击阻断按钮即可。