From f3465d88de7547042ac717e3df2f0dd77ad74ee7 Mon Sep 17 00:00:00 2001 From: Mika Date: Mon, 30 Mar 2026 16:33:37 +0000 Subject: [PATCH] Add data_analysis/src/data_analysis/cli.py --- data_analysis/src/data_analysis/cli.py | 46 ++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 data_analysis/src/data_analysis/cli.py diff --git a/data_analysis/src/data_analysis/cli.py b/data_analysis/src/data_analysis/cli.py new file mode 100644 index 0000000..e22c066 --- /dev/null +++ b/data_analysis/src/data_analysis/cli.py @@ -0,0 +1,46 @@ +import argparse +import json +from pathlib import Path +from typing import Any +from data_analysis import core + + +def _load_json(path: Path) -> Any: + if not path.exists(): + raise FileNotFoundError(f"Input file not found: {path}") + with open(path, 'r', encoding='utf-8') as f: + data = json.load(f) + if not isinstance(data, list): + raise ValueError("Expected input JSON to contain a list of run data objects.") + for idx, entry in enumerate(data): + if not isinstance(entry, dict): + raise ValueError(f"Entry at index {idx} is not a JSON object.") + return data + + +def _save_json(path: Path, data: Any) -> None: + with open(path, 'w', encoding='utf-8') as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + +def main() -> None: + parser = argparse.ArgumentParser(description="Analyse von Laufdaten zur Stabilitätsbewertung.") + parser.add_argument("--input", required=True, help="Pfad zur JSON-Datei mit Run-Daten") + parser.add_argument("--output", required=False, help="Dateipfad für das Ausgabeergebnis") + args = parser.parse_args() + + input_path = Path(args.input) + output_path = Path(args.output) if args.output else Path("output/analysis_results.json") + + run_data_list = _load_json(input_path) + + results = core.analyze_data(run_data_list) + + output_path.parent.mkdir(parents=True, exist_ok=True) + _save_json(output_path, results) + + print(f"Analyse abgeschlossen. Ergebnis gespeichert unter: {output_path}") + + +if __name__ == "__main__": + main()