主要内容

SimFunction对象

执行SimBiology模型的类函数接口

描述

SimFunction对象提供了一个允许您执行SimBiology的接口®模型,如函数和工作流,以执行参数扫描(如果并行计算工具箱™可用,则并行),蒙特卡罗模拟,并使用多个或向量化剂量扫描。自SimFunction对象可以像函数句柄来执行,你可以自定义整合SimBiology车型与其他MATLAB®下载188bet金宝搏产品和其他定制分析(如视觉预测检查)。

使用createSimFunction方法来构造SimFunction对象。SimFunction对象一旦创建就不可变,并在第一次执行函数时自动加速。

语法

如果你指定的任何定量信息时,你打电话createSimFunction构建SimFunction对象F,然后F有以下语法。

simdata= F (t_stoput_output)返回一个SimData对象simdata在使用中指定的初始条件或模拟场景模拟SimBiology模型之后,仿真停止时间,t_stop,定量信息,u,输出时间,t_output

simdata= F (t_stopu)使用输入参数运行模拟t_stop,u

如果你做当你打电话时指定任何剂量信息createSimFunction,然后F有以下语法:

simdata= F (t_stop)返回一个SimData对象simdata在使用初始条件或中指定的模拟场景模拟模型之后,模拟停止时间,t_stop

simdata= F (t_stop,[]t_output)使用输入参数t_stop空洞的争论[],t_output.您必须指定u中,给药信息,作为一个空数组[]这个签名。当t_output是空的,t_stop时,模拟报告求解器的时间点,直到t_stop.当t_output是指定的,t_stop是空的,只有时间点在吗t_output报告。当两者都指定时,所报告的时间点是求解器时间点和中的时间点的并集t_output.如果最后一个t_output是否大于相应的t_stop,然后模拟进行,直到最后一个时间点t_output

simdata= F (资源描述)使用输入参数资源描述.使用此签名只允许您将输出时间指定为资源描述.任何数据行资源描述所有因变量列都有值将被忽略。

TY] = F(_)返回T,数值向量的单元阵列,和Y,一个由二维数字矩阵组成的单元格数组,使用前面语法中的任何输入参数。

输入参数

下列其中之一:

  • 空数组[]或者空单元格数组{},这意味着使用基线的初始值来执行模拟,即,在列出的值参数财产的SimFunction对象,而不改变它们。

  • 矩阵的大小年代——- - - - - -P,在那里年代要执行的模拟次数和吗P在被指定的参数的数量参数当你调用createSimFunction构建F.的对应行中指定的参数执行每个仿真

  • 年代——- - - - - -V矩阵的变体对象或单元格列向量的长度年代,其中每个元素由变量对象的行向量组成。年代要执行的模拟次数,和V是变量对象的数量。这些变体只允许修改SimFunction的输入参数,即模型元素参数调用时的输入参数createSimFunction.换句话说,必须在创建时指定变量参数作为输入参数SimFunction对象。任何SimFunction变量中未指定的输入参数使用它们的基线初始值。

    如果在一个变量行中有多个条目引用同一个模型元素,则最后一个条目将用于模拟。

  • 标量SimBiology.Scenarios包含对象年代数量的场景。

