# dgl.DGLGraph¶

class dgl.DGLGraph

Class for storing graph structure and node/edge feature data.

There are a few ways to create a DGLGraph:

Read the user guide chapter Chapter 1: Graph for an in-depth explanation about its usage.

## Querying metagraph structure¶

Methods for getting information about the node and edge types. They are typically useful when the graph is heterogeneous.

 DGLGraph.ntypes Return all the node type names in the graph. DGLGraph.etypes Return all the edge type names in the graph. DGLGraph.srctypes Return all the source node type names in this graph. DGLGraph.dsttypes Return all the destination node type names in this graph. DGLGraph.canonical_etypes Return all the canonical edge types in the graph. Return the metagraph of the heterograph. Convert an edge type to the corresponding canonical edge type in the graph.

## Querying graph structure¶

Methods for getting information about the graph structure such as capacity, connectivity, neighborhood, etc.

 DGLGraph.num_nodes([ntype]) Return the number of nodes in the graph. DGLGraph.number_of_nodes([ntype]) Alias of num_nodes() DGLGraph.num_edges([etype]) Return the number of edges in the graph. DGLGraph.number_of_edges([etype]) Alias of num_edges() DGLGraph.num_src_nodes([ntype]) Return the number of source nodes in the graph. Alias of num_src_nodes() DGLGraph.num_dst_nodes([ntype]) Return the number of destination nodes in the graph. Alias of num_dst_nodes() DGLGraph.is_unibipartite Return whether the graph is a uni-bipartite graph. DGLGraph.is_multigraph Return whether the graph is a multigraph with parallel edges. DGLGraph.is_homogeneous Return whether the graph is a homogeneous graph. DGLGraph.has_nodes(vid[, ntype]) Return whether the graph contains the given nodes. DGLGraph.has_edges_between(u, v[, etype]) Return whether the graph contains the given edges. DGLGraph.predecessors(v[, etype]) Return the predecessor(s) of a particular node with the specified edge type. DGLGraph.successors(v[, etype]) Return the successor(s) of a particular node with the specified edge type. DGLGraph.edge_ids(u, v[, force_multi, …]) Return the edge ID(s) given the two endpoints of the edge(s). DGLGraph.find_edges(eid[, etype]) Return the source and destination node ID(s) given the edge ID(s). DGLGraph.in_edges(v[, form, etype]) Return the incoming edges of the given nodes. DGLGraph.out_edges(u[, form, etype]) Return the outgoing edges of the given nodes. DGLGraph.in_degrees([v, etype]) Return the in-degree(s) of the given nodes. DGLGraph.out_degrees([u, etype]) Return the out-degree(s) of the given nodes.

## Querying and manipulating sparse format¶

Methods for getting or manipulating the internal storage formats of a DGLGraph.

 DGLGraph.formats([formats]) Get a cloned graph with the specified sparse format(s) or query for the usage status of sparse formats Create all sparse matrices allowed for the graph.

## Querying and manipulating node/edge ID type¶

Methods for getting or manipulating the data type for storing structure-related data such as node and edge IDs.

 DGLGraph.idtype The data type for storing the structure-related graph information such as node and edge IDs. Cast the graph to one with idtype int64 Cast the graph to one with idtype int32

## Using Node/edge features¶

Methods for getting or setting the data type for storing structure-related data such as node and edge IDs.

 DGLGraph.nodes Return a node view DGLGraph.ndata Return a node data view for setting/getting node features DGLGraph.edges Return an edge view DGLGraph.edata Return an edge data view for setting/getting edge features. DGLGraph.node_attr_schemes([ntype]) Return the node feature schemes for the specified type. DGLGraph.edge_attr_schemes([etype]) Return the edge feature schemes for the specified type. DGLGraph.srcnodes Return a node view for source nodes DGLGraph.dstnodes Return a node view for destination nodes DGLGraph.srcdata Return a node data view for setting/getting source node features. DGLGraph.dstdata Return a node data view for setting/getting destination node features.

## Transforming graph¶

