NoiseTransformer.transform_by_operator_list¶
- NoiseTransformer.transform_by_operator_list(transform_channel_operators, noise_kraus_operators)[source]¶
Transform input Kraus operators.
Allows approximating a set of input Kraus operators as in terms of a different set of Kraus matrices.
For example, setting \([X, Y, Z]\) allows approximating by a Pauli channel, and \([(|0 \langle\rangle 0|, |0\langle\rangle 1|), |1\langle\rangle 0|, |1 \langle\rangle 1|)]\) represents the relaxation channel
In the case the input is a list \([A_1, A_2, ..., A_n]\) of transform matrices and \([E_0, E_1, ..., E_m]\) of noise Kraus operators, the output is a list \([p_1, p_2, ..., p_n]\) of probabilities such that:
\(p_i \ge 0\)
\(p_1 + ... + p_n \le 1\)
\([\sqrt(p_1) A_1, \sqrt(p_2) A_2, ..., \sqrt(p_n) A_n, \sqrt(1-(p_1 + ... + p_n))I]\) is a list of Kraus operators that define the output channel (which is “close” to the input channel given by \([E_0, ..., E_m]\).)
This channel can be thought of as choosing the operator \(A_i\) in probability \(p_i\) and applying this operator to the quantum state.
More generally, if the input is a list of tuples (not necessarily of the same size): \([(A_1, B_1, ...), (A_2, B_2, ...), ..., (A_n, B_n, ...)]\) then the output is still a list \([p_1, p_2, ..., p_n]\) and now the output channel is defined by the operators: \([\sqrt(p_1)A1, \sqrt(p_1)B_1, ..., \sqrt(p_n)A_n, \sqrt(p_n)B_n, ..., \sqrt(1-(p_1 + ... + p_n))I]\)
- Parameters
noise_kraus_operators (List) – a list of matrices (Kraus operators) for the input channel.
transform_channel_operators (List) – a list of matrices or tuples of matrices representing Kraus operators that can construct the output channel.
- Returns
A list of amplitudes that define the output channel.
- Return type
List