主要内容

比较SSA和显式tau -跳跃随机求解器

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

以下衰变二聚反应将被构建和随机模拟:

  • 反应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

这个例子使用了Daniel T. Gillespie, 2001,“化学反应系统的近似加速随机模拟”中描述的参数和条件,《化学物理杂志》,第115卷,第5期。4、1716 - 1733页。

创建Decaying-Dimerizing模型

模型= 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

显示已完成的模型对象

模型
组件:分隔:1事件:0参数:4反应:3规则:0物种:3观察:0

显示反应对象

模型。反应
ans = SimBiology反应阵列索引:反应:1 s1 -> null 2 2 s1 <-> s2 3 s2 -> s3

显示物种对象

模型。物种
ans = SimBiology Species Array Index: Compartment: Name: Value: Units: 1未命名s1 100000 2未命名s2 0 3未命名s3 0

获取模型的活动配置集。

c = getconfigset(模型,“活跃”);

用SSA随机求解器和绘图模拟模型

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

cs。SolverType =“ssa”;cs。StopTime = 30;解算器= cs.SolverOptions;解算器。LogDecimation = 10;cs.CompileOptions.DimensionalAnalysis = false;[t_ssa, x_ssa] = sbiosimulate(model);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的数量”);包含(h2,“时间”);传奇(h2,“S2”“S3”);

图中包含2个轴对象。标题为衰减二聚反应的轴对象1包含一个类型为线的对象。axis对象2包含2个类型为line的对象。这些对象表示S2, S3。

使用显式的tau -跳跃求解器模拟模型,并绘制在同一图中

在不关闭图形窗口的情况下,使用显式tau - jumper求解器绘制结果。

Tfinal = 30,每10个数据点记录一次。解算器的可接受误差公差为0.03。

cs。StopTime = 30;cs。SolverType =“explTau”;解算器= cs.SolverOptions;解算器。LogDecimation = 10;[t_etl, x_etl] = sbiosimulate(model);(h1,“上”);(h2,“上”);情节(h1、t_etl x_etl (: 1),“o”);情节(h2, t_etl x_etl (: 2:3),“o”);传奇(h2,“S2 (SSA)”S3 (SSA)的“S2 (Expτ)。”“S3 (Expτ)。”);(h1,“关闭”);(h2,“关闭”);

图中包含2个轴对象。标题为衰减二聚反应的轴对象1包含2个线型对象。axis对象2包含4个类型为line的对象。这些对象代表S2 (SSA)、S3 (SSA)、S2 (Exp. Tau)、S3 (Exp. Tau)。

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

流(' SSA步数的近似:%d\n', (length(t_ssa) * 10));
SSA步数:616010
流('显式t -跳跃步骤的近似数量:%d\n'...(长度(t_etl) * 10));
近似的显式牛跳跃步骤数:620