主要内容

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,然后继续模拟,直到最后一个时间点int_output

simdata= F (φ资源描述使用输入参数φ而且资源描述.的变量之一,使用此签名只能指定输出时间资源描述.中的任何数据行资源描述因变量列在哪里Values被忽略。

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

输入参数

φ

下列其中一项:

  • 空数组[]或空单元格数组{},即使用基线初始值执行模拟,即参数的属性SimFunction对象,而不改变它们。

  • 大小矩阵年代——- - - - - -P,在那里年代要执行的模拟次数和P中是否指定了参数的个数参数个数当你打电话的时候createSimFunction构建F.的对应行中指定的参数执行每个模拟φ

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

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

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

φ指定为1——- - - - - -P1——- - - - - -V矩阵(或场景对象,则所有模拟都使用相同的参数,并且模拟的数量由t_stopu,或t_output参数按此顺序。例如,如果φ而且t_stop单排和u矩阵的大小N——- - - - - -DoseTargets,则模拟次数确定为N

φ指定为SimBiology。场景对象,模拟所有场景。在设置场景的值之前应用变量。

t_stop

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

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

u

  • 空数组[]除非您指定,否则在模拟过程中不施加剂量φ作为一个场景对象,该对象的项中定义了剂量。

  • 表格剂量信息的两三个变量包含ScheduleDose数据(ScheduleDose表),即剂量时间、剂量量和剂量率(可选)。表变量的名称如下。

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

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

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

    此表可以有多行,其中每行表示在指定的剂量时间内应用于剂量目标的剂量,如果可用,则具有指定的剂量和速率。

  • 表格一行5个变量包含RepeatDose数据(RepeatDose表)。剂量率变量是可选的。变量的命名如下。

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

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

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

    提示

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

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

  • 大小为S × N的Cell数组,其中S是模拟的次数,N是剂量目标的数量。每个单元格代表一个表。S等于里面的行数φ

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

  • 如果φ也是场景对象中剂量的总和场景对象的列数u必须等于的属性SimFunction对象。的创建过程中指定的剂量信息SimFunction对象必须与在执行该对象时指定的剂量信息一致。元素的元素总数属性等于输入的任何剂量的组合场景对象和剂量剂量输入参数createSimFunction

  • 如果φ不是场景对象的列数(N)在单元格数组中u必须等于的属性SimFunction对象。剂量表的顺序也必须与中给药物种的顺序相匹配createSimFunction.也就是说,SimBiology假设的列之间一一对应u剂量目标在的属性SimFunction对象的第一列中的剂量(剂量表)u是应用于第一剂量目标在财产等等。

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

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

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

t_output

  • 应用于所有模拟的单调增加输出时间的向量

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

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

资源描述

表格数据集(统计和机器学习工具箱)其中包含时间和剂量信息,如组标签、自变量、因变量、量和速率。必须将表或数据集的变量命名为“集团”、“时间”、“DEPENDENTVAR1’,‘DEPENDENTVAR2’,……‘AMOUNT1’,‘RATE1’,‘AMOUNT2’,‘RATE2’,…….每个剂量的速率变量是可选的。

如果SimFunction对象的属性F为空时,则不需要与数量和速率相关的变量。组的数目资源描述必须等于行数,或者场景数,在φ.的综合给药信息φ,如果φ是一个SimBiology。场景对象中的金额和速率列的数量资源描述必须等于对象的属性F.如果资源描述有其他列,则忽略它们。

如果UnitConversion时,为每个变量指定一个单位。单位“数量”变量必须与目标物种的维度一致。请参见input参数的描述u获取详细信息。

输出参数

simdata

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

T

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

Y

二维数值矩阵的单元数组。我的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

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

TimeUnits

表示时间单位的字符向量。

例子

全部折叠

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

加载葡萄糖-胰岛素反应模型。关于型号的详细信息,请参见背景部分模拟葡萄糖-胰岛素反应

sbioloadproject (“insulindemo”“m1”

模型包含不同的初始条件,存储在不同的变量中。

变量= getvariant(m1);

获取2型糖尿病患者的初始条件。

Type2 =变体(1)
type2 = SimBiology变体- 2型糖尿病(不活跃)内容索引:类型:名称:属性:值:1参数血浆容量…取值1.49 2参数k1取值0.042 3参数k2取值0.071 4参数血浆体积…参数值0.04 5参数m1参数值0.379 6参数m2参数值0.673 7参数m4参数值0.269 8参数m5参数值0.0526 9参数m6参数值0.8118 10参数取值0.6 11参数kmax取值0.0465 12参数kmin取值0.0076 13参数kbs取值0.023 14参数kgri取值0.0465 15参数f取值0.9 16参数a取值6e-05 17参数b取值0.68 18参数c取值0.00023 19参数d取值0.09 20参数kp1取值3.09 21参数kp2取值0.0007 22参数kp3取值0.005 23参数kp4取值0.0786 24参数ki取值0.0066 25参数[Ins Ind Glu U…1 26参数Vm0值4.65 27参数Vmx值0.034 28参数Km值466.21 29参数p2U值0.084 30参数K值0.99 31参数alpha值0.013 32参数beta值0.05 33参数gamma值0.5 34参数ke1值0.0007 35参数ke2值269 36参数基础等离子体G…值164.18 37参数基底血浆I…价值54.81

抑制在模拟过程中发出的信息警告。

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

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

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

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

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

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

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

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

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

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

将剂量信息转换为表格格式。

mealTable = getttable (singleMeal);

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

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

图中包含一个轴对象。带有标题States vs . Time的axes对象包含2个line类型的对象。这些对象表示葡萄糖外观。血浆Glu Conc,胰岛素分泌。等离子体合成。

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

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

图中包含一个轴对象。带有标题States vs . Time的axes对象包含2个line类型的对象。这些对象表示葡萄糖外观。血浆Glu Conc,胰岛素分泌。等离子体合成。

使用变体执行扫描

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

选择要扫描的变体。

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

检查每个变量中存储了哪些模型参数。

varToScan (1)
ans = SimBiology Variant - Low insulin sensitivity (inactive)内容索引:类型:名称:属性:值:1参数Vmx值0.0235 2参数kp3值0.0045
varToScan (2)
ans = SimBiology Variant - High insulin sensitivity (inactive)内容索引:类型:名称:属性:值:1参数Vmx值0.094 2参数kp3值0.018

的两个变量都存储替代值Vmx而且kp3参数。在创建SimFunction对象时,需要将它们指定为输入参数。

创建一个SimFunction对象来扫描变量。

variantScan = createSimFunction(m1,{“Vmx”“kp3”},...【Plasma Glu Conc】《等离子体》},“剂量”);

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

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

图中包含一个轴对象。带有标题States vs . Time的axes对象包含4个类型为line的对象。这些对象表示运行1 -葡萄糖外观。血浆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 ,在那里x而且z是物种和c是正向速率常数。

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

sbioloadprojectradiodecay

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

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

定义四种不同初始数量的物种x进行扫描。行数表示模拟的总数,每个模拟使用向量的每行中指定的参数值。

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

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

sbioplot (f(φ,20));

图中包含一个轴对象。带有标题States vs . Time的axes对象包含8个类型为line的对象。这些对象代表运行1 - x,运行1 - z,运行2 - x,运行2 - z,运行3 - x,运行3 - z,运行4 - x,运行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));

图中包含一个轴对象。带有标题States vs . Time的axes对象包含6个类型为line的对象。这些对象代表运行1 - x,运行1 - z,运行2 - x,运行2 - z,运行3 - x,运行3 - z。

你也可以在不同的时间指定不同的剂量。

D1 =表(5,100);d1.Properties。VariableNames = {“时间”“数量”};d1.Properties。VariableUnits = {“第二”“分子”};D2 =表(10,300);d2.Properties。VariableNames = {“时间”“数量”};d2.Properties。VariableUnits = {“第二”“分子”};D3 =表(15,600);d3.Properties。VariableNames = {“时间”“数量”};d3.Properties。VariableUnits = {“第二”“分子”};

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

sbioplot (f(φ20 {d1、d2、d3}));

图中包含一个轴对象。带有标题States vs . Time的axes对象包含6个类型为line的对象。这些对象代表运行1 - x,运行1 - z,运行2 - x,运行2 - z,运行3 - x,运行3 - z。

还可以定义剂量表的单元格数组。

U = cell(3,1);Dosetime = [5 10 15];剂量= [200 200 200];U {1} = table(dosetime',dose');{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));

图中包含一个轴对象。带有标题States vs . Time的axes对象包含6个类型为line的对象。这些对象代表运行1 - x,运行1 - z,运行2 - x,运行2 - z,运行3 - x,运行3 - z。

参考文献

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

版本历史

在R2014a中引入