主要内容

createSimFunction(模型)

创建SimFunction对象

描述

例子

F= createSimfunction(模型参数个数可见服用的)创造一个SIMFUNCTIP对象F你可以像函数句柄一样执行。的参数个数可见参数定义函数的输入和输出F当它被执行时,并且服用定义物种的剂量信息。请参阅SIMFUNCTIP对象有关如何执行的详细信息F

例子

F= createSimfunction(模型参数个数可见服用变体的)创造一个SIMFUNCTIP对象,应用存储的值变体,变体对象的向量,作为模型基线值。

例子

F= createSimfunction(___名称,值的)使用一个或多个指定的其他选项名称,值配对参数。

笔记

  • 忽略模型的活性剂量和变体时F被执行。

  • F在创建后是不可变的。

  • F除非设置,否则在第一个函数执行时自动加速AutoAccelerate.如果希望在部署应用程序中加速对象,则手动加速该对象。

输入参数

全部折叠

Simbiology模型,指定为素质学模型对象

函数使用相同的Configset.通过制作副本的设置Configset.对象模型对象。然而,该函数忽略以下内容Configset.设置:Statestolog.OutputTimes停止, 和SensitivityAnalysisOptions因为这些设置是由函数的其他输入提供的。

SimFunction的输入F,指定为字符向量,字符向量的单元格数组,空小区数组{}, 或者SimBiology。场景对象。字符向量表示定义输入的模型数量(物种、隔间或参数)的名称F.使用空单元格数组{}或空场景目的simbiology.scenarios.prevey()创建一个SIMFUNCTIP对象它没有参数。

要毫不含糊地命名型号数量,请使用限定名称,其中包含隔间名称。要命名反作用范围的参数,请使用反应名称限定参数。如果名称不是有效的matlab®变量名称,按方括号括起来[反应1]。[参数1]

SimFunction的输出F,指定为字符向量或字符向量阵列。字符向量代表模型量(种类,隔间或参数)的名称或可观测的对象的输出F

给定物种或剂量对象,指定为字符向量,字符向量的细胞阵列,剂量对象的矢量或空阵列[]

如果是[],没有物种被剂量在模拟期间,除非你指定场景具有在其条目中定义的剂量的对象。

如果它是字符向量的小区数组,则它必须是1-by-N.阵列,其中N.是给药的数量。如果打算使用,您可以使用重复的物种名称多剂量当您运行SIMF功能时,对于相同的物种F.仅使用时,物种名称不包含有关剂量特性的信息。如果您有一个包含的剂量对象参数化属性如,使用剂量对象作为输入,而不仅仅是物种名称,以便将此类参数信息传递给创建的SimFunctionF

如果它是剂量对象的矢量,它必须是1-by-N.向量,N.是剂量对象的数量。如果剂量对象的属性具有非默认数值,则将忽略这些值并发出警告。只有TargetName.durationParameTername.LagParameterName, 和参数化属性用于创建SimFunction对象F,也就是说,定义服用的属性F.详细了解如何服用属性表被填充,查看财产摘要

您在创建期间指定的给药信息simfunction.对象必须与您在执行对象的执行期间指定的给药信息一致。换句话说,元素的数量服用的属性simfunction.F必须等于输入的剂量之和场景对象φ和剂量在输入参数执行对象时。

替代模型值,指定为变量对象的变量或向量。这些值应用于模型基线值时simfunction.创建对象。如果有多个variants指的是相同的模型元素,则使用最后一次发生。

名称 - 值参数

指定可选的逗号分隔的对名称,值参数。姓名参数名和价值是相应的价值。姓名必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值

例子:'使用指定',真实指定执行SIMFUNCTIONF在平行下。

执行SimFunction的标志F并行,指定为逗号分隔的配对组成'使用指惯'真的或者.如果真的并行计算工具箱™ 如果可用,则sim函数F并行执行。

例子:'使用指惯'真的

标志加速对模型的第一次评价simfunction.对象,指定为逗号分隔的对,由“AutoAccelerate”真的或者

