summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py
blob: 8f7b82ecf89f9c6455f6a750219bc88356cf3f19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from models import MultiModel, MetaModel
from util import SimulationConfig, parse_configuration
from argparse import ArgumentParser, Namespace


def arg_parser() -> Namespace:
    parser = ArgumentParser(prog="m3sa", description="Multi-Model Simulation and Analysis")
    parser.add_argument("config", help="Path to the JSON configuration file", type=str)
    parser.add_argument("simulation", help="Path to the simulation directory", type=str)
    parser.add_argument("-o", "--output", help="Path to the output directory", type=str, nargs="?")
    return parser.parse_args()


def main():
    arg_input: Namespace = arg_parser()
    output_path: str = arg_input.output if arg_input.output else "output"
    simulation_path: str = arg_input.simulation
    simulation_config: SimulationConfig = parse_configuration(arg_input.config, output_path, simulation_path)

    multi_model: MultiModel = MultiModel(config=simulation_config)
    multi_model.generate_plot()

    if simulation_config.is_metamodel:
        meta_model: MetaModel = MetaModel(multi_model)
        meta_model.compute()
        meta_model.output()


if __name__ == "__main__":
    main()