Health-GPS 3.0.0.0
Global Health Policy Simulation model (Health-GPS)
Loading...
Searching...
No Matches
configuration.h
Go to the documentation of this file.
1
8#pragma once
9
10#include "data_source.h"
11#include "poco.h"
12#include "version.h"
13
14#include "HealthGPS.Core/api.h"
17#include "HealthGPS/scenario.h"
19
20#include <memory>
21#include <optional>
22#include <stdexcept>
23
24namespace hgps::input {
25
29 std::filesystem::path root_path;
30
32 std::unique_ptr<DataSource> data_source;
33
36
39
42
45
47 std::vector<std::string> diseases;
48
50 std::optional<unsigned int> custom_seed;
51
53 unsigned int start_time{};
54
56 unsigned int stop_time{};
57
59 unsigned int trial_runs{};
60
62 unsigned int sync_timeout_ms{};
63
65 std::optional<PolicyScenarioInfo> active_intervention;
66
69
72
74 int job_id{};
75
77 const char *app_name = PROJECT_NAME;
78
80 const char *app_version = PROJECT_VERSION;
81
86
88 nlohmann::json config_data;
91};
92
94class ConfigurationError : public std::runtime_error {
95 public:
96 ConfigurationError(const std::string &msg);
97};
98
105Configuration get_configuration(const std::string &config_source,
106 const std::optional<std::string> &output_folder, int job_id,
107 bool verbose);
108
113std::vector<hgps::core::DiseaseInfo> get_diseases_info(hgps::core::Datastore &data_api,
114 Configuration &config);
115
123 const Configuration &config,
124 std::vector<hgps::core::DiseaseInfo> diseases);
125
130std::string create_output_file_name(const OutputInfo &info, int job_id);
131
135std::unique_ptr<hgps::Scenario> create_baseline_scenario(hgps::SyncChannel &channel);
136
145 std::shared_ptr<const hgps::EventAggregator> event_bus,
146 std::shared_ptr<const hgps::ModelInput> input);
147
153std::unique_ptr<hgps::Scenario> create_intervention_scenario(hgps::SyncChannel &channel,
154 const PolicyScenarioInfo &info);
155
165 std::shared_ptr<const hgps::EventAggregator> event_bus,
166 std::shared_ptr<const hgps::ModelInput> input,
167 const PolicyScenarioInfo &info);
168
172std::string expand_environment_variables(const std::string &path);
173
178std::optional<unsigned int> create_job_seed(int job_id, std::optional<unsigned int> user_seed);
179
180} // namespace hgps::input
Thread-safe communication channel data type.
Definition channel.h:24
Defines the Simulation model inputs data type.
Definition modelinput.h:49
Defines the SimulationModule factory data type.
Definition modulefactory.h:21
Defines the simulation engine data type class.
Definition simulation.h:24
Defines a Datatable for in memory data class.
Definition datatable.h:16
Defines the Health-GPS back-end data store interface for all implementations.
Definition datastore.h:14
Represents an error that occurred with the format of a config file.
Definition configuration.h:94
VerboseMode
Verbosity mode enumeration.
Definition forward_type.h:9
@ verbose
Print more information about actions, including warning.
Data structures containing model parameters and configuration options.
Definition configuration.cpp:75
std::string create_output_file_name(const OutputInfo &info, int job_id)
Creates the full output file name from user input configuration.
Definition configuration.cpp:231
std::string expand_environment_variables(const std::string &path)
Expand environment variables in path to respective values.
Definition configuration.cpp:373
ModelInput create_model_input(core::DataTable &input_table, core::Country country, const Configuration &config, std::vector< core::DiseaseInfo > diseases)
Definition configuration.cpp:185
hgps::Simulation create_intervention_simulation(hgps::SyncChannel &channel, hgps::SimulationModuleFactory &factory, std::shared_ptr< const hgps::EventAggregator > event_bus, std::shared_ptr< const hgps::ModelInput > input, const PolicyScenarioInfo &info)
Creates the intervention simulation engine instance.
Definition configuration.cpp:362
hgps::Simulation create_baseline_simulation(hgps::SyncChannel &channel, hgps::SimulationModuleFactory &factory, std::shared_ptr< const hgps::EventAggregator > event_bus, std::shared_ptr< const hgps::ModelInput > input)
Creates the baseline simulation engine instance.
Definition configuration.cpp:281
std::unique_ptr< hgps::Scenario > create_intervention_scenario(SyncChannel &channel, const PolicyScenarioInfo &info)
Creates the intervention scenario instance.
Definition configuration.cpp:289
std::vector< core::DiseaseInfo > get_diseases_info(core::Datastore &data_api, Configuration &config)
Gets the collection of diseases that matches the selected input list.
Definition configuration.cpp:170
std::unique_ptr< hgps::Scenario > create_baseline_scenario(hgps::SyncChannel &channel)
Creates the baseline scenario instance.
Definition configuration.cpp:277
std::optional< unsigned int > create_job_seed(int job_id, std::optional< unsigned int > user_seed)
Creates the experiment random number generator seed.
Definition configuration.cpp:395
Configuration get_configuration(const std::string &config_source, const std::optional< std::string > &output_folder, int job_id, bool verbose)
Loads the input configuration file, *.json, information.
Definition configuration.cpp:81
@ info
General notification and progress message.
Country ISO-3166 definition data structure.
Definition country.h:7
Defines the application configuration data structure.
Definition configuration.h:27
OutputInfo output
Experiment output folder and file information.
Definition configuration.h:68
std::vector< std::string > diseases
List of diseases to include in experiment.
Definition configuration.h:47
ProjectRequirements project_requirements
Per-project requirements (demographics, income, PA, risk factors, trend, two-stage)....
Definition configuration.h:85
PIFInfo population_impact_fraction
Population Impact Fraction (PIF) configuration.
Definition configuration.h:90
std::optional< unsigned int > custom_seed
Simulation initialisation custom seed value, optional.
Definition configuration.h:50
nlohmann::json config_data
Original config.json data for additional fields not mapped into Configuration.
Definition configuration.h:88
unsigned int trial_runs
The number of simulation runs (replications) to execute.
Definition configuration.h:59
ModellingInfo modelling
User defined model and parameters information.
Definition configuration.h:44
std::optional< PolicyScenarioInfo > active_intervention
The active intervention policy definition.
Definition configuration.h:65
const char * app_name
Experiment model name.
Definition configuration.h:77
SettingsInfo settings
Experiment population settings.
Definition configuration.h:38
int job_id
Experiment batch job identifier.
Definition configuration.h:74
const char * app_version
Experiment model version.
Definition configuration.h:80
unsigned int sync_timeout_ms
Baseline to intervention data synchronisation time out (milliseconds)
Definition configuration.h:62
unsigned int stop_time
The experiment stop time (simulation clock)
Definition configuration.h:56
std::filesystem::path root_path
The root path for configuration files.
Definition configuration.h:29
SESInfo ses
Socio-economic status (SES) model inputs.
Definition configuration.h:41
FileInfo file
The input data file details.
Definition configuration.h:35
unsigned int start_time
The experiment start time (simulation clock)
Definition configuration.h:53
hgps::core::VerboseMode verbosity
Application logging verbosity mode.
Definition configuration.h:71
std::unique_ptr< DataSource > data_source
Static data source for the simulation (either URL or path)
Definition configuration.h:32
Information about a data file to be loaded.
Definition poco.h:20
User-defined model and parameter information.
Definition poco.h:101
Experiment output folder and file information.
Definition poco.h:128
Population Impact Fraction (PIF) configuration.
Definition poco.h:211
Information about an active policy intervention.
Definition poco.h:179
Socio-economic status (SES) model inputs.
Definition poco.h:39
Experiment's population settings.
Definition poco.h:30