Methods for generating a new graph by transforming the current ones. Most of them are alias of the Subgraph Extraction Ops and Graph Transform Ops under the dgl namespace.

 DGLGraph.subgraph(nodes, *[, relabel_nodes, …]) Alias of dgl.node_subgraph(). DGLGraph.edge_subgraph(edges, *[, …]) Alias of dgl.edge_subgraph(). Alias of dgl.node_type_subgraph(). Alias of dgl.edge_type_subgraph(). Return the relation slice of this graph. DGLGraph.line_graph([backtracking, shared]) Alias of dgl.line_graph(). DGLGraph.reverse([copy_ndata, copy_edata, …]) Alias of dgl.reverse(). DGLGraph.add_self_loop([etype]) Alias of dgl.add_self_loop(). DGLGraph.remove_self_loop([etype]) Alias of dgl.remove_self_loop(). DGLGraph.to_simple([return_counts, …]) Alias of dgl.to_simple(). DGLGraph.reorder_graph([node_permute_algo, …]) Alias of dgl.reorder_graph().

Methods for getting the adjacency and the incidence matrix of the graph.

 DGLGraph.adj([transpose, ctx, scipy_fmt, etype]) Return the adjacency matrix of edges of the given edge type. DGLGraph.adj_sparse(fmt[, etype]) Return the adjacency matrix of edges of the given edge type as tensors of a sparse matrix representation. DGLGraph.adjacency_matrix([transpose, ctx, …]) Alias of adj() DGLGraph.inc(typestr[, ctx, etype]) Return the incidence matrix representation of edges with the given edge type. DGLGraph.incidence_matrix(typestr[, ctx, etype]) Return the incidence matrix representation of edges with the given edge type.

## Computing with DGLGraph¶

Methods for performing message passing, applying functions on node/edge features, etc.

 DGLGraph.apply_nodes(func[, v, ntype, inplace]) Update the features of the specified nodes by the provided function. DGLGraph.apply_edges(func[, edges, etype, …]) Update the features of the specified edges by the provided function. DGLGraph.send_and_recv(edges, message_func, …) Send messages along the specified edges and reduce them on the destination nodes to update their features. DGLGraph.pull(v, message_func, reduce_func) Pull messages from the specified node(s)’ predecessors along the specified edge type, aggregate them to update the node features. DGLGraph.push(u, message_func, reduce_func) Send message from the specified node(s) to their successors along the specified edge type and update their node features. DGLGraph.update_all(message_func, reduce_func) Send messages along all the edges of the specified type and update all the nodes of the corresponding destination type. DGLGraph.multi_update_all(etype_dict, …[, …]) Send messages along all the edges, reduce them by first type-wisely then across different types, and then update the node features of all the nodes. DGLGraph.prop_nodes(nodes_generator, …[, …]) Propagate messages using graph traversal by sequentially triggering pull() on nodes. DGLGraph.prop_edges(edges_generator, …[, …]) Propagate messages using graph traversal by sequentially triggering send_and_recv() on edges. DGLGraph.filter_nodes(predicate[, nodes, ntype]) Return the IDs of the nodes with the given node type that satisfy the given predicate. DGLGraph.filter_edges(predicate[, edges, etype]) Return the IDs of the edges with the given edge type that satisfy the given predicate.

## Querying and manipulating batch information¶

Methods for getting/setting the batching information if the current graph is a batched graph generated from dgl.batch(). They are also widely used in the Batching and Reading Out Ops.

 DGLGraph.batch_size Return the number of graphs in the batched graph. DGLGraph.batch_num_nodes([ntype]) Return the number of nodes for each graph in the batch with the specified node type. DGLGraph.batch_num_edges([etype]) Return the number of edges for each graph in the batch with the specified edge type. Manually set the number of nodes for each graph in the batch with the specified node type. Manually set the number of edges for each graph in the batch with the specified edge type.

## Mutating topology¶

Methods for mutating the graph structure in-place.

 DGLGraph.add_nodes(num[, data, ntype]) Add new nodes of the same node type DGLGraph.add_edges(u, v[, data, etype]) Add multiple new edges for the specified edge type DGLGraph.remove_nodes(nids[, ntype, store_ids]) Remove multiple nodes with the specified node type DGLGraph.remove_edges(eids[, etype, store_ids]) Remove multiple edges with the specified edge type

## Device Control¶

Methods for getting or changing the device on which the graph is hosted.

 DGLGraph.to(device, **kwargs) Move ndata, edata and graph structure to the targeted device (cpu/gpu). DGLGraph.device Get the device of the graph.

## Misc¶

Other utility methods.

 Enter a local scope context for the graph.