主要内容

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

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

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

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

  • 反应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卷,第1期。第4页,1716-1733。

创建衰减二聚模型

模型= sbiommodel (“衰变-二聚反应集”);

输入的反应

R1 =地址(模型,'s1 -> null');R2 = addresaction(模型,'2 s1 <-> s2');R3 = addresaction(模型,'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

显示反应对象

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

显示物种对象

模型。物种
ans = SimBiology物种阵列索引:隔间:名称:值:单位:1无名s1 100000 2无名s2 0 3无名s3 0

获取模型的活动配置集。

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

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

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

cs。SolverType =“ssa”;cs。StopTime = 30;solver = cs.SolverOptions;解算器。LogDecimation = 10;cs.CompileOptions.DimensionalAnalysis = false;[t_ssa, x_ssa] = sbiosimulation (model);H1 = subplot(2,1,1);Plot (h1, t_ssa, x_ssa(:,1),“。”);H2 = subplot(2,1,2);Plot (h2, t_ssa, x_ssa(:,2:3),“。”);网格(h1,“上”);网格(h2,“上”);标题(h1,“衰变二聚反应”);ylabel (h1,“S1的数量”);ylabel (h2,“S2 & S3的数量”);包含(h2,“时间”);传奇(h2,“S2”“S3”);

图中包含2个轴对象。标题为衰变二聚反应的Axes对象1包含一个类型为line的对象。坐标轴对象2包含2个line类型的对象。这些对象表示S2、S3。

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

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

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

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

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

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

流('大约SSA步数:%d\n',(长度(t_ssa) * 10));
大约SSA步数:616010
流(显式tau跳跃步骤的近似数:%d\n...(length(t_etl) * 10));
大约明确的tau跳跃步骤数:620