From 25c46dc0e86782f53fd7273543370ea934694fee Mon Sep 17 00:00:00 2001 From: Caleb Johnson Date: Wed, 8 Nov 2023 05:46:58 -0600 Subject: [PATCH] Allow barriers in overlap circuit inputs (#11179) * Allow barriers in overlap circuit inputs * Minor fixes plus test with barriers * Check parameter number on barrier test, similar to other non-failing tests. * test order * Add release note --- qiskit/circuit/library/overlap.py | 3 ++- .../notes/overlap-circuit-barriers-63b9b1be9c1da100.yaml | 4 ++++ test/python/circuit/library/test_overlap.py | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/overlap-circuit-barriers-63b9b1be9c1da100.yaml diff --git a/qiskit/circuit/library/overlap.py b/qiskit/circuit/library/overlap.py index 15c39435441d..ed86d8abb9a2 100644 --- a/qiskit/circuit/library/overlap.py +++ b/qiskit/circuit/library/overlap.py @@ -15,6 +15,7 @@ from qiskit.circuit import QuantumCircuit, Gate from qiskit.circuit.parametervector import ParameterVector from qiskit.circuit.exceptions import CircuitError +from qiskit.circuit import Barrier class UnitaryOverlap(QuantumCircuit): @@ -101,7 +102,7 @@ def _check_unitary(circuit): """Check a circuit is unitary by checking if all operations are of type ``Gate``.""" for instruction in circuit.data: - if not isinstance(instruction.operation, Gate): + if not isinstance(instruction.operation, (Gate, Barrier)): raise CircuitError( ( "One or more instructions cannot be converted to" diff --git a/releasenotes/notes/overlap-circuit-barriers-63b9b1be9c1da100.yaml b/releasenotes/notes/overlap-circuit-barriers-63b9b1be9c1da100.yaml new file mode 100644 index 000000000000..dcae6e5585f1 --- /dev/null +++ b/releasenotes/notes/overlap-circuit-barriers-63b9b1be9c1da100.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Fixed a bug which caused :class:`~qiskit.circuit.library.UnitaryOverlap` to error upon initialization if given an input circuit containing a barrier. diff --git a/test/python/circuit/library/test_overlap.py b/test/python/circuit/library/test_overlap.py index a9a5f0ae1e2a..fa5e4af05c0d 100644 --- a/test/python/circuit/library/test_overlap.py +++ b/test/python/circuit/library/test_overlap.py @@ -82,6 +82,15 @@ def test_partial_parameterized_inputs2(self): overlap = UnitaryOverlap(unitary1, unitary2) self.assertEqual(overlap.num_parameters, unitary1.num_parameters) + def test_barrier(self): + """Test that barriers on input circuits are well handled""" + unitary1 = EfficientSU2(1, reps=0) + unitary1.barrier() + unitary2 = EfficientSU2(1, reps=1) + unitary2.barrier() + overlap = UnitaryOverlap(unitary1, unitary2) + self.assertEqual(overlap.num_parameters, unitary1.num_parameters + unitary2.num_parameters) + def test_measurements(self): """Test that exception is thrown for measurements""" unitary1 = EfficientSU2(2)