summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py')
-rw-r--r--opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py30
1 files changed, 20 insertions, 10 deletions
diff --git a/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py b/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py
index 11ee836d..8f7b82ec 100644
--- a/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py
+++ b/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py
@@ -1,19 +1,29 @@
-from os import sys
+from models import MultiModel, MetaModel
+from util import SimulationConfig, parse_configuration
+from argparse import ArgumentParser, Namespace
-from input_parser import read_input
-from models.MetaModel import MetaModel
-from models.MultiModel import MultiModel
+
+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():
- multimodel = MultiModel(
- user_input=read_input(sys.argv[2]),
- path=sys.argv[1],
- )
+ 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)
- multimodel.generate_plot()
+ multi_model: MultiModel = MultiModel(config=simulation_config)
+ multi_model.generate_plot()
- MetaModel(multimodel)
+ if simulation_config.is_metamodel:
+ meta_model: MetaModel = MetaModel(multi_model)
+ meta_model.compute()
+ meta_model.output()
if __name__ == "__main__":