graph.py

Utilities for creating and interacting with graph objects.

author: Stefan McCabe (stefanmccabe at gmail dot com)

Submitted as part of the 2019 NetSI Collabathon.

netrd.utilities.graph.create_graph(A, create_using=None, remove_self_loops=True)[source]

Flexibly creating a networkx graph from a numpy array.

Parameters:
A (np.ndarray)

A numpy array.

create_using (nx.Graph or None)

Create the graph using a specific networkx graph. Can be used for forcing an asymmetric matrix to create an undirected graph, for example.

remove_self_loops (bool)

If True, remove the diagonal of the matrix before creating the graph object.

Returns:
G

A graph, typically a nx.Graph or nx.DiGraph.

netrd.utilities.graph.ensure_undirected(G)[source]

Ensure the graph G is undirected.

If it is not, coerce it to undirected and warn the user.

Parameters:
G (networkx graph)

The graph to be checked

Returns:
G (nx.Graph)

Undirected version of the input graph

netrd.utilities.graph.ensure_unweighted(G)[source]

Ensure the graph G is unweighted.

If it is not, coerce it to unweighted and warn the user.

Parameters:
G (networkx graph)

The graph to be checked

Returns:
G (nx.Graph)

Unweighted version of the input graph

netrd.utilities.graph.undirected(func)[source]

Decorator applying ensure_undirected() to all nx.Graph-subclassed arguments of func.

netrd.utilities.graph.unweighted(func)[source]

Decorator applying ensure_unweighted() to all nx.Graph-subclassed arguments of func.