创建SimFunction对象
创建一个F
=createSimFunction(模型
,params
,可见
,剂量
)SimFunction对象
F
你可以像函数句柄一样执行。的params
和可见
参数定义函数的输入和输出F
当它被执行时,并且剂量
定义物种的剂量信息。看到SimFunction对象
有关如何执行的详细信息,请参阅F
.
当出现以下情况时,模型的有效剂量和变量将被忽略:F
被执行。
F
在创建后是不可变的。
F
在第一次执行函数时自动加速。但是,如果您希望在部署应用程序中加速对象,则可以手动加速该对象。
模型
- - - - - -SimBiology模型SimBiology模型,指定为SimBiology模型对象
.
params
- - - - - -sim函数的输入F
{}
|模拟生物学。情景
对象sim函数的输入F
,指定为字符向量、字符向量的单元格数组、空单元格数组{}
或模拟生物学。情景
对象。字符向量表示定义对象输入的模型数量(种类、分区或参数)的名称F
.使用空单元格数组{}
还是空的场景
对象SimBiology.Scenarios.empty()
创建一个SimFunction对象
它没有参数。
要明确地命名模型数量,请使用限定名称,其中包括单元的名称。若要命名反应作用域的参数,请使用反应名称来限定参数。如果名称不是有效的MATLAB®变量名,用方括号括起来,如[反应1]。[参数1]
.
剂量
- - - - - -剂量种类或剂量对象[]
剂量种类或剂量对象,指定为字符向量、字符向量单元阵列、剂量对象向量或空数组[]
.
如果它是[]
,没有物种被剂量在模拟期间,除非你指定场景
在其条目中定义了剂量的对象。
如果是字符向量的单元格数组,则它必须是1-x-N数组,在哪里N是剂量物种名称的数量。如果计划使用,可以使用重复的物种名称多剂当运行sim函数时,针对同一物种F
。仅使用剂量种类名称不包含有关剂量属性的信息。如果您的剂量对象包含参数化属性,例如数量
,使用剂量对象作为输入,而不仅仅是物种名称,将此类参数信息传输到创建的函数F
.
如果它是剂量对象的向量,则必须为1-x-N向量,在哪里N为剂量对象的数量。如果剂量对象具有非默认数值的属性,则忽略这些值并发出警告。只有TargetName
,DurationParameterName
,LagParameterName
和参数化属性用于创建SimFunction对象F
,即定义给
性质F
.详细了解如何给
属性表已填充,请参见产权总结.
的创建期间指定的剂量信息SimFunction
对象必须与您在对象执行期间指定的剂量信息一致给
性质SimFunction
F
必须等于输入中剂量的总和场景
反对phi
以及输入参数u
当你执行对象时。
变体
- - - - - -替代模型值替代模型值,指定为变量对象的变量或向量。这些值应用于模型基线值时SimFunction
创建对象。如果有多个变量引用同一个模型元素,则使用最后一次出现。
指定可选的逗号分隔的字符对名称、值
参数。名称
是参数名和价值
是对应的值。名称
必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家
.
“UseParallel”,对
指定执行SimFunctionF
同时。
“UseParallel”
- - - - - -执行SimFunction的标志F
并行错误的
(默认)|符合事实的
执行SimFunction的标志F
并行时,指定为逗号分隔对,由“UseParallel”
和符合事实的
或错误的
如果符合事实的
和并行计算工具箱™可用,SimFunctionF
并行执行。
例子:“UseParallel”
,符合事实的
“AutoAccelerate”
- - - - - -标志加速模型的首次评估SimFunction
符合事实的
(默认)|错误的
标志加速对模型的第一次评价SimFunction
对象,指定为逗号分隔对,由“AutoAccelerate”
和符合事实的
或错误的
.
将该值设置为错误的
如果你有一个模型,因为模型的加速可能会比模型的实际模拟花费更长的时间,所以要快速模拟。
例子:“AutoAccelerate”
,错误的
“SensitivityOutputs”
- - - - - -灵敏度输出因素{}
(默认)|字符向量的单元格数组|“全部”
灵敏度输出因子,指定为逗号分隔对组成“SensitivityOutputs”
和特征向量的单元格数组。特征向量是要计算其灵敏度的模型数量(物种和参数)的名称。默认值为{}
这意味着没有输出因素。输出因子是时间相关导数的分子SimBiology的敏感性分析.
使用关键字“全部”
或“所有”
将所有模型数量指定为灵敏度输出。但是,{'all'}
表示名为的模型数量全部的
在模型中。[“全部”、“x”]
为命名的物种设置灵敏度输入因子或输出因子全部的
和x
.
必须同时指定两者“SensitivityOutputs”
和“SensitivityInputs”
灵敏度计算的名称-值对参数。
例子:“SensitivityOutputs”
,“全部”
“SensitivityInputs”
- - - - - -灵敏度输入因子{}
(默认)|字符向量的单元格数组|“全部”
灵敏度输入因子,指定为逗号分隔对,包括“SensitivityInputs”
以及字符向量的单元格数组。角色向量是要计算灵敏度的模型数量(物种、隔间和参数)的名称。默认值是{}
这意味着没有输入因素。输入因子是时间相关的导数的分母SimBiology的敏感性分析.
使用关键字“全部”
或“所有”
将所有模型数量指定为灵敏度输出。但是,{'all'}
表示名为的模型数量全部的
在模型中。[“全部”、“x”]
将灵敏度输入或输出设置为所命名的物种全部的
和x
.
必须同时指定两者“SensitivityOutputs”
和“SensitivityInputs”
灵敏度计算的名称-值对参数。
例子:“SensitivityInputs”
,{“Reaction1.c1”、“Reaction1.c2”}
“SensitivityNormalization”
- - - - - -计算灵敏度的归一化“没有”
(默认)|的一半
|“满”
计算灵敏度的标准化,指定为逗号分隔对,包括“SensitivityNormalization”
和“没有”
,“一半”
或“满”
.
“没有”
-无规范化(默认)
“一半”
-只对分子进行标准化
“满”
-全脱维
有关详细信息,请参见规范化
.
例子:“SensitivityNormalization”
,“满”
F
——SimFunctionSimFunction
对象|SimFunctionSensitivity
对象SimFunction,返回为SimFunction对象
或SimFunctionSensitivity对象
.你可以执行F
就像一个函数句柄。
F
是一个SimFunctionSensitivity对象
如果指定非空“SensitivityOutputs”
和“SensitivityInputs”
名称-值对参数。
这个例子使用了一个具有一级反应的放射性衰变模型
,在那里x
和z
物种和c
是正速率常数。
加载包含放射性衰变模型的样例项目m1
.
sbioloadprojectradiodecay;
创建一个SimFunction对象
,指定参数反应1.c
和物种x
作为无剂量物种的功能输出。
f=createSimFunction(m1,“Reaction1.c”,“x”, [])
函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数:函数参数:函数参数:函数参数:函数:函数:函数参数:函数:函数参数:函数参数:函数:函数:函数函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数:函数名名名名名名名名名名名名名名名名名名名名名名值值:函数函数函数函数函数,厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄厄uuuuu{'x'}{'species'}{'molecular'}剂量:无
如果UnitConversion
选项被设置为错误的
当SimFunction
对象f
创建时,该表不显示模型数量的单位。
为了说明这一点,首先设置UnitConversion
选项错误的
.
c = getconfigset (m1);cs.CompileOptions.UnitConversion = false;
创建SimFunction
对象,并注意变量名为单位
消失了。
f=createSimFunction(m1{“Reaction1.c”},{“x”}, [])
f=SimFunction参数:名称值类型{Uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如果模型中的任何物种正在给药,请指定给药物种的名称作为最后一个参数x
,指定它为最后一个参数。
f=createSimFunction(m1{“Reaction1.c”},{“x”},“x”)
f=SimFunction参数:名称值类型{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
一旦SimFunction
对象创建时,可以像函数句柄一样执行它,并执行参数扫描(如果并行计算工具箱™可用,则并行执行)、蒙特卡罗模拟,并使用多个或向量化剂量进行扫描。看到SimFunction对象
更多的例子。
此示例创建了一个SimFunction
使用RepeatDose
或ScheduleDose
对象或这些对象的向量。但是,如果任何剂量对象包含以下数据:开始时间
,数量
和速度
,则忽略此类数据,并发出警告。只使用可用的数据TargetName
,LagParameterName
和DurationParameterName
剂量物体的。
加载包含放射性衰变模型的样例项目m1
.
sbioloadprojectradiodecay;
创建一个RepeatDose对象
并指定其属性。
rdose = sbiodose (“路”);rdose.TargetName=“x”;rdose。开始时间= 5;rdose。TimeUnits =“第二”;rdose。数量= 300;rdose。AmountUnits =“分子”;rdose。速度=1;rdose。速度单位=“分子/秒”;rdose。间隔= 100;rdose。RepeatCount = 2;
向模型中添加延迟参数和持续时间参数。
lagPara = addparameter (m1,“lp”);lagPara.Value=1;lagPara.ValueUnits=“第二”;duraPara=addparameter(m1,“迪拜”);duraPara。价值=1;duraPara。价值单位=“第二”;
将这些参数设置为剂量对象。
rdose。LagParameterName =“lp”;rdose。DurationParameterName =“迪拜”;
创建一个SimFunction
对象f
使用RepeatDose
对象红糖
你刚刚创造的。
f = createSimFunction (m1, {“Reaction1.c”},{“x”,“z”},rdose)
警告:DOSED中的一些Dose对象有数据。该数据将被忽略。在SimFunction > > SimFunction。SimFunction一个t847 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'
出现警告消息,因为红糖
对象包含数据(开始时间
,数量
,速度
)被忽略createSimFunction
方法。
的不同签名SimFunction对象
模拟和扫描Gillespie[1]描述的Lotka-Volterra(捕食者-猎物)模型的参数。
加载包含模型的示例项目m1
.
sbioloadproject洛特卡;
创建SimFunction对象f
具有c1
和c2
作为要扫描的输入参数,以及日元
和y2
作为无剂量物种的功能输出。
f = createSimFunction (m1, {“Reaction1.c1”,“Reaction2.c2”},{“日元”,“日元”}, [])
函数参数:函数函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数:函数:函数:函数,UU厄厄厄厄厄厄厄厄厄厄厄厄厄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄没有
定义包含每个参数值的输入矩阵(c1
和c2
)。行数表示模拟的总数,每个模拟使用每行中指定的参数值。
φ=[10 0.01;10 0.02];
运行模拟,直到停止时间为5,并绘制模拟结果。
sbioplot(f(phi,5));
您还可以为每个模拟指定一个表示不同停止时间的向量。
t_-stop=[3;6];sbioplot(f(phi,t_-stop));
接下来,将输出时间指定为向量。
t_output = 0:0.1:5;sbioplot (f(φ,[][],t_output));
将输出时间指定为向量的单元格数组。
T_output = {0:0.01:3, 0:0.2:6};Sbioplot (f(phi, [], [], t_output));
SimFunctionSensitivity
对象这个例子展示了如何计算Lotka-Volterra模型中某些物种的敏感性SimFunctionSensitivity
对象
加载示例项目。
sbioloadproject洛特卡;
定义输入参数。
params = {“Reaction1.c1”,“Reaction2.c2”};
定义观察到的物种,它们是模拟的输出。
可见= {“日元”,“日元”};
创建一个SimFunctionSensitivity
对象。将灵敏度输出因子设置为所有物种(日元
和y2
)在可见
参数中的参数和输入因子params
论据(c1
和c2
)通过将名称-值对参数设置为“全部”
.
f = createSimFunction (m1, params,可见,[],“SensitivityOutputs”,“全部”,“SensitivityInputs”,“全部”,“SensitivityNormalization”,“满”)
函数参数:函数函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数参数:函数:函数:函数:函数,UU厄厄厄厄厄厄厄厄厄厄厄厄厄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄俄没有Sensitivity Input Factors: Name Type ________________ _____________ {'Reaction1.c1'} {'parameter'} {'Reaction2.c2'} {'parameter'} Sensitivity Output Factors: Name Type ______ ___________ {'y1'} {'species'} {'y2'} {'species'} Sensitivity Normalization: Full
通过使用执行对象来计算灵敏度c1
和c2
分别设置为10和0.1。将输出时间设置为1到10。t
包含时间点,y
包含仿真数据,并且敏感矩阵
灵敏度矩阵是否包含的灵敏度日元
和y2
关于c1
和c2
.
[t y sensMatrix] = f (0.1 [10], [], [], 1:10);
检索时间点5的灵敏度信息。
temp = sensMatrix {:};sensMatrix2 = temp (t {:} = = 5::);sensMatrix2 =挤压(sensMatrix2)
sensMatrix2 =2×237.6987 -6.8447 -40.2791 5.8225
一排sensMatrix2
表示输出因子(日元
和y2
).列表示输入因子(c1
和c2
).
将停止时间设置为15,但不指定输出时间。在这种情况下,输出时间默认为解算器时间点。
sd=f([10,0.1],15);
的计算灵敏度SimData
对象sd
.
[t,y,输出,输入]=getsensmatrix(sd);
绘制物种的敏感度日元
和y2
关于c1
.
图;绘图(t,y(:,:,1));图例(输出);标题(物种y1和y2对参数c1的敏感性);包含(“时间”); 伊拉贝尔(“敏感性”);
绘制物种的敏感度日元
和y2
关于c2
.
图;情节(t y (:,: 2));传奇(输出);标题('物种y1和y2对参数c2的敏感性');包含(“时间”); 伊拉贝尔(“敏感性”);
或者,您可以使用斯比奥普洛特
.
sbioplot (sd);
你也可以用计算灵敏度的时间积分来绘制灵敏度矩阵日元
和y2
.情节表明日元
和y2
对……更敏感c1
比c2
.
[~,in,out]=大小(y);结果=零(in,out);为i = 1:为j=1:out结果(i,j)=trapz(t(:),abs(y(:,i,j));终止终止图形hbar=bar(结果);haxes=hbar(1)。父代;haxes.XTick=1:长度(输出);haxes.XTickLabel=输出;图例(输入,“位置”,“东北外”); 伊拉贝尔(“敏感性”);
本例显示了如何模拟正常和糖尿病受试者的葡萄糖-胰岛素反应。
加载葡萄糖-胰岛素反应模型。有关模型的详细信息,请参阅出身背景章节模拟葡萄糖-胰岛素反应.
SBIOLADP项目(“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\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,“名字”,“一餐”);
将剂量信息转换为表格格式。
可食=可食(单餐);
模拟正常受试者24小时的葡萄糖-胰岛素反应。
sbioplot (normSim([], 24岁,mealTable));
模拟糖尿病患者24小时的葡萄糖-胰岛素反应。
sbioplot(diabSim([],24,可测量));
使用变体执行扫描
假设您希望使用包含不同胰岛素损害的不同初始条件的变量数组执行参数扫描。例如,模型m1
具有对应于低胰岛素敏感性和高胰岛素敏感性的变体。您可以通过单个调用SimFunction对象来模拟这两种情况下的模型。
选择要扫描的变体。
varToScan=sbioselect(m1,“名字”,...{“低胰岛素敏感性”,“高胰岛素敏感性”});
检查每个变量中存储的模型参数。
varToScan (1)
ans=SimBiology变体-低胰岛素敏感性(非活性)内容索引:类型:名称:属性:值:1参数Vmx值0.0235 2参数kp3值0.0045
varToScan (2)
ans=SimBiology变体-高胰岛素敏感性(非活性)内容索引:类型:名称:属性:值:1参数Vmx值0.094 2参数kp3值0.018
这两种变体存储的交替值Vmx
和kp3
参数。在创建SimFunction对象时,需要将它们指定为输入参数。
创建SimFunction对象来扫描变体。
variantScan = createSimFunction (m1, {“Vmx”,“kp3”},...{“(等离子Glu浓缩)”,“[Plasma Ins Conc]”},“剂量”);
模拟模型并绘制结果。运行1
包括低胰岛素敏感性和运行2
对于高胰岛素敏感性。
sbioplot(Variatscan(varToScan,24岁,可测量));
低胰岛素敏感性导致血糖浓度升高和延长。
恢复警告设置。
警告(警告设置);
D.T.吉莱斯皮(1977)。耦合化学反应的精确随机模拟。物理化学学报。81(25),2340-2361。
要并行运行,请设置“UseParallel”
到符合事实的
.
有关更多信息,请参见“UseParallel”
名称-值对的论点。
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。