将值设置为如果你有一个模型,因为模型的加速可能会比模型的实际模拟花费更长的时间,所以要快速模拟。

例子:“AutoAccelerate”

灵敏度输出系数,指定为逗号分隔对,由“SensitivityOutputs”以及字符向量的单元格数组。字符向量是需要计算灵敏度的模型数量(物种和参数)的名称。默认为{}意思是没有输出因子。输出因子是解释的时间依赖衍生物的分子SimBiology的敏感性分析

使用关键字“所有”或者“全部”将所有型号的数量指定为灵敏度输出。然而,{'全部'}表示名为的型号数量全部在模型中。[“全部”,“x”]将灵敏度输入因子或输出因子设置为命名的物种全部X

您必须指定两者“SensitivityOutputs”'sensitivity inpuls'用于敏感性计算的名称值对参数。

例子:“SensitivityOutputs”“所有”

灵敏度输入因子,指定为逗号分隔对组成'sensitivity inpuls'以及字符向量的单元格数组。字符向量是关于您想要计算敏感性的模型数量(种类,隔间和参数)的名称。默认为{}这意味着没有输入因素。输入因子是时间相关的导数的分母SimBiology的敏感性分析

使用关键字“所有”或者“全部”将所有型号的数量指定为灵敏度输出。然而,{'全部'}表示名为的型号数量全部在模型中。[“全部”,“x”]设置指定物种的灵敏度输入或输出全部X

您必须指定两者“SensitivityOutputs”'sensitivity inpuls'用于敏感性计算的名称值对参数。

例子:'sensitivity inpuls'{“Reaction1.c1”、“Reaction1.c2”}

计算灵敏度的归一化,指定为逗号分隔对,由“SensitivityNormalization”“没有”“一半”, 或者“全部”

  • “没有”—不规格化(默认)

  • “一半”-只对分子进行标准化

  • “全部”- 完全献血化

有关详细信息,请参阅归一化

例子:“SensitivityNormalization”“全部”

输出参数

全部折叠

SimFunction,返回为SIMFUNCTIP对象或者SimFunctionSensitivity对象.你可以执行F比如函数句柄。

F是A.SimFunctionSensitivity对象如果您指定非空“SensitivityOutputs”'sensitivity inpuls'名称-值对参数。

例子

全部折叠

这个例子使用了一个具有一级反应的放射性衰变模型 D. Z. D. T. = C X ,在那里XZ.是物种和C是正速率常数。

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

sbioloadproject.radiodecay

创建一个SIMFUNCTIP对象,指定参数Reaction1.c和物种X作为功​​能的输出没有给药。

f = createSimFunction (m1,“Reaction1.c”“x”[])
f = SimFunction参数:名称值类型单位__________________________________________________________________________________________________________________________________________观察到:名称类型单位________________ ____________ {'x'} {semies'{'分子'}给定:无时髦:第二个

如果UnitConversion.选项被设置为simfunction.目的F创建时,该表不显示模型数量的单位。

为了说明这一点,首先设置UnitConversion.选择

c = getconfigset (m1);cs.CompileOptions.UnitConversion = false;

创建simfunction.对象,并注意变量名为单位就消失了。

f = createSimFunction(m1, {)“Reaction1.c”}, {“x”},[])
f = simfunction参数:名称值类型_______________ _____ _____________ {'ression1.c'} 0.5 {'参数'}观察到:名称类型_____ _________ {'x'} {'steies'}给人:没有

如果模型中的任何物种正在被剂量化,则将剂量化物种的名称指定为最后一个参数。例如,如果物种X正在提醒,将其指定为最后一个参数。

f = createSimFunction(m1, {)“Reaction1.c”}, {“x”},“x”的)
f = SimFunction参数:名称值类型_______________ _____ _________________________________________________________________观察到

一旦simfunction.对象创建时,可以像函数句柄一样执行它,并执行参数扫描(如果并行计算工具箱™可用,则并行执行)、蒙特卡罗模拟,并使用多个或向量化剂量进行扫描。看到SIMFUNCTIP对象更多的例子。

