SimFunction对象

执行SimBiology模型的类函数接口

描述

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

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

语法

如果您在呼叫时指定了任何剂量信息createSimFunction构建SimFunction对象F,然后F有以下语法。

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

simdata= F (phiu使用输入参数运行模拟phi,u

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

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

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

simdata= F (phitbl使用输入参数phitbl。使用此签名仅允许您将输出时间指定为的变量之一tbl。中的任何数据行tbl所有因变量列都有值将被忽略。

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

输入参数

phi

下列其中之一:

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

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

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

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

  • 标量模拟生物学。情景包含对象年代数量的场景。

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

phi指定为模拟生物学。情景对象,则模拟所有场景。在设置场景的值之前应用变量。

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

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

u

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

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

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

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

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

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

  • 桌子一行五个变量包含重复剂量资料(重复剂量表)。剂量率变量是可选的。按如下方式命名变量。

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

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

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

    提示

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

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

  • 大小为S-x-N的表格的单元格数组,其中S是模拟的数量,N是剂量目标的数量。每个单元格表示一个表格。S等于表中的行数phi

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

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

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

  • 第次剂量j如果出现以下情况,则忽略th剂量目标:u{i,j}=[]

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

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

t_output

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

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

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

tbl

桌子数据集包含时间和剂量信息,如组标签、自变量、因变量、数量和速率。必须将表或数据集的变量命名为‘组’、‘时间’、‘DEPENDENTVAR1’、‘DEPENDENTVAR2’、…、‘数量1’、‘比率1’、‘数量2’、‘比率2’、,。。。.每次剂量的速率变量是可选的。

如果属性的SimFunctionF为空,则不需要数量和速率相关的变量。中基团的数量tbl必须等于行数或场景数,在phi.综合剂量信息phi如果phi是一个模拟生物学。情景对象的数量和速率列的数量tbl必须等于中的剂量数对象的属性F.如果tbl如果有其他列,则将忽略这些列。

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

输出参数

simdata

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

T

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

Y

二维数值矩阵的单元数组th的元素Y包含I的数据th模拟。行数T{我}等于行数Y{i}

构造方法摘要

createSimFunction(模型) 创建SimFunction对象

方法总结

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

产权总结

参数

桌子变量命名:

  • “名字”

  • “价值”

  • “类型”

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

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

可见

桌子变量命名:

  • “名字”

  • “类型”

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

此表包含有关定义模型输出的模型数量(种类、隔间或参数)的信息SimFunction对象.此属性为只读。

桌子包含具有以下变量的剂量信息:

  • “TargetName”

  • “TargetDimension”(只有UnitConversion打开)

此外,该表还包含每个参数化属性的变量。对于每个参数化属性,将向该表中添加两个变量。第一个变量与属性名称同名,值为指定参数的名称。第二个变量的属性名称后缀为价值PropertyNameValue),该值为该参数的默认值。如果UnitConversion如果启用,则单位列也会添加名称PropertyNameUnits

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

TargetName TargetDimension 数量 金额价值 AmountUnits
“药物” 的质量(例如,克) “AmountParam” 10 毫克的
使用并行

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

UnitConversion

逻辑。如果为true:

  • 在执行过程中SimFunction对象,phi假设与?中规定的相应型号数量的单位相同params使用createSimFunction方法

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

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

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

此属性为只读。

AutoAccelerate

逻辑。如果为true,则在第一次评估SimFunction对象。

此属性为只读。

从属文件

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

例子

全部崩溃

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

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

SBIOLADP项目(“insulindemo”“m1”

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

变量= getvariant (m1);

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

类型2 =变体(1)
type2=SimBiology变体-2型糖尿病(非活动)ContentIndex:类型:名称:属性:值: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参数肝脏Extrac…V值0.6 11参数kmax值0.0465 12参数kmin值0.0076 13参数kabs值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参数胃葡萄糖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参数Km值466.21 30参数p2U值0.084 31参数K值0.99 32参数α值0.013 33参数β值0.05 34参数伽马值0.5 35参数ke1值0.0007 36参数ke2值269 37参数基础血浆G…值164.18 38参数基础血浆I…值54.81

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

warnSettings =警告(“关闭”“SimBiology:DimAnalysisNotDone\u MatlabFcn\u无量纲”);

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

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

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

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

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

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

diabSim=createSimFunction(m1,{},...“(等离子Glu浓缩)”“[Plasma Ins Conc]”},“剂量”类型2)
函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数:函数参数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数参数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数参数:函数参数:函数:函数:函数参数:函数参数:函数:函数参数:函数:函数:函数参数:函数:函数参数:函数参数:函数:函数参数:函数参数:函数参数:函数:函数参数:函数参数:函数:函数参数:函数:函数参数:函数:函数参数:函数参数:函数:函数:函数:函数:函数参数:函数参数:函数:函数:函数:函数:函数参数:参数:参数:参数:函数:函数:函数:函数:函数:函数:参数:参数:参数:参数:参数:参数:参数:参数:函数参数:函数:函数:函数:函数:尺寸{质量(如克)}

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

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

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

mealTable =可以获得的(singleMeal);

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

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

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

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

使用变体执行扫描

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

选择要扫描的变体。

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

检查每个变量中存储的模型参数。

varToScan (1)
ans=SimBiology变体-低胰岛素敏感性(非活性)内容索引:类型:名称:属性:值: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浓缩)”“[Plasma Ins Conc]”},“剂量”);

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

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

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

恢复警告设置。

警告(警告设置);

这个例子展示了如何从一级反应的放射性衰变模型中扫描物种的初始数量 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 '}{“物种”}{}“分子”前:没有

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

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

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

sbioplot (f(φ,20));

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

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

sbioloadprojectradiodecay

创建一个SimFunction对象f指定参数反应1.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={“第二”“分子”};

定义的参数值反应1.c扫描。

Phi = [0.1 0.2 0.5]';

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

sbioplot (f(φ20 u));

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

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});

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

u =细胞(3,1);Dosetime = [5 10 15];剂量= [200 200 200];u{1} =表(dosetime ', ');{1} . properties。VariableNames = {“时间”“数量”};u{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));

工具书类

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

介绍了R2014a