被指定为一个1——- - - - - -P1——- - - - - -V矩阵(或一个场景对象,然后所有模拟使用相同的参数,模拟的数量由t_stopu,或t_output按这个顺序。例如,如果t_stop有单行和u矩阵的大小是多少N——- - - - - -DoseTargets,模拟次数被确定为N

被指定为一个SimBiology.Scenarios对象,则模拟所有场景。在设置场景的值之前应用变量。

t_stop

  • 为所有模拟指定相同的停止时间的标量

  • 大小为N的向量,指定所有N个模拟的每个模拟的停止时间

u

  • 空数组[]模拟过程中不应用剂量,除非您指定作为一个场景在其条目中定义了剂量的对象。

  • 桌子包含两个或三个变量的剂量信息ScheduleDose数据 (ScheduleDose表),即剂量时间、剂量量、剂量率(可选)。按如下方式命名表变量。

    u.Properties.VariableNames = {“时间”“数量”“速度”};

    如果UnitConversion时,为每个变量指定单位。例如,您可以如下指定单元。

    u.Properties.VariableUnits = {“第二”“分子”“分子/秒”};

    该表可以有多行,每行表示在指定的剂量时间使用指定的剂量和速率(如果可用)应用于剂量目标的剂量。

  • 桌子有一行五个变量含RepeatDose数据 (RepeatDose表)。剂量率变量是可选的。按如下方式命名变量。

    u.Properties.VariableNames = {“开始时间”“数量”“速度”“间隔”“RepeatCount”};

    如果UnitConversion时,为每个变量指定单位。单位“RepeatCount”变量可以为空''“无量纲”.的单位“数量”变量必须与目标物种的量纲一致。例如,如果目标物种的单位是单位(如摩尔或分子),然后是“数量”变量单位必须具有相同的维数,即它的单位必须是,且不能为质量单位(如克或公斤)。的单位“速度”变量也必须在维度上保持一致。

    u.Properties.VariableUnits = {“第二”“分子”“分子/秒”“第二”“无量纲”};

    提示

    如果你已经有一个剂量对象(ScheduleDoseRepeatDose),您可以通过使用得到这个剂量表可以获得的对象的方法。

  • 大小为1 × N的细胞阵列,其中N是剂量目标的数量。每个单元格可以表示前面描述的任意一个表。

  • 大小为S-by-N的细胞阵列表格,其中S为模拟次数,N为剂量目标数量。每个单元格代表一个表。S等于输入的行数

如果u是表格的单元格数组,则:

  • 如果也是一个场景对象中剂量的总和场景中的列数u必须等于财产的SimFunction对象。换句话说,你在创建时指定的剂量信息SimFunction对象必须与您在执行对象时指定的剂量信息一致。元素的总数属性等于来自输入的任何剂量的组合场景物体和剂量输入计量加入争论createSimFunction

  • 如果不是一个场景对象,列数(N)u必须等于财产的SimFunction对象。剂量表的顺序也必须与剂量物种的顺序相匹配createSimFunction.也就是说,假定SimBiology的列之间的一对一对应u和剂量目标财产的SimFunction对象,表示的第一列中的剂量(剂量表)u适用于财产等等。

  • 剂量j如果第剂量目标被忽略u {i, j} = []

  • 如果剂量不是参数化的,u {i, j}[]或者表的任何一种类型(ScheduleDoseRepeatDose表)。

  • 如果剂量是参数化的,u {i, j}必须是[]或者RepeatDose表,每个属性有一行和一列(开始时间数量速度间隔RepeatCount),而不是参数化的。不需要为参数化的剂量属性创建列。如果所有属性都是参数化的,则可以传入一个只有一行没有列的表,以指定模拟期间应用的参数化剂量。要创建这样的表,请使用table.empty (1,0)

t_output

  • 用于所有仿真的单调递增输出时间的向量

  • 单元格数组包含应用于所有模拟的单个时间向量

  • 表示输出时间的向量单元格数组。第i单元元素提供了第i次模拟的输出时间。单元格数组中的元素数必须与中的行数(模拟数)匹配

资源描述

桌子数据集(统计学和机器学习工具箱)具有时间和剂量信息,例如组标签,自变量,因变量(多个),量(S),和(多个)速率。您必须命名表或数据集的变量'集团', '时间', 'DEPENDENTVAR1', 'DEPENDENTVAR2',..., 'AMOUNT1', 'RATE1', 'AMOUNT2', '率2',....每次剂量的速率变量是可选的。

如果属性的SimFunctionF为空,则不需要数量和速率相关的变量。中基团的数量资源描述必须等于行数或场景数,在.综合剂量信息, 如果是一个SimBiology.Scenarios对象的数量和速率列的数量资源描述必须等于剂量在数量对象的属性F.如果资源描述如果有其他列,则忽略它们。

如果UnitConversion时,为每个变量指定一个单元。的单位“数量”变量必须与目标物种的量纲一致。请参阅输入参数的描述u有关详细信息。

输出参数

simdata

SimData对象数组,包含执行SimFunction的结果F.中的元素的数量simdata数组的行数与.元素中每个元素的列数simdata数组,simdata(我)。数据,等于元素的个数观察到的这是在创建时指定单元阵列F

T

包含大小为数字向量的单元格数组S x 1年代为模拟次数。T的第i个元素包含了第i个模拟的时间点。

Y

单元阵列的2-d的数值矩阵。在我th的元素Y包含I的数据th模拟。行数T{我}等于行数Y {}

构造函数的总结

createSimFunction(模型) 创建SimFunction对象

方法摘要

加速(SimFunction) 为加速模拟准备SimFunction对象
isAccelerated (SimFunction) 确定SimFunction对象是否被加速

产权总结

参数

桌子变量命名:

  • “名字”

  • “价值”

  • “类型”

  • “单位”(只有UnitConversion打开)

该表包含关于模型数量(物种,隔间,或参数)的信息,这些信息定义了一个SimFunction对象.例如,这个表可以包含参数或物种,它们的值正在被SimFunction对象.此属性为只读。

可见

桌子变量命名:

  • “名字”

  • “类型”

  • “单位”(只有UnitConversion打开)

这个表包含了关于模型数量(物种,隔间,或参数)的信息,定义了一个SimFunction对象.此属性为只读。

桌子含命名变量定量信息:

  • “TargetName”

  • “TargetDimension”(只有UnitConversion打开)

此外,该表还包含了被参数化每个属性变量。对于每一个参数化属性,两个变量被添加到该表。第一个变量具有相同的名称作为属性名和值是指定的参数的名称。第二个变量由后缀属性名价值PropertyNameValue),该值为该参数的默认值。如果UnitConversion时,单元列也会加上名称PropertyNameUnits

