"""Disease × modality weight registry for the fusion engine. Heuristic preset weights — tune offline as clinician feedback arrives. """ from __future__ import annotations from typing import Mapping DEFAULT_WEIGHTS: dict[str, dict[str, float]] = { "alzheimers": { "mri": 0.35, "eeg": 0.20, "clinical_mmse": 0.20, "clinical_moca": 0.15, "clinical_age": 0.10, }, "parkinsons": { "mri": 0.20, "eeg": 0.30, "clinical_updrs": 0.30, "clinical_gait": 0.15, "clinical_age": 0.05, }, "other": { "mri": 0.50, "eeg": 0.50, }, } def available_diseases() -> list[str]: return sorted(DEFAULT_WEIGHTS.keys()) def available_clinical_tests() -> list[str]: """Return the bare clinical-test names (without the 'clinical_' prefix).""" names: set[str] = set() for table in DEFAULT_WEIGHTS.values(): for key in table: if key.startswith("clinical_"): names.add(key[len("clinical_"):]) return sorted(names) def get_weights(disease: str) -> Mapping[str, float]: if disease not in DEFAULT_WEIGHTS: raise KeyError(f"unknown disease: {disease!r}") return DEFAULT_WEIGHTS[disease]