此示例创建一个simfunction.对象使用a使用的给药信息重复剂量或者scheduldose.对象或这些对象的向量。但是,如果任何剂量对象包含数据如开始时间, 和,将忽略此类数据,并发出警告。仅使用数据(如果可用)TargetName.LagParameterName, 和durationParameTername.剂量对象。

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

sbioloadproject.radiodecay

创建一个RepeatDose对象并指定其属性。

rdose = sbiodose('rd');rdose.targetName =.“x”;rdose.StartTime=5;rdose.TimeUnits='第二';rdose。数量= 300;rdose。AmountUnits ='分子';rdose。率=1;rdose。率单位=“分子/秒”;rdose。间隔= 100;rdose。RepeatCount = 2;

为模型添加LAG参数和持续时间参数。

lagpara = addparameter(m1,'lp');lagPara。价值=1;lagPara。价值单位='第二';duropara = addparameter(m1,“迪拜”);duraPara。价值=1;duraPara。价值单位='第二'

将这些参数设置为剂量对象。

rdose.LagParameterName='lp';rdose。DurationParameterName =“迪拜”

创建一个simfunction.目的F使用重复剂量目的rdose.你刚刚创造的。

f = createImfunction(m1,{“Reaction1.c”}, {“x”“z”},rdose)
警告:DOSED中的一些Dose对象有数据。该数据将被忽略。在SimFunction > > SimFunction。simfunction.一种T.847 In SimFunction>SimFunction.createSimFunction at 374 f = SimFunction Parameters: Name Value Type Units _____________ _____ ___________ __________ 'Reaction1.c' 0.5 'parameter' '1/second' Observables: Name Type Units ____ _________ __________ 'x' 'species' 'molecule' 'z' 'species' 'molecule' Dosed: TargetName TargetDimension __________ _______________________________ 'x' 'Amount(e.g. mole or molecule)' DurationParameterName DurationParameterValue _____________________ ______________________ 'dp' 1 DurationParameterUnits LagParameterName ______________________ ________________ 'second' 'lp' LagParameterValue LagParameterUnits _________________ _________________ 1 'second'

出现警告消息,因为rdose.对象包含数据(开始时间)被忽略createImfunction.方法

此示例显示如何执行的不同签名SIMFUNCTIP对象模拟和扫描Gillespie[1]描述的Lotka-Volterra(捕食者-食饵)模型的参数。

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

sbioloadproject.lotka.

创建一个simfunction对象FC1.C2.作为要扫描的输入参数,和Y1.Y2.作为功​​能的输出没有给药。

f = createImfunction(m1,{'反应1.C1'“Reaction2.c2”}, {'y1'“日元”},[])
f = SimFunction参数:名称值类型________________ ____________________________________0.01物种'} {'y2'} {'speies'}给人:没有

定义一个输入矩阵,其中包含每个参数的值(C1.C2.)每个模拟。行数表示仿真总数,每个模拟使用每行中指定的参数值。

Phi = [10 0.01;十0.02);

运行模拟直到停止时间为5并绘制仿真结果。

sbioplot (f(φ,5));

图中包含一个轴对象。标题为States versus Time的axes对象包含4个类型为line的对象。这些对象表示运行1  -  Y1,运行1  -  Y2,运行2  -  Y1,运行2  -  Y2。

您还可以为每个模拟指定不同的停止时间的向量。

t_stop =(3、6);sbioplot (f(φ,t_stop));

图中包含一个轴对象。标题为States versus Time的axes对象包含4个类型为line的对象。这些对象表示运行1  -  Y1,运行1  -  Y2,运行2  -  Y1,运行2  -  Y2。

接下来,将输出时间指定为向量。

t_输出=0:0.1:5;sbioplot(f(φ,[],t_输出));

图中包含一个轴对象。标题为States versus Time的axes对象包含4个类型为line的对象。这些对象表示运行1  -  Y1,运行1  -  Y2,运行2  -  Y1,运行2  -  Y2。

