exposureguard-dagplanner / inference.py
vkatg's picture
Rename inference_dag.py to inference.py
03e3600 verified
from __future__ import annotations
import json
import sys
from dagplanner import ExposureGuardDAGPlanner
def demo_single():
planner = ExposureGuardDAGPlanner(risk_threshold=0.20, budget=1.0)
result = planner.plan(
risk_score=0.74,
retok_prob=0.68,
active_modalities=["text", "image", "ehr"],
patient_id="P-0042",
)
print(planner.summary(result))
print(json.dumps(result, indent=2))
return result
def demo_batch():
planner = ExposureGuardDAGPlanner(
risk_threshold=0.20,
budget=1.2,
modality_weights={"image": 1.4, "audio": 1.2},
)
records = [
{"patient_id": "P-001", "risk_score": 0.82, "retok_prob": 0.71,
"active_modalities": ["text", "image", "audio", "ehr"]},
{"patient_id": "P-002", "risk_score": 0.45, "retok_prob": 0.30,
"active_modalities": ["text", "ehr"]},
{"patient_id": "P-003", "risk_score": 0.15, "retok_prob": 0.10,
"active_modalities": ["ehr"]},
{"patient_id": "P-004", "risk_score": 0.61, "retok_prob": 0.58,
"active_modalities": ["text", "audio"]},
]
results = planner.batch_plan(records)
for r in results:
print(planner.summary(r))
return results
def demo_pipeline():
fedcrdt_out = {"patient_id": "P-0099", "risk_score": 0.67, "retok_prob": 0.61}
encoder_out = {"risk_score": 0.70}
merged_risk = 0.5 * fedcrdt_out["risk_score"] + 0.5 * encoder_out["risk_score"]
planner = ExposureGuardDAGPlanner(risk_threshold=0.20, budget=1.0)
result = planner.plan(
risk_score=merged_risk,
retok_prob=fedcrdt_out["retok_prob"],
active_modalities=["text", "image", "ehr"],
patient_id=fedcrdt_out["patient_id"],
)
print("\n--- Pipeline demo ---")
print(planner.summary(result))
return result
if __name__ == "__main__":
print("=== Single ===")
demo_single()
print("\n=== Batch ===")
demo_batch()
demo_pipeline()