假设数量重复的特性剂量瞄准药物物种通过将其设置为一个称为AmountParam价值10毫克,和UnitConversion正在进行。的表中包含以下变量:

TargetName TargetDimension 数量 AmountValue AmountUnits
“药物” 的质量(例如,克) “AmountParam” 10 毫克的
UseParallel

合乎逻辑的。如果真正的和并行计算工具箱是可用的,SimFunction并行执行。此属性是只读的。

UnitConversion

合乎逻辑的。如果是真的:

  • 在执行过程中SimFunction对象,假设与?中规定的相应型号数量的单位相同参数当用的是创建的对象参数createSimFunction方法。

  • 时间(t_outputt_stop)被假定为在同一单元中TimeUnits活动的性质configset对象该SimBiology模型的从中F被创建。

  • 剂量表变数(u)必须有通过设置指定的单位u.Properties.VariableUnits到相应单元的单元阵列。剂量目标的尺寸,如量(分子、摩尔等)或质量(克、千克等)存储在财产F

  • 模拟结果的单位与SimBiology模型中相应数量的单位相同F被创建。

此属性为只读。

AutoAccelerate

合乎逻辑的。如果为true,该模型是在加速的第一次评估SimFunction对象。

此属性为只读。

DependentFiles

字符向量的单元格数组,包含模型所依赖的文件名。此属性用于部署。此属性为只读。

例子

全部收缩

这个例子展示了如何模拟正常和糖尿病受试者的葡萄糖-胰岛素反应。

装载葡萄糖 - 胰岛素反应的模型。有关模型的详细信息,请参阅背景部分模拟葡萄糖-胰岛素反应

sbioloadproject(“insulindemo”“m1”)

该模型包含存储在各种不同的变体的初始条件。

变量= getvariant (m1);

了解2型糖尿病患者的初始情况。