将输出时间指定为传感器的单元格数组。

t_输出={0:0.01:3,0:0.2:6};sbioplot(f(phi,[],[],t_输出));

图中包含一个轴对象。标题为States versus Time的axes对象包含4个类型为line的对象。这些对象表示运行1  -  Y1,运行1  -  Y2,运行2  -  Y1,运行2  -  Y2。

这个例子展示了如何计算Lotka-Volterra模型中某些物种的敏感性Simfunctionsity对象。

加载示例项目。

sbioloadproject.lotka.

定义输入参数。

params = {'反应1.C1'“Reaction2.c2”};

定义观察到的物种,这是模拟的输出。

观察到= {'y1'“日元”};

创建一个Simfunctionsity对象。将敏感性输出因子设置为所有物种(Y1.Y2.)指定的可见论证和输入因素的那些参数个数参数(C1.C2.),将名称-值对参数设置为“所有”

f = CreateSimfunction(M1,Params,Abservables,[],“SensitivityOutputs”“所有”'sensitivity inpuls'“所有”“SensitivityNormalization”“全部”的)
f = SimFunction参数:名称值类型________________ ____________________________________0.01物种'} {'y2'} {'y2'}给人:没有敏感性输入因子:名称类型________________ _____________ {'ression1.c1'} {'ression'} {'ression2.c2'} {'参数'}灵敏度输出因素:名称类型______ ___________ { 'Y1'} { '种'} { 'Y2'} { '种'}灵敏度正常化:全部

通过执行对象来计算敏感性C1.C2.分别设置为10和0.1。将输出次数从1设置为10。T.包含时间点,y包含仿真数据,并且sensMatrix是含有敏感性的敏感性矩阵Y1.Y2.关于C1.C2.

[t,y,sensMatrix]=f([10,0.1],[],1:10);

检索时间点5的灵敏度信息。

temp = sensmatrix {:};sensmatrix2 = temp(t {:} == 5,:,:);sensmatrix2 =挤压(Sensmatrix2)
sensmatrix2 =2×237.6987 -6.8447 -40.2791 5.8225

行的行Sensmatrix2.表示输出因子(Y1.Y2.).列表示输入因子(C1.C2.).

S. E. N. S. M. 一种 T. R. 一世 X 2 = [ y 1 C 1 y 2 C 1 y 1 C 2 y 2 C 2 ]

将停止时间设置为15,无需指定输出时间。在这种情况下,默认情况下输出时间是求解器时间点。

sd = f([10,0.1],15);

的计算灵敏度SimData目的SD.

[t、y、输出、输入]= getsensmatrix (sd);

绘制物种的敏感性图Y1.Y2.关于C1.

图;情节(t y (:,: 1));传奇(输出);标题(物种y1和y2对参数c1的敏感性);Xlabel('时间');ylabel('灵敏度');

图中包含一个轴对象。以物种y1和y2关于参数c1的敏感性为标题的轴对象包含2个类型为line的对象。这些对象代表y1 y2。

绘制物种的敏感性图Y1.Y2.关于C2.

图;情节(t y (:,: 2));传奇(输出);标题('物种y1和y2对参数c2的敏感性');Xlabel('时间');ylabel('灵敏度');

图中包含一个轴对象。标题为物种y1和y2关于参数c2敏感性的轴对象包含2个类型为line的对象。这些对象代表y1 y2。

或者,您可以使用sbioplot.

SBIOPLOT(SD);

图中包含一个轴对象。具有标题状态与时间的轴对象包含6个类型线的对象。这些物体代表Y1,Y2,D [Y1] / D [反应1.C1],D [Y2] / D [反应1.C1],D [Y1] / D [反应2.C2],D [Y2] / D [反应2.c2]。

您还可以使用计算敏感性的时间积分绘制灵敏度矩阵Y1.Y2..绘图表示Y1.Y2.C1.C2.

