97 lines
3.5 KiB
Python
97 lines
3.5 KiB
Python
|
|
"""Registry: Korrelations- und Treiber-Metriken (Data Layer correlations)."""
|
||
|
|
|
||
|
|
from placeholder_registry import (
|
||
|
|
PlaceholderMetadata,
|
||
|
|
MissingValuePolicy,
|
||
|
|
OutputType,
|
||
|
|
PlaceholderType,
|
||
|
|
register_placeholder,
|
||
|
|
)
|
||
|
|
from ._evidence import tag_standard_evidence
|
||
|
|
|
||
|
|
CAT = "Korrelationen"
|
||
|
|
MVP = lambda reason, disp: MissingValuePolicy(
|
||
|
|
available=False, value_raw=None, missing_reason=reason, legacy_display=disp
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def register_korrelationen():
|
||
|
|
for key, dl_fn, desc, tables, sem in [
|
||
|
|
(
|
||
|
|
"correlation_energy_weight_lag",
|
||
|
|
"calculate_lag_correlation",
|
||
|
|
"JSON: Lag-Korrelation Energiebilanz ↔ Gewicht",
|
||
|
|
["nutrition_log", "weight_log"],
|
||
|
|
"correlations.calculate_lag_correlation(pid, 'energy', 'weight')",
|
||
|
|
),
|
||
|
|
(
|
||
|
|
"correlation_protein_lbm",
|
||
|
|
"calculate_lag_correlation",
|
||
|
|
"JSON: Lag-Korrelation Protein ↔ Magermasse",
|
||
|
|
["nutrition_log", "weight_log", "caliper_log"],
|
||
|
|
"correlations.calculate_lag_correlation(pid, 'protein', 'lbm')",
|
||
|
|
),
|
||
|
|
(
|
||
|
|
"correlation_load_hrv",
|
||
|
|
"calculate_lag_correlation",
|
||
|
|
"JSON: Lag-Korrelation Trainingslast ↔ HRV",
|
||
|
|
["activity_log", "vitals_baseline"],
|
||
|
|
"correlations.calculate_lag_correlation(pid, 'training_load', 'hrv')",
|
||
|
|
),
|
||
|
|
(
|
||
|
|
"correlation_load_rhr",
|
||
|
|
"calculate_lag_correlation",
|
||
|
|
"JSON: Lag-Korrelation Trainingslast ↔ Ruhepuls",
|
||
|
|
["activity_log", "vitals_baseline"],
|
||
|
|
"correlations.calculate_lag_correlation(pid, 'training_load', 'rhr')",
|
||
|
|
),
|
||
|
|
(
|
||
|
|
"plateau_detected",
|
||
|
|
"calculate_plateau_detected",
|
||
|
|
"JSON: Platten-Erkennung (Gewicht/Körper)",
|
||
|
|
["weight_log", "caliper_log"],
|
||
|
|
"correlations.calculate_plateau_detected",
|
||
|
|
),
|
||
|
|
(
|
||
|
|
"top_drivers",
|
||
|
|
"calculate_top_drivers",
|
||
|
|
"JSON: Top Treiber für Ziel-/Score-Variablen",
|
||
|
|
["weight_log", "nutrition_log", "activity_log", "vitals_baseline", "sleep_log"],
|
||
|
|
"correlations.calculate_top_drivers",
|
||
|
|
),
|
||
|
|
]:
|
||
|
|
m = PlaceholderMetadata(
|
||
|
|
key=key,
|
||
|
|
category=CAT,
|
||
|
|
description=desc,
|
||
|
|
resolver_module="backend/placeholder_resolver.py",
|
||
|
|
resolver_function="_safe_json",
|
||
|
|
data_layer_module="backend/data_layer/correlations.py",
|
||
|
|
data_layer_function=dl_fn,
|
||
|
|
source_tables=tables,
|
||
|
|
semantic_contract=sem,
|
||
|
|
business_meaning="Strukturierte Korrelationsausgabe für KI",
|
||
|
|
unit="JSON",
|
||
|
|
time_window="funktionsintern",
|
||
|
|
output_type=OutputType.JSON,
|
||
|
|
placeholder_type=PlaceholderType.RAW_DATA,
|
||
|
|
format_hint="JSON-String",
|
||
|
|
example_output="{}",
|
||
|
|
minimum_data_requirements="Ausreichend gekoppelte Zeitreihen",
|
||
|
|
quality_filter_policy=None,
|
||
|
|
confidence_logic="Wie correlations.*",
|
||
|
|
missing_value_policy=MVP("insufficient_data", "{}"),
|
||
|
|
known_limitations="Bei wenigen Daten leer oder wenig robust",
|
||
|
|
layer_1_decision=f"correlations.{dl_fn}",
|
||
|
|
layer_2a_decision="_safe_json",
|
||
|
|
layer_2b_reuse_possible=True,
|
||
|
|
architecture_alignment="Phase 0c",
|
||
|
|
issue_53_alignment="Layer 1",
|
||
|
|
evidence={},
|
||
|
|
)
|
||
|
|
tag_standard_evidence(m)
|
||
|
|
register_placeholder(m)
|
||
|
|
|
||
|
|
|
||
|
|
register_korrelationen()
|