comparison planemo/lib/python3.7/site-packages/networkx/tests/test_relabel.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 #!/usr/bin/env python
2 import pytest
3 import networkx as nx
4 from networkx.algorithms.operators import *
5 from networkx.generators.classic import empty_graph
6 from networkx.testing import assert_nodes_equal, assert_edges_equal
7
8
9 class TestRelabel():
10 def test_convert_node_labels_to_integers(self):
11 # test that empty graph converts fine for all options
12 G = empty_graph()
13 H = nx.convert_node_labels_to_integers(G, 100)
14 assert list(H.nodes()) == []
15 assert list(H.edges()) == []
16
17 for opt in ["default", "sorted", "increasing degree", "decreasing degree"]:
18 G = empty_graph()
19 H = nx.convert_node_labels_to_integers(G, 100, ordering=opt)
20 assert list(H.nodes()) == []
21 assert list(H.edges()) == []
22
23 G = empty_graph()
24 G.add_edges_from([('A', 'B'), ('A', 'C'), ('B', 'C'), ('C', 'D')])
25 H = nx.convert_node_labels_to_integers(G)
26 degH = (d for n, d in H.degree())
27 degG = (d for n, d in G.degree())
28 assert sorted(degH) == sorted(degG)
29
30 H = nx.convert_node_labels_to_integers(G, 1000)
31 degH = (d for n, d in H.degree())
32 degG = (d for n, d in G.degree())
33 assert sorted(degH) == sorted(degG)
34 assert_nodes_equal(H.nodes(), [1000, 1001, 1002, 1003])
35
36 H = nx.convert_node_labels_to_integers(G, ordering="increasing degree")
37 degH = (d for n, d in H.degree())
38 degG = (d for n, d in G.degree())
39 assert sorted(degH) == sorted(degG)
40 assert H.degree(0) == 1
41 assert H.degree(1) == 2
42 assert H.degree(2) == 2
43 assert H.degree(3) == 3
44
45 H = nx.convert_node_labels_to_integers(G, ordering="decreasing degree")
46 degH = (d for n, d in H.degree())
47 degG = (d for n, d in G.degree())
48 assert sorted(degH) == sorted(degG)
49 assert H.degree(0) == 3
50 assert H.degree(1) == 2
51 assert H.degree(2) == 2
52 assert H.degree(3) == 1
53
54 H = nx.convert_node_labels_to_integers(G, ordering="increasing degree",
55 label_attribute='label')
56 degH = (d for n, d in H.degree())
57 degG = (d for n, d in G.degree())
58 assert sorted(degH) == sorted(degG)
59 assert H.degree(0) == 1
60 assert H.degree(1) == 2
61 assert H.degree(2) == 2
62 assert H.degree(3) == 3
63
64 # check mapping
65 assert H.nodes[3]['label'] == 'C'
66 assert H.nodes[0]['label'] == 'D'
67 assert H.nodes[1]['label'] == 'A' or H.nodes[2]['label'] == 'A'
68 assert H.nodes[1]['label'] == 'B' or H.nodes[2]['label'] == 'B'
69
70 def test_convert_to_integers2(self):
71 G = empty_graph()
72 G.add_edges_from([('C', 'D'), ('A', 'B'), ('A', 'C'), ('B', 'C')])
73 H = nx.convert_node_labels_to_integers(G, ordering="sorted")
74 degH = (d for n, d in H.degree())
75 degG = (d for n, d in G.degree())
76 assert sorted(degH) == sorted(degG)
77
78 H = nx.convert_node_labels_to_integers(G, ordering="sorted",
79 label_attribute='label')
80 assert H.nodes[0]['label'] == 'A'
81 assert H.nodes[1]['label'] == 'B'
82 assert H.nodes[2]['label'] == 'C'
83 assert H.nodes[3]['label'] == 'D'
84
85 def test_convert_to_integers_raise(self):
86 with pytest.raises(nx.NetworkXError):
87 G = nx.Graph()
88 H = nx.convert_node_labels_to_integers(G, ordering="increasing age")
89
90 def test_relabel_nodes_copy(self):
91 G = nx.empty_graph()
92 G.add_edges_from([('A', 'B'), ('A', 'C'), ('B', 'C'), ('C', 'D')])
93 mapping = {'A': 'aardvark', 'B': 'bear', 'C': 'cat', 'D': 'dog'}
94 H = nx.relabel_nodes(G, mapping)
95 assert_nodes_equal(H.nodes(), ['aardvark', 'bear', 'cat', 'dog'])
96
97 def test_relabel_nodes_function(self):
98 G = nx.empty_graph()
99 G.add_edges_from([('A', 'B'), ('A', 'C'), ('B', 'C'), ('C', 'D')])
100 # function mapping no longer encouraged but works
101
102 def mapping(n):
103 return ord(n)
104 H = nx.relabel_nodes(G, mapping)
105 assert_nodes_equal(H.nodes(), [65, 66, 67, 68])
106
107 def test_relabel_nodes_graph(self):
108 G = nx.Graph([('A', 'B'), ('A', 'C'), ('B', 'C'), ('C', 'D')])
109 mapping = {'A': 'aardvark', 'B': 'bear', 'C': 'cat', 'D': 'dog'}
110 H = nx.relabel_nodes(G, mapping)
111 assert_nodes_equal(H.nodes(), ['aardvark', 'bear', 'cat', 'dog'])
112
113 def test_relabel_nodes_orderedgraph(self):
114 G = nx.OrderedGraph()
115 G.add_nodes_from([1, 2, 3])
116 G.add_edges_from([(1, 3), (2, 3)])
117 mapping = {1: 'a', 2: 'b', 3: 'c'}
118 H = nx.relabel_nodes(G, mapping)
119 assert list(H.nodes) == ['a', 'b', 'c']
120
121 def test_relabel_nodes_digraph(self):
122 G = nx.DiGraph([('A', 'B'), ('A', 'C'), ('B', 'C'), ('C', 'D')])
123 mapping = {'A': 'aardvark', 'B': 'bear', 'C': 'cat', 'D': 'dog'}
124 H = nx.relabel_nodes(G, mapping, copy=False)
125 assert_nodes_equal(H.nodes(), ['aardvark', 'bear', 'cat', 'dog'])
126
127 def test_relabel_nodes_multigraph(self):
128 G = nx.MultiGraph([('a', 'b'), ('a', 'b')])
129 mapping = {'a': 'aardvark', 'b': 'bear'}
130 G = nx.relabel_nodes(G, mapping, copy=False)
131 assert_nodes_equal(G.nodes(), ['aardvark', 'bear'])
132 assert_edges_equal(G.edges(), [('aardvark', 'bear'), ('aardvark', 'bear')])
133
134 def test_relabel_nodes_multidigraph(self):
135 G = nx.MultiDiGraph([('a', 'b'), ('a', 'b')])
136 mapping = {'a': 'aardvark', 'b': 'bear'}
137 G = nx.relabel_nodes(G, mapping, copy=False)
138 assert_nodes_equal(G.nodes(), ['aardvark', 'bear'])
139 assert_edges_equal(G.edges(), [('aardvark', 'bear'), ('aardvark', 'bear')])
140
141 def test_relabel_isolated_nodes_to_same(self):
142 G = nx.Graph()
143 G.add_nodes_from(range(4))
144 mapping = {1: 1}
145 H = nx.relabel_nodes(G, mapping, copy=False)
146 assert_nodes_equal(H.nodes(), list(range(4)))
147
148 def test_relabel_nodes_missing(self):
149 with pytest.raises(KeyError):
150 G = nx.Graph([('A', 'B'), ('A', 'C'), ('B', 'C'), ('C', 'D')])
151 mapping = {0: 'aardvark'}
152 G = nx.relabel_nodes(G, mapping, copy=False)
153
154 def test_relabel_copy_name(self):
155 G = nx.Graph()
156 H = nx.relabel_nodes(G, {}, copy=True)
157 assert H.graph == G.graph
158 H = nx.relabel_nodes(G, {}, copy=False)
159 assert H.graph == G.graph
160 G.name = "first"
161 H = nx.relabel_nodes(G, {}, copy=True)
162 assert H.graph == G.graph
163 H = nx.relabel_nodes(G, {}, copy=False)
164 assert H.graph == G.graph
165
166 def test_relabel_toposort(self):
167 K5 = nx.complete_graph(4)
168 G = nx.complete_graph(4)
169 G = nx.relabel_nodes(G, dict([(i, i + 1) for i in range(4)]), copy=False)
170 nx.is_isomorphic(K5, G)
171 G = nx.complete_graph(4)
172 G = nx.relabel_nodes(G, dict([(i, i - 1) for i in range(4)]), copy=False)
173 nx.is_isomorphic(K5, G)
174
175 def test_relabel_selfloop(self):
176 G = nx.DiGraph([(1, 1), (1, 2), (2, 3)])
177 G = nx.relabel_nodes(G, {1: 'One', 2: 'Two', 3: 'Three'}, copy=False)
178 assert_nodes_equal(G.nodes(), ['One', 'Three', 'Two'])
179 G = nx.MultiDiGraph([(1, 1), (1, 2), (2, 3)])
180 G = nx.relabel_nodes(G, {1: 'One', 2: 'Two', 3: 'Three'}, copy=False)
181 assert_nodes_equal(G.nodes(), ['One', 'Three', 'Two'])
182 G = nx.MultiDiGraph([(1, 1)])
183 G = nx.relabel_nodes(G, {1: 0}, copy=False)
184 assert_nodes_equal(G.nodes(), [0])