From fee705257d82cbe7decc2447ed9b73ba09d739ab Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 1 Sep 2023 13:28:50 +0200 Subject: [PATCH 1/3] Do not use Bit.index in quantum_info/operators/symplectic/pauli.py --- qiskit/quantum_info/operators/symplectic/pauli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/quantum_info/operators/symplectic/pauli.py b/qiskit/quantum_info/operators/symplectic/pauli.py index f90d1e18ce29..f67a68467e9d 100644 --- a/qiskit/quantum_info/operators/symplectic/pauli.py +++ b/qiskit/quantum_info/operators/symplectic/pauli.py @@ -712,7 +712,7 @@ def _from_circuit(cls, instr): if not isinstance(inner.operation, (Barrier, Delay)): next_instr = BasePauli(*cls._from_circuit(inner.operation)) if next_instr is not None: - qargs = [tup.index for tup in inner.qubits] + qargs = [instr.find_bit(tup).index for tup in inner.qubits] ret = ret.compose(next_instr, qargs=qargs) return ret._z, ret._x, ret._phase From 0347975dbb4d55ed345acc73bf519fd06e3bbc9e Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 1 Sep 2023 15:31:09 +0200 Subject: [PATCH 2/3] bugfix --- qiskit/quantum_info/operators/symplectic/pauli.py | 7 ++++++- .../fix_pauli_new_style_bit-0704933127b4debe.yaml | 5 +++++ .../quantum_info/operators/symplectic/test_pauli.py | 10 ++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml diff --git a/qiskit/quantum_info/operators/symplectic/pauli.py b/qiskit/quantum_info/operators/symplectic/pauli.py index f67a68467e9d..2147a1765948 100644 --- a/qiskit/quantum_info/operators/symplectic/pauli.py +++ b/qiskit/quantum_info/operators/symplectic/pauli.py @@ -157,7 +157,12 @@ class initialization (``Pauli('-iXYZ')``). A ``Pauli`` object can be _CANONICAL_PHASE_LABEL = {"": 0, "-i": 1, "-": 2, "i": 3} def __init__( - self, data: str | tuple | Pauli | ScalarOp | None = None, x=None, *, z=None, label=None + self, + data: str | tuple | Pauli | ScalarOp | QuantumCircuit | None = None, + x=None, + *, + z=None, + label=None, ): """Initialize the Pauli. diff --git a/releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml b/releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml new file mode 100644 index 000000000000..75919897cd40 --- /dev/null +++ b/releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + The class :class:`.Pauli` now support creation from :class:`.QuantumCircuit` + that use new-style :class:`Bit`. diff --git a/test/python/quantum_info/operators/symplectic/test_pauli.py b/test/python/quantum_info/operators/symplectic/test_pauli.py index 2a84ff754c2c..df7bf9946210 100644 --- a/test/python/quantum_info/operators/symplectic/test_pauli.py +++ b/test/python/quantum_info/operators/symplectic/test_pauli.py @@ -23,6 +23,7 @@ from ddt import ddt, data, unpack from qiskit import QuantumCircuit +from qiskit.circuit import Qubit from qiskit.exceptions import QiskitError from qiskit.circuit.library import ( IGate, @@ -484,6 +485,15 @@ def test_zero_qubit_pauli_construction(self, label, phase): test = Pauli(label) self.assertEqual(expected, test) + def test_circuit_with_bit(self): + """Test new-style Bit support when converting from QuantumCircuit""" + circ = QuantumCircuit([Qubit()]) + circ.x(0) + value = Pauli(circ) + target = Pauli("X") + + self.assertEqual(value, target) + if __name__ == "__main__": unittest.main() From 1ce37e0537c8cc699842b6bab94361bfc8eeb290 Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Fri, 1 Sep 2023 15:51:27 +0100 Subject: [PATCH 3/3] Fix cross-reference --- .../notes/fix_pauli_new_style_bit-0704933127b4debe.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml b/releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml index 75919897cd40..db494233218a 100644 --- a/releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml +++ b/releasenotes/notes/fix_pauli_new_style_bit-0704933127b4debe.yaml @@ -2,4 +2,4 @@ fixes: - | The class :class:`.Pauli` now support creation from :class:`.QuantumCircuit` - that use new-style :class:`Bit`. + that use new-style :class:`.Bit`.