mimiqcircuits.operations.noisechannel.standards.phaseamplitudedamping

Classes

PhaseAmplitudeDamping(p, gamma, beta)

One-qubit phase amplitude damping noise channel.

ThermalNoise(T1, T2, time, ne)

One-qubit thermal noise channel.

class mimiqcircuits.operations.noisechannel.standards.phaseamplitudedamping.ThermalNoise(T1, T2, time, ne)[source]

Bases: krauschannel

One-qubit thermal noise channel.

The thermal noise channel is equivalent to the PhaseAmplitudeDamping channel, but it is parametrized instead as:

\[\begin{split}\mathcal{E}(\rho) = \begin{pmatrix} e^{-\Gamma_1 t}\rho_{00} + (1-n_e)(1-e^{-\Gamma_1 t}) & e^{-\Gamma_2 t}\rho_{01} \\ e^{-\Gamma_2 t}\rho_{10} & e^{-\Gamma_1 t}\rho_{11} + n_e(1-e^{-\Gamma_1 t}) \end{pmatrix}\end{split}\]

where \(\Gamma_1 = 1/T_1\) and \(\Gamma_2 = 1/T_2\), and the parameters must fulfill \(T_1 \geq 0\), \(T_2 \leq 2 T_1\), \(t \geq 0\), and \(0 \leq n_e \leq 1\).

These parameters can be related to the ones used to define the PhaseAmplitudeDamping channel through \(p = 1-n_e\), \(\gamma = 1-e^{-\Gamma_1 t}\), and \(\beta = \frac{1}{2}(1-e^{-(\Gamma_2-\Gamma_1/2)t})\).

See also

PhaseAmplitudeDamping, AmplitudeDamping, GeneralizedAmplitudeDamping.

Parameters:
  • T₁ (float) – Longitudinal relaxation rate, must be greater than or equal to 0.

  • T₂ (float) – Transversal relaxation rate, must be less than or equal to 2 * T₁.

  • t (float) – Time duration of the gate, must be greater than or equal to 0.

  • nₑ (float) – Excitation fraction when in thermal equilibrium with the environment, must be in the range [0, 1].

Examples

>>> from mimiqcircuits import *
>>> c = Circuit()
>>> c.push(ThermalNoise(0.5, 0.6, 1.2, 0.3), 1)
2-qubit circuit with 1 instruction:
└── ThermalNoise(0.5, 0.6, 1.2, 0.3) @ q[1]
__init__(T1, T2, time, ne)[source]
evaluate(d={})[source]
krausmatrices()[source]

Returns the Kraus matrices associated with the given Kraus channel.

A mixed unitary channel is written as:

\[\mathcal{E}(\rho) = \sum_k p_k U_k \rho U_k^\dagger,\]

where \(U_k\) are the unitary matrices returned by this function.

If the Kraus channel is parametric, the matrix elements are wrapped in a symengine or sympy object.

Returns:

A list of symengine matrices representing the Kraus operators.

Return type:

list

krausoperators()[source]

Returns the Kraus operators associated with the given Kraus channel.

This should be implemented for each specific channel.

Returns:

A list of matrices representing the Kraus operators.

Return type:

list

static matrix(gate)[source]
property parnames
class mimiqcircuits.operations.noisechannel.standards.phaseamplitudedamping.PhaseAmplitudeDamping(p, gamma, beta)[source]

Bases: krauschannel

One-qubit phase amplitude damping noise channel.

This channel is defined by:

\[\begin{split}\mathcal{E}(\rho) = \begin{pmatrix} (1-\gamma)\rho_{00} + \gamma p & (1-2\beta)\sqrt{1-\gamma}\rho_{01} \\ (1-2\beta)\sqrt{1-\gamma}\rho_{10} & (1-\gamma)\rho_{11} + (1-p)\gamma \end{pmatrix}\end{split}\]

Here, \(p, \gamma, \beta \in [0,1]\).

This channel is equivalent to a GeneralizedAmplitudeDamping(p, gamma) channel (see GeneralizedAmplitudeDamping), followed by a PauliZ(beta) channel (see PauliZ).

Use krausmatrices() to see a Kraus matrix representation of the channel.

See also

AmplitudeDamping, GeneralizedAmplitudeDamping, ThermalNoise.

Parameters:
  • p (float) – Probability parameter, must be in the range [0, 1].

  • γ (float) – Damping parameter, must be in the range [0, 1].

  • β (float) – Phase flip parameter, must be in the range [0, 1].

Examples

>>> from mimiqcircuits import *
>>> c = Circuit()
>>> c.push(PhaseAmplitudeDamping(0.1, 0.2, 0.3), 1)
2-qubit circuit with 1 instruction:
└── PhaseAmplitudeDamping(0.1, 0.2, 0.3) @ q[1]
__init__(p, gamma, beta)[source]
evaluate(d={})[source]
krausmatrices()[source]

Returns the Kraus matrices associated with the given Kraus channel.

A mixed unitary channel is written as:

\[\mathcal{E}(\rho) = \sum_k p_k U_k \rho U_k^\dagger,\]

where \(U_k\) are the unitary matrices returned by this function.

If the Kraus channel is parametric, the matrix elements are wrapped in a symengine or sympy object.

Returns:

A list of symengine matrices representing the Kraus operators.

Return type:

list

krausoperators()[source]

Returns the Kraus operators associated with the given Kraus channel.

This should be implemented for each specific channel.

Returns:

A list of matrices representing the Kraus operators.

Return type:

list

property parnames