Spaces:
Running
Running
""" | |
Functions for identifying isolate (degree zero) nodes. | |
""" | |
import networkx as nx | |
__all__ = ["is_isolate", "isolates", "number_of_isolates"] | |
def is_isolate(G, n): | |
"""Determines whether a node is an isolate. | |
An *isolate* is a node with no neighbors (that is, with degree | |
zero). For directed graphs, this means no in-neighbors and no | |
out-neighbors. | |
Parameters | |
---------- | |
G : NetworkX graph | |
n : node | |
A node in `G`. | |
Returns | |
------- | |
is_isolate : bool | |
True if and only if `n` has no neighbors. | |
Examples | |
-------- | |
>>> G = nx.Graph() | |
>>> G.add_edge(1, 2) | |
>>> G.add_node(3) | |
>>> nx.is_isolate(G, 2) | |
False | |
>>> nx.is_isolate(G, 3) | |
True | |
""" | |
return G.degree(n) == 0 | |
def isolates(G): | |
"""Iterator over isolates in the graph. | |
An *isolate* is a node with no neighbors (that is, with degree | |
zero). For directed graphs, this means no in-neighbors and no | |
out-neighbors. | |
Parameters | |
---------- | |
G : NetworkX graph | |
Returns | |
------- | |
iterator | |
An iterator over the isolates of `G`. | |
Examples | |
-------- | |
To get a list of all isolates of a graph, use the :class:`list` | |
constructor:: | |
>>> G = nx.Graph() | |
>>> G.add_edge(1, 2) | |
>>> G.add_node(3) | |
>>> list(nx.isolates(G)) | |
[3] | |
To remove all isolates in the graph, first create a list of the | |
isolates, then use :meth:`Graph.remove_nodes_from`:: | |
>>> G.remove_nodes_from(list(nx.isolates(G))) | |
>>> list(G) | |
[1, 2] | |
For digraphs, isolates have zero in-degree and zero out_degre:: | |
>>> G = nx.DiGraph([(0, 1), (1, 2)]) | |
>>> G.add_node(3) | |
>>> list(nx.isolates(G)) | |
[3] | |
""" | |
return (n for n, d in G.degree() if d == 0) | |
def number_of_isolates(G): | |
"""Returns the number of isolates in the graph. | |
An *isolate* is a node with no neighbors (that is, with degree | |
zero). For directed graphs, this means no in-neighbors and no | |
out-neighbors. | |
Parameters | |
---------- | |
G : NetworkX graph | |
Returns | |
------- | |
int | |
The number of degree zero nodes in the graph `G`. | |
""" | |
# TODO This can be parallelized. | |
return sum(1 for v in isolates(G)) | |