From e162f476b2a61015ea27c29c9aa35a2262dbc801 Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sun, 25 Feb 2024 18:36:16 -0300 Subject: [PATCH 01/16] Implement reverse_map() method. --- .../second_q/mappers/jordan_wigner_mapper.py | 65 ++++++++++++++++++- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 569d35f58..a60682509 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -1,6 +1,6 @@ # This code is part of a Qiskit project. # -# (C) Copyright IBM 2021, 2023. +# (C) Copyright IBM 2021, 2024. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -19,8 +19,10 @@ import numpy as np from qiskit.quantum_info.operators import Pauli +from qiskit.quantum_info import SparsePauliOp -from .fermionic_mapper import FermionicMapper +from qiskit_nature.second_q.mappers.fermionic_mapper import FermionicMapper +from qiskit_nature.second_q.operators import FermionicOp class JordanWignerMapper(FermionicMapper): @@ -41,5 +43,62 @@ def pauli_table(cls, register_length: int) -> list[tuple[Pauli, Pauli]]: # c_x = np.asarray([0] * register_length, dtype=bool) pauli_table.append((Pauli((a_z, a_x)), Pauli((b_z, b_x)))) # TODO add Pauli 3-tuple to lookup table - + print(pauli_table) return pauli_table + + @classmethod + def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: + """Maps a qubit operator ``SparsePauliOp`` back into the second quantized operator ``FermionicOp``. + + Args: + qubit_op: The qubit operator ``SparsePauliOp`` to be mapped. + + Returns: + The second quantized operator ``FermionicOp`` corresponding to the Hamiltonian in the Fermionic space. + """ + num_qubits = ( + qubit_op.num_qubits + ) # get number of qubits from input second quantized operator + qubit_op = cls.invert_pauli_terms(qubit_op) + total_fermionic_op = FermionicOp.zero() + for term in qubit_op: + coef_term = term.coeffs[0] + target_pauli_op = term.paulis[0] + ferm_term_ops = [] + for i in range(num_qubits): + one_pauli = target_pauli_op[num_qubits - 1 - i] + pauli_char = one_pauli.to_label() + if pauli_char == "Z": # dealing Pauli Z op + ferm_op_pauli = FermionicOp({"": 1, f"+_{i} -_{i}": -2}) + elif pauli_char == "X": # dealing Pauli X op + ferm_op_pauli = FermionicOp({f"+_{i}": 1, f"-_{i}": 1}) + target_pauli_op = Pauli("I" * (i + 1) + "Z" * (num_qubits - i - 1)).compose( + target_pauli_op + ) + elif one_pauli.to_label() == "Y": # dealing Pauli Y op + ferm_op_pauli = 1j * FermionicOp({f"+_{i}": -1, f"-_{i}": 1}) + target_pauli_op = Pauli("I" * (i + 1) + "Z" * (num_qubits - i - 1)).compose( + target_pauli_op + ) + else: + ferm_op_pauli = FermionicOp.one() + ferm_term_ops.append(ferm_op_pauli) + term_fermionic_op = FermionicOp.one() + for op in ferm_term_ops: + term_fermionic_op = term_fermionic_op @ op + if target_pauli_op.phase == 1: + coef_term *= -1j + elif target_pauli_op.phase == 2: + coef_term *= -1 + elif target_pauli_op.phase == 3: + coef_term *= 1j + total_fermionic_op += coef_term * term_fermionic_op + return total_fermionic_op.normal_order() + + @staticmethod + def invert_pauli_terms(sparse_pauli_op: SparsePauliOp) -> SparsePauliOp: + """Utility to invert the order of Pauli operators in each term of a SparsePauliOp.""" + inverted_labels = [label[::-1] for label in sparse_pauli_op.paulis.to_labels()] + # Create a new SparsePauliOp with the inverted labels but same coefficients + inverted_sparse_pauli_op = SparsePauliOp(inverted_labels, sparse_pauli_op.coeffs) + return inverted_sparse_pauli_op From 8d7486bbad730d39ad4a2c71ac2aaea5239d220a Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sun, 25 Feb 2024 18:37:35 -0300 Subject: [PATCH 02/16] Created unit test for reverse_map() and added release note. --- ...rse-jordan-wigner-mapping-be0e0ab217967f61.yaml | 4 ++++ test/second_q/mappers/test_jordan_wigner_mapper.py | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml diff --git a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml new file mode 100644 index 000000000..21ede4137 --- /dev/null +++ b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml @@ -0,0 +1,4 @@ + +features: + - + Created a new method reverse_map() for JordanWignerMapper() that allows users to recover the fermionic operator from a qubit operator. \ No newline at end of file diff --git a/test/second_q/mappers/test_jordan_wigner_mapper.py b/test/second_q/mappers/test_jordan_wigner_mapper.py index b7b2fbd9a..8aab5feb6 100644 --- a/test/second_q/mappers/test_jordan_wigner_mapper.py +++ b/test/second_q/mappers/test_jordan_wigner_mapper.py @@ -1,6 +1,6 @@ # This code is part of a Qiskit project. # -# (C) Copyright IBM 2021, 2023. +# (C) Copyright IBM 2021, 2024. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -142,6 +142,18 @@ def test_mapping_overwrite_reg_len(self): mapper = JordanWignerMapper() self.assertEqual(mapper.map(op, register_length=3), mapper.map(expected)) + def test_reverse_map(self): + """Test reverse mapping from qubit operator back to fermionic operator.""" + driver = PySCFDriver() + driver_result = driver.run() + fermionic_op, _ = driver_result.second_q_ops() + mapper = JordanWignerMapper() + qubit_op = mapper.map(fermionic_op) + recovered_fermionic_op = mapper.reverse_map(qubit_op) + fermionic_op = fermionic_op.normal_order() + recovered_fermionic_op = recovered_fermionic_op.normal_order() + self.assertTrue(fermionic_op.equiv(recovered_fermionic_op)) + if __name__ == "__main__": unittest.main() From b7fe618bb4186a1fee6d3a19fa76fec861f4f98a Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sun, 25 Feb 2024 18:47:12 -0300 Subject: [PATCH 03/16] Implement reverse_map() method in jordan_wigner_mapper.py Had to fix imports. --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index a60682509..9062dda25 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -21,7 +21,7 @@ from qiskit.quantum_info.operators import Pauli from qiskit.quantum_info import SparsePauliOp -from qiskit_nature.second_q.mappers.fermionic_mapper import FermionicMapper +from .fermionic_mapper import FermionicMapper from qiskit_nature.second_q.operators import FermionicOp @@ -43,7 +43,6 @@ def pauli_table(cls, register_length: int) -> list[tuple[Pauli, Pauli]]: # c_x = np.asarray([0] * register_length, dtype=bool) pauli_table.append((Pauli((a_z, a_x)), Pauli((b_z, b_x)))) # TODO add Pauli 3-tuple to lookup table - print(pauli_table) return pauli_table @classmethod From 3efd4ca56390a8dfed0d53e9503b1e19f2cf5779 Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Tue, 27 Feb 2024 18:15:30 -0300 Subject: [PATCH 04/16] Update jordan_wigner_mapper.py to fix automated checks --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 9062dda25..5d0b0d8c4 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -21,8 +21,8 @@ from qiskit.quantum_info.operators import Pauli from qiskit.quantum_info import SparsePauliOp -from .fermionic_mapper import FermionicMapper from qiskit_nature.second_q.operators import FermionicOp +from .fermionic_mapper import FermionicMapper class JordanWignerMapper(FermionicMapper): @@ -47,13 +47,15 @@ def pauli_table(cls, register_length: int) -> list[tuple[Pauli, Pauli]]: @classmethod def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: - """Maps a qubit operator ``SparsePauliOp`` back into the second quantized operator ``FermionicOp``. + """Maps a qubit operator ``SparsePauliOp`` back into the second + quantized operator ``FermionicOp``. Args: qubit_op: The qubit operator ``SparsePauliOp`` to be mapped. Returns: - The second quantized operator ``FermionicOp`` corresponding to the Hamiltonian in the Fermionic space. + The second quantized operator ``FermionicOp`` corresponding to + the Hamiltonian in the Fermionic space. """ num_qubits = ( qubit_op.num_qubits From 0da3ec8c2b40e8e65c4e08532173ea8c0fae3bfb Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Tue, 27 Feb 2024 18:17:21 -0300 Subject: [PATCH 05/16] Add Pyscf check in test_reverse_map() for automated checks. --- test/second_q/mappers/test_jordan_wigner_mapper.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/second_q/mappers/test_jordan_wigner_mapper.py b/test/second_q/mappers/test_jordan_wigner_mapper.py index 8aab5feb6..69132fed4 100644 --- a/test/second_q/mappers/test_jordan_wigner_mapper.py +++ b/test/second_q/mappers/test_jordan_wigner_mapper.py @@ -142,6 +142,7 @@ def test_mapping_overwrite_reg_len(self): mapper = JordanWignerMapper() self.assertEqual(mapper.map(op, register_length=3), mapper.map(expected)) + @unittest.skipIf(not _optionals.HAS_PYSCF, "pyscf not available.") def test_reverse_map(self): """Test reverse mapping from qubit operator back to fermionic operator.""" driver = PySCFDriver() From 4c15ca79bf18c1ea148a5fcced750b33f538245a Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Tue, 27 Feb 2024 18:41:31 -0300 Subject: [PATCH 06/16] Complex inside FermionicOP to fix mypy error --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 5d0b0d8c4..3a6e24bbe 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -77,7 +77,7 @@ def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: target_pauli_op ) elif one_pauli.to_label() == "Y": # dealing Pauli Y op - ferm_op_pauli = 1j * FermionicOp({f"+_{i}": -1, f"-_{i}": 1}) + ferm_op_pauli = FermionicOp({f"+_{i}": -1j, f"-_{i}": 1j}) target_pauli_op = Pauli("I" * (i + 1) + "Z" * (num_qubits - i - 1)).compose( target_pauli_op ) From 9a48d53e0fa84c59f02b6900d7bc10b18cf3d26c Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 14:58:01 -0300 Subject: [PATCH 07/16] Update releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> --- .../notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml index 21ede4137..522aa895c 100644 --- a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml +++ b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml @@ -1,4 +1,5 @@ features: - - Created a new method reverse_map() for JordanWignerMapper() that allows users to recover the fermionic operator from a qubit operator. \ No newline at end of file + Adds a new method :meth:`.JordanWignerMapper.reverse_map` for :class:``JordanWignerMapper` that does + a reverse mapping to create a fermionic operator from a qubit operator. \ No newline at end of file From b41f04f695d1a2b01b21e21c4d15b8450b626559 Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 14:58:12 -0300 Subject: [PATCH 08/16] Update releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> --- .../notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml index 522aa895c..cb6ef8a05 100644 --- a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml +++ b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml @@ -1,4 +1,4 @@ - +--- features: - Adds a new method :meth:`.JordanWignerMapper.reverse_map` for :class:``JordanWignerMapper` that does From bc52fb560cf025a6fd2edf4dce67229c2e83fdf4 Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 15:19:20 -0300 Subject: [PATCH 09/16] Update reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml --- .../notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml index cb6ef8a05..9bd0efcf5 100644 --- a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml +++ b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml @@ -1,5 +1,5 @@ --- features: - - Adds a new method :meth:`.JordanWignerMapper.reverse_map` for :class:``JordanWignerMapper` that does - a reverse mapping to create a fermionic operator from a qubit operator. \ No newline at end of file + Adds a new method :meth:`.JordanWignerMapper.reverse_map` for :class:`.JordanWignerMapper` that does + a reverse mapping to create a fermionic operator from a qubit operator. From 657cc125d5b76bc0901d3b33122ac962814966ca Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 15:20:23 -0300 Subject: [PATCH 10/16] Update releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> --- .../notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml index 9bd0efcf5..2951d8e63 100644 --- a/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml +++ b/releasenotes/notes/reverse-jordan-wigner-mapping-be0e0ab217967f61.yaml @@ -1,5 +1,5 @@ --- features: - - + - | Adds a new method :meth:`.JordanWignerMapper.reverse_map` for :class:`.JordanWignerMapper` that does a reverse mapping to create a fermionic operator from a qubit operator. From fb3ad157863ba06459c6be8dad2a8333e2a179f4 Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 15:50:11 -0300 Subject: [PATCH 11/16] Make invert_pauli_terms() private. --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 3a6e24bbe..04fe918aa 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -60,7 +60,7 @@ def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: num_qubits = ( qubit_op.num_qubits ) # get number of qubits from input second quantized operator - qubit_op = cls.invert_pauli_terms(qubit_op) + qubit_op = cls.__invert_pauli_terms(qubit_op) total_fermionic_op = FermionicOp.zero() for term in qubit_op: coef_term = term.coeffs[0] @@ -97,7 +97,7 @@ def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: return total_fermionic_op.normal_order() @staticmethod - def invert_pauli_terms(sparse_pauli_op: SparsePauliOp) -> SparsePauliOp: + def __invert_pauli_terms(sparse_pauli_op: SparsePauliOp) -> SparsePauliOp: """Utility to invert the order of Pauli operators in each term of a SparsePauliOp.""" inverted_labels = [label[::-1] for label in sparse_pauli_op.paulis.to_labels()] # Create a new SparsePauliOp with the inverted labels but same coefficients From aa53bfd2611e94c4f0e5817e68b1ffb1ef609838 Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 15:51:28 -0300 Subject: [PATCH 12/16] Add note to use reverse_map() ony on JW operators. --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 04fe918aa..17757ffa3 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -47,8 +47,9 @@ def pauli_table(cls, register_length: int) -> list[tuple[Pauli, Pauli]]: @classmethod def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: - """Maps a qubit operator ``SparsePauliOp`` back into the second - quantized operator ``FermionicOp``. + """Maps a qubit operator ``SparsePauliOp`` back into the second quantized operator ``FermionicOp``. + While it'll work for any ``SparsePauliOp`` operator, it should be used on operators that were + created with ``JordanWignerMapper`` to ensure accurate results. Args: qubit_op: The qubit operator ``SparsePauliOp`` to be mapped. From 0ca421d3dbe0fe8857e1397436be86c5db9bf0ed Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 15:52:50 -0300 Subject: [PATCH 13/16] Changed wording on the note. --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 17757ffa3..9ee4fd360 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -48,8 +48,8 @@ def pauli_table(cls, register_length: int) -> list[tuple[Pauli, Pauli]]: @classmethod def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: """Maps a qubit operator ``SparsePauliOp`` back into the second quantized operator ``FermionicOp``. - While it'll work for any ``SparsePauliOp`` operator, it should be used on operators that were - created with ``JordanWignerMapper`` to ensure accurate results. + While it'll provide an output for any ``SparsePauliOp`` operator, it should be used on operators + that were created with ``JordanWignerMapper`` to ensure accurate results. Args: qubit_op: The qubit operator ``SparsePauliOp`` to be mapped. From 9a7223a4aca750767c87b29a72b0a984cae8b724 Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 16:07:46 -0300 Subject: [PATCH 14/16] Update jordan_wigner_mapper.py --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 9ee4fd360..0edd6488c 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -47,9 +47,10 @@ def pauli_table(cls, register_length: int) -> list[tuple[Pauli, Pauli]]: @classmethod def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: - """Maps a qubit operator ``SparsePauliOp`` back into the second quantized operator ``FermionicOp``. - While it'll provide an output for any ``SparsePauliOp`` operator, it should be used on operators - that were created with ``JordanWignerMapper`` to ensure accurate results. + """Maps a qubit operator ``SparsePauliOp`` back into the second quantized + operator ``FermionicOp``. While it'll provide an output for any ``SparsePauliOp`` + operator, it should be used on operators that were created with + ``JordanWignerMapper`` to ensure accurate results. Args: qubit_op: The qubit operator ``SparsePauliOp`` to be mapped. From 79a739a1c9ae1bd66a7fc897ea9bb2a437fd7cfe Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Sat, 2 Mar 2024 16:23:53 -0300 Subject: [PATCH 15/16] FIx style formatting. --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 0edd6488c..9c9e320f7 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -49,7 +49,7 @@ def pauli_table(cls, register_length: int) -> list[tuple[Pauli, Pauli]]: def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: """Maps a qubit operator ``SparsePauliOp`` back into the second quantized operator ``FermionicOp``. While it'll provide an output for any ``SparsePauliOp`` - operator, it should be used on operators that were created with + operator, it should be used on operators that were created with ``JordanWignerMapper`` to ensure accurate results. Args: From 8bd7562cbf554abc4570c947279faf2e3d9babbb Mon Sep 17 00:00:00 2001 From: Marco Antonio Barroca Date: Wed, 6 Mar 2024 12:56:17 -0300 Subject: [PATCH 16/16] Update qiskit_nature/second_q/mappers/jordan_wigner_mapper.py Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com> --- qiskit_nature/second_q/mappers/jordan_wigner_mapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py index 9c9e320f7..2d8a15ae5 100644 --- a/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py +++ b/qiskit_nature/second_q/mappers/jordan_wigner_mapper.py @@ -50,7 +50,7 @@ def reverse_map(cls, qubit_op: SparsePauliOp) -> FermionicOp: """Maps a qubit operator ``SparsePauliOp`` back into the second quantized operator ``FermionicOp``. While it'll provide an output for any ``SparsePauliOp`` operator, it should be used on operators that were created with - ``JordanWignerMapper`` to ensure accurate results. + ``JordanWignerMapper`` to ensure a meaningful result. Args: qubit_op: The qubit operator ``SparsePauliOp`` to be mapped.