Class ModelMeaslesMixingRiskQuarantine¶
template <typename TSeq>
ClassList > ModelMeaslesMixingRiskQuarantine
Measles model with population mixing and risk-based quarantine strategies. More...
#include <measlesmixingriskquarantine.hpp>
Inherits the following classes: Model
Public Attributes inherited from Model¶
See Model
| Type | Name |
|---|---|
| std::array< epiworld_double, 1024u *2u > | array_double_tmp |
| std::array< Virus< TSeq > *, 1024u *2u > | array_virus_tmp |
Public Static Attributes¶
| Type | Name |
|---|---|
| constexpr int | DETECTED_HOSPITALIZED = 6 |
| constexpr int | EXPOSED = 1 |
| constexpr int | HOSPITALIZED = 11 |
| constexpr int | ISOLATED = 4 |
| constexpr int | ISOLATED_RECOVERED = 5 |
| constexpr int | PRODROMAL = 2 |
| constexpr int | QUARANTINED_EXPOSED = 7 |
| constexpr int | QUARANTINED_PRODROMAL = 9 |
| constexpr int | QUARANTINED_RECOVERED = 10 |
| constexpr int | QUARANTINED_SUSCEPTIBLE = 8 |
| constexpr size_t | QUARANTINE_PROCESS_ACTIVE = 1u |
| constexpr size_t | QUARANTINE_PROCESS_DONE = 2u |
| constexpr size_t | QUARANTINE_PROCESS_INACTIVE = 0u |
| constexpr int | RASH = 3 |
| constexpr int | RECOVERED = 12 |
| constexpr int | RISK_HIGH = 2 |
| constexpr int | RISK_LOW = 0 |
| constexpr int | RISK_MEDIUM = 1 |
| constexpr int | SUSCEPTIBLE = 0 |
Public Functions¶
| Type | Name |
|---|---|
| ModelMeaslesMixingRiskQuarantine () |
|
| ModelMeaslesMixingRiskQuarantine (epiworld_fast_uint n, epiworld_double prevalence, epiworld_double contact_rate, epiworld_double transmission_rate, epiworld_double vax_efficacy, epiworld_double incubation_period, epiworld_double prodromal_period, epiworld_double rash_period, std::vector< double > contact_matrix, epiworld_double hospitalization_rate, epiworld_double hospitalization_period, epiworld_double days_undetected, epiworld_fast_int quarantine_period_high, epiworld_fast_int quarantine_period_medium, epiworld_fast_int quarantine_period_low, epiworld_double quarantine_willingness, epiworld_double isolation_willingness, epiworld_fast_int isolation_period, epiworld_double prop_vaccinated, epiworld_double detection_rate_quarantine, epiworld_double contact_tracing_success_rate=1.0, epiworld_fast_uint contact_tracing_days_prior=4u) Constructs a ModelMeaslesMixingRiskQuarantine object. |
|
| virtual std::unique_ptr< Model< TSeq > > | clone_ptr () override Create a clone of this model. |
| auto | get_contact_matrix () const Get the current contact matrix. |
| auto | get_days_quarantine_triggered () const Get the total number of quarantines that have occurred. |
| auto | get_isolation_willingness () const Get the isolation willingness for all agents. |
| const auto & | get_quarantine_risk_level () const Get the risk level assigned to each agent for quarantine purposes. |
| auto | get_quarantine_willingness () const Get the quarantine willingness for all agents. |
| virtual ModelMeaslesMixingRiskQuarantine< TSeq > & | initial_states (std::vector< double > proportions_, std::vector< int > queue_={}) override Set the initial states of the model. |
| virtual void | reset () override Reset the model to initial state. |
| void | set_contact_matrix (std::vector< double > cmat) Set the contact matrix for population mixing. |
Public Functions inherited from Model¶
See Model
| Type | Name |
|---|---|
| Model () |
|
| Model (const Model< TSeq > & m) |
|
| Model (Model< TSeq > && m) |
|
| void | add_entity (Entity< TSeq > e) |
| void | add_globalevent (std::function< void(Model< TSeq > *)> fun, std::string name="A global action", int date=-99) Set a global action. |
| void | add_globalevent (GlobalEvent< TSeq > & action) |
| epiworld_double | add_param (epiworld_double initial_val, std::string pname, bool overwrite=false) |
| epiworld_fast_int | add_state (std::string lab, UpdateFun< TSeq > fun=nullptr) |
| void | add_tool (Tool< TSeq > & t) |
| void | add_user_data (epiworld_fast_uint j, epiworld_double x) |
| void | add_user_data (std::vector< epiworld_double > x) |
| void | add_virus (Virus< TSeq > & v) |
| void | agents_empty_graph (epiworld_fast_uint n=1000) |
| void | agents_from_adjlist (std::string fn, int size, int skip=0, bool directed=false) |
| void | agents_from_adjlist (AdjList al) |
| void | agents_from_edgelist (const std::vector< int > & source, const std::vector< int > & target, int size, bool directed) |
| Model< TSeq > & | agents_smallworld (epiworld_fast_uint n=1000, epiworld_fast_uint k=5, bool d=false, epiworld_double p=.01) |
| void | clear_state_set () |
| void | draw (DiagramType diagram_type=DiagramType::Mermaid, const std::string & fn_output="", bool self=false) Draws a mermaid diagram of the model. |
| void | events_run () Executes the stored action. |
| Agent< TSeq > & | get_agent (size_t i) |
| std::vector< Agent< TSeq > > & | get_agents () Returns a reference to the vector of agents. |
| double * | get_agents_data () |
| size_t | get_agents_data_ncols () const |
| std::vector< epiworld_fast_uint > | get_agents_states () const Returns a vector with the states of the agents. |
| std::vector< Viruses_const< TSeq > > | get_agents_viruses () const Returns a const vector with the viruses of the agents. |
| std::vector< Viruses< TSeq > > | get_agents_viruses () Returns a vector with the viruses of the agents. |
| DataBase< TSeq > & | get_db () |
| const DataBase< TSeq > & | get_db () const |
| void | get_elapsed (std::string unit="auto", epiworld_double * last_elapsed=nullptr, epiworld_double * total_elapsed=nullptr, std::string * unit_abbr=nullptr, bool print=true) const |
| std::vector< Entity< TSeq > > & | get_entities () |
| Entity< TSeq > & | get_entity (size_t entity_id, int * entity_pos=nullptr) |
| const Entity< TSeq > & | get_entity (size_t entity_id, int * entity_pos=nullptr) const |
| GlobalEvent< TSeq > & | get_globalevent (std::string name) Retrieve a global action by name. |
| GlobalEvent< TSeq > & | get_globalevent (size_t i) Retrieve a global action by index. |
| void | get_hospitalizations (std::vector< int > & date, std::vector< int > & virus_id, std::vector< int > & tool_id, std::vector< int > & count, std::vector< double > & weight) const Get the full time series of hospitalization data. |
| size_t | get_n_entities () const |
| epiworld_fast_uint | get_n_replicates () const |
| size_t | get_n_states () const |
| size_t | get_n_tools () const Number of tools in the model. |
| size_t | get_n_viruses () const Number of viruses in the model. |
| std::string | get_name () const |
| epiworld_fast_uint | get_ndays () const |
| epiworld_double | get_param (std::string pname) |
| Queue< TSeq > & | get_queue () Retrieve the Queue object. |
| std::shared_ptr< epi_xoshiro256ss > & | get_rand_endgine () |
| epiworld_double | get_rewire_prop () const |
| size_t | get_sim_id () const |
| const std::vector< UpdateFun< TSeq > > & | get_state_fun () const |
| const std::vector< std::string > & | get_states () const |
| Tool< TSeq > & | get_tool (size_t id) |
| Tool< TSeq > & | get_tool (std::string_view name) |
| const std::vector< ToolPtr< TSeq > > & | get_tools () const |
| UserData< TSeq > & | get_user_data () |
| bool | get_verbose () const |
| Virus< TSeq > & | get_virus (size_t id) |
| Virus< TSeq > & | get_virus (std::string_view name) |
| const std::vector< VirusPtr< TSeq > > & | get_viruses () const |
| bool | has_tool (std::string_view name) const |
| bool | has_virus (std::string_view name) const |
| virtual Model< TSeq > & | initial_states (std::vector< double >, std::vector< int >) |
| bool | is_directed () const |
| bool | is_queuing_on () const Query if the queuing system is on. |
| void | load_agents_entities_ties (std::string fn, int skip) Associate agents-entities from a file. |
| void | load_agents_entities_ties (const std::vector< int > & agents_ids, const std::vector< int > & entities_ids) Associate agents-entities from data. |
| void | load_agents_entities_ties (const int * agents_id, const int * entities_id, size_t n) |
| void | mutate_virus () |
| virtual void | next () |
| bool | operator!= (const Model< TSeq > & other) const |
| epiworld_double | operator() (std::string pname) |
| Model< TSeq > & | operator= (const Model< TSeq > & m) |
| bool | operator== (const Model< TSeq > & other) const |
| epiworld_double | par (std::string pname) const |
| std::map< std::string, epiworld_double > & | params () |
| const Model< TSeq > & | print (bool lite=false) const |
| void | print_state_codes () const |
| Model< TSeq > & | queuing_off () Deactivates the queuing system. |
| void | queuing_on () Activates the queuing system (default.) |
| int | rbinom () |
| int | rbinom (int n, epiworld_double p) |
| Model< TSeq > & | read_params (std::string fn, bool overwrite=false) |
| void | record_hospitalization (Agent< TSeq > & agent) Record a hospitalization event for an agent. |
| virtual void | reset () Reset the model. |
| void | rewire () |
| epiworld_double | rexp () |
| epiworld_double | rexp (epiworld_double lambda) |
| epiworld_double | rgamma () |
| epiworld_double | rgamma (epiworld_double alpha, epiworld_double beta) |
| int | rgeom () |
| int | rgeom (epiworld_double p) |
| epiworld_double | rlognormal () |
| epiworld_double | rlognormal (epiworld_double mean, epiworld_double shape) |
| void | rm_entity (size_t entity_id) |
| void | rm_globalevent (std::string name) Remove a global action by name. |
| void | rm_globalevent (size_t i) Remove a global action by index. |
| void | rm_tool (size_t tool_pos) |
| void | rm_virus (size_t virus_pos) |
| int | rnbinom () |
| int | rnbinom (int n, epiworld_double p) |
| epiworld_double | rnorm () |
| epiworld_double | rnorm (epiworld_double mean, epiworld_double sd) |
| int | rpoiss () |
| int | rpoiss (epiworld_double lambda) |
| virtual Model< TSeq > & | run (epiworld_fast_uint ndays, int seed=-1) Runs the simulation (after initialization) |
| void | run_globalevents () |
| Model< TSeq > & | run_multiple (epiworld_fast_uint ndays, epiworld_fast_uint nexperiments, int seed_=-1, std::function< void(size_t, Model< TSeq > *)> fun=make_save_run< TSeq >(), bool reset=true, bool verbose=true, int nthreads=1) |
| epiworld_double | runif () |
| epiworld_double | runif (epiworld_double a, epiworld_double b) |
| int | runif_int (int a, int b) |
| size_t | sample_from_probs (size_t n) Sample from a set of probabilities stored in array_double_tmp. |
| void | seed (size_t s) |
| void | set_agents_data (double * data_, size_t ncols_) Set the agents data object. |
| void | set_backup () |
| void | set_name (std::string name) Set the name object. |
| void | set_ndays (epiworld_fast_uint ndays) |
| void | set_param (std::string pname, epiworld_double val) |
| void | set_rand_binom (int n, epiworld_double p) |
| void | set_rand_engine (std::shared_ptr< epi_xoshiro256ss > & eng) |
| void | set_rand_exp (epiworld_double lambda) |
| void | set_rand_gamma (epiworld_double alpha, epiworld_double beta) |
| void | set_rand_geom (epiworld_double p) |
| void | set_rand_lognormal (epiworld_double mean, epiworld_double shape) |
| void | set_rand_nbinom (int n, epiworld_double p) |
| void | set_rand_norm (epiworld_double mean, epiworld_double sd) |
| void | set_rand_poiss (epiworld_double lambda) |
| void | set_rand_unif (epiworld_double a, epiworld_double b) |
| void | set_rewire_fun (std::function< void(std::vector< Agent< TSeq > > *, Model< TSeq > *, epiworld_double)> fun) |
| void | set_rewire_prop (epiworld_double prop) |
| void | set_user_data (std::vector< std::string > names) [@ |
| size_t | size () const |
| epiworld_fast_int | state_of (std::string_view name) |
| int | today () const The current time of the model. |
| void | update_state () |
| Model< TSeq > & | verbose_off () |
| Model< TSeq > & | verbose_on () |
| void | write_data (std::string fn_virus_info, std::string fn_virus_hist, std::string fn_tool_info, std::string fn_tool_hist, std::string fn_total_hist, std::string fn_transmission, std::string fn_transition, std::string fn_reproductive_number, std::string fn_generation_time, std::string fn_active_cases, std::string fn_outbreak_size, std::string fn_hospitalizations) const Wrapper of DataBase::write_data __ |
| void | write_edgelist (std::string fn) const |
| void | write_edgelist (std::vector< int > & source, std::vector< int > & target) const |
| virtual | ~Model () |
Protected Attributes inherited from Model¶
See Model
| Type | Name |
|---|---|
| double * | agents_data = nullptr |
| size_t | agents_data_ncols = 0u |
| int | current_date = 0 |
| DataBase< TSeq > | db = [**DataBase**](classDataBase.md)<TSeq>(\*this) |
| bool | directed = false |
| std::shared_ptr< epi_xoshiro256ss > | engine = std::make\_shared< [**epi\_xoshiro256ss**](classepi__xoshiro256ss.md) >() |
| std::vector< Entity< TSeq > > | entities = {} |
| std::vector< Event< TSeq > > | events = {}Variables used to keep track of the events to be made regarding viruses. |
| std::vector< GlobalEventPtr< TSeq > > | globalevents |
| std::function< void(Model< TSeq > *)> | initial_states_fun = /* multi line expression */ |
| int | last_seed = 0 |
| epiworld_fast_uint | n_replicates = 0u |
| epiworld_fast_uint | nactions = 0u |
| std::string | name = ""Name of the model. |
| epiworld_fast_uint | ndays = 0 |
| epiworld_fast_uint | nstates = 0u |
| std::map< std::string, epiworld_double > | parameters |
| Progress | pb |
| std::vector< Agent< TSeq > > | population = {} |
| std::vector< Agent< TSeq > > | population_backup = {} |
| std::vector< size_t > | population_left |
| size_t | population_left_n = 0u |
| Queue< TSeq > | queue |
| std::binomial_distribution | rbinomd = /* multi line expression */ |
| std::function< void(std::vector< Agent< TSeq > > *, Model< TSeq > *, epiworld_double)> | rewire_fun |
| epiworld_double | rewire_prop = 0.0 |
| std::exponential_distribution | rexpd = /* multi line expression */ |
| std::gamma_distribution | rgammad = /* multi line expression */ |
| std::geometric_distribution | rgeomd = /* multi line expression */ |
| std::lognormal_distribution | rlognormald = /* multi line expression */ |
| std::negative_binomial_distribution | rnbinomd = /* multi line expression */ |
| std::normal_distribution | rnormd = /* multi line expression */ |
| std::poisson_distribution | rpoissd = /* multi line expression */ |
| epiworld_double | runifd_a = 0.0 |
| epiworld_double | runifd_b = 1.0 |
| std::vector< Agent< TSeq > * > | sampled_population |
| size_t | sampled_population_n = 0u |
| size_t | sim_id = 0u |
| std::vector< UpdateFun< TSeq > > | state_fun = {}Functions to update states. |
| std::vector< std::string > | states_labels = {}Labels of the states. |
| std::chrono::duration< epiworld_double, std::micro > | time_elapsed = /* multi line expression */ |
| std::chrono::time_point< std::chrono::steady_clock > | time_end |
| std::chrono::time_point< std::chrono::steady_clock > | time_start |
| std::vector< ToolPtr< TSeq > > | tools = {} |
| bool | use_queuing = true |
| bool | using_backup = true |
| bool | verbose = true |
| std::vector< VirusPtr< TSeq > > | viruses = {} |
Protected Functions inherited from Model¶
See Model
| Type | Name |
|---|---|
| void | _add_event (Agent< TSeq > * agent_, VirusPtr< TSeq > virus_, ToolPtr< TSeq > tool_, Entity< TSeq > * entity_, epiworld_fast_int new_state_, epiworld_fast_int queue_, EventAction action_) Construct a new Event object. |
| void | _event_add_entity (Event< TSeq > & a) |
| void | _event_add_tool (Event< TSeq > & a) |
| void | _event_add_virus (Event< TSeq > & a) |
| void | _event_change_state (Event< TSeq > & a) |
| void | _event_rm_entity (Event< TSeq > & a) |
| void | _event_rm_tool (Event< TSeq > & a) |
| void | _event_rm_virus (Event< TSeq > & a) |
| void | chrono_end () |
| void | chrono_start () |
| virtual std::unique_ptr< Model< TSeq > > | clone_ptr () Advanced usage: Makes a copy of data and returns it as undeleted pointer. |
| virtual epiworld_double | death_reduction_mixer (Agent< TSeq > * agent, VirusPtr< TSeq > & virus) |
| void | dist_entities () |
| void | dist_tools () |
| void | dist_virus () |
| virtual epiworld_double | recovery_enhancer_mixer (Agent< TSeq > * agent, VirusPtr< TSeq > & virus) |
| void | set_sim_id (size_t id) |
| virtual epiworld_double | susceptibility_reduction_mixer (Agent< TSeq > * agent, VirusPtr< TSeq > & virus) |
| virtual epiworld_double | transmission_reduction_mixer (Agent< TSeq > * agent, VirusPtr< TSeq > & virus) |
Detailed Description¶
This class extends the Measles epidemiological model to support different quarantine strategies based on exposure risk levels:
- High Risk: Unvaccinated agents who share entity membership with the case
-
Medium Risk: Unvaccinated agents who contacted an infected individual but don't share entity membership
-
Low Risk: Other unvaccinated agents
Each risk level can have different quarantine durations, allowing for targeted public health interventions. The model also includes enhanced detection during active quarantine periods.
Disease progression follows the same states as ModelMeaslesMixing: Susceptible → Exposed → Prodromal → Rash → Recovered

Template parameters:
TSeqType for genetic sequences (default: EPI_DEFAULT_TSEQ)
Public Static Attributes Documentation¶
variable DETECTED_HOSPITALIZED¶
variable EXPOSED¶
variable HOSPITALIZED¶
variable ISOLATED¶
variable ISOLATED_RECOVERED¶
variable PRODROMAL¶
variable QUARANTINED_EXPOSED¶
variable QUARANTINED_PRODROMAL¶
variable QUARANTINED_RECOVERED¶
variable QUARANTINED_SUSCEPTIBLE¶
variable QUARANTINE_PROCESS_ACTIVE¶
variable QUARANTINE_PROCESS_DONE¶
variable QUARANTINE_PROCESS_INACTIVE¶
variable RASH¶
variable RECOVERED¶
variable RISK_HIGH¶
variable RISK_LOW¶
variable RISK_MEDIUM¶
variable SUSCEPTIBLE¶
Public Functions Documentation¶
function ModelMeaslesMixingRiskQuarantine [1/2]¶
function ModelMeaslesMixingRiskQuarantine [2/2]¶
Constructs a ModelMeaslesMixingRiskQuarantine object.
inline ModelMeaslesMixingRiskQuarantine::ModelMeaslesMixingRiskQuarantine (
epiworld_fast_uint n,
epiworld_double prevalence,
epiworld_double contact_rate,
epiworld_double transmission_rate,
epiworld_double vax_efficacy,
epiworld_double incubation_period,
epiworld_double prodromal_period,
epiworld_double rash_period,
std::vector< double > contact_matrix,
epiworld_double hospitalization_rate,
epiworld_double hospitalization_period,
epiworld_double days_undetected,
epiworld_fast_int quarantine_period_high,
epiworld_fast_int quarantine_period_medium,
epiworld_fast_int quarantine_period_low,
epiworld_double quarantine_willingness,
epiworld_double isolation_willingness,
epiworld_fast_int isolation_period,
epiworld_double prop_vaccinated,
epiworld_double detection_rate_quarantine,
epiworld_double contact_tracing_success_rate=1.0,
epiworld_fast_uint contact_tracing_days_prior=4u
)
Parameters:
nThe number of entities in the model.prevalenceThe initial prevalence of the disease in the model.contact_rateThe contact rate between entities in the model.transmission_rateThe transmission rate of the disease in the model.vax_efficacyThe efficacy of the vaccine.incubation_periodThe incubation period of the disease in the model.prodromal_periodThe prodromal period of the disease in the model.rash_periodThe rash period of the disease in the model.contact_matrixThe contact matrix between entities in the model.hospitalization_rateThe rate at which infected individuals are hospitalized.hospitalization_periodThe average duration of hospitalization in days.days_undetectedThe average number of days an infected individual remains undetected.quarantine_period_highThe duration of quarantine in days for high-risk contacts.quarantine_period_mediumThe duration of quarantine in days for medium-risk contacts.quarantine_period_lowThe duration of quarantine in days for low-risk contacts.quarantine_willingnessThe proportion of individuals willing to comply with quarantine measures.isolation_willingnessThe proportion of individuals willing to self-isolate when detected.isolation_periodThe duration of isolation in days for detected infected individuals.prop_vaccinatedThe proportion of vaccinated agents.detection_rate_quarantineThe detection rate during active quarantine periods.contact_tracing_success_rateThe probability of successfully identifying and tracing contacts (default: 1.0).contact_tracing_days_priorThe number of days prior to detection for which contacts are traced (default: 4).
function clone_ptr¶
Create a clone of this model.
inline virtual std::unique_ptr< Model < TSeq > > ModelMeaslesMixingRiskQuarantine::clone_ptr () override
Returns:
Pointer to a new model instance with the same configuration
Implements Model::clone_ptr
function get_contact_matrix¶
Get the current contact matrix.
Returns:
Vector representing the contact matrix
function get_days_quarantine_triggered¶
Get the total number of quarantines that have occurred.
Returns:
The number of quarantines
function get_isolation_willingness¶
Get the isolation willingness for all agents.
Returns:
Vector of boolean values indicating each agent's willingness to self-isolate
function get_quarantine_risk_level¶
Get the risk level assigned to each agent for quarantine purposes.
Returns:
Vector of integers representing risk levels (0=low, 1=medium, 2=high)
function get_quarantine_willingness¶
Get the quarantine willingness for all agents.
Returns:
Vector of boolean values indicating each agent's willingness to quarantine
function initial_states¶
Set the initial states of the model.
inline virtual ModelMeaslesMixingRiskQuarantine < TSeq > & ModelMeaslesMixingRiskQuarantine::initial_states (
std::vector< double > proportions_,
std::vector< int > queue_={}
) override
Parameters:
proportions_Double vector with two elements:- [0]: The proportion of initially infected individuals who start in the exposed state.
-
[1]: The proportion of initially non-infected individuals who have recovered (immune).
-
queue_Optional vector for queuing specifications (default: empty).
Implements Model::initial_states
function reset¶
Reset the model to initial state.
Implements Model::reset
function set_contact_matrix¶
Set the contact matrix for population mixing.
Parameters:
cmatContact matrix specifying interaction rates between groups
The documentation for this class was generated from the following file epiworld-src/include/epiworld/models/measlesmixingriskquarantine.hpp