Graph

class Graph[source]

Bases: object

numpy backed graph class with support for memmapped edge_index

abstract __init__(edge_index, edge_attr=None, x=None, y=None, num_nodes=None, adj_index=None, ensure_sorted=False, undir=None, nodes=None)[source]

Initialise graph

Parameters:
  • edge_index – edge index such that edge_index[0] lists the source and edge_index[1] the target node for each edge

  • edge_attr – optionally provide edge weights

  • num_nodes – specify number of nodes (default: max(edge_index)+1)

  • ensure_sorted – if False, assume that the edge_index input is already sorted

  • undir – boolean indicating if graph is directed. If not provided, the edge_index is checked to determine this value.

Methods

__init__

Initialise graph

adj

list neighbours of node

adj_weighted

list neighbours of node and corresponding edge weight :param node: source node

bfs_order

return nodes in breadth-first-search order

connected_component_ids

return connected component ids where ids are sorted in decreasing order by component size

edges

iterator over edges

edges_weighted

iterator over weighted edges where each edge is a tuple (source, target, weight)

from_networkx

from_tg

has_node_labels

is_edge

lcc

neighbourhood

find the neighbourhood of a set of source nodes

nodes_in_lcc

Iterator over nodes in the largest connected component

partition_graph

sample_negative_edges

sample_positive_edges

subgraph

find induced subgraph for a set of nodes

to

to_networkx

convert graph to NetworkX format

Attributes

device

nodes

num_edges

num_features

weighted

boolean indicating if graph is weighted

weights

degree

classmethod from_tg(data)[source]
classmethod from_networkx(nx_graph: Graph, weight=None)[source]
has_node_labels()[source]
adj(node: int)[source]

list neighbours of node

Parameters:

node – source node

Returns:

neighbours

adj_weighted(node: int)[source]

list neighbours of node and corresponding edge weight :param node: source node

Returns:

neighbours, weights

abstract edges()[source]

iterator over edges

abstract edges_weighted()[source]

iterator over weighted edges where each edge is a tuple (source, target, weight)

abstract is_edge(source, target)[source]
abstract neighbourhood(nodes, hops: int = 1)[source]

find the neighbourhood of a set of source nodes

note that the neighbourhood includes the source nodes themselves

Parameters:
  • nodes – indices of source nodes

  • hops – number of hops for neighbourhood

Returns:

neighbourhood

abstract subgraph(nodes: Iterable, relabel=False, keep_x=True, keep_y=True)[source]

find induced subgraph for a set of nodes

Parameters:

nodes – node indeces

Returns:

subgraph

abstract connected_component_ids()[source]

return connected component ids where ids are sorted in decreasing order by component size

Returns:

Sequence of node indeces

nodes_in_lcc()[source]

Iterator over nodes in the largest connected component

lcc(relabel=False)[source]
to_networkx()[source]

convert graph to NetworkX format

to(graph_cls)[source]
abstract bfs_order(start=0)[source]

return nodes in breadth-first-search order

Parameters:

start – index of starting node (default: 0)

Returns:

Sequence of node indeces

abstract partition_graph(partition, self_loops=True)[source]
abstract sample_negative_edges(num_samples)[source]
sample_positive_edges(num_samples)[source]