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:

  1. \(p_i \ge 0\)

  2. \(p_1 + ... + p_n \le 1\)

  3. \([\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