From e3a75c0a0258451d1c2e8e1a22e827fe7e95f390 Mon Sep 17 00:00:00 2001 From: dmt <> Date: Tue, 1 Oct 2019 20:49:11 +0200 Subject: [PATCH] Define general, pre processing and learn block identification settings. --- cml/shared/__init__.py | 0 cml/shared/settings.py | 102 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 cml/shared/__init__.py create mode 100644 cml/shared/settings.py diff --git a/cml/shared/__init__.py b/cml/shared/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cml/shared/settings.py b/cml/shared/settings.py new file mode 100644 index 0000000..69bc969 --- /dev/null +++ b/cml/shared/settings.py @@ -0,0 +1,102 @@ +"""Settings module. + +""" +from itertools import starmap +from dataclasses import dataclass +from configparser import ConfigParser + + +# TODO (dmt): Set default values +class Settings: + INPUT_FILE: str = "" + LEARN_DIR: str = "" + MAX_LEARN_DIR: int = 0 + USE_EXISTING_MODELS: bool = False + SET_FEATURES: str = "" + SET_TARGETS: str = "" + SORT_TIME_STAMP: bool = False + CUT_TIME_STAMP: bool = False + BLOCK_SIZE: int = 0 + MAX_BLOCKS: int = 0 + STACK_ITERATIONS: int = 0 + LEARN_BLOCK_MINIMUM: int = 0 + SIGMA_ZETA_CUTOFF: float = 0.0 + + +@dataclass +class GeneralSettings: + input_file: str + learn_dir: str + max_learn_dir: int + use_existing_models: bool + + +@dataclass +class PreprocessingSettings: + set_features: str + set_targets: str + sort_time_stamp: bool + cut_time_stamp: bool + + +@dataclass +class BlockProcessingSettings: + block_size = int + max_blocks = int + stack_iterations = int + learn_block_minimum = int + sigma_zeta_cutoff = float + + +def specific_settings_factory(settings_type: str): + types = { + "general": starmap( + GeneralSettings, [(Settings.INPUT_FILE, + Settings.LEARN_DIR, + Settings.MAX_LEARN_DIR, + Settings.USE_EXISTING_MODELS)]), + "preprocessing": starmap( + PreprocessingSettings, [(Settings.SET_FEATURES, + Settings.SET_TARGETS, + Settings.SORT_TIME_STAMP, + Settings.CUT_TIME_STAMP)]), + "block_processing": starmap( + BlockProcessingSettings, [(Settings.BLOCK_SIZE, + Settings.MAX_BLOCKS, + Settings.STACK_ITERATIONS, + Settings.LEARN_BLOCK_MINIMUM, + Settings.SIGMA_ZETA_CUTOFF)]) + } + + return next(types[settings_type]) + + +def read_settings(path: str): + try: + config = ConfigParser(path) + configure_main_settings_class(config) + except AttributeError as e: + # TODO (dmt): Implement proper error handling. + pass + + +def configure_main_settings_class(config): + + default = config["DEFAULT"] + Settings.INPUT_FILE = default["input_file"] + Settings.LEARN_DIR = default["learn_dir"] + Settings.MAX_LEARN_DIR = default["max_learn_dir"] + Settings.USE_EXISTING_MODELS = default["use_existing_models"] + + preprocessing = config["PREPROCESSING"] + Settings.SET_FEATURES = preprocessing["set_features"] + Settings.SET_TARGETS = preprocessing["set_targets"] + Settings.SORT_TIME_STAMP = preprocessing["sort_time_stamp"] + Settings.CUT_TIME_STAMP = preprocessing["cut_time_stamp"] + + block_processing = config["BLOCK_PROCESSING"] + Settings.BLOCK_SIZE = block_processing["block_size"] + Settings.MAX_BLOCKS = block_processing["max_blocks"] + Settings.STACK_ITERATIONS = block_processing["stack_iterations"] + Settings.LEARN_BLOCK_MINIMUM = block_processing["learn_block_minimum"] + Settings.SIGMA_ZETA_CUTOFF = block_processing["sigma_zeta_cutoff"] -- GitLab