Simulation Config Module
Simulation configuration management.
This module handles the configuration of simulation runs, including parameter validation, protocol integration, and resource management. It ensures all simulation parameters are properly validated before being used in a simulation run.
Classes
- SimulationConfig
Main configuration class that encapsulates all simulation parameters
Key Features
Parameter validation for all configuration sections
Protocol integration with validation
Resource management
Default value handling
Type checking and range validation
Configuration Structure
Example YAML configuration structure:
simulation:
type: "des"
num_patients: 1000
duration_days: 365
random_seed: 42
verbose: true
start_date: "2023-01-01"
resources:
capacity:
doctors: 5
nurses: 10
oct_machines: 3
clinical_model:
disease_states: ["NAIVE", "STABLE", "ACTIVE", "HIGHLY_ACTIVE"]
transition_probabilities:
NAIVE:
STABLE: 0.3
ACTIVE: 0.6
HIGHLY_ACTIVE: 0.1
STABLE:
STABLE: 0.7
ACTIVE: 0.3
vision_change:
base_change:
NAIVE:
injection: [5, 2]
no_injection: [0, 1]
STABLE:
injection: [2, 1]
no_injection: [-1, 0.5]
time_factor:
max_weeks: 52
ceiling_factor:
max_vision: 100
measurement_noise: [0, 0.5]
Notes
All numeric parameters are validated against expected ranges
Probability parameters must sum to 1 where applicable
Dates must be in YYYY-MM-DD format
Missing parameters will use sensible defaults where possible
- class simulation.config.SimulationConfig(parameters, protocol, simulation_type, num_patients, duration_days, random_seed, verbose, start_date, resources=None, sensitivity_analysis=None)[source]
Bases:
objectConfiguration for a simulation run with protocol objects.
Added direct initialization support for testing purposes.
This class encapsulates all configuration parameters needed to run a simulation, including treatment protocols, patient parameters, and resource constraints. Provides validation methods for all configuration sections.
- Parameters:
parameters (Dict[str, Any]) – Dictionary of simulation parameters
protocol (TreatmentProtocol) – Treatment protocol to use in simulation
simulation_type (str) – Type of simulation (‘abs’ or ‘des’)
num_patients (int) – Number of patients to simulate
duration_days (int) – Duration of simulation in days
random_seed (int) – Random seed for reproducibility
verbose (bool) – Whether to enable verbose logging
start_date (datetime) – Simulation start date
resources (Optional[Dict[str, Any]], optional) – Resource configuration dictionary
sensitivity_analysis (Optional[Dict[str, Any]], optional) – Sensitivity analysis configuration
- Variables:
parameters (Dict[str, Any]) – Raw simulation parameters
protocol (TreatmentProtocol) – Treatment protocol instance
simulation_type (str) – Simulation type identifier
num_patients (int) – Number of simulated patients
duration_days (int) – Simulation duration
random_seed (int) – Random seed value
verbose (bool) – Verbosity flag
start_date (datetime) – Simulation start date
resources (Optional[Dict[str, Any]]) – Resource configuration
sensitivity_analysis (Optional[Dict[str, Any]]) – Sensitivity analysis configuration
-
parameters:
Dict[str,Any]
-
protocol:
TreatmentProtocol
-
simulation_type:
str
-
num_patients:
int
-
duration_days:
int
-
random_seed:
int
-
verbose:
bool
-
start_date:
datetime
-
resources:
Optional[Dict[str,Any]] = None
-
sensitivity_analysis:
Optional[Dict[str,Any]] = None
- get_vision_params()[source]
Get validated vision-related parameters.
- Returns:
Validated vision parameters
- Return type:
Dict[str, Any]
- Raises:
ValueError – If required parameters are missing or invalid
Notes
Validates the following parameters: - baseline_mean: Valid ETDRS letter range (30-85) - measurement_noise_sd: Reasonable measurement noise (0-5) - max_letters: ETDRS maximum (0-100) - min_letters: ETDRS minimum (0-30) - headroom_factor: Must be between 0 and 1
- get_maintenance_params()[source]
Get validated maintenance phase parameters.
- Returns:
Validated maintenance phase parameters
- Return type:
Dict[str, Any]
- Raises:
ValueError – If required parameters are missing or invalid
Notes
Validates the following parameters: - memory_factor: Must be between 0 and 1 - base_effect_ceiling: Maximum reasonable improvement (0-15) - regression_factor: Must be between 0 and 1 - random_effect_mean: Reasonable range for log-normal mean (-2 to 2) - random_effect_sd: Reasonable range for log-normal SD (0 to 1) - decline_probability: Must be probability (0 to 1) - decline_effect_mean: Reasonable vision loss range (-5 to 0) - decline_effect_sd: Reasonable variation in loss (0 to 2)
- get_loading_phase_params()[source]
Get validated loading phase parameters.
- Returns:
Validated loading phase parameters
- Return type:
Dict[str, Any]
- Raises:
ValueError – If required parameters are missing, invalid, or probabilities don’t sum to 1
Notes
Validates the following parameters: - vision_improvement_mean: Reasonable letter improvement (0-15) - vision_improvement_sd: Reasonable variation (0-5) - improve_probability: Must be probability (0-1) - stable_probability: Must be probability (0-1) - decline_probability: Must be probability (0-1)
- get_resource_params()[source]
Get resource configuration parameters.
- Returns:
Resource parameters with defaults: - doctors: 5 - nurses: 5 - oct_machines: 5
- Return type:
Dict[str, Any]
Notes
First checks simulation.resources.capacity if it exists, otherwise falls back to default values.
- get_simulation_params()[source]
Get general simulation parameters.
- Returns:
Simulation parameters including: - end_date: datetime (calculated from start_date + duration_days)
- Return type:
Dict[str, Any]
- get_des_params()[source]
Get DES-specific parameters.
- Returns:
DES parameters with defaults:
daily_capacity: 20 patients
days_per_week: 5 days
patient_generation: - rate_per_week: 3 patients - random_seed: None (use simulation seed)
- Return type:
Dict[str, Any]
- get_output_params()[source]
Get output configuration parameters.
- Returns:
Output parameters with defaults: - save_results: True - database: ‘simulations.db’ - plots: True - verbose: False
- Return type:
Dict[str, Any]
- get_clinical_model_params()[source]
Get validated clinical model parameters.
- Returns:
Validated clinical model parameters
- Return type:
Dict[str, Any]
- Raises:
ValueError – If required sections or parameters are missing
Notes
Validates the following required sections: - disease_states - transition_probabilities - vision_change
For vision_change, validates: - base_change - time_factor - ceiling_factor - measurement_noise
- load_parameter_file(file_path)[source]
Load parameters from an external YAML file.
- Parameters:
file_path (str) – Path to the parameter file
- Returns:
Dictionary containing the loaded parameters
- Return type:
Dict[str, Any]
- Raises:
FileNotFoundError – If the parameter file cannot be found
ValueError – If the parameter file is invalid
- get_treatment_discontinuation_params()[source]
Get treatment discontinuation parameters.
- Returns:
Treatment discontinuation parameters including: - enabled: Whether discontinuation is enabled - criteria: Discontinuation criteria configuration - monitoring: Post-discontinuation monitoring configuration - retreatment: Treatment re-entry configuration
- Return type:
Dict[str, Any]
Notes
If a parameter_file is specified in the discontinuation configuration, loads the parameters from that file. Otherwise, falls back to the parameters in the clinical model.
- get_sensitivity_analysis_params()[source]
Get sensitivity analysis parameters if enabled.
- Returns:
Dictionary containing sensitivity analysis parameters: - enabled: Whether sensitivity analysis is enabled - parameter_file: Path to sensitivity parameter file - selected_variation: Name of selected parameter variation - variations: Dictionary of parameter variations if loaded
- Return type:
Dict[str, Any]
Notes
If sensitivity analysis is enabled, loads the parameter variations from the specified file and applies the selected variation.
- apply_sensitivity_variation(variation_name)[source]
Apply a sensitivity analysis variation to the parameters.
- Parameters:
variation_name (str) – Name of the variation to apply
- Raises:
ValueError – If the variation does not exist
- Return type:
None
Notes
This method modifies the parameters in place by applying the specified variation from the sensitivity analysis file.
- get_cost_parameters()[source]
Get cost parameters if enabled.
- Returns:
Dictionary containing cost parameters or empty dict if not enabled
- Return type:
Dict[str, Any]
- classmethod from_yaml(config_name)[source]
Create configuration from YAML with protocol objects.
- Parameters:
config_name (str) – Name of the configuration to load
- Returns:
New SimulationConfig instance
- Return type:
- Raises:
ValueError – If protocol is invalid or required parameters are missing
Notes
Uses ProtocolParser to load and validate the full configuration, including protocol definitions and parameter validation.
- __init__(parameters, protocol, simulation_type, num_patients, duration_days, random_seed, verbose, start_date, resources=None, sensitivity_analysis=None)
- Parameters:
parameters (Dict[str, Any])
protocol (TreatmentProtocol)
simulation_type (str)
num_patients (int)
duration_days (int)
random_seed (int)
verbose (bool)
start_date (datetime)
resources (Dict[str, Any] | None)
sensitivity_analysis (Dict[str, Any] | None)
- Return type:
None