From 452027a982d29d0c98cdf35463173d66529c4ed4 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Wed, 1 Mar 2023 14:44:02 +0100 Subject: [PATCH 01/19] extend the documentation for qiskit.circuit.QuantumCircuit.measure --- qiskit/circuit/quantumcircuit.py | 82 ++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 10 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 17c7684123d1..40d6b942871d 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2264,20 +2264,82 @@ def reset(self, qubit: QubitSpecifier) -> InstructionSet: """ return self.append(Reset(), [qubit], []) - def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet: - """Measure quantum bit into classical bit (tuples). + def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSet: + """Measure quantum bit (qubit) into classical bit (clbit). - Args: - qubit: qubit to measure. - cbit: classical bit to place the measurement in. + When a qubit is measured, its state collapses to a classical bit and copied to a + classical wire: - Returns: - qiskit.circuit.InstructionSet: handle to the added instructions. + In this example, a qubit is measured and the result of that measurement is stored in the + classical bit (usually expressed as a double line) - Raises: - CircuitError: if arguments have bad format. + .. code-block:: + + from qiskit import QuantumCircuit + circuit = QuantumCircuit(1,1) + circuit.h(0) + circuit.measure(0, 0) + circuit.draw() + + + .. parsed-literal:: + ┌───┐┌─┐ + q: ┤ X ├┤M├ + └───┘└╥┘ + c: 1/══════╩═ + 0 + + ``measure`` can be used with lists of register of the same length: + + * List of qubits and clbits of the same size:: + + .. code-block:: + + circuit = QuantumCircuit(2,2) + circuit.measure([0,1], [0,1]) # same as "circuit.measure(0,0); circuit.measure(1,1);" + + + .. parsed-literal:: + ┌─┐ + q_0: ┤M├─── + └╥┘┌─┐ + q_1: ─╫─┤M├ + ║ └╥┘ + c: 2/═╩══╩═ + 0 1 + + * List of qubits and clbits of different size. The lenght of the qubit list sholud be + smaller than the lenght of classical bit list:: + + .. code-block:: + + circuit = QuantumCircuit(2,2) + circuit.measure([0], [0,1]) # same as "circuit.measure(0,0); circuit.measure(0,1);" + + + .. parsed-literal:: + ┌─┐┌─┐ + q_0: ┤M├┤M├ + └╥┘└╥┘ + q_1: ─╫──╫─ + ║ ║ + c: 2/═╩══╩═ + 0 1 + + Instead of lists, you can use :class:`~.QuantumRegister`s and :class:`~.ClassicalRegister`s + under the same logic. + + Args: + qubit: qubit/s to measure. + clbit: classical bit/s to place the measurement in. + + Returns: + qiskit.circuit.InstructionSet: handle to the added instructions. + + Raises: + CircuitError: if arguments have bad format. """ - return self.append(Measure(), [qubit], [cbit]) + return self.append(Measure(), [qubit], [clbit]) def measure_active(self, inplace: bool = True) -> Optional["QuantumCircuit"]: """Adds measurement to all non-idle qubits. Creates a new ClassicalRegister with From f6ec66fb9c12b73d8a0565262e7003a085bdcd60 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Wed, 1 Mar 2023 14:46:15 +0100 Subject: [PATCH 02/19] spelling --- qiskit/circuit/quantumcircuit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 40d6b942871d..c6144cff2ec4 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2308,8 +2308,8 @@ def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSe c: 2/═╩══╩═ 0 1 - * List of qubits and clbits of different size. The lenght of the qubit list sholud be - smaller than the lenght of classical bit list:: + * List of qubits and clbits of different size. The lenght of the qubit list should be + smaller than the length of classical bit list:: .. code-block:: From 99fe4223566b48a1788641260fc9ced48c43ad0b Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Wed, 1 Mar 2023 15:19:58 +0100 Subject: [PATCH 03/19] H --- qiskit/circuit/quantumcircuit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index c6144cff2ec4..a5f5d2fa9be2 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2284,7 +2284,7 @@ def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSe .. parsed-literal:: ┌───┐┌─┐ - q: ┤ X ├┤M├ + q: ┤ H ├┤M├ └───┘└╥┘ c: 1/══════╩═ 0 From 5139c477d45e410c2ba0a5450d884263f1a747d3 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Wed, 1 Mar 2023 15:43:31 +0100 Subject: [PATCH 04/19] qregs and cregs --- qiskit/circuit/quantumcircuit.py | 49 +++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index a5f5d2fa9be2..db91cb58748c 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2264,14 +2264,14 @@ def reset(self, qubit: QubitSpecifier) -> InstructionSet: """ return self.append(Reset(), [qubit], []) - def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSet: - """Measure quantum bit (qubit) into classical bit (clbit). + def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet: + """Measure quantum bit (qubit) into classical bit (cbit). - When a qubit is measured, its state collapses to a classical bit and copied to a - classical wire: + When a qubit is measured, its state collapses to a classical bit and copied to a + classical wire: - In this example, a qubit is measured and the result of that measurement is stored in the - classical bit (usually expressed as a double line) + In this example, a qubit is measured and the result of that measurement is stored in the + classical bit (usually expressed as a double line) .. code-block:: @@ -2283,15 +2283,14 @@ def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSe .. parsed-literal:: + ┌───┐┌─┐ q: ┤ H ├┤M├ └───┘└╥┘ c: 1/══════╩═ 0 - ``measure`` can be used with lists of register of the same length: - - * List of qubits and clbits of the same size:: + It is possible to call ``measure`` with lists of qubits and cbits of the same size:: .. code-block:: @@ -2300,6 +2299,7 @@ def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSe .. parsed-literal:: + ┌─┐ q_0: ┤M├─── └╥┘┌─┐ @@ -2308,16 +2308,16 @@ def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSe c: 2/═╩══╩═ 0 1 - * List of qubits and clbits of different size. The lenght of the qubit list should be - smaller than the length of classical bit list:: + It is also possible to do a one-to-many readout:: .. code-block:: circuit = QuantumCircuit(2,2) - circuit.measure([0], [0,1]) # same as "circuit.measure(0,0); circuit.measure(0,1);" + circuit.measure(0, [0,1]) # same as "circuit.measure(0,0); circuit.measure(0,1);" .. parsed-literal:: + ┌─┐┌─┐ q_0: ┤M├┤M├ └╥┘└╥┘ @@ -2326,12 +2326,29 @@ def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSe c: 2/═╩══╩═ 0 1 - Instead of lists, you can use :class:`~.QuantumRegister`s and :class:`~.ClassicalRegister`s - under the same logic. + Instead of lists, you can use :class:`~.QuantumRegister`s and :class:`~.ClassicalRegister`s + under the same logic. + + .. code-block:: + + from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister + qreg = QuantumRegister(1, "qreg") + creg = ClassicalRegister(2, "creg") + circuit = QuantumCircuit(qreg, creg) + circuit.measure(qreg, creg) + + + .. parsed-literal:: + + ┌─┐┌─┐ + qreg: ┤M├┤M├ + └╥┘└╥┘ + creg: 2/═╩══╩═ + 0 1 Args: qubit: qubit/s to measure. - clbit: classical bit/s to place the measurement in. + cbit: classical bit/s to place the measurement in. Returns: qiskit.circuit.InstructionSet: handle to the added instructions. @@ -2339,7 +2356,7 @@ def measure(self, qubit: QubitSpecifier, clbit: ClbitSpecifier) -> InstructionSe Raises: CircuitError: if arguments have bad format. """ - return self.append(Measure(), [qubit], [clbit]) + return self.append(Measure(), [qubit], [cbit]) def measure_active(self, inplace: bool = True) -> Optional["QuantumCircuit"]: """Adds measurement to all non-idle qubits. Creates a new ClassicalRegister with From c0d513b69cdfae60669285bad5689541627f14b9 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Thu, 2 Mar 2023 13:31:16 +0100 Subject: [PATCH 05/19] spelling --- qiskit/circuit/quantumcircuit.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 93176e301ea6..99d0cd58be3a 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2268,10 +2268,10 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet """Measure quantum bit (qubit) into classical bit (cbit). When a qubit is measured, its state collapses to a classical bit and copied to a - classical wire: + classical wire. In this example, a qubit is measured and the result of that measurement is stored in the - classical bit (usually expressed as a double line) + classical bit (usually expressed in diagrams as a double line):: .. code-block:: @@ -2326,8 +2326,8 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet c: 2/═╩══╩═ 0 1 - Instead of lists, you can use :class:`~.QuantumRegister`s and :class:`~.ClassicalRegister`s - under the same logic. + Instead of lists, you can use :class:`~qiskit.circuit.QuantumRegister` and + :class:`~qiskit.circuit.ClassicalRegister` under the same logic. .. code-block:: From 631bef547b4da4827b96cad8e33b6cab1fc5cdbb Mon Sep 17 00:00:00 2001 From: Junye Huang Date: Thu, 2 Mar 2023 15:10:56 +0100 Subject: [PATCH 06/19] Update qiskit/circuit/quantumcircuit.py --- qiskit/circuit/quantumcircuit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 99d0cd58be3a..d53d1174680d 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2271,7 +2271,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet classical wire. In this example, a qubit is measured and the result of that measurement is stored in the - classical bit (usually expressed in diagrams as a double line):: + classical bit (usually expressed in diagrams as a double line): .. code-block:: From 307b428082864f8a1fd76ae4660cfdd7425999b4 Mon Sep 17 00:00:00 2001 From: Junye Huang Date: Thu, 2 Mar 2023 15:11:09 +0100 Subject: [PATCH 07/19] Update qiskit/circuit/quantumcircuit.py --- qiskit/circuit/quantumcircuit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index d53d1174680d..a94126fcb92c 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2290,7 +2290,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet c: 1/══════╩═ 0 - It is possible to call ``measure`` with lists of qubits and cbits of the same size:: + It is possible to call ``measure`` with lists of qubits and cbits of the same size: .. code-block:: From 52ef5b988bb2e351af1c5457a29b6b3a66ac7877 Mon Sep 17 00:00:00 2001 From: Junye Huang Date: Thu, 2 Mar 2023 15:11:18 +0100 Subject: [PATCH 08/19] Update qiskit/circuit/quantumcircuit.py --- qiskit/circuit/quantumcircuit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index a94126fcb92c..bb004aca86da 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2308,7 +2308,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet c: 2/═╩══╩═ 0 1 - It is also possible to do a one-to-many readout:: + It is also possible to do a one-to-many readout: .. code-block:: From 8aaa3b3c4ea3d8068dbb788e18a48330c6855d27 Mon Sep 17 00:00:00 2001 From: Junye Huang Date: Thu, 2 Mar 2023 15:12:32 +0100 Subject: [PATCH 09/19] Update qiskit/circuit/quantumcircuit.py --- qiskit/circuit/quantumcircuit.py | 1 + 1 file changed, 1 insertion(+) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index bb004aca86da..1296dbcb763b 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2346,6 +2346,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet creg: 2/═╩══╩═ 0 1 + Args: qubit: qubit/s to measure. cbit: classical bit/s to place the measurement in. From 6082824a19097d69e9c8e6bc1f28ce61401c81c3 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Thu, 2 Mar 2023 21:31:40 +0100 Subject: [PATCH 10/19] examples after Args/Return/Raises --- qiskit/circuit/quantumcircuit.py | 119 ++++++++++++++++--------------- 1 file changed, 60 insertions(+), 59 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 1296dbcb763b..1b8d352184d5 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2270,92 +2270,93 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet When a qubit is measured, its state collapses to a classical bit and copied to a classical wire. - In this example, a qubit is measured and the result of that measurement is stored in the - classical bit (usually expressed in diagrams as a double line): + Args: + qubit: qubit/s to measure. + cbit: classical bit/s to place the measurement in. - .. code-block:: + Returns: + qiskit.circuit.InstructionSet: handle to the added instructions. - from qiskit import QuantumCircuit - circuit = QuantumCircuit(1,1) - circuit.h(0) - circuit.measure(0, 0) - circuit.draw() + Raises: + CircuitError: if arguments have bad format. + Examples: + In this example, a qubit is measured and the result of that measurement is stored in the + classical bit (usually expressed in diagrams as a double line): - .. parsed-literal:: + .. code-block:: - ┌───┐┌─┐ - q: ┤ H ├┤M├ - └───┘└╥┘ - c: 1/══════╩═ - 0 + from qiskit import QuantumCircuit + circuit = QuantumCircuit(1,1) + circuit.h(0) + circuit.measure(0, 0) + circuit.draw() - It is possible to call ``measure`` with lists of qubits and cbits of the same size: - .. code-block:: + .. parsed-literal:: - circuit = QuantumCircuit(2,2) - circuit.measure([0,1], [0,1]) # same as "circuit.measure(0,0); circuit.measure(1,1);" + ┌───┐┌─┐ + q: ┤ H ├┤M├ + └───┘└╥┘ + c: 1/══════╩═ + 0 + It is possible to call ``measure`` with lists of qubits and cbits of the same size: - .. parsed-literal:: + .. code-block:: - ┌─┐ - q_0: ┤M├─── - └╥┘┌─┐ - q_1: ─╫─┤M├ - ║ └╥┘ - c: 2/═╩══╩═ - 0 1 + circuit = QuantumCircuit(2,2) + circuit.measure([0,1], [0,1]) # same as "circuit.measure(0,0); circuit.measure(1,1);" - It is also possible to do a one-to-many readout: - .. code-block:: + .. parsed-literal:: - circuit = QuantumCircuit(2,2) - circuit.measure(0, [0,1]) # same as "circuit.measure(0,0); circuit.measure(0,1);" + ┌─┐ + q_0: ┤M├─── + └╥┘┌─┐ + q_1: ─╫─┤M├ + ║ └╥┘ + c: 2/═╩══╩═ + 0 1 + It is also possible to do a one-to-many readout: - .. parsed-literal:: + .. code-block:: - ┌─┐┌─┐ - q_0: ┤M├┤M├ - └╥┘└╥┘ - q_1: ─╫──╫─ - ║ ║ - c: 2/═╩══╩═ - 0 1 + circuit = QuantumCircuit(2,2) + circuit.measure(0, [0,1]) # same as "circuit.measure(0,0); circuit.measure(0,1);" - Instead of lists, you can use :class:`~qiskit.circuit.QuantumRegister` and - :class:`~qiskit.circuit.ClassicalRegister` under the same logic. - .. code-block:: + .. parsed-literal:: - from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister - qreg = QuantumRegister(1, "qreg") - creg = ClassicalRegister(2, "creg") - circuit = QuantumCircuit(qreg, creg) - circuit.measure(qreg, creg) + ┌─┐┌─┐ + q_0: ┤M├┤M├ + └╥┘└╥┘ + q_1: ─╫──╫─ + ║ ║ + c: 2/═╩══╩═ + 0 1 + Instead of lists, you can use :class:`~qiskit.circuit.QuantumRegister` and + :class:`~qiskit.circuit.ClassicalRegister` under the same logic. - .. parsed-literal:: + .. code-block:: - ┌─┐┌─┐ - qreg: ┤M├┤M├ - └╥┘└╥┘ - creg: 2/═╩══╩═ - 0 1 + from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister + qreg = QuantumRegister(1, "qreg") + creg = ClassicalRegister(2, "creg") + circuit = QuantumCircuit(qreg, creg) + circuit.measure(qreg, creg) - Args: - qubit: qubit/s to measure. - cbit: classical bit/s to place the measurement in. + .. parsed-literal:: - Returns: - qiskit.circuit.InstructionSet: handle to the added instructions. + ┌─┐┌─┐ + qreg: ┤M├┤M├ + └╥┘└╥┘ + creg: 2/═╩══╩═ + 0 1 - Raises: - CircuitError: if arguments have bad format. """ return self.append(Measure(), [qubit], [cbit]) From 7af99a089d3664d5d04f5c37a7c3650d4bb7a0ad Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Wed, 8 Mar 2023 17:54:06 +0100 Subject: [PATCH 11/19] Update qiskit/circuit/quantumcircuit.py Co-authored-by: Jake Lishman --- qiskit/circuit/quantumcircuit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 1b8d352184d5..589c6553354c 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2271,8 +2271,8 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet classical wire. Args: - qubit: qubit/s to measure. - cbit: classical bit/s to place the measurement in. + qubit: qubit(s) to measure. + cbit: classical bit(s) to place the measurement result(s) in. Returns: qiskit.circuit.InstructionSet: handle to the added instructions. From daaed65035ffba33e2b3627a539f0207388e8a70 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 10 Mar 2023 22:15:44 +0100 Subject: [PATCH 12/19] short description --- qiskit/circuit/quantumcircuit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 1a2314a36cb7..183bca858752 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2265,7 +2265,7 @@ def reset(self, qubit: QubitSpecifier) -> InstructionSet: return self.append(Reset(), [qubit], []) def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet: - """Measure quantum bit (qubit) into classical bit (cbit). + """Measure a quantum bit (``qubit``) into a classical bit (``cbit``). When a qubit is measured, its state collapses to a classical bit and copied to a classical wire. From e3bc46abfe6bfccc9fe5b6238c9d00048e554d59 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 10 Mar 2023 22:27:37 +0100 Subject: [PATCH 13/19] better description --- qiskit/circuit/quantumcircuit.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 183bca858752..e6e56c6dbd3f 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2267,8 +2267,9 @@ def reset(self, qubit: QubitSpecifier) -> InstructionSet: def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet: """Measure a quantum bit (``qubit``) into a classical bit (``cbit``). - When a qubit is measured, its state collapses to a classical bit and copied to a - classical wire. + When quantum state is measured a qubit is project in the computational (Pauli Z) basis to + either :math:`|0\rangle` or :math:`|1\rangle`. The classical bit ``cbit`` indicates the result + of that projection as a ``0`` or a ``1`` respectively. This operation is non-reversible. Args: qubit: qubit(s) to measure. From 1a474f66f22bb0d3cc9763a8fc216bb4f87b8020 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 10 Mar 2023 22:41:31 +0100 Subject: [PATCH 14/19] as equivalence --- qiskit/circuit/quantumcircuit.py | 49 +++++++++++++------------------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index e6e56c6dbd3f..0e60d04944a8 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2288,7 +2288,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet .. code-block:: from qiskit import QuantumCircuit - circuit = QuantumCircuit(1,1) + circuit = QuantumCircuit(1, 1) circuit.h(0) circuit.measure(0, 0) circuit.draw() @@ -2302,41 +2302,33 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet c: 1/══════╩═ 0 - It is possible to call ``measure`` with lists of qubits and cbits of the same size: + It is possible to call ``measure`` with lists of qubits and cbits of the same size, as a + shortcut. These two forms produce identical output:: .. code-block:: - circuit = QuantumCircuit(2,2) - circuit.measure([0,1], [0,1]) # same as "circuit.measure(0,0); circuit.measure(1,1);" - + circuit = QuantumCircuit(2, 2) + circuit.measure([0,1], [0,1]) - .. parsed-literal:: + .. code-block:: - ┌─┐ - q_0: ┤M├─── - └╥┘┌─┐ - q_1: ─╫─┤M├ - ║ └╥┘ - c: 2/═╩══╩═ - 0 1 + circuit = QuantumCircuit(2, 2) + circuit.measure(0, 0) + circuit.measure(1, 1) - It is also possible to do a one-to-many readout: + It is also possible to do a one-to-many readout. These two forms produce identical output:: .. code-block:: circuit = QuantumCircuit(2,2) - circuit.measure(0, [0,1]) # same as "circuit.measure(0,0); circuit.measure(0,1);" + circuit.measure(0, [0,1]) + .. code-block:: - .. parsed-literal:: + circuit = QuantumCircuit(2, 2) + circuit.measure(0, 0) + circuit.measure(0, 1) - ┌─┐┌─┐ - q_0: ┤M├┤M├ - └╥┘└╥┘ - q_1: ─╫──╫─ - ║ ║ - c: 2/═╩══╩═ - 0 1 Instead of lists, you can use :class:`~qiskit.circuit.QuantumRegister` and :class:`~qiskit.circuit.ClassicalRegister` under the same logic. @@ -2349,14 +2341,13 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet circuit = QuantumCircuit(qreg, creg) circuit.measure(qreg, creg) + This is equivalent to:: - .. parsed-literal:: + .. code-block:: - ┌─┐┌─┐ - qreg: ┤M├┤M├ - └╥┘└╥┘ - creg: 2/═╩══╩═ - 0 1 + circuit = QuantumCircuit(qreg, creg) + circuit.measure(qreg[0], creg[0]) + circuit.measure(qreg[0], creg[1]) """ return self.append(Measure(), [qubit], [cbit]) From 7bc4849f886061e04aed136e7e81de47b0e79423 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Fri, 10 Mar 2023 22:51:07 +0100 Subject: [PATCH 15/19] shorten it a bit --- qiskit/circuit/quantumcircuit.py | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 0e60d04944a8..dfd4ae1b7005 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2265,7 +2265,7 @@ def reset(self, qubit: QubitSpecifier) -> InstructionSet: return self.append(Reset(), [qubit], []) def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet: - """Measure a quantum bit (``qubit``) into a classical bit (``cbit``). + """Measure in Z basis a quantum bit (``qubit``) into a classical bit (``cbit``). When quantum state is measured a qubit is project in the computational (Pauli Z) basis to either :math:`|0\rangle` or :math:`|1\rangle`. The classical bit ``cbit`` indicates the result @@ -2302,8 +2302,8 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet c: 1/══════╩═ 0 - It is possible to call ``measure`` with lists of qubits and cbits of the same size, as a - shortcut. These two forms produce identical output:: + It is possible to call ``measure`` with lists of ``qubits`` and ``cbits`` as a shortcut + for one-to-one measurement. These two forms produce identical results:: .. code-block:: @@ -2316,27 +2316,13 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet circuit.measure(0, 0) circuit.measure(1, 1) - It is also possible to do a one-to-many readout. These two forms produce identical output:: - - .. code-block:: - - circuit = QuantumCircuit(2,2) - circuit.measure(0, [0,1]) - - .. code-block:: - - circuit = QuantumCircuit(2, 2) - circuit.measure(0, 0) - circuit.measure(0, 1) - - Instead of lists, you can use :class:`~qiskit.circuit.QuantumRegister` and :class:`~qiskit.circuit.ClassicalRegister` under the same logic. .. code-block:: from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister - qreg = QuantumRegister(1, "qreg") + qreg = QuantumRegister(2, "qreg") creg = ClassicalRegister(2, "creg") circuit = QuantumCircuit(qreg, creg) circuit.measure(qreg, creg) @@ -2347,7 +2333,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet circuit = QuantumCircuit(qreg, creg) circuit.measure(qreg[0], creg[0]) - circuit.measure(qreg[0], creg[1]) + circuit.measure(qreg[1], creg[1]) """ return self.append(Measure(), [qubit], [cbit]) From da035a938e6dc429d70cad9caf86fca587bf8ead Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Sat, 11 Mar 2023 00:10:02 +0100 Subject: [PATCH 16/19] :: --- qiskit/circuit/quantumcircuit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index dfd4ae1b7005..2028680850d5 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2303,7 +2303,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet 0 It is possible to call ``measure`` with lists of ``qubits`` and ``cbits`` as a shortcut - for one-to-one measurement. These two forms produce identical results:: + for one-to-one measurement. These two forms produce identical results: .. code-block:: @@ -2327,7 +2327,7 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet circuit = QuantumCircuit(qreg, creg) circuit.measure(qreg, creg) - This is equivalent to:: + This is equivalent to: .. code-block:: From 464d805a481cbb6b577b35d9d7aad9c1f742db08 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Sat, 11 Mar 2023 00:14:00 +0100 Subject: [PATCH 17/19] raw string --- qiskit/circuit/quantumcircuit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 2028680850d5..36dc0f978dab 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2265,7 +2265,7 @@ def reset(self, qubit: QubitSpecifier) -> InstructionSet: return self.append(Reset(), [qubit], []) def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet: - """Measure in Z basis a quantum bit (``qubit``) into a classical bit (``cbit``). + r"""Measure in Z basis a quantum bit (``qubit``) into a classical bit (``cbit``). When quantum state is measured a qubit is project in the computational (Pauli Z) basis to either :math:`|0\rangle` or :math:`|1\rangle`. The classical bit ``cbit`` indicates the result From 81d70322e69ab7ad1508726c7077ec2b97219254 Mon Sep 17 00:00:00 2001 From: Luciano Bello Date: Sat, 11 Mar 2023 00:19:30 +0100 Subject: [PATCH 18/19] lvert --- qiskit/circuit/quantumcircuit.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 36dc0f978dab..02cb4319f4eb 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2268,7 +2268,8 @@ def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet r"""Measure in Z basis a quantum bit (``qubit``) into a classical bit (``cbit``). When quantum state is measured a qubit is project in the computational (Pauli Z) basis to - either :math:`|0\rangle` or :math:`|1\rangle`. The classical bit ``cbit`` indicates the result + either :math:`\lvert 0 \rangle` or :math:`\lvert 1 \rangle`. The classical bit ``cbit`` + indicates the result of that projection as a ``0`` or a ``1`` respectively. This operation is non-reversible. Args: From 365fd9a2f95ad5bc21ecac03f7b4e0d93d90776b Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Tue, 14 Mar 2023 15:02:47 +0000 Subject: [PATCH 19/19] Tweak grammar --- qiskit/circuit/quantumcircuit.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 02cb4319f4eb..e5d4b9862f5e 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -2265,10 +2265,10 @@ def reset(self, qubit: QubitSpecifier) -> InstructionSet: return self.append(Reset(), [qubit], []) def measure(self, qubit: QubitSpecifier, cbit: ClbitSpecifier) -> InstructionSet: - r"""Measure in Z basis a quantum bit (``qubit``) into a classical bit (``cbit``). + r"""Measure a quantum bit (``qubit``) in the Z basis into a classical bit (``cbit``). - When quantum state is measured a qubit is project in the computational (Pauli Z) basis to - either :math:`\lvert 0 \rangle` or :math:`\lvert 1 \rangle`. The classical bit ``cbit`` + When a quantum state is measured, a qubit is projected in the computational (Pauli Z) basis + to either :math:`\lvert 0 \rangle` or :math:`\lvert 1 \rangle`. The classical bit ``cbit`` indicates the result of that projection as a ``0`` or a ``1`` respectively. This operation is non-reversible.