空间结构(Spatial Structures)
空间结构是一种容器(隔室)的层级排列,可以代表由器官、细胞和其他亚结构组成的生物体;也可以是实验室装置,例如试管或带有互连隔室的流动腔。通常,每个结构都由物理参数描述,尤其是体积。
有两种类型的容器可用——逻辑容器和物理容器。逻辑容器不代表含有分子的真实容器,而是用于将多个子容器分组。例如,一个器官可以将血液、组织间液和细胞等物理容器归组在一起。逻辑容器也可用于将多个器官组合为一个系统,如胃肠道或整个生物体。逻辑容器可以包含其他逻辑容器或物理容器。
物理容器代表可以容纳分子的真实物理空间。例如器官内的血液、组织间液或细胞,或者实验室装置中的试管。
物理容器必须通过邻域(Neighborhood)连接,以允许它们之间发生主动或被动运输等交换过程。邻域是两个物理容器之间的逻辑连接,允许在它们之间定义运输过程。邻域始终是双向的,意味着可以在两个方向上定义运输过程。邻域也可以携带参数,例如描述两个连接隔室之间屏障的表面积或渗透性等物理特性。
以下部分基于从 PK-Sim 导出的 PBPK 模型描述空间结构构建单元的功能。随后给出了一个简单的示例,展示如何从零开始创建空间结构。
完整生物体的复杂结构可以在加载从 PK-Sim® 生成的模拟后进行检查、使用和修改(参见加载模拟)。或者,也可以通过在构建单元浏览器中使用加载空间结构命令,选择在 PK-Sim® 或 MoBi® 中生成的 pkml 文件,单独加载空间结构。
空间结构——功能概览
从 PK-Sim® 加载 PBPK 模型后,代表整个生物体的空间结构位于导入的 PK-Sim® 模块中。双击空间结构,或右键单击后从上下文菜单中使用编辑命令,将打开编辑窗口。

窗口右侧以树形视图或图表(Diagram)视图显示结构。树形视图以树结构显示容器和邻域的层级排列。图表视图以图形方式显示空间结构。图表视图对于可视化容器及其邻域的物理和逻辑排列特别有用。
公式(Formulas)选项卡显示空间结构参数中使用的所有公式。
顶层容器的父路径
模型的空间结构按容器层级组织,每个容器可以是某个父容器的子容器。容器 A 最多可以是一个父容器 B 的子容器,同时也可以是多个容器的父容器。每个容器都有一个父路径(Parent path)属性,指定到其父容器的完整路径。
在模块中,用户可以更改顶层容器的父容器属性。组合模块时,该模块的容器(及其所有子容器)将被放置在父路径属性指定的容器下。如果容器 A 的父路径为空,或在模拟中找不到指定父路径的容器,容器 A 将作为模拟中的顶层容器被创建。
请注意,更改容器的父路径会导致相应容器的绝对路径不同,可能会破坏使用绝对路径进行变量定义的公式。您可能需要通过手动将父路径附加到别名来相应地调整绝对路径。
邻域(Neighborhoods)
可以通过在图表视图中从一个物理容器拖拽连线到另一个物理容器来创建新邻域,也可以在树形视图中右键单击邻域节点并从上下文菜单中选择创建邻域。用户必须指定相邻容器和邻域的名称。
如果定义的邻域的相邻容器在最终模型结构中不存在,则该邻域将被忽略。
重命名容器时,软件会建议将与该容器关联的所有邻域的相邻容器更改为新名称。
将容器导出为 pkml 文件
如"模块化概念"中所述,PK-Sim 模块中的个体特定参数不直接存储在空间结构中,而是存储在个体构建单元中。从 PK-Sim 模块将容器保存为 pkml 时,用户必须选择一个个体,并选择适用时应分配该容器中表达的蛋白质。这确保导出的容器可以在没有个体的情况下使用。
从 *.pkml 加载容器时,导出的表达谱将作为参数值(PV)和初始条件(IC)添加。
将容器导出为 PKML 时,也会导出其所有子容器以及以该容器或其子容器为相邻容器的所有邻域。
示例——创建空间结构
在本章本节及后续章节中,您将创建一个示例项目。一个已完成的项目文件"ManualModel_Sim.mbp3"会随 MoBi® 一起自动安装到默认程序数据目录中。程序开始菜单中"MoBi"组下的"Examples"条目将引导您找到正确的路径。
首先,通过执行文件菜单中的新建项目命令创建一个新项目。在功能区的建模(Modeling)选项卡的创建(Create)组中选择模块(Module)按钮。将新模块命名为"ExampleModule",并选择在新模块中创建"空间结构"构建单元。点击确定创建新模块。
屏幕现在应如下图所示:

