createSimFunction(模型)
创建SimFunction对象
语法
描述
创建一个F
= createSimFunction (模型
,参数个数
,可见
,给
)SimFunction对象
F
你可以执行像一个函数处理。的参数个数
和可见
参数定义函数的输入和输出F
当它执行给
定义了物种的定量信息。看到SimFunction对象
有关如何执行F
。
请注意
活跃的剂量和变异的模型时忽略
F
是执行。F
创建后是不可变的。F
在第一个函数自动加速执行,除非你准备好了吗AutoAccelerate来假
。手动加速对象如果你想它加速部署应用程序。
输入参数
模型
- - - - - -SimBiology模型
SimBiology模型对象
作为一个SimBiology SimBiology模型,指定模型对象
。
使用相同的功能configset
设置通过的一个副本Configset
对象的模型
对象。然而,忽略了以下功能configset
设置:StatesToLog
,OutputTimes,StopTime
,SensitivityAnalysisOptions
因为这些设置其他输入提供的功能。
参数个数
- - - - - -输入的SimFunctionF
特征向量|单元阵列的特征向量|{}
|SimBiology.Scenarios
对象
输入的SimFunctionF
单元阵列指定为一个特征向量,特征向量,空单元阵列{}
,或SimBiology.Scenarios
对象。模型的特征向量代表名称数量(物种、车厢或参数)定义的输入F
。使用一个空单元数组{}
或空场景
对象SimBiology.Scenarios.empty ()
创建一个SimFunction对象
没有参数。
明确的名字一个模型数量、使用限定名称,其中包括舱的名称。名字reaction-scoped参数,使用反应名称参数。如果名称不是一个有效的MATLAB®变量的名字,等方括号环绕着它反应[1]。参数[1]
。
给
- - - - - -给物种或剂量对象
特征向量|单元阵列的特征向量|剂量对象的向量|[]
给物种或剂量对象,指定为一个特征向量,单元阵列的特征向量,向量的剂量对象,或空数组[]
。
如果它是[]
,不给在模拟物种,除非你指定一个场景
对象定义了剂量的条目。
如果它是一个单元阵列的特征向量,它必须1×-N数组,N是给物种的数量名称。您可以使用重复的物种名称如果您计划使用多剂为同一物种当您运行SimFunctionF
。只使用剂量给物种名称不包含信息的属性。如果你有一个包含剂量对象参数化属性,如量
,使用剂量对象作为输入,而不只是物种名称等参数信息转移到SimFunction创建F
。
如果剂量对象是一个向量,它必须是1 -N向量,N剂量对象的数量。如果剂量非默认数值对象有属性,这些值将被忽略和发出的一个警告。只有TargetName
,DurationParameterName
,LagParameterName
,参数化属性用于创建SimFunction对象F
,来定义的给
的属性F
。的细节给
填充属性表,请参阅产权总结。
您指定的计量信息的创建SimFunction
对象必须符合计量信息执行期间您指定的对象。换句话说,元素的数量给
的属性SimFunction
F
必须等于输入剂量的组合数量场景
对象φ
和剂量输入参数u
当您执行对象。
变体
- - - - - -替代模型值
不同的对象|变体对象的向量
替代模型值,指定为一个变量或变量对象的向量。这些值作为模型应用于基线值时SimFunction
创建对象。如果有多个变体指相同的模型元素,最后发生。
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:“UseParallel”,真的
指定了SimFunction执行F
并行执行。
UseParallel
- - - - - -国旗执行SimFunctionF
并行
假
(默认)|真正的
国旗执行SimFunctionF
同时,指定为逗号分隔组成的“UseParallel”
和真正的
或假
。如果真正的
和并行计算工具箱™可用,SimFunctionF
是并行执行的。
例子:“UseParallel”
,真正的
AutoAccelerate
- - - - - -国旗加速模型第一次评估SimFunction
真正的
(默认)|假
国旗加速模型的第一评价SimFunction
对象,指定为逗号分隔组成的“AutoAccelerate”
和真正的
或假
。
将值设置为假
如果你有一个快速模型来模拟,因为模型的加速度可能需要更长的时间比实际的仿真模型。
例子:“AutoAccelerate”
,假
SensitivityOutputs
- - - - - -灵敏度输出因素
{}
(默认)|单元阵列的特征向量|“所有”
灵敏度输出因素,指定为逗号分隔组成的“SensitivityOutputs”
单元阵列的特征向量。特征向量是模型数量(物种和参数)的名字你想计算敏感性。默认值是{}
意思没有输出因素。输出时间的因素是分子衍生品中解释敏感性分析在SimBiology。
使用关键字“所有”
或“所有”
指定所有的模型数量敏感性输出。然而,{'所有'}
意味着一个模型数量所有
在模型中。(“所有”、“x”)
设置输入因素或输出因素敏感性物种命名所有
和x
。
您必须指定两个“SensitivityOutputs”
和“SensitivityInputs”
名称-值对参数的灵敏度计算。
例子:“SensitivityOutputs”
,“所有”
SensitivityInputs
- - - - - -输入因素的敏感性
{}
(默认)|单元阵列的特征向量|“所有”
灵敏度的输入因素,指定为逗号分隔组成的“SensitivityInputs”
单元阵列的特征向量。模型的特征向量是名称数量(物种、隔间和参数)对你想计算敏感性。默认值是{}
意思没有输入因素。输入因素是时间的分母衍生品中解释敏感性分析在SimBiology。
使用关键字“所有”
或“所有”
指定所有的模型数量敏感性输出。然而,{'所有'}
意味着一个模型数量所有
在模型中。(“所有”、“x”)
设置敏感物种命名的输入或输出所有
和x
。
您必须指定两个“SensitivityOutputs”
和“SensitivityInputs”
名称-值对参数的灵敏度计算。
例子:“SensitivityInputs”
,{“Reaction1.c1”、“Reaction1.c2”}
SensitivityNormalization
- - - - - -归一化的计算敏感性
“没有”
(默认)|的一半
|“全部”
归一化计算敏感性,指定为逗号分隔组成的“SensitivityNormalization”
和“没有”
,“一半”
,或“全部”
。
“没有”
——没有正常化(默认)“一半”
——标准化相对于分子“全部”
——全dedimensionalization
有关详细信息,请参见归一化
。
例子:“SensitivityNormalization”
,“全部”
输出参数
F
——SimFunction
SimFunction
对象|SimFunctionSensitivity
对象
SimFunction,作为一个返回SimFunction对象
或SimFunctionSensitivity对象
。你可以执行F
像一个函数处理。
F
是一个SimFunctionSensitivity对象
如果您指定非空“SensitivityOutputs”
和“SensitivityInputs”
名称-值对参数。
例子
创建一个SimFunction对象
这个示例使用放射性衰变模型与一阶反应
,在那里x
和z
物种和c
远期汇率是常数。
加载包含放射性衰变模型的示例项目m1
。
sbioloadprojectradiodecay;
创建一个SimFunction对象
,指定参数Reaction1.c
扫描,物种x
作为函数的输出没有给物种。
f = createSimFunction (m1,“Reaction1.c”,“x”[])
f = SimFunction参数:名称值类型单位售予_____ _________________ _______ {Reaction1。c'} 0.5 {'parameter'} {'1/second'} Observables: Name Type Units _____ ___________ ____________ {'x'} {'species'} {'molecule'} Dosed: None TimeUnits: second
如果UnitConversion
选项设置为假
当SimFunction
对象f
创建,表不显示模型的单位数量。
为了说明这一点,首先设置UnitConversion
选项假
。
c = getconfigset (m1);cs.CompileOptions。UnitConversion=假;
创建SimFunction
之前和注意对象变量命名单位
就消失了。
f = createSimFunction (m1, {“Reaction1.c”},{“x”},[])
f = SimFunction参数:名称值类型售予_____ _________________ {Reaction1。0.5 c '}{}“参数”可见:名称类型_____ ___________ {x}{“物种”}给:没有
如果任何种类的模型前,指定给物种的名字作为最后一个参数。例如,如果物种x
前,作为最后一个参数指定它。
f = createSimFunction (m1, {“Reaction1.c”},{“x”},“x”)
f = SimFunction参数:名称值类型售予_____ _________________ {Reaction1。c'} 0.5 {'parameter'} Observables: Name Type _____ ___________ {'x'} {'species'} Dosed: TargetName __________ {'x'}
一旦SimFunction
创建对象时,您可以执行它像一个函数处理和执行参数扫描(并行如果并行计算工具箱™可用),蒙特卡罗模拟,与多个扫描矢量化剂。看到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,“资讯”);lagPara。价值=1;lagPara。价值单位=“第二”;duraPara = addparameter (m1,“迪拜”);duraPara。价值=1;duraPara。价值单位=“第二”;
剂量对象设置这些参数。
rdose。LagParameterName =“资讯”;rdose。DurationParameterName =“迪拜”;
创建一个SimFunction
对象f
使用RepeatDose
对象rdose
你刚刚创建的。
f = createSimFunction (m1, {“Reaction1.c”},{“x”,“z”},rdose)
警告:在给一些剂量对象数据。这些数据将被忽略。>在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'
会出现一个警告消息,因为rdose
对象包含数据(开始时间
,量
,率
)所忽略的createSimFunction
方法。
生态模型的扫描参数
这个例子展示了如何执行不同的签名SimFunction对象
生态模拟和扫描参数(捕食)模型描述Gillespie [1]。
加载包含模型的示例项目m1
。
sbioloadproject洛特卡;
创建一个SimFunction对象f
与c1
和c2
作为输入参数被扫描,日元
和y2
作为函数的输出没有给物种。
f = createSimFunction (m1, {“Reaction1.c1”,“Reaction2.c2”},{“日元”,“日元”},[])
f = SimFunction参数:名称值类型___________ _____ _________________ {Reaction1。c1的10}{“参数”}{Reaction2。c2'} 0.01 {'parameter'} Observables: Name Type ______ ___________ {'y1'} {'species'} {'y2'} {'species'} Dosed: None
定义一个输入矩阵,包含每个参数的值(c1
和c2
为每个模拟)。显示的行数的总数模拟,并且每个模拟使用每一行中指定的参数值。
φ= [10 0.01;十0.02);
运行模拟,直到停止时间5和仿真结果。
sbioplot (f(φ,5));
您还可以指定一个向量为每个模拟不同的终止时间。
t_stop = (3、6);sbioplot (f(φ,t_stop));
接下来,指定输出倍一个向量。
t_output = 0:0.1:5;sbioplot (f(φ,[][],t_output));
指定输出倍单元阵列的向量。
t_output = {0:0.01:3, 0:0.2:6};sbioplot (f(φ,[][],t_output));
计算使用当地的敏感性SimFunctionSensitivity
对象
这个例子展示了如何计算当地的一些物种生态模型中使用的敏感SimFunctionSensitivity
对象。
加载示例项目。
sbioloadproject洛特卡;
定义输入参数。
params = {“Reaction1.c1”,“Reaction2.c2”};
定义观察到的物种,这是模拟的输出。
可见= {“日元”,“日元”};
创建一个SimFunctionSensitivity
对象。设置所有物种敏感性输出因素(日元
和y2
)中指定的可见
参数和输入因素的参数个数
参数(c1
和c2
通过设置名称-值对参数“所有”
。
f = createSimFunction (m1, params,可见,[],“SensitivityOutputs”,“所有”,“SensitivityInputs”,“所有”,“SensitivityNormalization”,“全部”)
f = SimFunction参数:名称值类型___________ _____ _________________ {Reaction1。c1的10}{“参数”}{Reaction2。c2'} 0.01 {'parameter'} Observables: Name Type ______ ___________ {'y1'} {'species'} {'y2'} {'species'} Dosed: None 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
包含仿真数据,sensMatrix
的灵敏度矩阵包含敏感吗日元
和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”);包含(“时间”);ylabel (“敏感”);
情节的敏感的物种日元
和y2
关于c2
。
图;情节(t y (:,: 2));传奇(输出);标题(“物种y1和y2对参数的敏感性c2的);包含(“时间”);ylabel (“敏感”);
或者,您可以使用sbioplot
。
sbioplot (sd);
你也可以画出灵敏度矩阵使用的时间积分计算的敏感性日元
和y2
。情节表明日元
和y2
更敏感的c1
比c2
。
(~,,)= (y)大小;结果= 0 (,);为i = 1:为j = 1:结果(i, j) = trapz (t (:), abs (y (:, i, j)));结束结束图;百巴=酒吧(结果);hax =百巴(1).Parent;hax。XTick = 1:长度(输出);hax。XTickLabel =输出;传奇(输入,“位置”,“NorthEastOutside”);ylabel (“敏感”);
Glucose-Insulin反应的模拟模型与不同的初始条件
这个例子展示了如何为正常但血糖-胰岛素反应模拟和糖尿病科目。
负载glucose-insulin响应的模型。模型的详细信息,请参阅背景部分但血糖-胰岛素响应模拟。
sbioloadproject (“insulindemo”,“m1”)
中存储的模型包含不同的初始条件不同的变体。
变量= getvariant (m1);
得到2型糖尿病患者的初始条件。
类型2 =变体(1)
类型2 = SimBiology变体- 2型糖尿病(不活跃)ContentIndex:类型:名称:房地产:价值:1参数等离子体体积……价值1.49 - 2参数k1值.042 3参数k2值.071 4参数等离子体体积……值.04点5参数m1值.379 6参数m2值.673 7参数m4值.269 m6 8参数m5值.0526 9参数值.8118 10参数肝Extrac……价值。6 11参数kmax值.0465 12参数kmin值.0076 13参数出租车值0 14参数kgri值.0465 15 16参数值参数f值。9 6 e-05 17参数b值.68点18 19参数d值参数c值.00023 .09点20参数kp1值3.09 21参数kp2值.0007 22参数kp3值.005 23参数kp4值.0786 24参数ki值.0066 25参数(Ins印第安纳Glu U…价值1.0 26参数Vm0值4.65 27参数Vmx值.034 28参数p2U 29公里价值466.21参数值.084 30参数K值0 31参数α值.013 32参数β值0。33参数γ值5 34参数ke1值.0007 35 36参数基础等离子体参数ke2值269.0 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));
但血糖-胰岛素响应模拟糖尿病患者24小时。
sbioplot (diabSim([], 24岁,mealTable));
执行扫描使用变体
假设您想执行参数扫描使用变体数组,包含不同的初始条件对不同胰岛素缺陷。例如,模型m1
变异,对应于低胰岛素敏感性和高胰岛素敏感性。你可以通过一个模拟的模型条件调用SimFunction对象。
选择要扫描的变体。
varToScan = sbioselect (m1,“名字”,…{“低胰岛素敏感性”,“高胰岛素敏感性”});
检查哪些模型参数存储在每个变体。
varToScan (1)
ans = SimBiology变体-低胰岛素敏感性(不活跃)ContentIndex:类型:名称:房地产:值:1参数Vmx值.0235 .0045 kp3 2参数值
varToScan (2)
ans = SimBiology变体-高胰岛素敏感性(不活跃)ContentIndex:类型:名称:房地产:值:1参数Vmx值.094 .018 kp3 2参数值
两个变量存储备用值Vmx
和kp3
参数。你需要指定他们当你创建一个SimFunction对象作为输入参数。
创建一个SimFunction对象扫描变体。
variantScan = createSimFunction (m1, {“Vmx”,“kp3”},…{“(等离子Glu浓缩)”,“(血浆Ins浓缩的)”},“剂量”);
模拟模型和阴谋的结果。运行1
包括低胰岛素敏感性和仿真结果运行2
高胰岛素敏感性。
sbioplot (variantScan(24岁的varToScan mealTable));
低胰岛素敏感性导致血浆葡萄糖浓度增加和延长。
恢复设置的警告。
警告(warnSettings);
引用
[1]Gillespie, D.T. (1977)。的随机模拟耦合化学反应。《物理化学》杂志上。81 (25),2340 - 2361。
扩展功能
自动并行支持万博1manbetx
加速代码通过自动运行并行计算使用并行计算工具箱™。
并行运行,设置“UseParallel”
来真正的
。
有关更多信息,请参见“UseParallel”
名称-值对的论点。
版本历史
介绍了R2014a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。