File size: 828 Bytes
877add7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""Graph dataset builder."""

from __future__ import annotations

from dataclasses import dataclass

from app.knowledge.ddi_knowledge import top_risky_pairs
from app.knowledge.side_effect_ontology import SIDE_EFFECT_TAGS


@dataclass(slots=True)
class GraphSample:
    drugs: list[str]
    side_effects: list[str]
    severe_alert: int


def build_graph_samples(regimens: list[list[str]]) -> list[GraphSample]:
    samples: list[GraphSample] = []
    for regimen in regimens:
        tags: list[str] = []
        for drug in regimen:
            tags.extend(SIDE_EFFECT_TAGS.get(drug, []))
        samples.append(
            GraphSample(
                drugs=regimen,
                side_effects=sorted(set(tags)),
                severe_alert=1 if top_risky_pairs(regimen) else 0,
            )
        )
    return samples