A quantum channel can be defined as a completely positive and trace preserving linear map.

More formally, let \(\mathcal{X}\) and \(\mathcal{Y}\) represent complex Euclidean spaces and let \(\text{L}(\cdot)\) represent the set of linear operators. Then a quantum channel, \(\Phi\) is defined as

\[\Phi : \text{L}(\mathcal{X}) \rightarrow \text{L}(\mathcal{Y})\]

such that \(\Phi\) is completely positive and trace preserving.

Distance Metrics for Quantum Channels

toqito.channel_metrics.channel_fidelity(…) Compute the channel fidelity between two quantum channels [VW20].

Quantum Channels

toqito.channels.choi(a_var, b_var, c_var) Produce the Choi channel or one of its generalizations [Choi92].
toqito.channels.dephasing(dim, param_p) Produce the partially dephasing channel [WatDeph18].
toqito.channels.depolarizing(dim, param_p) Produce the partially depolarizing channel [WikDepo], [WatDepo18].
toqito.channels.partial_trace(input_mat, …) Compute the partial trace of a matrix [WikPtrace].
toqito.channels.partial_transpose(rho, sys, dim) Compute the partial transpose of a matrix [WikPtrans].
toqito.channels.realignment(input_mat, dim) Compute the realignment of a bipartite operator [LAS08].
toqito.channels.reduction(dim, k) Produce the reduction map or reduction channel.

Operations on Quantum Channels

toqito.channel_ops.apply_channel(mat, phi_op) Apply a quantum channel to an operator [WatAChan18].
toqito.channel_ops.choi_to_kraus(choi_mat, tol) Compute a list of Kraus operators from the Choi matrix [Rigetti20].
toqito.channel_ops.kraus_to_choi(kraus_ops, sys) Compute the Choi matrix of a list of Kraus operators [WatKraus18].
toqito.channel_ops.partial_channel(rho, …) Apply channel to a subsystem of an operator [WatPMap18].
toqito.channel_ops.dual_channel(phi_op, dims) Compute the dual of a map (quantum channel) [WatDChan18].

Properties of Quantum Channels

toqito.channel_props.is_completely_positive(…) Determine whether the given channel is completely positive [WatCP18].
toqito.channel_props.is_herm_preserving(phi, …) Determine whether the given channel is Hermitian-preserving [WatH18].
toqito.channel_props.is_positive(phi, rtol, atol) Determine whether the given channel is positive [WatPM18].
toqito.channel_props.is_trace_preserving(…) Determine whether the given channel is trace-preserving [WatTP18].
toqito.channel_props.is_unital(phi, rtol, atol) Determine whether the given channel is unital [WatUnital18].
toqito.channel_props.choi_rank(phi) Calculate the rank of the Choi representation of a quantum channel [WatChoiRank18].
toqito.channel_props.is_quantum_channel(phi, …) Determine whether the given input is a quantum channel [WatQC18].
toqito.channel_props.is_unitary(phi) Given a quantum channel, determine if it is unitary [WatIU18].