exposureguard-dcpg-encoder / inference_dcpg.py
vkatg's picture
Upload 3 files
74f6e67 verified
from __future__ import annotations
import json
import sys
from dcpg_encoder import DCPGEncoder, encode_patient
_encoder = DCPGEncoder()
def predict(graph_summary: dict, source: str = "dcpg") -> dict:
return encode_patient(graph_summary, encoder=_encoder, source=source)
def predict_batch(summaries: list, source: str = "dcpg") -> list:
return [predict(s, source=source) for s in summaries]
if __name__ == "__main__":
if len(sys.argv) > 1:
with open(sys.argv[1]) as f:
data = json.load(f)
result = predict(data)
else:
result = predict({
"nodes": [
{"node_id": "p1::text::NAME_DATE_MRN_FACILITY", "modality": "text",
"phi_type": "NAME_DATE_MRN_FACILITY", "risk_entropy": 0.8,
"context_confidence": 0.9, "pseudonym_version": 2},
{"node_id": "p1::audio_proxy::VOICE", "modality": "audio_proxy",
"phi_type": "VOICE", "risk_entropy": 0.55,
"context_confidence": 0.6, "pseudonym_version": 1},
],
"edges": [
{"source": "p1::text::NAME_DATE_MRN_FACILITY",
"target": "p1::audio_proxy::VOICE",
"type": "cross_modal", "weight": 0.63},
],
})
print(json.dumps(result, indent=2))