个人学习笔记

  • 首页
  • NONMEM
  • PBPK
  • R语言
  • 其他
  • 常用链接
  • 博客简介
  • 隐私政策
学海无涯勤可渡,书山万仞志能攀
  1. 首页
  2. PBPK
  3. 正文

MoBi® 事件构建单元:事件组、应用、条件赋值与从零创建示例详解

2026年8月19日 7点热度 0人点赞 0条评论

事件(Events)

事件(Event)用于在给定条件满足时改变某个实体,例如分子量或反应速率。该条件可以是例如达到给定模拟时间,或分子浓度超过某个值。因此,这种编程事件用于反映对模拟的外部变化,如药物给药或空间结构的突然物理变化(如血管破裂)。

事件的一种特殊情况是应用(Application),用于在给定时间将一定量的分子施加到容器中。这通常用于模拟向体内给药。

事件和应用被组织在事件构建单元(BB)中。多个事件可以组合为事件组,并以类似于空间结构的容器层级进行组织。从 PK-Sim® 项目导入的模拟包含所有已定义的应用和附加事件(如进食给药),它们都位于事件 BB 中。

以下章节基于从 PK-Sim 导出的 PBPK 模型,描述事件构建单元的功能。随后给出一个简单的示例。由于在 MoBi® 中生成应用可能相当复杂且超出了本手册的范围,我们将描述范围限定在调整先前从 PK-Sim® 导入的应用,因为在 PK-Sim® 中可以更轻松地生成复杂的应用方案。

事件 — 功能概览

事件以树结构组织。事件 BB 的顶层容器可以是事件组(Event Group)或应用(Application)。

事件组

事件组可以组合应用、事件、更多事件组和容器。

事件组可以创建于:

  • 另一个事件组内
  • 应用内

顶层事件组具有名称、容器条件(确定事件组将在模拟中的哪些容器中创建)和一组参数。

与观察器类似,事件组的空条件意味着该组将不会在任何容器中创建!事件组的典型条件是 Events 节点,该节点会在空的空间结构中自动创建。

应用

应用是一种特殊类型的事件组,专门为特定分子定义。除了事件组的属性外,应用还必须指定给药分子和应用分子构建器(Application Molecule Builder)的路径。

  • 应用模型构建器(Application Model Builder):向系统中添加分子的应用需要应用模型构建器,它是给药分子的虚拟隔室。

应用可以创建于:

  • 事件组内
  • 另一个应用内

事件

事件是实际改变模型中某些内容的动作,如分子的量或参数值。

事件可以创建于:

  • 事件(子)组内
  • 应用内

每个事件具有:

  • 参数
  • 启动条件
  • 一次性(One Time)属性 — 事件在模拟期间是否最多执行一次?如果为 true,事件仅在条件首次满足时执行。如果为 false,事件在每次条件满足时都会执行。
  • 赋值列表,每个赋值包含:
    • 更改实体路径(参数或分子)
    • 新值(或公式)
    • 属性:新公式是在事件执行时作为计算值仅应用一次,还是公式覆盖值(或其他公式)

注意:将一次性属性设为 false 可能导致意外行为,特别是当事件以使事件条件在首次执行后始终为真的方式更改参数或分子量时,例如条件为 TIME > StartTimeParameters。在这种情况下,事件将在启动时间之后的每个模拟时间步执行。

事件条件

事件条件由一个逻辑表达式定义,其求值结果为 true 或 false(例如:Time = 100 或 Some_Parameter < 0.001 AND Another_Parameter > 0)。一旦方程求值为 true,事件即被执行。

从技术上讲,方程的值不等于零时被视为 true,等于零时被视为 false。

有关如何创建带条件公式的详细信息,请参见公式使用。