类型2 =变体(1)
type2 = SimBiology Variant - Type 2 diabetic (inactive) ContentIndex: Type: Name: Property: Value: 1 parameter Plasma Volume…值1.49 2参数k1值0.042 3参数k2值0.071 4参数Plasma Volume…Value 0.04 5 parameter m1 Value 0.379 6 parameter m2 Value 0.673 7 parameter m4 Value 0.269 8 parameter m5 Value 0.0526 9 parameter m6 Value 0.8118 10 parameter Hepatic extrc…价值0.6 11参数kmax值0.0465 12参数kmin值0.0076 13参数出租车值0.023 14参数kgri值0.0465 15参数f值0.9 16参数值6 e-05 17参数b值0.68 18参数c值0.00023 19参数d值0.09 20参数胃Glu Af……值125 21参数kp1值3.09 22参数kp2值0.0007 23参数kp3值0.005 24参数kp4值0.0786 25参数ki值0.0066 26参数[Ins Ind Glu U…值1 27参数Vm0值4.65 28参数Vmx值0.034 29参数30公里价值466.21参数p2U值0.084 31参数K值0.99 32参数α值0.013 33参数β值0.05 34参数γ值0.5 35 0.0007参数ke1值36参数ke2值269 37参数基等离子体克……值164.18 38参数基底浆I…价值54.81

禁止模拟期间发出的信息性警告。

warnSettings =警告(“关闭”'SimBiology:提供DimAnalysisNotDone_MatlabFcn_Dimensionless');

创建SimFunction对象来模拟正常和糖尿病受试者的葡萄糖-胰岛素反应。

  • 指定空数组{}对于第二个输入参数,表示将使用基本参数值模拟模型(即不执行参数扫描)。

  • 指定血浆葡萄糖和胰岛素浓度的响应(函数的输出被绘制)。

  • 指定物种剂量作为剂量的物种。这种物质代表模拟开始时葡萄糖的初始浓度。

normSim = createSimFunction (m1, {},...“(等离子Glu浓缩)”“[等离子体宏浓]”},“剂量”)
normSim = SimFunction参数:可见:名字类型的单位  _____________________ ___________ _______________________ {'[ 等离子体Glu浓缩的]}{“物种”}{毫克/分升的}{'[血浆Ins浓缩的]}{“物种”}{“皮摩尔/升”}给:TargetName TargetDimension  __________ _____________________ {' 剂量的}{的质量(例如,克)}

对于糖尿病患者,使用变量指定初始条件类型2

diabSim = createSimFunction (m1, {},...“(等离子Glu浓缩)”“[等离子体宏浓]”},“剂量”类型2)
diabSim = SimFunction参数:观测量:名称类型单位_____________________ ___________ _______________________ { '[等离子体谷氨酸浓]'} { '物种'} { '毫克/分升'} { '[等离子体宏浓]'} { '物种'} {”picomole/liter' } Dosed: TargetName TargetDimension __________ _____________________ {'Dose'} {'Mass (e.g., gram)'}

在模拟开始时,选择一份代表78克葡萄糖的单餐剂量。

singleMeal = sbioselect (m1,“名字”“一餐”);

转换计量信息表格式。

mealTable =可以获得的(singleMeal);

模拟正常受试者24小时的葡萄糖-胰岛素反应。

sbioplot (normSim([], 24岁,mealTable));

图中包含一个坐标轴。标题为“状态与时间”的轴包含两个类型为line的对象。这些对象代表葡萄糖的外观。血浆Glu Conc,胰岛素分泌。血浆Ins浓缩的。

模拟糖尿病患者24小时的葡萄糖-胰岛素反应。

sbioplot (diabSim([], 24岁,mealTable));

图中包含一个坐标轴。标题为“状态与时间”的轴包含两个类型为line的对象。这些对象代表葡萄糖的外观。血浆Glu Conc,胰岛素分泌。血浆Ins浓缩的。

使用变体执行扫描

假设您希望使用包含不同胰岛素损害的不同初始条件的变量数组执行参数扫描。例如,模型M1变体具有对应于低胰岛素敏感性和高胰岛素敏感性。您可以通过给SimFunction对象的单个调用模拟这两种情况的模型。

选择要扫描的变体。

varToScan = sbioselect(M1,“名字”...“低胰岛素敏感性”“高胰岛素敏感性”});

检查被存储在每个变体模型参数。

varToScan (1)
ANS = SimBiology变体 - 低胰岛素敏感性(不活动)ContentIndex:类型:名称:属性:值:1参数值VMX 0.0235 2参数值KP3 0.0045
varToScan (2)
ans = SimBiology Variant - High insulin sensitivity (inactive) ContentIndex: Type: Name: Property: Value: 1 parameter Vmx Value 0.094 2 parameter kp3 Value 0.018

这两种变体存储的交替值Vmxkp3参数。在创建SimFunction对象时,需要将它们指定为输入参数。

创建SimFunction对象来扫描变体。

variantScan = createSimFunction (m1, {“Vmx”'KP3'},...“(等离子Glu浓缩)”“[等离子体宏浓]”},“剂量”);

模拟模型并绘制结果。运行1包括低胰岛素敏感性和运行2用于高胰岛素敏感性。

sbioplot (variantScan(24岁的varToScan mealTable));

图中包含一个坐标轴。标题为“状态与时间”的轴包含4个类型为line的对象。这些对象表示Run 1 - Glucose的外观。血浆Glu Conc, Run 1 -胰岛素分泌。Plasma Ins Conc, Run 2 - Glucose appearance.Plasma Glu Conc, Run 2 - Insulin secretion.Plasma Ins Conc.

低胰岛素敏感性导致血糖浓度升高和延长。

恢复设置的警告。

