Source code for pyEpiabm.core.parameters
#
# Parameters
#
import json
import numpy as np
[docs]
class Parameters:
"""Class for global parameters.
Following a singleton Pattern.
"""
class __Parameters:
"""Singleton Parameters Object.
"""
def __init__(self, config_file_path):
"""Detailed description of parameters is given
in github wiki:
https://github.com/SABS-R3-Epidemiology/epiabm/wiki
"""
with open(config_file_path, "r") as parameters_file:
parameters_str = parameters_file.read()
parameters = json.loads(parameters_str)
for key, value in parameters.items():
if isinstance(value, list):
value = np.array(value)
setattr(self, key, value)
_instance = None # Singleton instance
[docs]
@staticmethod
def instance():
"""Creates singleton instance of __Parameters under
_instance if one doesn't already exist.
Returns
-------
__Parameters
An instance of the __Parameters class
"""
if not Parameters._instance:
raise RuntimeError("Config file hasn't been set")
return Parameters._instance
[docs]
@staticmethod
def set_file(file_path):
"""Loads file"""
Parameters._instance = Parameters.__Parameters(file_path)