如果事件应在模拟期间重复触发(即一次性属性设为 false),且条件取决于系统状态(模拟期间计算的参数或状态变量),则事件仅在定义的输出间隔和分辨率内满足条件时才会触发!如果输出分辨率过粗,可能导致意外行为。例如,如果条件为 Concentration > 1 && Concentration < 2,而浓度在时间点 t1 为 0.5,在时间点 t2 为 2,但 t1 和 t2 之间未定义输出,则事件不会触发,因为在任何输出时间点条件都未满足。

关于此主题的讨论可在 MoBi® 论坛中找到。

事件赋值

赋值定义事件执行时应更改的内容。每个事件可以有多个赋值。每个赋值具有以下属性:

  • 名称:赋值的唯一名称。
  • 更改实体路径:应被事件更改的参数或分子的路径。
  • 赋值:应分配给实体的新值或公式。
  • 将赋值用作值(Use Assignment As Value):如果为 true,赋值在事件执行时作为计算值使用。如果为 false,赋值(公式)覆盖值(或其他公式)。

容器

容器可以创建于:

  • 事件(子)组内
  • 应用内

容器可以是逻辑容器或物理容器,其行为类似于空间结构中的容器。容器可以具有标签和参数。

逻辑容器用于对参数进行分组。

物理容器可以包含参数和分子。对于具有运输过程的应用,通常需要物理容器作为源容器。

运输

运输可以创建于应用内。应用运输类似于被动运输。它定义源容器和目标容器之间的运输过程。源应是应用内的物理容器。目标可以是空间结构中的任意物理容器。

与被动运输不同,无需在源和目标之间定义邻域。该邻域将在模拟构建期间自动创建。

示例 — 创建事件

继续之前章节中开发的简单示例。打开事件构建单元,或通过右键点击模块并选择"添加构建单元"来创建新的。

事件组与事件

要创建新事件组,可以:

  • 使用功能区新建(New)按钮
  • 或在事件编辑窗口的空白区域右键点击,选择创建事件组(Create Event Group)命令

将打开名为"New Event Group"的窗口。然后执行以下步骤:

第 1 步:在名称输入框中输入唯一名称,如"EventGroup1"。

第 2 步:输入条件以定义事件适用于哪些容器。为此,点击"In Container with"字段下方的空白区域,选择Match tag条件或新的Not match tag条件 — 取决于您是要包含还是排除具有特定名称或标签的容器。在我们的示例项目中,选择 BigVial 作为Match tag条件。这将在 BigVial 容器中创建事件组。

与其他实例一样,您可以为事件组定义参数。要访问参数窗口,请点击编辑窗口右侧的参数(Parameters)选项卡。输入参数条目的方式与分子、反应或空间结构容器中描述的相同。事件组参数的示例包括事件定时值或您希望在该事件组的各个事件中设置的分子量。

新建事件组窗口

新建事件组窗口

创建事件组后,可以为其定义各个事件。右键点击您的事件组,您将在上下文菜单中看到以下选项:

  • 编辑(Edit)— 与选择名称功能相同
  • 重命名(Rename)
  • 另存为 PKML(Save As PKML)— 将选定的事件组保存到 pkml 文件
  • 删除(Delete)— 删除选定的事件组
  • 创建应用(Create Application)— 见应用
  • 加载应用(Load Application)— 见应用
  • 从模板加载应用(Load Application From Template)
  • 创建事件(Create Event)— 在当前事件组中创建新事件
  • 加载事件(Load Event)— 从 pkml 文件加载现有事件
  • 从模板加载事件(Load Event From Template)
  • 创建事件组(Create Event Group)— 在高亮显示的事件组下方创建新事件组
  • 加载事件组(Load Event Group)— 在高亮显示的事件组下方从 pkml 文件加载现有事件组
  • 从模板加载事件组(Load Event Group From Template)
  • 创建容器(Create Container)— 见应用
  • 加载容器(Load Container)— 见应用
  • 从模板加载容器(Load Container From Template)

要创建事件,请点击创建事件选项。将打开名为"New Event"的窗口。然后执行以下步骤:

第 1 步:在名称输入框中输入事件名称,例如"E1"。

