def test_perfect_fit_Manhattan(self): """A circuit that fits perfectly in Manhattan (65 qubits) See https://github.com/Qiskit/qiskit-terra/issues/5694""" manhattan_cm = FakeManhattan().configuration().coupling_map cmap65 = CouplingMap(manhattan_cm) rows = [x[0] for x in manhattan_cm] cols = [x[1] for x in manhattan_cm] adj_matrix = numpy.zeros((65, 65)) adj_matrix[rows, cols] = 1 circuit = GraphState(adj_matrix).decompose() circuit.measure_all() dag = circuit_to_dag(circuit) pass_ = VF2Layout(cmap65, seed=self.seed, max_trials=1) pass_.run(dag) self.assertLayout(dag, cmap65, pass_.property_set)
def test_all_levels_use_trivial_if_perfect(self, level): """Test that we always use trivial if it's a perfect match. See: https://github.com/Qiskit/qiskit-terra/issues/5694 for more details """ backend = FakeTokyo() config = backend.configuration() rows = [x[0] for x in config.coupling_map] cols = [x[1] for x in config.coupling_map] adjacency_matrix = np.zeros((20, 20)) adjacency_matrix[rows, cols] = 1 qc = GraphState(adjacency_matrix) qc.measure_all() expected = { 0: Qubit(QuantumRegister(20, "q"), 0), 1: Qubit(QuantumRegister(20, "q"), 1), 2: Qubit(QuantumRegister(20, "q"), 2), 3: Qubit(QuantumRegister(20, "q"), 3), 4: Qubit(QuantumRegister(20, "q"), 4), 5: Qubit(QuantumRegister(20, "q"), 5), 6: Qubit(QuantumRegister(20, "q"), 6), 7: Qubit(QuantumRegister(20, "q"), 7), 8: Qubit(QuantumRegister(20, "q"), 8), 9: Qubit(QuantumRegister(20, "q"), 9), 10: Qubit(QuantumRegister(20, "q"), 10), 11: Qubit(QuantumRegister(20, "q"), 11), 12: Qubit(QuantumRegister(20, "q"), 12), 13: Qubit(QuantumRegister(20, "q"), 13), 14: Qubit(QuantumRegister(20, "q"), 14), 15: Qubit(QuantumRegister(20, "q"), 15), 16: Qubit(QuantumRegister(20, "q"), 16), 17: Qubit(QuantumRegister(20, "q"), 17), 18: Qubit(QuantumRegister(20, "q"), 18), 19: Qubit(QuantumRegister(20, "q"), 19), } trans_qc = transpile(qc, backend, optimization_level=level, seed_transpiler=42) self.assertEqual(trans_qc._layout._p2v, expected)
def test_graph_state(self): """Verify the GraphState by checking if the circuit has the expected stabilizers.""" adjacency_matrix = [ [0, 1, 0, 0, 1], [1, 0, 1, 0, 0], [0, 1, 0, 1, 0], [0, 0, 1, 0, 1], [1, 0, 0, 1, 0], ] graph_state = GraphState(adjacency_matrix) self.assertGraphStateIsCorrect(adjacency_matrix, graph_state)
def graph_state_from_pygraph(self, graph): """Creates a GraphState circuit from a PyGraph""" adjacency_matrix = retworkx.adjacency_matrix(graph) return GraphState(adjacency_matrix).decompose()
def test_non_symmetric_raises(self): """Test that adjacency matrix is required to be symmetric.""" adjacency_matrix = [[1, 1, 0], [1, 0, 1], [1, 1, 1]] with self.assertRaises(CircuitError): GraphState(adjacency_matrix)