__author__ = "Lukas Leufen"
__date__ = '2019-11-14'

import argparse
import json
import logging

from mlair.run_modules.experiment_setup import ExperimentSetup
from mlair.run_modules.model_setup import ModelSetup
from mlair.run_modules.post_processing import PostProcessing
from mlair.run_modules.pre_processing import PreProcessing
from mlair.run_modules.run_environment import RunEnvironment
from mlair.run_modules.training import Training
from mlair.workflows import DefaultWorkflowHPC


def load_stations():
    try:
        filename = 'supplement/German_background_stations.json'
        with open(filename, 'r') as jfile:
            stations = json.load(jfile)
            logging.info(f"load station IDs from file: {filename} ({len(stations)} stations)")
            # stations.remove('DEUB042')
    except FileNotFoundError:
        stations = ['DEBW107', 'DEBY081', 'DEBW013', 'DEBW076', 'DEBW087', 'DEBW001']
        # stations = ['DEBB050', 'DEBW107', 'DEBY081', 'DEBW013', 'DEBW076', 'DEBW087', 'DEBW001']
        logging.info(f"Use stations from list: {stations}")

    return stations


def main(parser_args):

    workflow = DefaultWorkflowHPC(stations=load_stations(), **parser_args.__dict__, start_script=__file__)
    workflow.run()


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--experiment_date', metavar='--exp_date', type=str, default=None,
                        help="set experiment date as string")
    args = parser.parse_args(["--experiment_date", "testrun"])

    main(args)