创建SimFunction对象
创造一个F
= createSimfunction(模型
那参数个数
那可见
那服用
的)SIMFUNCTIP对象
F
你可以像函数句柄一样执行。的参数个数
和可见
参数定义函数的输入和输出F
当它被执行时,并且服用
定义物种的剂量信息。请参阅SIMFUNCTIP对象
有关如何执行的详细信息F
.
笔记
忽略模型的活性剂量和变体时F
被执行。
F
在创建后是不可变的。
F
除非设置,否则在第一个函数执行时自动加速AutoAccelerate到假
.如果希望在部署应用程序中加速对象,则手动加速该对象。
模型
-模拟生物学模型Simbiology模型,指定为素质学模型对象
.
函数使用相同的Configset.
通过制作副本的设置Configset.
对象模型
对象。然而,该函数忽略以下内容Configset.
设置:Statestolog.
那OutputTimes
那停止
, 和SensitivityAnalysisOptions
因为这些设置是由函数的其他输入提供的。
参数个数
-SimFunction的输入F
{}
|SimBiology。场景
目的SimFunction的输入F
,指定为字符向量,字符向量的单元格数组,空小区数组{}
, 或者SimBiology。场景
对象。字符向量表示定义输入的模型数量(物种、隔间或参数)的名称F
.使用空单元格数组{}
或空场景
目的simbiology.scenarios.prevey()
创建一个SIMFUNCTIP对象
它没有参数。
要毫不含糊地命名型号数量,请使用限定名称,其中包含隔间名称。要命名反作用范围的参数,请使用反应名称限定参数。如果名称不是有效的matlab®变量名称,按方括号括起来[反应1]。[参数1]
.
服用
-剂量的种类或剂量物体[]
给定物种或剂量对象,指定为字符向量,字符向量的细胞阵列,剂量对象的矢量或空阵列[]
.
如果是[]
,没有物种被剂量在模拟期间,除非你指定场景
具有在其条目中定义的剂量的对象。
如果它是字符向量的小区数组,则它必须是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
在平行下。
UseParallel
-执行SimFunction的标志F
并行假
(默认)|真的
执行SimFunction的标志F
并行,指定为逗号分隔的配对组成'使用指惯'
和真的
或者假
.如果真的
并行计算工具箱™ 如果可用,则sim函数F
并行执行。
例子:'使用指惯'
那真的
AutoAccelerate
-标志加速模型的首次评估simfunction.
真的
(默认)|假
标志加速对模型的第一次评价simfunction.
对象,指定为逗号分隔的对,由“AutoAccelerate”
和真的
或者假
.
将值设置为假
如果你有一个模型,因为模型的加速可能会比模型的实际模拟花费更长的时间,所以要快速模拟。
例子:“AutoAccelerate”
那假
SensitivityOutputs
-敏感性输出因素{}
(默认)|特区字符向量阵列|“所有”
灵敏度输出系数,指定为逗号分隔对,由“SensitivityOutputs”
以及字符向量的单元格数组。字符向量是需要计算灵敏度的模型数量(物种和参数)的名称。默认为{}
意思是没有输出因子。输出因子是解释的时间依赖衍生物的分子SimBiology的敏感性分析.
使用关键字“所有”
或者“全部”
将所有型号的数量指定为灵敏度输出。然而,{'全部'}
表示名为的型号数量全部
在模型中。[“全部”,“x”]
将灵敏度输入因子或输出因子设置为命名的物种全部
和X
.
您必须指定两者“SensitivityOutputs”
和'sensitivity inpuls'
用于敏感性计算的名称值对参数。
例子:“SensitivityOutputs”
那“所有”
SensitivityInputs
-输入因素的敏感性{}
(默认)|特区字符向量阵列|“所有”
灵敏度输入因子,指定为逗号分隔对组成'sensitivity inpuls'
以及字符向量的单元格数组。字符向量是关于您想要计算敏感性的模型数量(种类,隔间和参数)的名称。默认为{}
这意味着没有输入因素。输入因子是时间相关的导数的分母SimBiology的敏感性分析.
使用关键字“所有”
或者“全部”
将所有型号的数量指定为灵敏度输出。然而,{'全部'}
表示名为的型号数量全部
在模型中。[“全部”,“x”]
设置指定物种的灵敏度输入或输出全部
和X
.
您必须指定两者“SensitivityOutputs”
和'sensitivity inpuls'
用于敏感性计算的名称值对参数。
例子:'sensitivity inpuls'
那{“Reaction1.c1”、“Reaction1.c2”}
敏感性诺化
-计算灵敏度的归一化“没有”
(默认)|'一半
|“全部”
计算灵敏度的归一化,指定为逗号分隔对,由“SensitivityNormalization”
和“没有”
那“一半”
, 或者“全部”
.
“没有”
—不规格化(默认)
“一半”
-只对分子进行标准化
“全部”
- 完全献血化
有关详细信息,请参阅归一化
.
例子:“SensitivityNormalization”
那“全部”
F
——SimFunctionsimfunction.
对象|Simfunctionsity
目的SimFunction,返回为SIMFUNCTIP对象
或者SimFunctionSensitivity对象
.你可以执行F
比如函数句柄。
F
是A.SimFunctionSensitivity对象
如果您指定非空“SensitivityOutputs”
和'sensitivity inpuls'
名称-值对参数。
这个例子使用了一个具有一级反应的放射性衰变模型
,在那里X
和Z.
是物种和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对象F
与C1.
和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));
您还可以为每个模拟指定不同的停止时间的向量。
t_stop =(3、6);sbioplot (f(φ,t_stop));
接下来,将输出时间指定为向量。
t_输出=0:0.1:5;sbioplot(f(φ,[],t_输出));
将输出时间指定为传感器的单元格数组。
t_输出={0:0.01:3,0:0.2:6};sbioplot(f(phi,[],[],t_输出));
Simfunctionsity
对象这个例子展示了如何计算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.
).
将停止时间设置为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.
关于C2.
.
图;情节(t y (:,: 2));传奇(输出);标题('物种y1和y2对参数c2的敏感性');Xlabel('时间');ylabel('灵敏度');
或者,您可以使用sbioplot.
.
SBIOPLOT(SD);
您还可以使用计算敏感性的时间积分绘制灵敏度矩阵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('灵敏度');
该实施例显示了如何模拟正常和糖尿病受试者的葡萄糖胰岛素反应。
加载葡萄糖胰岛素反应模型。有关模型的详细信息,请参阅背景部分模拟葡萄糖 - 胰岛素反应.
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));
模拟糖尿病受试者24小时的葡萄糖-胰岛素反应。
SBIOPLOT(贴膜([],24,含餐));
使用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次,用餐));
低胰岛素敏感性导致血糖浓度升高和延长。
恢复警告设置。
警告(warnSettings);
D.T.吉莱斯皮(1977)。耦合化学反应的精确随机模拟。物理化学学报。81(25),2340-2361。
并行运行,设置'使用指惯'
到真的
.
有关更多信息,请参阅'使用指惯'
名称值对参数。
SimBiology。场景
|模型对象
|SIMFUNCTIP对象
|SimFunctionSensitivity对象
|Sbiosampleerror.
|Sbiosampleparameters.
Tiene UnaVersiónModififada de Este Ejegro。¿desea abrir este ejemerlo con modificaciones?
Ha Hecho Clic en en enrace que参考este comando de matlab:
把它扔进introduciéndolo然后把它扔进MATLAB。Los navegadores web no admit comandos de MATLAB。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获得最佳网站性能。其他MathWorks国家网站未优化您所在地的访问。