首先,构建一个由体细胞和树突组成的两室神经元。之后,我们将在其上安装一些仪器来模拟和监测其动态。细胞按定义由两部分组成:胞体和树,我们定义一个 BAS 神经元类。在 Python 中定义任何类的基本样板如下所示:

class BAS:
    def __init__(self):

特别是在我们的例子中,每次我们说有一个 BAS 细胞时,我们应该创建体细胞和树突部分:

class BAS:
    def __init__(self):
        self.soma = h.Section(name="soma", cell=self)
        self.dend = h.Section(name="dend", cell=self)

任何描述细胞属性的变量都必须作为自身属性存储。这就是我们写 self.soma 而不是 soma 的原因。另一方面,临时变量不需要以 self 为前缀,并且会在初始化函数结束时停止存在。您还会注意到,我们为部分引入了一个新的关键字参数,即单元格属性。这将始终设置为 self(即当前单元格),以允许每个部分知道它属于哪个单元格。

我们可以通过以下方式检查拓扑:

h.topology()

让我们创建第一个细胞:

my_cell = BAS()

让我们设置两个部分的长度和宽度。我们将使胞体的长度和直径为 12.6157 微米,树突的长度为 200 微米,直径为 1 微米。

class BAS:
    def __init__(self, gid):
        self._gid = gid
        self.soma = h.Section(name="soma", cell=self)
        self.dend = h.Section(name="dend", cell=self)
        self.dend.connect(self.soma)
        self.soma.L = self.soma.diam = 12.6157 * µm
        self.dend.L = 200 * µm
        self.dend.diam = 1 * µm

    def __repr__(self):
        return "BAS[{}]".format(self._gid)

my_cell = BAS(0)

如果您想知道为什么选择这个数字作为体体长度和直径:这是因为它使表面积(不包括端面)约为 500 μm2:

请注意,长度和直径相等的圆柱体的表面积

$$ \pi d \ell=\pi d^2=4 \pi\left(\frac{d}{2}\right)^2=4 \pi r^2 $$

与相同直径的球体的表面积相同。

也就是说,如果我们只对电生理建模感兴趣,我们可以用长度和直径相同的圆柱形体细胞代替直径相同的球形体细胞,就像我们在这里所做的那样。(然而,体积当然是不同的。所以如果我们要模拟离子的扩散或积累,这种替代就行不通了。)

现在是时候看看细胞是什么样子了:

import matplotlib.pyplot as plt

h.PlotShape(False).plot(plt)

我们的细胞需要膜中的生物物理机制。我们首先设置轴向电阻和膜电容。

class BAS:
    def __init__(self, gid):
        self._gid = gid
        self.soma = h.Section(name="soma", cell=self)
        self.dend = h.Section(name="dend", cell=self)
        self.dend.connect(self.soma)
        self.all = self.soma.wholetree()  # <-- NEW
        self.soma.L = self.soma.diam = 12.6157 * µm
        self.dend.L = 200 * µm
        self.dend.diam = 1 * µm
        for sec in self.all:  # <-- NEW
            sec.Ra = 100
            sec.cm = 1

    def __repr__(self):
        return "BAS[{}]".format(self._gid)

my_cell = BAS(0)