ToSimpleο
- class dgl.transforms.ToSimple(return_counts='count', aggregator='arbitrary')[source]ο
Bases:
BaseTransform
Convert a graph to a simple graph without parallel edges and return a new graph.
- Parameters:
return_counts (str, optional) β The edge feature name to hold the edge count in the original graph.
aggregator (str, optional) β
The way to coalesce features of duplicate edges.
'arbitrary'
: select arbitrarily from one of the duplicate edges'sum'
: take the sum over the duplicate edges'mean'
: take the mean over the duplicate edges
Example
The following example uses PyTorch backend.
>>> import dgl >>> import torch >>> from dgl import ToSimple
Case1: Convert a homogeneous graph to a simple graph
>>> transform = ToSimple() >>> g = dgl.graph(([0, 1, 1], [1, 2, 2])) >>> g.edata['w'] = torch.tensor([[0.1], [0.2], [0.3]]) >>> sg = transform(g) >>> print(sg.edges()) (tensor([0, 1]), tensor([1, 2])) >>> print(sg.edata['count']) tensor([1, 2]) >>> print(sg.edata['w']) tensor([[0.1000], [0.2000]])
Case2: Convert a heterogeneous graph to a simple graph
>>> g = dgl.heterograph({ ... ('user', 'follows', 'user'): ([0, 1, 1], [1, 2, 2]), ... ('user', 'plays', 'game'): ([0, 1, 0], [1, 1, 1]) ... }) >>> sg = transform(g) >>> print(sg.edges(etype='follows')) (tensor([0, 1]), tensor([1, 2])) >>> print(sg.edges(etype='plays')) (tensor([0, 1]), tensor([1, 1]))