comparison planemo/lib/python3.7/site-packages/networkx/algorithms/isolate.py @ 1:56ad4e20f292 draft

"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author guerler
date Fri, 31 Jul 2020 00:32:28 -0400
parents
children
comparison
equal deleted inserted replaced
0:d30785e31577 1:56ad4e20f292
1 # -*- encoding: utf-8 -*-
2 # Copyright 2015 NetworkX developers.
3 # Copyright (C) 2004-2019 by
4 # Aric Hagberg <hagberg@lanl.gov>
5 # Dan Schult <dschult@colgate.edu>
6 # Pieter Swart <swart@lanl.gov>
7 # All rights reserved.
8 # BSD license.
9 """
10 Functions for identifying isolate (degree zero) nodes.
11 """
12 import networkx as nx
13
14 __author__ = """\n""".join(['Drew Conway <drew.conway@nyu.edu>',
15 'Aric Hagberg <hagberg@lanl.gov>'])
16
17 __all__ = ['is_isolate', 'isolates', 'number_of_isolates']
18
19
20 def is_isolate(G, n):
21 """Determines whether a node is an isolate.
22
23 An *isolate* is a node with no neighbors (that is, with degree
24 zero). For directed graphs, this means no in-neighbors and no
25 out-neighbors.
26
27 Parameters
28 ----------
29 G : NetworkX graph
30
31 n : node
32 A node in `G`.
33
34 Returns
35 -------
36 is_isolate : bool
37 True if and only if `n` has no neighbors.
38
39 Examples
40 --------
41 >>> G=nx.Graph()
42 >>> G.add_edge(1,2)
43 >>> G.add_node(3)
44 >>> nx.is_isolate(G,2)
45 False
46 >>> nx.is_isolate(G,3)
47 True
48 """
49 return G.degree(n) == 0
50
51
52 def isolates(G):
53 """Iterator over isolates in the graph.
54
55 An *isolate* is a node with no neighbors (that is, with degree
56 zero). For directed graphs, this means no in-neighbors and no
57 out-neighbors.
58
59 Parameters
60 ----------
61 G : NetworkX graph
62
63 Returns
64 -------
65 iterator
66 An iterator over the isolates of `G`.
67
68 Examples
69 --------
70 To get a list of all isolates of a graph, use the :class:`list`
71 constructor::
72
73 >>> G = nx.Graph()
74 >>> G.add_edge(1, 2)
75 >>> G.add_node(3)
76 >>> list(nx.isolates(G))
77 [3]
78
79 To remove all isolates in the graph, first create a list of the
80 isolates, then use :meth:`Graph.remove_nodes_from`::
81
82 >>> G.remove_nodes_from(list(nx.isolates(G)))
83 >>> list(G)
84 [1, 2]
85
86 For digraphs, isolates have zero in-degree and zero out_degre::
87
88 >>> G = nx.DiGraph([(0, 1), (1, 2)])
89 >>> G.add_node(3)
90 >>> list(nx.isolates(G))
91 [3]
92
93 """
94 return (n for n, d in G.degree() if d == 0)
95
96
97 def number_of_isolates(G):
98 """Returns the number of isolates in the graph.
99
100 An *isolate* is a node with no neighbors (that is, with degree
101 zero). For directed graphs, this means no in-neighbors and no
102 out-neighbors.
103
104 Parameters
105 ----------
106 G : NetworkX graph
107
108 Returns
109 -------
110 int
111 The number of degree zero nodes in the graph `G`.
112
113 """
114 # TODO This can be parallelized.
115 return sum(1 for v in isolates(G))