diff --git a/src/openfermion/transforms/opconversions/reverse_jordan_wigner.py b/src/openfermion/transforms/opconversions/reverse_jordan_wigner.py index e340c5edf..99159e6f0 100644 --- a/src/openfermion/transforms/opconversions/reverse_jordan_wigner.py +++ b/src/openfermion/transforms/opconversions/reverse_jordan_wigner.py @@ -81,7 +81,11 @@ def reverse_jordan_wigner(qubit_operator, n_qubits=None): working_term.terms[list(working_term.terms)[0]] = 1.0 # Get next non-identity operator acting below 'working_qubit'. - assert len(working_term.terms) == 1 + if len(working_term.terms) != 1: + raise ValueError( + 'QubitOperator must contain exactly one term. ' + f'Found {len(working_term.terms)} terms: {working_term!r}' + ) working_qubit = pauli_operator[0] - 1 for working_operator in reversed(list(working_term.terms)[0]): if working_operator[0] <= working_qubit: diff --git a/src/openfermion/transforms/opconversions/reverse_jordan_wigner_test.py b/src/openfermion/transforms/opconversions/reverse_jordan_wigner_test.py index 88a419ed8..2f98b65b2 100644 --- a/src/openfermion/transforms/opconversions/reverse_jordan_wigner_test.py +++ b/src/openfermion/transforms/opconversions/reverse_jordan_wigner_test.py @@ -12,6 +12,7 @@ """Tests reverse_jordan_wigner.py.""" import unittest +from unittest.mock import patch from openfermion.ops.operators import FermionOperator, QubitOperator from openfermion.transforms.opconversions import jordan_wigner, normal_ordered @@ -160,6 +161,16 @@ def test_bad_type(self): with self.assertRaises(TypeError): reverse_jordan_wigner(3) + def test_reverse_jw_multi_term_error(self): + with patch( + 'openfermion.transforms.opconversions.reverse_jordan_wigner.' 'QubitOperator.__mul__' + ) as mock_mul: + mock_mul.return_value = QubitOperator('X0') + QubitOperator('Y0') + with self.assertRaisesRegex( + ValueError, 'QubitOperator must contain exactly one term. Found 2 terms' + ): + reverse_jordan_wigner(QubitOperator('X1')) + def test_jw_convention(self): """Test that the Jordan-Wigner convention places the Z-string on lower indices."""