diff --git a/measurements_analysis/src/measurements_analysis/cli.py b/measurements_analysis/src/measurements_analysis/cli.py new file mode 100644 index 0000000..f707714 --- /dev/null +++ b/measurements_analysis/src/measurements_analysis/cli.py @@ -0,0 +1,41 @@ +import argparse +import json +import os +from pathlib import Path +from measurements_analysis import core + +def main(): + parser = argparse.ArgumentParser(description="CLI zur Analyse von HF-Messdaten.") + parser.add_argument("--input", required=True, help="Pfad zur Eingabe-JSON-Datei mit Messdaten.") + parser.add_argument("--output", required=True, help="Pfad zur Ausgabe-JSON-Datei für Analyseergebnisse.") + args = parser.parse_args() + + input_path = Path(args.input) + output_path = Path(args.output) + + if not input_path.exists(): + raise FileNotFoundError(f"Eingabedatei nicht gefunden: {input_path}") + + with input_path.open("r", encoding="utf-8") as infile: + try: + data_json = json.load(infile) + except json.JSONDecodeError as e: + raise ValueError(f"Ungültiges JSON-Format in Eingabedatei: {e}") + + if not isinstance(data_json, list): + raise ValueError("Eingabe-JSON erwartet eine Liste von Messobjekten.") + + required_fields = {"spacing_mm", "hf_amplitude", "spike_outlier_rate", "levenes_test_p"} + for i, item in enumerate(data_json): + if not required_fields.issubset(item): + missing = required_fields - item.keys() + raise ValueError(f"Fehlende Felder in Datensatz {i}: {', '.join(missing)}") + + results = core.analyze_measurements(data_json) + + output_path.parent.mkdir(parents=True, exist_ok=True) + with output_path.open("w", encoding="utf-8") as outfile: + json.dump(results, outfile, indent=2) + +if __name__ == "__main__": + main() \ No newline at end of file