easygraph.convert module#

easygraph.convert.dict_to_hypergraph(data, max_order=None, is_dynamic=False)[source]#

A function to read a file in a standardized JSON format.

Parameters:
  • data (dict) – A dictionary in the hypergraph JSON format

  • max_order (int, optional) – Maximum order of edges to add to the hypergraph

Returns:

The loaded hypergraph

Return type:

A Hypergraph object

Raises:

EasyGraphError – If the JSON is not in a format that can be loaded.

See also

read_json

easygraph.convert.from_dgl(g) Graph | DiGraph[source]#

Convert a DGL graph to an EasyGraph graph.

Parameters:

g (DGLGraph) – A DGL graph

Raises:

ImportError – If DGL is not installed.

Returns:

Converted EasyGraph graph

Return type:

Union[Graph, DiGraph]

easygraph.convert.from_dict_of_dicts(d, create_using=None, multigraph_input=False)[source]#
easygraph.convert.from_dict_of_lists(d, create_using=None)[source]#
easygraph.convert.from_edgelist(edgelist, create_using=None)[source]#

Returns a graph from a list of edges.

Parameters:
  • edgelist (list or iterator) – Edge tuples

  • create_using (EasyGraph graph constructor, optional (default=eg.Graph)) – Graph type to create. If graph instance, then cleared before populated.

Examples

>>> edgelist = [(0, 1)]  # single edge (0,1)
>>> G = eg.from_edgelist(edgelist)

or

>>> G = eg.Graph(edgelist)  # use Graph constructor
easygraph.convert.from_networkx(g: nx.Graph | nx.DiGraph) Graph | DiGraph[source]#

Convert a NetworkX graph to an EasyGraph graph.

Parameters:

g (Union[nx.Graph, nx.DiGraph]) – A NetworkX graph

Returns:

Converted EasyGraph graph

Return type:

Union[Graph, DiGraph]

easygraph.convert.from_pyg(data: torch_geometric.data.Data, node_attrs: Iterable[str] | None = None, edge_attrs: Iterable[str] | None = None, graph_attrs: Iterable[str] | None = None, to_undirected: bool | str | None = False, remove_self_loops: bool = False) Any[source]#

Converts a torch_geometric.data.Data instance to a easygraph.Graph if to_undirected is set to True, or a directed easygraph.DiGraph otherwise.

Parameters:
  • data (torch_geometric.data.Data) – The data object.

  • node_attrs (iterable of str, optional) – The node attributes to be copied. (default: None)

  • edge_attrs (iterable of str, optional) – The edge attributes to be copied. (default: None)

  • graph_attrs (iterable of str, optional) – The graph attributes to be copied. (default: None)

  • to_undirected (bool or str, optional) – If set to True or “upper”, will return a easygraph.Graph instead of a easygraph.DiGraph. The undirected graph will correspond to the upper triangle of the corresponding adjacency matrix. Similarly, if set to “lower”, the undirected graph will correspond to the lower triangle of the adjacency matrix. (default: False)

  • remove_self_loops (bool, optional) – If set to True, will not include self loops in the resulting graph. (default: False)

Examples

>>> import torch_geometric as pyg
>>> Data = pyg.data.Data  # type: ignore
>>> edge_index = torch.tensor([
...     [0, 1, 1, 2, 2, 3],
...     [1, 0, 2, 1, 3, 2],
... ])
>>> data = Data(edge_index=edge_index, num_nodes=4)
>>> from_pyg(data)
<easygraph.classes.digraph.DiGraph at 0x2713fdb40d0>
easygraph.convert.to_dgl(g: Graph | DiGraph)[source]#

Convert an EasyGraph graph to a DGL graph.

Parameters:

g (Union[Graph, DiGraph]) – An EasyGraph graph

Raises:

ImportError – If DGL is not installed.

Returns:

Converted DGL graph

Return type:

DGLGraph

easygraph.convert.to_easygraph_graph(data, create_using=None, multigraph_input=False)[source]#

Make a EasyGraph graph from a known data structure.

The preferred way to call this is automatically from the class constructor

>>> d = {0: {1: {"weight": 1}}}  # dict-of-dicts single edge (0,1)
>>> G = eg.Graph(d)

instead of the equivalent

>>> G = eg.from_dict_of_dicts(d)
Parameters:
  • data (object to be converted) –

    Current known types are:

    any EasyGraph graph dict-of-dicts dict-of-lists container (e.g. set, list, tuple) of edges iterator (e.g. itertools.chain) that produces edges generator of edges Pandas DataFrame (row per edge) numpy matrix numpy ndarray scipy sparse matrix pygraphviz agraph

  • create_using (EasyGraph graph constructor, optional (default=eg.Graph)) – Graph type to create. If graph instance, then cleared before populated.

  • multigraph_input (bool (default False)) – If True and data is a dict_of_dicts, try to create a multigraph assuming dict_of_dict_of_lists. If data and create_using are both multigraphs then create a multigraph from a multigraph.

easygraph.convert.to_networkx(g: Graph | DiGraph) nx.Graph | nx.DiGraph[source]#

Convert an EasyGraph to a NetworkX graph.

Parameters:

g (Union[Graph, DiGraph]) – An EasyGraph graph

Raises:

ImportError is raised if NetworkX is not installed.

Returns:

Converted NetworkX graph

Return type:

Union[nx.Graph, nx.DiGraph]

easygraph.convert.to_pyg(G: Any, group_node_attrs: List[str] | all | None = None, group_edge_attrs: List[str] | all | None = None) torch_geometric.data.Data[source]#

Converts a easygraph.Graph or easygraph.DiGraph to a torch_geometric.data.Data instance.

Parameters:
  • G (easygraph.Graph or easygraph.DiGraph) – A easygraph graph.

  • group_node_attrs (List[str] or all, optional) – The node attributes to be concatenated and added to data.x. (default: None)

  • group_edge_attrs (List[str] or all, optional) – The edge attributes to be concatenated and added to data.edge_attr. (default: None)

Note

All group_node_attrs and group_edge_attrs values must be numeric.

Examples

>>> import torch_geometric as pyg
>>> pyg_to_networkx = pyg.utils.convert.to_networkx  # type: ignore
>>> networkx_to_pyg = pyg.utils.convert.from_networkx  # type: ignore
>>> Data = pyg.data.Data  # type: ignore
>>> edge_index = torch.tensor([
...     [0, 1, 1, 2, 2, 3],
...     [1, 0, 2, 1, 3, 2],
... ])
>>> data = Data(edge_index=edge_index, num_nodes=4)
>>> g = pyg_to_networkx(data)
>>> # A `Data` object is returned
>>> to_pyg(g)
Data(edge_index=[2, 6], num_nodes=4)