Commit bae6e938 authored by Bentriou Mahmoud's avatar Bentriou Mahmoud
Browse files

change of model names

parent 300e9ec8
......@@ -4,14 +4,17 @@ using MarkovProcesses
using Catalyst
using DiffEqJump
path_latex = "./"
# Bench 1: A long simulation of ER
load_model("ER")
set_param!(ER, :k1, 0.2)
set_param!(ER, :k2, 40.0)
ER.buffer_size = 100
ER.estim_min_states = 8000
b_pkg = @benchmark simulate(ER)
@show minimum(b_pkg), mean(b_pkg), maximum(b_pkg)
bench1_pkg = @benchmark simulate(ER)
rs = @reaction_network begin
c1, S + E --> SE
......@@ -21,14 +24,78 @@ end c1 c2 c3
p = (0.2,40.0,1.0) # [c1,c2,c3]
tspan = (0., 100.)
u0 = [100., 100., 0., 0.] # [S,E,SE,P]
# solve JumpProblem
dprob = DiscreteProblem(rs, u0, tspan, p)
jprob = JumpProblem(rs, dprob, Direct())
jsol = solve(jprob, SSAStepper())
b_catalyst = @benchmark solve(jprob, SSAStepper())
@show minimum(b_catalyst), mean(b_catalyst), maximum(b_catalyst)
bench1_catalyst = @benchmark solve(jprob, SSAStepper())
str_latex_bench1 = "
\\begin{tabular}{|c|c|c|c|c|}
\\hline
Bench 1 & Mean time (ms) & Max. time (ms) &
Min. time (ms) & \\begin{tabular}[c]{@{}c@{}}Mean\\\\Memory (KB)\\end{tabular} \\\\
\\hline
Package & $(round(time(mean(bench1_pkg))/1E6, digits=2)) & $(round(time(maximum(bench1_pkg))/1E6, digits=2)) &
$(round(time(minimum(bench1_pkg))/1E6, digits=2)) & $(round(memory(mean(bench1_pkg))/1024, digits=2)) \\\\
\\hline
Catalyst.jl & $(round(time(mean(bench1_catalyst))/1E6, digits=2)) & $(round(time(maximum(bench1_catalyst))/1E6, digits=2)) &
$(round(time(minimum(bench1_catalyst))/1E6, digits=2)) & $(round(memory(mean(bench1_catalyst))/1024, digits=2)) \\\\
\\hline
\\end{tabular}"
# Bench 2: Creation of model + a long simulation of ER
bench2_pkg = @benchmark begin
ER = @network_model begin
R1: (E+S => ES, k1*E*S)
R2: (ES => E+S, k2*ES)
R3: (ES => E+P, k3*ES)
end "ER"
set_param!(ER, :k1, 0.2)
set_param!(ER, :k2, 40.0)
ER.buffer_size = 100
ER.estim_min_states = 8000
simulate(ER)
end
bench2_catalyst = @benchmark begin
rs = @reaction_network begin
c1, S + E --> SE
c2, SE --> S + E
c3, SE --> P + E
end c1 c2 c3
p = (0.2,40.0,1.0) # [c1,c2,c3]
tspan = (0., 100.)
u0 = [100., 100., 0., 0.] # [S,E,SE,P]
# solve JumpProblem
dprob = DiscreteProblem(rs, u0, tspan, p)
jprob = JumpProblem(rs, dprob, Direct())
jsol = solve(jprob, SSAStepper())
end
str_latex_bench2 = "
\\begin{tabular}{|c|c|c|c|c|}
\\hline
Bench 1 & Mean time (ms) & Max. time (ms) &
Min. time (ms) & \\begin{tabular}[c]{@{}c@{}}Mean\\\\Memory (KB)\\end{tabular} \\\\
\\hline
Package & $(round(time(mean(bench2_pkg))/1E6, digits=2)) & $(round(time(maximum(bench2_pkg))/1E6, digits=2)) &
$(round(time(minimum(bench2_pkg))/1E6, digits=2)) & $(round(memory(mean(bench2_pkg))/1024, digits=2)) \\\\
\\hline
Catalyst.jl & $(round(time(mean(bench2_catalyst))/1E6, digits=2)) & $(round(time(maximum(bench2_catalyst))/1E6, digits=2)) &
$(round(time(minimum(bench2_catalyst))/1E6, digits=2)) & $(round(memory(mean(bench2_catalyst))/1024, digits=2)) \\\\
\\hline
\\end{tabular}"
@show minimum(bench1_pkg), mean(bench1_pkg), maximum(bench1_pkg)
@show minimum(bench1_catalyst), mean(bench1_catalyst), maximum(bench1_catalyst)
#plot(jsol,lw=2,title="Gillespie: Michaelis-Menten Enzyme Kinetics")
open(path_latex * "bench1.tex", "w+") do io
write(io, str_latex_bench1)
end;
open(path_latex * "bench2.tex", "w+") do io
write(io, str_latex_bench2)
end;
......@@ -52,7 +52,7 @@ isabsorbing_ER(p::Vector{Float64},xn::Vector{Int}) =
@inbounds(p[1]*xn[1]*xn[2] + (p[2]+p[3])*xn[3] === 0.0)
g_ER = [:P]
ER = ContinuousTimeModel(d,k,dict_var_ER,dict_p_ER,l_tr_ER,p_ER,x0_ER,t0_ER,ER_f!,isabsorbing_ER; g=g_ER,name="ER pkg")
ER = ContinuousTimeModel(d,k,dict_var_ER,dict_p_ER,l_tr_ER,p_ER,x0_ER,t0_ER,ER_f!,isabsorbing_ER; g=g_ER,name="ER SSA pkg")
function create_ER(new_p::Vector{Float64})
ER_new = deepcopy(ER)
......
......@@ -50,7 +50,7 @@ end
isabsorbing_SIR(p::Vector{Float64}, xn::Vector{Int}) = (p[1]*xn[1]*xn[2] + p[2]*xn[2]) === 0.0
g_SIR = [:I]
SIR = ContinuousTimeModel(d,k,dict_var,dict_p,l_tr_SIR,p_SIR,x0_SIR,t0_SIR,SIR_f!,isabsorbing_SIR; g=g_SIR, name="SIR pkg")
SIR = ContinuousTimeModel(d,k,dict_var,dict_p,l_tr_SIR,p_SIR,x0_SIR,t0_SIR,SIR_f!,isabsorbing_SIR; g=g_SIR, name="SIR SSA pkg")
function create_SIR(new_p::Vector{Float64})
SIR_new = deepcopy(SIR)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment