主要内容

SimFunction对象

函数接口执行SimBiology模型

描述

SimFunction对象提供了一个接口,允许您执行SimBiology®模型一个函数和一个工作流执行参数扫描(并行如果并行计算工具箱™可用),蒙特卡罗模拟,与多个或矢量化剂量扫描。自SimFunction对象可以执行像一个函数处理,您可以定制它集成SimBiology与其他MATLAB模型®s manbetx 845产品和其他定制的分析(如视觉预测检查)。

使用createSimFunction方法构建SimFunction对象。SimFunction对象是不可变的一旦创建,在第一个函数执行自动加速。

语法

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

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

simdata= F (φ,t_stop,u)使用输入参数模拟运行φ,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 (φ,资源描述)使用输入参数φ资源描述。使用这个签名只允许您指定输出倍的变量之一资源描述。任何数据行资源描述所有因变量列在哪里值将被忽略。

(T,Y)= F (_)返回T单元阵列的数值向量,Y单元阵列的二维数字矩阵,使用任何输入参数在前面的语法。

输入参数

φ

下列之一:

  • 空数组[]或空单元阵列{},这意味着执行模拟使用基线初始值,也就是说,中列出的值参数财产的SimFunction对象,在不改变它们。

  • 矩阵的大小年代——- - - - - -P,在那里年代模拟执行的数量和吗P参数中指定的数量吗参数个数论证你来电话时createSimFunction构建F。每个执行仿真与参数中指定相应的行φ

  • 年代——- - - - - -V矩阵变量的对象或一个细胞列向量的长度年代由一个行向量,其中每个元素对象的变体。年代是数量的模拟执行,V不同对象的数量。这些变异是只允许修改SimFunction输入参数,指定为模型元素参数个数你打电话给我的时候输入参数createSimFunction。换句话说,你必须指定变量参数作为输入参数,当您创建SimFunction对象。任何SimFunction输入参数不变量中指定使用基线初始值。

    一行内变异,如果多个条目引用相同的模型元素,最后出现是用于模拟。

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

φ被指定为一个1——- - - - - -P1——- - - - - -V矩阵(或场景对象只有一个场景),然后所有模拟使用相同的参数,模拟的数量决定的t_stop,u,或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应用于第一剂量目标财产等等。

  • th剂量为j目标是忽略了如果th剂量u {i, j} = []

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

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

t_output

  • 向量应用到所有的单调递增输出倍模拟

  • 单元阵列包含一个时间向量应用到所有模拟

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

资源描述

数据集(统计和机器学习的工具箱)具有时间和剂量等信息标签,自变量,因变量(s)、数量(s)和速度(s)。你必须表或数据集的名称的变量“集团”、“时间”、“DEPENDENTVAR1’,‘DEPENDENTVAR2’,……‘AMOUNT1’,‘RATE1’,‘AMOUNT2’,‘RATE2’,……。每个剂量率变量是可选的。

如果SimFunction对象的属性F是空的,然后量——rate-related变量并不是必需的。团体的数量资源描述必须等于的行数,或场景的数量,在吗φ。合并后的定量信息φ,如果φ是一个SimBiology.Scenarios对象,数量和比率列的数量资源描述必须等于数量的剂量对象的属性F。如果资源描述有额外的列,它们将被忽略。

如果UnitConversion,为每个变量指定一个单元。的单位“数量”变量必须在尺寸上一致的目标物种。看到输入参数的描述u获取详细信息。

输出参数

simdata

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

T

单元阵列包含一个数字矢量的大小S x 1年代是模拟的数量。T的第i个元素包含第i个模拟的时间点。

Y

单元阵列的二维数字矩阵。我的th的元素Y包含我的数据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

合乎逻辑的。真时,模型是加速的第一评价SimFunction对象。

这个属性是只读的。

DependentFiles

单元阵列特征向量包含模型依赖的文件的名称。此属性用于部署。这个属性是只读的。

TimeUnits

特征向量代表了时间单位。

例子

全部折叠

这个例子展示了如何为正常但血糖-胰岛素反应模拟和糖尿病科目。

负载glucose-insulin响应的模型。模型的详细信息,请参阅背景部分但血糖-胰岛素响应模拟

sbioloadproject (“insulindemo”,“m1”)

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

变量= getvariant (m1);

得到2型糖尿病患者的初始条件。