在本示例中,您将构建一个简单的空间结构,由一个顶层逻辑容器和两个互连的物理容器组成。将为两个物理容器添加一个公共标签,该标签稍后将用于将某些计算(例如观察器)限制为仅在这两个子容器中执行。标签也用于限制事件或选择运输过程的源和目标。请参阅相应章节了解其用途。
创建容器和参数
- 通过在功能区的编辑空间结构选项卡的添加组中选择新建,或在树形视图的空白区域右键单击并从上下文菜单中选择创建顶层容器,来创建一个顶层容器。输入"BigVial"作为名称。确保容器类型设置为逻辑,然后点击确定。
- 现在创建两个子容器。右键单击
BigVial容器并从上下文菜单中选择创建容器。将打开一个名为"新建容器"的新窗口。输入"Vial1"作为名称,将容器类型保持在 Organ。在名称输入框下方的右侧下拉框中选择 Physical Container。 - 点击容器类型下方的添加标签按钮。系统会要求您输入标签名称。输入"Obs"作为标签名称。点击确定。

- 重复步骤 2 和 3,创建名为"Vial2"的第二个子容器,使用相同的标签"Obs"。确保通过右键单击"BigVial"而不是"Vial1"来创建第二个子容器,使其成为"BigVial"的子容器!
任何容器或子容器都可以有关联的参数。它们可以描述容器对于运输或反应等过程所需的物理或生物学特性。我们的模型中需要的是体积参数,用于计算动力学方程所需的浓度,或在模拟完成后绘制浓度图。
创建所需参数:
- 展开
BigVial容器并选择Vial1条目(我们用路径BigVial|Vial1来引用此容器)。 - 点击"Parameters"选项卡。
- 点击添加参数按钮,将打开一个名为"新建参数"的窗口。
- 在名称输入框中输入 Volume,在量纲输入框中选择 Volume,然后在值输入框中输入"0.1"。公式类型保持"Constant"。
- 最后,点击确定,新参数"Volume"将出现在参数列表中。
- 对容器
BigVial|Vial2重复此过程,并将体积值设置为 0.2 升。
创建邻域
在空间结构中,运输过程(参见主动运输分子或被动运输)只能在通过邻域连接的物理容器之间发生。
要在两个容器 BigVial|Vial1 和 BigVial|Vial2 之间创建邻域,请按以下步骤操作:
- 在树形视图中右键单击邻域节点,从上下文菜单中选择创建邻域。或者,也可以使用功能区编辑空间结构选项卡中添加组的邻域按钮。
- 输入"V1V2Connection"作为新邻域的名称。从对应的树形视图中选择
BigVial|Vial1作为第一个相邻容器,选择BigVial|Vial2作为第二个相邻容器。点击确定创建邻域。
可以直接输入容器的路径,而不是从树形视图中选择。这在最终结构(带有相邻容器的完整路径)是组合多个模块的结果时特别有用。在这种情况下,容器可能尚未出现在模块中,但它们将在最终模型中可用。
创建的空间结构现在应如下图所示:

切换到图表视图,您可以看到空间结构的图形表示:

与容器一样,邻域可以包含参数并携带标签。如果您查看从 PK-Sim® 导入的模拟,将会看到此类参数的示例。这种 PBPK 模型的空间结构要复杂得多,但编辑方式与本简单示例中描述的相同。
我们将在后续章节中继续构建示例模型,为其添加分子和过程。