警告(warnSettings);

此示例示出了如何扫描初始量的物质从与一级反应放射性衰变模型 d z d t c x ,在那里xz物种和c是正速率常数。

加载包含放射性衰变模型的示例项目M1

sbioloadprojectradiodecay

创建一个SimFunction对象f到扫描初始量物质的x

f = createSimFunction (m1, {'X'},{'X''Z'},[])
f = SimFunction参数:值类型单位名称  _____ _____ ___________ ____________ {' 1000 x '}{“物种”}{}“分子”可见:单位名称类型  _____ ___________ ____________ {' x '}{“物种”}{“分子”}{' z '}{“物种”}{}“分子”前:没有

限定用于扫描四个不同初始量的物种x的。的行数表示仿真的总数,并且每个仿真采用矢量的每一行中指定的参数值。

φ= [200;400;600;800);

运行模拟直到停止时间为20,并绘制模拟结果。

sbioplot (f(φ,20));

图中包含一个坐标轴。标题为“状态与时间”的轴包含8个类型为line的对象。这些对象表示Run 1 - x, Run 1 - z, Run 2 - x, Run 2 - z, Run 3 - x, Run 3 - z, Run 4 - x, Run 4 - z。

这个例子展示了如何模拟和扫描一个放射性衰变模型的参数,而一个物种正在被剂量。

加载包含放射性衰变模型的示例项目M1

sbioloadprojectradiodecay

创建一个SimFunction对象f指定参数Reaction1.c进行扫描和分类x作为一个剂量目标。

f = createSimFunction (m1, {“Reaction1.c”},{'X''Z'},{'X'});

定义一个标量剂量,在3个时间点(5、10和15秒)给予200个分子。

Dosetime = [5 10 15];剂量= [200 200 200];U = table(dosetime', dose');u.Properties.VariableNames = {“时间”“数量”};u.Properties.VariableUnits = {“第二”“分子”};

定义的参数值Reaction1.c扫描。

Phi = [0.1 0.2 0.5]';

模拟模型20秒并绘制结果。

sbioplot (f(φ20 u));

图中包含一个坐标轴。标题为“状态与时间”的轴包含6个类型为line的对象。这些对象表示Run 1 - x, Run 1 - z, Run 2 - x, Run 2 - z, Run 3 - x, Run 3 - z。

您还可以指定在不同的时间不同的药剂量。

d1 =表(5100);d1.Properties。VariableNames = {“时间”“数量”};d1.Properties。VariableUnits = {“第二”“分子”};D2 =表(10300);d2.Properties.VariableNames = {“时间”“数量”};d2.Properties。VariableUnits = {“第二”“分子”};d3 =表(15600);d3.Properties。VariableNames = {“时间”“数量”};d3.Properties。VariableUnits = {“第二”“分子”};

使用这些剂量模拟模型并绘制结果。

sbioplot(F(PHI,20%,{D1; D2; D3}));

图中包含一个坐标轴。标题为“状态与时间”的轴包含6个类型为line的对象。这些对象表示Run 1 - x, Run 1 - z, Run 2 - x, Run 2 - z, Run 3 - x, Run 3 - z。

还可以定义一个剂量表单元阵列。

u =细胞(3,1);Dosetime = [5 10 15];剂量= [200 200 200];u{1} =表(dosetime ', ');{1} . properties。VariableNames = {“时间”“数量”};∪{1} .Properties.VariableUnits = {“第二”“分子”};Dosetime2 = [2 6 12];Dose2 = [500 500 500];U {2} = table(dosetime2', dose2');{2} . properties。VariableNames = {“时间”“数量”};{2} . properties。VariableUnits = {“第二”“分子”};Dosetime3 = [3 8 18];Dose3 = [100 100 100];U {3} = table(dosetime3', dose3');{3} . properties。VariableNames = {“时间”“数量”};{3} . properties。VariableUnits = {“第二”“分子”};

使用剂量表模拟模型并绘制结果。

sbioplot (f(φ20 u));

图中包含一个坐标轴。标题为“状态与时间”的轴包含6个类型为line的对象。这些对象表示Run 1 - x, Run 1 - z, Run 2 - x, Run 2 - z, Run 3 - x, Run 3 - z。

参考文献

D.T.吉莱斯皮(1977)。耦合化学反应的精确随机模拟。物理化学学报。81(25),2340-2361。

介绍了R2014a