类型2 =变体(1)
类型2 = SimBiology变体- 2型糖尿病(不活跃)ContentIndex:类型:名称:房地产:价值:1参数等离子体体积……价值1.49 - 2参数k1值0.042 - 3参数值0.071 - 4参数等离子体体积……价值0.04 - 5参数m1值0.379 6参数m2值0.673 7参数m4值0.269 m6 8参数m5值0.0526 9参数值0.8118 10参数肝Extrac……价值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参数kp1值3.09 21参数kp2值0.0007 22个参数kp3值0.005 23参数kp4值0.0786 24参数ki值0.0066 25参数(Ins印第安纳Glu U…值1 26 27参数Vmx值参数Vm0值4.65 466.21 0.034 28公里参数值29参数p2U值0.084 30参数K值0.99 31参数α值0.013 32参数β值0.05 33参数γ值0.5 34参数ke1值0.0007 35参数ke2值269 36参数基础等离子体G……值164.18 37参数基础等离子体我…价值54.81

抑制一个信息发出警告,在模拟。

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

但血糖-胰岛素响应创建SimFunction对象来模拟正常和糖尿病受试者。

  • 指定一个空数组{}第二个输入参数来表示模型将模拟使用基本参数值(也就是说,没有参数扫描将执行)。

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

  • 指定物种剂量前的物种。这个物种代表初始葡萄糖浓度的模拟。

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

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

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

选择一个剂量代表一餐78克葡萄糖的模拟。

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

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

mealTable =可以获得的(singleMeal);

但血糖-胰岛素响应模拟正常的24小时。

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

图包含一个坐标轴对象。坐标轴对象与标题和时间包含2线类型的对象。这些对象代表葡萄糖外观。等离子体Glu浓缩的胰岛素分泌。血浆Ins浓缩的。

但血糖-胰岛素响应模拟糖尿病患者24小时。

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

图包含一个坐标轴对象。坐标轴对象与标题和时间包含2线类型的对象。这些对象代表葡萄糖外观。等离子体Glu浓缩的胰岛素分泌。血浆Ins浓缩的。

执行扫描使用变体

假设您想执行参数扫描使用变体数组,包含不同的初始条件对不同胰岛素缺陷。例如,模型m1变异,对应于低胰岛素敏感性和高胰岛素敏感性。你可以通过一个模拟的模型条件调用SimFunction对象。

选择要扫描的变体。

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

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

varToScan (1)
ans = SimBiology变体-低胰岛素敏感性(不活跃)ContentIndex:类型:名称:房地产:值:1参数Vmx值0.0235 - 2参数kp3值0.0045
varToScan (2)
ans = SimBiology变体-高胰岛素敏感性(不活跃)ContentIndex:类型:名称:房地产:值:1参数Vmx值0.094 - 2参数kp3值0.018

两个变量存储备用值Vmxkp3参数。你需要指定他们当你创建一个SimFunction对象作为输入参数。

创建一个SimFunction对象扫描变体。

variantScan = createSimFunction (m1, {“Vmx”,“kp3”},{“(等离子Glu浓缩)”,“(血浆Ins浓缩的)”},“剂量”);

模拟模型和阴谋的结果。运行1包括低胰岛素敏感性和仿真结果运行2高胰岛素敏感性。

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

图包含一个坐标轴对象。坐标轴对象与标题和时间包含4线类型的对象。这些对象代表运行1 -葡萄糖的外观。等离子体Glu浓缩的,跑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远期汇率是常数。

加载包含radiodecay模型的示例项目m1

sbioloadprojectradiodecay;

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

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

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

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

运行模拟,直到停止时间是20和仿真结果。

sbioplot (f(φ,20));

图包含一个坐标轴对象。坐标轴对象与标题和时间包含8线类型的对象。这些对象代表跑1 - x,跑1 - z,运行2 - x,运行2 - z,运行3 - x,运行3 - z, 4 - x,跑4 - z。

这个例子展示了如何模拟和扫描radiodecay模型的参数,而物种被给。

加载包含radiodecay模型的示例项目m1

sbioloadprojectradiodecay;

创建一个SimFunction对象f指定参数Reaction1.c扫描和物种x前作为一个目标。

f = createSimFunction (m1, {“Reaction1.c”},{“x”,“z”},{“x”});

定义一个标量剂量的200分子在三个时间点(5、10和15秒)。

dosetime = (5 10 15);剂量= (200 200 200);u =表(dosetime ', ');u.Properties。VariableNames = {“时间”,“数量”};u.Properties.VariableUnits={“第二”,“分子”};

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

φ= (0.1 0.2 0.5)';

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

sbioplot (f(φ20 u));

图包含一个坐标轴对象。坐标轴对象与标题和时间包含6行类型的对象。这些对象代表跑1 - x,跑1 - z,运行2 - x,运行2 - z, 3 - x,跑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(φ20 {d1、d2、d3}));

图包含一个坐标轴对象。坐标轴对象与标题和时间包含6行类型的对象。这些对象代表跑1 - x,跑1 - z,运行2 - x,运行2 - z, 3 - x,跑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} =表(dosetime2 ', dose2 ');{2}. properties。VariableNames = {“时间”,“数量”};{2}. properties。VariableUnits = {“第二”,“分子”};dosetime3 = (3 8 18);dose3 = (100 100 100);u{3} =表(dosetime3 ', dose3 ');{3}. properties。VariableNames = {“时间”,“数量”};{3}. properties。VariableUnits = {“第二”,“分子”};

模拟模型使用剂量表和阴谋的结果。

sbioplot (f(φ20 u));

图包含一个坐标轴对象。坐标轴对象与标题和时间包含6行类型的对象。这些对象代表跑1 - x,跑1 - z,运行2 - x,运行2 - z, 3 - x,跑3 - z。

引用

[1]Gillespie, D.T. (1977)。的随机模拟耦合化学反应。《物理化学》杂志上。81 (25),2340 - 2361。

版本历史

介绍了R2014a