比较SSA和明确的头,跨越随机解算器

这个例子展示了如何使用SSA随机解算器和显式跳跃解算器来建立和模拟一个模型。

以下衰减-二聚化反应将被构造和随机模拟:

  • 反应1:s1 ->为零,反应速率常数c1 = 1.0

  • 反应2:2 S1 < - > S2,具有反应速率常数,正向:C2F = 0.002反向:C2R = 0.5

  • 反应3:S2 - > s3中,与反应速率常数,C3 = 0.04

  • 初始条件:S1 = 100000个分子,S2 = S3 = 0

如在丹尼尔T. Gillespie的,2001年描述的本例使用的参数和条件,“化学反应系统的近似加速随机模拟,”物理化学学报,第一卷。115,没有。4,第1716至1733年。

创建衰变,二聚化模式

模型= sbiomodel (“Decaying-Dimerizing反应组”);

输入反应

r1 = addreaction(模型,'S1  - >空');R2 = addreaction(型号,'2 S1 < - > S2');R3 = addreaction(型号,'S2  - > S3');

组反应是MassAction

KL1 = addkineticlaw(R1,“MassAction”);KL2 = addkineticlaw(R2,“MassAction”);kl3 = addkineticlaw (r3,“MassAction”);

添加速率常数每个反应

P1 = addparameter(KL1,'C1''值',1.0);P2F = addparameter(KL2,“c2f”'值',0.002);p2r = addparameter (kl2,'C2R''值',0.5);p3 = addparameter (kl3,'C3''值',0.04);

设置动力学定律常数为每个动力学定律。

kl1.ParameterVariableNames = {'C1'};kl2.ParameterVariableNames = {“c2f”'C2R'};kl3.ParameterVariableNames = {'C3'};

指定每个物种的初始金额

model.species(1).InitialAmount = 100000;% s1model.species (2)。InitialAmount = 0;% s2model.species (3)。InitialAmount = 0;% s3

显示完成的模型对象

模型
模型= SimBiology模型 - 衰变-二聚化反应组模型组件:隔间:1个活动:0参数:4个反应:3规则:0种:3个观测量:0

显示相关反应对象

model.Reactions
ANS = SimBiology反应数组索引:反应:1 S1  - >空2 2 S1 < - > 3 S2 S2  - > S3

展示物种对象

model.Species
1个未命名s1 100000 2个未命名s2 0 3个未命名s3 0

获取激活的配置集的模型。

CS = getconfigset(型号,“活跃”);

仿真模型中使用SSA随机求解和绘图

tfinal = 30,每隔10个数据点记录一次。

cs.SolverType ='SSA';cs.StopTime = 30;解算器= cs.SolverOptions;solver.LogDecimation = 10;cs.CompileOptions.DimensionalAnalysis = FALSE;[t_ssa,x_ssa] = sbiosimulate(模型);H1 =副区(2,1,1);情节(H1,t_ssa,x_ssa(:,1),'');H2 =副区(2,1,2);情节(H2,t_ssa,x_ssa(:,2:3),'');网格(H1,'上');网格(H2,'上');标题(h1,的衰变二聚反应);ylabel(H1,“S1的金额”);ylabel(H2,' S2和S3的数量');xlabel(H2,'时间');传说(H2,'S2''S3');

仿真模型中使用显式头,跨越式求解器和情节在同一图

不要关闭窗口数字,从阴谋使用显式头,跨越规划求解的结果。

tfinal = 30,每隔10个数据点记录一次。可接受的误差误差的解决方案,0.03。

cs.StopTime = 30;cs.SolverType ='explTau';解算器= cs.SolverOptions;solver.LogDecimation = 10;[t_etl,x_etl] = sbiosimulate(模型);保持(H1,'上');保持(H2,'上');情节(H1,t_etl,x_etl(:,1),“o”);情节(H2,t_etl,x_etl(:,2:3),“o”);传说(H2,'S2(SSA)'S3 (SSA)的“S2(实验头)”“S3(实验头)”);保持(H1,“关”);保持(H2,“关”);

SSA算法与显式跳跃算法的步数比较

fprintf中('近似的SSA步数:%d \ n',(长度(t_ssa)* 10));
SSA的步骤大约数量:616010
fprintf中(“近似的显式头 - 跳跃的步数:%d \ n”...(长度(t_etl) * 10));
显式头,跳跃的步骤近似数:620