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”);
用显式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,“关闭”);
SSA算法与显式tau跳跃算法步数的比较
流('大约SSA步数:%d\n',(长度(t_ssa) * 10));
大约SSA步数:616010
流(显式tau跳跃步骤的近似数:%d\n,...(length(t_etl) * 10));
大约明确的tau跳跃步骤数:620