in src/utils.py [0:0]
def to_networkx(triples: List[Tuple[str, str, str]],
entity_to_idx: Dict[str, int],
predicate_to_idx: Dict[str, int],
predicates: Optional[Set[str]] = None,
is_multidigraph: bool = False) -> nx.DiGraph:
_triples = triples if predicates is None else [(s, p, o) for s, p, o in triples if p in predicates]
G = nx.MultiDiGraph() if is_multidigraph else nx.DiGraph()
entities = sorted({s for (s, _, _) in triples} | {o for (_, _, o) in triples})
G.add_nodes_from([entity_to_idx[e] for e in entities])
if is_multidigraph:
G.add_edges_from([(entity_to_idx[s], entity_to_idx[o], {'p': predicate_to_idx[p]}) for s, p, o in _triples])
else:
edge_lst = sorted({(entity_to_idx[s], entity_to_idx[o]) for s, p, o in _triples})
G.add_edges_from(edge_lst)
return G