What is the concrete difference between those two error models in qiskit.providers.aer.noise?

For phase_amplitude_damping_error the Kraus operators are given explicitly in the documentation but not so for the thermal_relaxation_error. At least they both work towards the same equilibrium state. Physically they should have the same effect since a thermal relaxation is nothing but an amplitude damping and dephasing, correct?

The only difference I see is in the definition of the parameters. While phase_and_amplitude_damping_error has two separate parameters for the damping of amplitude and phase, T2 of thermal_relaxation_error includes both types as $ \frac{1}{T_2}=\frac{1}{T_2}+\frac{1}{T_p}$ where $T_1$ describes amplitude damping and $T_p$ phase damping.

Are there further difference (also in the specific implementation) I have overlooked?

Edit: I tried to convert the density matrix of the thermal relaxation channel applied to the pure state as given in Krantz (Equation 44 without phase accruel) to the one I get when applying the channel given by the phase_and_amplitude_damping qiskit documentation. This yields as condition that exp(-t/T2)=1 which is nonsense. But when converting it to the density matrix given by the pennylane implementation of thermal relaxation I get exp(-t/T1)=exp(-t/T2) which is nonsense as well. (I hope I didn't miscalculate anything.) The qiskit definition of the phase_and_amplitude_damping is the same as here (equ.14 and following) but what is described there fits the description of the thermal relaxation in Krantz pretty much. And last but not least, there is this $T_1/T_2$ thermal relaxation example, where the kraus operators of the amplitude damping for the ones of qiskit but the thermal relaxation times correspond to those in the paper of Krantz. So, there must be more about this than the definition of the parameters.

  • $\begingroup$ I recommend look at test file from qiskit for understand how it been expected to be use.github.com/Qiskit/qiskit-aer/blob/… , github.com/Qiskit/qiskit-aer/blob/… $\endgroup$
    – poig
    Jun 28, 2022 at 2:40
  • $\begingroup$ These tests are nice to see, thank you. However, what I am looking for is not implemented ("line 39: # TODO: Test Kraus thermal relaxation error by comparing to amplitude damping channel"). $\endgroup$ Jun 29, 2022 at 14:58

1 Answer 1


The thermal relaxation error is nothing else than a phase amplitude damping error with phase damping parameter $p_p$ and amplitude damping $p_a$ related to thermal relaxation times by $$ \begin{align} &p_a=1-\exp(-t/T_1) \\ &p_p=1-\exp(-t/T_\phi) \;\mathrm{with}\; T_\phi= \frac{T_1 T_2}{2 T_1 - T_2}.\end{align} $$ where $T_\phi$ is the pure phase relaxation time which is a combination of $T_1$ and $T_2$ since amplitude damping is always accompanied by phase damping, that is the Bloch vector $\vec{r}$ is damped in the phase direction ($r_x, r_y$) by an factor of $\sqrt{1-p_a}\sqrt{1-p_p}$.

However, the implementation in qiskit does not allow this direct parameter comparison, since it uses an inappropriate Kraus decomposition, which also unnecessarily and incorrectly restricts the parameter space with $p_a +p_p \le 1$ (see also my answer to a related question).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.