From 9e57c693dcc66711ef802279ee418893da355dc2 Mon Sep 17 00:00:00 2001 From: Mahmoud Bentriou <mahmoud.bentriou@centralesupelec.fr> Date: Mon, 8 Feb 2021 19:04:16 +0100 Subject: [PATCH] new model intracellular viral infection + smc_chernoff --- core/MarkovProcesses.jl | 2 +- core/model.jl | 7 +++++++ models/intracellular_viral_infection.jl | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 models/intracellular_viral_infection.jl diff --git a/core/MarkovProcesses.jl b/core/MarkovProcesses.jl index f0fdc94..54ff8a2 100644 --- a/core/MarkovProcesses.jl +++ b/core/MarkovProcesses.jl @@ -29,7 +29,7 @@ export get_index, get_value, length_var, isaccepted # Model related methods export simulate, volatile_simulate -export distribute_mean_value_lha, mean_value_lha, distribute_prob_accept_lha, probability_var_value_lha +export distribute_mean_value_lha, mean_value_lha, distribute_prob_accept_lha, probability_var_value_lha, smc_chernoff export set_param!, set_x0!, set_time_bound!, set_observed_var!, observe_all! export get_param, get_x0, getproperty, get_proba_model, get_observed_var export isbounded, isaccepted, check_consistency diff --git a/core/model.jl b/core/model.jl index 83b5313..ea8ff92 100644 --- a/core/model.jl +++ b/core/model.jl @@ -402,6 +402,13 @@ function probability_var_value_lha(sm::SynchronizedModel, nbr_sim::Int; return sum_val / nbr_sim end +function smc_chernoff(sm::SynchronizedModel; approx::Float64 = 0.01, confidence::Float64 = 0.99) + @assert sm.automaton.name in ["F property", "G property", "G and F property"] + nbr_sim = log(2/(1-confidence)) / (2*approx^2) + nbr_sim = convert(Int, trunc(nbr_sim)+1) + @show nbr_sim + return probability_var_value_lha(sm, nbr_sim) +end function distribute_prob_accept_lha(sm::SynchronizedModel, nbr_sim::Int) sum_val = @distributed (+) for i = 1:nbr_sim diff --git a/models/intracellular_viral_infection.jl b/models/intracellular_viral_infection.jl new file mode 100644 index 0000000..9de65fa --- /dev/null +++ b/models/intracellular_viral_infection.jl @@ -0,0 +1,16 @@ + +intracellular_viral_infection = @network_model begin + R1: (N + T => G + T, k1 * T * cn) + R2: (N + G => T, k2 * G * cn) + R3: (N + A + T => S + T, k3 * T * cn * ca) + R4: (T => ∅, k4 * T) + R5: (S => ∅, k5 * S) + R6: (G + S => V, k6 * G * S) +end "Intracellular viral infection pkg" + +set_x0!(intracellular_viral_infection, [:N, :A, :G, :T, :S, :V], [10000, 10000, 0, 1, 0, 0]) +set_param!(intracellular_viral_infection, [:cn, :ca, :k1, :k2, :k3, :k4, :k5, :k6], [1.0, 1.0, 1.0, 0.025, 100.0, 0.25, 0.2, 7.5E-6]) +set_time_bound!(intracellular_viral_infection, 200.0) + +export intracellular_viral_infection + -- GitLab