def test_3x3_identity(self): C33 = dnx.chimera_graph(3, 3) coord = dnx.chimera_coordinates(3, 3, 4) labels = dnx.canonical_chimera_labeling(C33) labels = {v: coord.chimera_to_linear(labels[v]) for v in labels} G = nx.relabel_nodes(C33, labels, copy=True) self.assertTrue(nx.is_isomorphic(G, C33))
def test_row_identity(self): C41 = dnx.chimera_graph(4, 1) coord = dnx.chimera_coordinates(4, 1, 4) labels = dnx.canonical_chimera_labeling(C41) labels = {v: coord.chimera_to_linear(labels[v]) for v in labels} G = nx.relabel_nodes(C41, labels, copy=True) self.assertTrue(nx.is_isomorphic(G, C41))
def test_bqm_tile_identity(self): J = {e: -1 for e in dnx.chimera_graph(1).edges} C1bqm = dimod.BinaryQuadraticModel.from_ising({}, J) coord = dnx.chimera_coordinates(1, 1, 4) labels = dnx.canonical_chimera_labeling(C1bqm) labels = {v: coord.chimera_to_linear(labels[v]) for v in labels} bqm = C1bqm.relabel_variables(labels, inplace=False) self.assertEqual(bqm, C1bqm)
def test_tile_identity(self): C1 = dnx.chimera_graph(1) coord = dnx.chimera_coordinates(1, 1, 4) labels = dnx.canonical_chimera_labeling(C1) labels = {v: coord.chimera_to_linear(labels[v]) for v in labels} G = nx.relabel_nodes(C1, labels, copy=True) self.assertTrue(nx.is_isomorphic(G, C1)) self.assertEqual(set(G), set(C1))
def test_reversed(self): C33 = nx.OrderedGraph() C33.add_nodes_from(reversed(range(3 * 3 * 4))) C33.add_edges_from(dnx.chimera_graph(3, 3, 4).edges) coord = dnx.chimera_coordinates(3, 3, 4) labels = dnx.canonical_chimera_labeling(C33) labels = {v: coord.chimera_to_linear(labels[v]) for v in labels} G = nx.relabel_nodes(C33, labels, copy=True) self.assertTrue(nx.is_isomorphic(G, C33))
def test_construction_string_labels(self): C22 = dnx.chimera_graph(2, 2, 3) coord = dnx.chimera_coordinates(2, 2, 3) alpha = 'abcdefghijklmnopqrstuvwxyz' bqm = dimod.BinaryQuadraticModel.empty(dimod.BINARY) for u, v in reversed(list(C22.edges)): bqm.add_interaction(alpha[u], alpha[v], 1) assert len(bqm.quadratic) == len(C22.edges) assert len(bqm) == len(C22) labels = dnx.canonical_chimera_labeling(bqm) labels = {v: alpha[coord.chimera_to_linear(labels[v])] for v in labels} bqm2 = bqm.relabel_variables(labels, inplace=False) self.assertEqual(bqm, bqm2)