From bae6e938425d902055f335022e15f1dd752814c8 Mon Sep 17 00:00:00 2001 From: Mahmoud Bentriou <mahmoud.bentriou@centralesupelec.fr> Date: Fri, 11 Dec 2020 16:51:32 +0100 Subject: [PATCH] change of model names --- bench/pkg/catalyst.jl | 79 +++++++++++++++++++++++++++++++++++++++---- models/ER.jl | 2 +- models/SIR.jl | 2 +- 3 files changed, 75 insertions(+), 8 deletions(-) diff --git a/bench/pkg/catalyst.jl b/bench/pkg/catalyst.jl index 830c58b..332c5bb 100644 --- a/bench/pkg/catalyst.jl +++ b/bench/pkg/catalyst.jl @@ -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; diff --git a/models/ER.jl b/models/ER.jl index b2d0d0c..350707d 100644 --- a/models/ER.jl +++ b/models/ER.jl @@ -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) diff --git a/models/SIR.jl b/models/SIR.jl index 7161169..e2bfadf 100644 --- a/models/SIR.jl +++ b/models/SIR.jl @@ -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) -- GitLab