第 2 步:如果您的事件在模拟期间只应执行一次,请勾选名称下方的一次性事件(One Time Event)复选框。这是一个有用的选项,例如当您想在给定时间将分子量设置为新值时。在本示例中,勾选此框。

第 3 步:复选框下方的"条件"(Condition)部分要求您输入事件条件名称,它类似于反应或参数的公式名称。点击"添加公式"(Add Formula)并将其命名为"E1"。

第 4 步:为了有更多空间构建条件,现在通过点击OK或按Enter键关闭此窗口,以在编辑窗口中完成事件构建。不过,所有必需的数据也可以在"New Event"窗口中输入。

第 5 步:继续在编辑窗口右侧的"属性"(Properties)选项卡中构建事件。从"Possible Referenced Objects"树中,您需要 TIME 变量,它反映模拟时间。操作过程与反应动力学中描述的引用对象使用方法相同:用鼠标将 TIME 拖到左侧,释放到"Condition"下"Alias"标题下方的空白区域。"Time"应出现在该字段中。

第 6 步:还需要输入条件方程,如该输入框前方的红色错误符号所示。让事件在给定模拟时间发生的最简单方法是输入公式"Time > 500",这将在 500 分钟时执行事件。使用"> 500"而不是"= 500"是有利的,因为在模拟过程中,根据时间步长的不同,可能永远不会出现精确的 500 值。如果您计划快速测试不同的时间值,将该执行时间定义为可在模拟中修改的参数会更有优势。

第 7 步:将时间参数定义为事件参数(或者,如果该组中的多个事件都需要它,可以将其设为事件组参数)。点击"参数"(Parameters)选项卡,然后点击添加参数(Add Parameter)按钮。将打开"New Parameter"窗口。

第 8 步:输入"E1Time"作为参数名称。

第 9 步:从"维度"(Dimension)下拉框中选择 Time。

第 10 步:输入"500"。如果您希望使用分钟以外的单位,可以在值右侧的下拉框中更改维度(例如改为"h")。

第 11 步:点击OK或按Enter键。新参数将出现在参数列表中。

第 12 步:点击"属性"(Properties)选项卡。将新创建的参数"E1Time"从右侧的"Possible Referenced Objects"列表拖放到已添加的"Time"引用下方的空白区域。要找到此参数,您需要在 E1 事件下方查看,因此点击 + 符号展开引用树的该部分。如果您在事件组下定义了该参数,则可以在事件组下方找到它。

第 13 步:在公式输入框中输入 Time > E1Time,之后其左侧的错误符号应消失。

第 14 步:还需要的是确定事件条件满足时将发生什么的赋值。作为示例,我们将设置容器"Vial1"中分子"A"的量。为此,点击添加赋值(Add Assignment)按钮。将打开名为"New Event Assignment"的窗口。

第 15 步:在名称输入框中输入"SetA"作为名称。

第 16 步:点击名称下方"更改实体"(Changed Entity)输入框左侧的 ... 按钮。将打开名为"选择更改实体"(Select Changed Entity)的窗口。选择 BigVial|Vial1 中的分子"A"作为目标。

选择更改实体窗口

选择更改实体窗口

第 17 步:点击OK按钮。"更改实体"输入框左侧的红色错误符号应消失,并应显示分子 A 的路径 BigVial|Vial1|A。

第 18 步:勾选将赋值用作值(Use Assignment As Value)复选框,然后在值输入框中输入"50"。这将在事件执行时将"Vial1"中的分子量设置为 50 µmol。最后,点击OK按钮或按Enter键。界面应如下方截图所示,事件现已完成。

事件构建完成

事件构建完成

事件可以更改多个赋值,如反应或运输速率常数、容器体积或邻域参数。通过在创建赋值时不勾选"将赋值用作值"并在"公式类型"(Formula Type)中选择"公式"而非"常数",可以更改整个反应或运输的公式。此外,您可以在一个条件下更改多个赋值:只需再次点击"添加赋值"按钮,然后重复上述第 14 至 18 步即可更改另一个值。

如果您不希望使用一次性事件,可以在"属性"中取消勾选一次性事件(One Time Event),使事件永久激活。在我们将分子"A"的量在 500 分钟后设置为 50 µmol 的示例中,这将导致在 500 分钟后将"A"的量保持在 50 µmol 不变。

赋值可以通过以下操作进行更改:

  • 点击"更改实体路径"右侧的 ... 符号,将再次看到"选择更改实体"窗口以更改上述选择。
  • 在"新公式"(New Formula)输入框(或多个赋值情况下的对应行)中,您可以在不同的值或公式之间切换。
  • 将赋值用作值复选框可以更改,以在赋值处插入公式。
  • + 符号的功能与添加赋值按钮相同。
  • 点击垃圾桶符号将删除对应的赋值。

应用

应用基本上是一个比上一节描述的结构更复杂的事件组。在几乎所有情况下,应用将在 PK-Sim® 中创建,然后转移到 MoBi®。本节的范围仅限于使用这种推荐的工作流程。

下图显示了从 PK-Sim® 导入的两个示例应用 — 一个静脉注射(iv)和一个口服给药。您可以在事件编辑窗口的树视图中看到这两个应用。每个应用由应用组、应用启动事件和方案项(Protocol Schema Item)组成。要进行更改,请查看方案项的参数,如下图所示。

示例应用

示例应用

您可以更改该组的以下参数:

  • DosePerBodyWeight:更改每公斤体重的剂量。这仅在原始 PK-Sim® 项目中使用了该参数时有效,可以通过Dose参数中是否有公式来识别。
  • Dose:更改给药的绝对药物剂量。如果原始 PK-Sim® 项目包含每公斤体重的剂量,该公式将被绝对值覆盖。
  • Start time:通过更改启动时间参数来改变药物给药的开始时间。
  • Volume of water / body weight:仅适用于口服应用,通过该参数更改每公斤体重的水量。这仅在原始 PK-Sim® 项目中使用了该参数时有效,可以通过Amount of water参数中是否有公式来识别。
  • Amount of water:更改随药物给药的绝对水量。如果原始 PK-Sim® 项目包含每公斤体重的水量,该公式将被绝对值覆盖。
  • 该模块的其他参数不应更改。

每个参数底部部分的描述提供了有关每个参数的更多信息。

更复杂的更改,如更改复杂的给药方案或溶出模式,使用 PK-Sim® 的用户界面然后导出相应的模拟要容易得多。在 MoBi® 项目中,您可以组合来自多个 PK-Sim® 导出的药物应用。以下描述了此操作的工作流程:

  1. 将所有感兴趣的应用作为 PK-Sim® 模拟保存到 pkml 文件(参见导出到 MoBi®)。
  2. 加载您的 MoBi® 项目。
  3. 右键点击构建单元浏览器中的 Events 条目,选择加载事件组构建单元(Load Event Group Building Block)。
  4. 输入 pkml 文件的名称和位置。系统可能会要求您输入新的构建单元名称。将创建一个新的事件构建单元。
  5. 创建模拟时(创建模拟),您现在可以在多个可能的应用构建单元之间选择。

预定义构建单元的模板文件集合随 MoBi® 一起自动安装到默认程序数据目录中。程序开始菜单中 MoBi 程序组中的"Templates"条目将引导您找到正确的路径。

为每个应用构建单元使用描述性名称可能会有帮助。使用构建单元上下文菜单中的重命名(Rename)功能来实现此目的。

标签: 暂无
最后更新:2026年8月19日

MSxiaoming

得失从缘,心无增减

点赞
< 上一篇
下一篇 >

MSxiaoming

得失从缘,心无增减

标签聚合
NONMEN POPPK PBPK模型 R语言 群体药代动力学 NONMEM R语言,数据管理 浏览器工具

COPYRIGHT © 2023 个人学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

皖ICP备2023004398号-1