[〜,进出] =尺寸(y);结果=零(进出);我= 1:在j = 1:结果(i,j)= trapz(t(:),abs(y(:,i,j)));结束结束图;hbar = bar(结果);haxes = hbar(1).parent;haxes.xtick = 1:长度(输出);haxes.xticklabel =输出;传奇(投入,'地点'“NorthEastOutside”);ylabel('灵敏度');

图中包含一个轴对象。axis对象包含两个bar类型的对象。这些对象代表了反应式1。c1, Reaction2.c2。

该实施例显示了如何模拟正常和糖尿病受试者的葡萄糖胰岛素反应。

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

sbioloadproject ('insulindemo''m1'的)

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

变体= getFariant(m1);

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

type2 = Variants(1)
Type2 = Simbiology Variant  -  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参数肝外速4.值0.6 11参数kmax值0.0465 12参数kmin值0.0076 13参数kabs值0.023参数KGRI值0.0465 15参数F值0.9 16参数值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.076参数kp4值0.078624参数ki值0.0066 25参数[Ind 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 PAR.一种meter alpha Value 0.013 32 parameter beta Value 0.05 33 parameter gamma Value 0.5 34 parameter ke1 Value 0.0007 35 parameter ke2 Value 269 36 parameter Basal Plasma G... Value 164.18 37 parameter Basal Plasma I... Value 54.81

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

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

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

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

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

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

normsim = createImfunction(m1,{},......{'[plasma glu chec]'“(血浆Ins浓缩的)”},'剂量'的)
normsim = Simfunction参数:观察到:名称类型单位__________________________________________________________picomole/liter' } Dosed: TargetName TargetDimension __________ _____________________ {'Dose'} {'Mass (e.g., gram)'} TimeUnits: hour

对于糖尿病患者,使用变体指定初始条件Type2.

diabSim=createSimFunction(m1,{},......{'[plasma glu chec]'“(血浆Ins浓缩的)”},'剂量',type2)
函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数:函数参数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数参数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数参数:函数参数:函数:函数:函数参数:函数参数:函数:函数参数:函数:函数:函数参数:函数:函数参数:函数参数:函数:函数参数:函数参数:函数参数:函数:函数参数:函数参数:函数:函数参数:函数:函数参数:函数:函数参数:函数参数:函数:函数:函数:函数:函数参数:函数参数:函数:函数:函数:函数:函数参数:参数:参数:参数:函数:函数:函数:函数:函数:函数:参数:参数:参数:参数:参数:参数:参数:参数:函数参数:函数:函数:函数:函数:尺寸{质量(例如,克)}时间单位:小时

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

Singlemeal = SbioSelect(M1,'姓名''单餐');

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

含餐= gettable(单片机);

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

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

图中包含一个轴对象。具有标题状态与时间的轴对象包含2个类型的2个对象。这些物体代表葡萄糖外观。胰岛素分泌,胰岛素分泌。

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

SBIOPLOT(贴膜([],24,含餐));

图中包含一个轴对象。具有标题状态与时间的轴对象包含2个类型的2个对象。这些物体代表葡萄糖外观。胰岛素分泌,胰岛素分泌。

使用Variants执行扫描

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

选择要扫描的变体。

varToScan = sbioselect (m1,'姓名'......{'低胰岛素敏感性''高胰岛素敏感性'});

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

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

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

创建一个simfunction对象以扫描变量。

variantScan=createSimFunction(m1{'vmx'“kp3”},......{'[plasma glu chec]'“(血浆Ins浓缩的)”},'剂量');

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

SBIOPLOT(VariantScan(Vartocan,24,24次,用餐));

图中包含一个轴对象。标题为States versus Time的axes对象包含4个类型为line的对象。这些对象表示Run 1 - Glucose的外观。血浆Glu Conc, Run 1 -胰岛素分泌。血浆in Conc, Run 2 -葡萄糖出现。血浆Glu Conc, Run 2 -胰岛素分泌。血浆Ins浓缩的。

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

恢复警告设置。

警告(warnSettings);

工具书类

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

扩展能力

在R2014A介绍