def __init__(self, cfg): # Create logger first self.logger = logging.getLogger(__name__) if not isinstance(cfg, dict): self.logger.error(f"Wrong datatype for cfg: {type(cfg)}") raise TypeError(type(cfg)) # Read config values DB_NAME = utils.read_string_from_config(logger=self.logger, cfg=cfg, key="dbName") self.TRAINING_TABLE = utils.read_string_from_config( logger=self.logger, cfg=cfg, key="trainingDataTable") self.IDEAL_F_TABLE = utils.read_string_from_config( logger=self.logger, cfg=cfg, key="idealFunctionsTable") self.RESULTS_TABLE = utils.read_string_from_config(logger=self.logger, cfg=cfg, key="resultsTable") # Try to create SQLite engine connection_string = "sqlite:///" + DB_NAME + ".db" self.logger.info('Creating sqlite database engine...') try: self._engine = sqlalchemy.create_engine(connection_string) except sqlalchemy.exc.SQLAlchemyError as err: self.logger.error(err) raise (err) self.logger.info('Creating sqlite database engine...Done')
def test_read_string_from_config_key_empty_key(self): logger = logging.getLogger(__name__) cfg = utils.load_config(logger, "config/data.json") cfg["test"] = "" with self.assertRaises(utils.EmptyKeyValueException): utils.read_string_from_config(logger=logger, cfg=cfg, key="test")
def test_read_string_from_config_key_not_found(self): logger = logging.getLogger(__name__) cfg = utils.load_config(logger, "config/data.json") with self.assertRaises(KeyError): utils.read_string_from_config(logger=logger, cfg=cfg, key="not_found")
def main(): # Set maximal threads to eight to avoid computation problems os.environ['NUMEXPR_MAX_THREADS'] = "8" # Configure logger logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - ' + '%(levelname)s - %(message)s', filename='applog.log', filemode='w') # Get logger with name of module logger = logging.getLogger(__name__) logger.info("Starting program.") # Read config data cfg = utils.load_config(logger, "config/data.json") # Set constant paths to where data is stored # Information is retrieved from config file logger.info("Reading config file...") TRAIN_FILE = utils.read_string_from_config(logger=logger, cfg=cfg, key="trainFile") IDEAL_FILE = utils.read_string_from_config(logger=logger, cfg=cfg, key="idealFile") TEST_FILE = utils.read_string_from_config(logger=logger, cfg=cfg, key="testFile") TRAIN_PATH = os.path.join(os.path.dirname(__file__), TRAIN_FILE) IDEAL_PATH = os.path.join(os.path.dirname(__file__), IDEAL_FILE) TEST_PATH = os.path.join(os.path.dirname(__file__), TEST_FILE) logger.info("Reading config file...Done") # Create database instance database = db.Database(cfg=cfg) # Save training data and ideal functions in db training_data = utils.read_data(logger=logger, path=TRAIN_PATH) ideal_data = utils.read_data(logger=logger, path=IDEAL_PATH) database.update_training_table(data=training_data) database.update_ideal_functions_table(data=ideal_data) # Initiate training process trainingData = data.TrainingData(training_data=training_data, ideal_data=ideal_data) training_result = trainingData.find_ideal_functions() # Initiate mapping process testData = data.TestData(ideal_data=ideal_data, result_data=training_result, test_filepath=TEST_PATH) test_result = testData.map_to_functions() # Save mapping results in db database.update_result_table(data=test_result) # Create plotter instance with results plotter = plot.Plotter(ideal_data=ideal_data, training_data=training_data, training_result=training_result, deviations=trainingData.deviations(), test_result=test_result) # Plot results plotter.plot_results() # Show results plotter.show_results() logger.info("Program has finished.")
def test_read_string_from_config(self): logger = logging.getLogger(__name__) cfg = utils.load_config(logger, "config/data.json") utils.read_string_from_config(logger=logger, cfg=cfg, key="trainFile")