コード例 #1
0
    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')
コード例 #2
0
    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")
コード例 #3
0
    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")
コード例 #4
0
ファイル: main.py プロジェクト: jumo98/pymatcher
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.")
コード例 #5
0
 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")