Add measurements_analysis/src/measurements_analysis/cli.py

This commit is contained in:
Mika 2025-12-14 16:47:08 +00:00
parent 75e4788dc3
commit 960aa4e66c

View file

@ -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()