diff --git a/qiskit_aer/noise/device/models.py b/qiskit_aer/noise/device/models.py index 528a9ffa1c..4be3bf7283 100644 --- a/qiskit_aer/noise/device/models.py +++ b/qiskit_aer/noise/device/models.py @@ -360,8 +360,10 @@ def _device_thermal_relaxation_error( def _truncate_t2_value(t1, t2): """Return t2 value truncated to 2 * t1 (for t2 > 2 * t1)""" - if t1 is None or t2 is None: + if t1 is None: return t2 + elif t2 is None: + return 2 * t1 return min(t2, 2 * t1) diff --git a/releasenotes/notes/fix-none-t2-handling-in-noise-model-5b712adf3569eccd.yaml b/releasenotes/notes/fix-none-t2-handling-in-noise-model-5b712adf3569eccd.yaml new file mode 100644 index 0000000000..52fc63e2ec --- /dev/null +++ b/releasenotes/notes/fix-none-t2-handling-in-noise-model-5b712adf3569eccd.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + Fixed a bug where :meth:`~.NoiseModel.from_backend` raises an error when + a backend reports no T2 value (while it reports T1 value) for a qubit, + which was an oversight in the previous fix on None handling: + `#1818 `__. + Fixed `#1896 `__. diff --git a/test/terra/noise/test_device_models.py b/test/terra/noise/test_device_models.py index 5098ab2794..c31b6090e7 100644 --- a/test/terra/noise/test_device_models.py +++ b/test/terra/noise/test_device_models.py @@ -63,3 +63,10 @@ def test_basic_device_gate_errors_from_target_and_properties(self): self.assertEqual(name1, name2) self.assertEqual(tuple(qargs1), qargs2) self.assertEqual(err1, err2) + + def test_basic_device_gate_errors_from_target_with_no_t2_value(self): + """Test if gate errors are successfully created from a target with qubits not reporting T2. + See https://github.com/Qiskit/qiskit-aer/issues/1896 for the details.""" + target = FakeNairobiV2().target + target.qubit_properties[0].t2 = None + basic_device_gate_errors(target=target)