Add baseline_recalc_ordering/src/baseline_recalc_ordering/core.py

This commit is contained in:
Mika 2025-12-19 16:32:37 +00:00
parent 589e15b618
commit ca7a2b6c16

View file

@ -0,0 +1,48 @@
from __future__ import annotations
import json
import pandas as pd
from statistics import mean, median, pstdev
from typing import List, Dict
def analyze_latency(order_sequence: List[str]) -> Dict[str, object]:
"""Analysiert Latenzmetriken unter verschiedenen baseline_recalc-Reihenfolgen.
Diese Funktion überprüft die Eingabe, erzeugt exemplarische Latenzwerte
für jedes Element der Reihenfolge und berechnet daraus statistische Kennzahlen.
Args:
order_sequence: Liste der angewandten baseline_recalc-Operationen in Reihenfolge.
Returns:
Dictionary mit der Reihenfolge und berechneten Latenzmetriken.
"""
if not isinstance(order_sequence, list) or not all(isinstance(x, str) for x in order_sequence):
raise ValueError("order_sequence muss eine Liste von Strings sein.")
if not order_sequence:
raise ValueError("order_sequence darf nicht leer sein.")
# Simuliere exemplarische Latenzen: hier einfach eine deterministische Abbildung
# aus der Position + Buchstabenwerten, für Tests reproduzierbar.
latencies = []
for i, op in enumerate(order_sequence):
op_val = sum(ord(c) for c in op) % 50 # deterministisch und klein
latencies.append(op_val + i * 0.5)
df = pd.DataFrame({"operation": order_sequence, "latency": latencies})
latency_metrics = {
"mean": float(mean(df["latency"])),
"median": float(median(df["latency"])),
"stdev": float(pstdev(df["latency"])),
"min": float(df["latency"].min()),
"max": float(df["latency"].max()),
"count": int(df["latency"].count()),
}
result = {
"order_sequence": order_sequence,
"latency_metrics": latency_metrics,
}
return result