Conventions for specifying channels and statesΒΆ

Channels and states are specified as NumPy array objects, or as QuTip Qobj objects. A state on a single system \(X\) is represented as a complex NumPy array of dimensions \(d_X \times d_X\). A state on several systems \(X, Y, Z\) is specified as a NumPy array of dimension \(d_X d_Y d_Z \times d_X d_Y d_Z\). For instance, the state \(|0\rangle\langle0|_X \otimes |{+}\rangle\langle{+}|_Y \otimes |1\rangle\langle1|_Z\) be formed for instance as follows:

import numpy as np
rho_XYZ = np.kron(np.kron(np.array([[1,0],[0,0]]), np.array([[.5,.5],[.5,.5]])), np.array([[0,0],[0,1]]))

import qutip
rho2_XYZ = qutip.Qobj(
    np.kron(np.kron(np.array([[1,0],[0,0]]), np.array([[.5,.5],[.5,.5]])), np.array([[0,0],[0,1]])),
    dims=[[2,2,2],[2,2,2]]
    )

Channels are specified by their non-normalized Choi matrix. That is, let \(\{ |k\rangle_X \}, \{ |\ell\rangle_Y \}\) denote the standard bases of the input and the output systems, let \(R\simeq X\) be a copy of \(X\), and define

\[| \tilde{\Phi} \rangle_{XR} = \sum |k\rangle_X \otimes |k\rangle_{R}\ .\]

Then the Channel \(\mathcal{E}_{X\to Y}\) is represented by its unnormalized Choi matrix

\[E_{R Y} = (\mathcal{E}_{X\to Y}\otimes\operatorname{id}_{R})( | \tilde{\Phi} \rangle \langle \tilde{\Phi} |_{XR} )\ .\]

Using this convention, the application of a channel \(\mathcal{E}_{X\to Y}\) onto a state \(\sigma\) is computed as

\[\rho_Y = \operatorname{tr}_{R}[ E_{R Y} \, \sigma_X^T ]\ ,\]

where \(\sigma_X^T\) is the partial transpose of \(\sigma_X\) during which the system \(X\) is relabled as \(R\).

The unnormalized Choi matrix can be represented as a NumPy array or as a qutip.Qobj in the same way as states.