Convert a NetworkX graph to an EasyGraph graph. Args: g (Union[nx.Graph, nx.DiGraph]): A NetworkX graph Returns: Union[Graph, DiGraph]: Converted EasyGraph graph
(g: "Union[nx.Graph, nx.DiGraph]")
| 322 | |
| 323 | |
| 324 | def from_networkx(g: "Union[nx.Graph, nx.DiGraph]") -> "Union[Graph, DiGraph]": |
| 325 | """Convert a NetworkX graph to an EasyGraph graph. |
| 326 | |
| 327 | Args: |
| 328 | g (Union[nx.Graph, nx.DiGraph]): A NetworkX graph |
| 329 | |
| 330 | Returns: |
| 331 | Union[Graph, DiGraph]: Converted EasyGraph graph |
| 332 | """ |
| 333 | # try: |
| 334 | # import networkx as nx |
| 335 | # except ImportError: |
| 336 | # raise ImportError("NetworkX not found. Please install it.") |
| 337 | if g.is_directed(): |
| 338 | G = eg.DiGraph() |
| 339 | else: |
| 340 | G = eg.Graph() |
| 341 | |
| 342 | # copy attributes |
| 343 | G.graph = deepcopy(g.graph) |
| 344 | |
| 345 | nodes_with_edges = set() |
| 346 | for v1, v2, _ in g.edges: |
| 347 | G.add_edge(v1, v2) |
| 348 | nodes_with_edges.add(v1) |
| 349 | nodes_with_edges.add(v2) |
| 350 | for node in set(g.nodes) - nodes_with_edges: |
| 351 | G.add_node(node) |
| 352 | return G |
| 353 | |
| 354 | |
| 355 | def to_dgl(g: "Union[Graph, DiGraph]"): |