Returns a Kraus representation of a channel with given Choi matrix.

Quantum channel E: L(H1) -> L(H2) may be described by a collection of operators A_i, called Kraus operators, such that

E(\rho) = \sum_i A_i \rho A_i^\dagger.

Kraus representation is not unique. Alternatively, E may be specified by its Choi matrix J(E) defined as

J(E) = (E \otimes I)(|\phi\rangle\langle\phi|)

where \(|\phi\rangle = \sum_i|i\rangle|i\rangle\) is the unnormalized maximally entangled state and I: L(H1) -> L(H1) is the identity map. Choi matrix is unique for a given channel.

The most expensive step in the computation of a Kraus representation from a Choi matrix is the eigendecomposition of the Choi. Therefore, the cost of the conversion is O(d**6) where d is the dimension of the input and output Hilbert space.

choi Choi matrix of the channel.
atol Tolerance used in checking if choi is positive and in deciding which Kraus operators to omit.

Approximate Kraus representation of the quantum channel specified via a Choi matrix. Kraus operators with Frobenius norm smaller than atol are omitted.

ValueError when choi is not a positive square matrix.