qat.quops

This module regroups classes and functions to create and manipulate quantum channels, also called quantum operations, quantum maps or quantum process. They describe the generalized dynamics of quantum systems when coupled to an external environment.

It is advised to first read the user guide on noise models in noise_models.

Quantum Channels

Here are classes related to describing a generic quantum channel.

qat.quops.ChannelRepresentations

Identifiers for quantum channel representations

qat.quops.ParametricGateNoise

Applies noise channel based on gate time

qat.quops.ParametricQuantumChannel

Abstract class for parametric quantum channels

qat.quops.QuantumChannel

Abstract class for quantum channels

qat.quops.QuantumChannelChi

Quantum channel in the chi matrix representation

qat.quops.QuantumChannelChoi

Quantum channel in the Choi-Jamiolkowski representation

qat.quops.QuantumChannelKraus

Quantum channel in the Kraus representation

qat.quops.QuantumChannelPTM

Quantum channel in the Pauli Transfer Matrix (PTM) representation

All quantum channels derive from the abstract class QuantumChannel. Different representations are available: namely Kraus operators, Pauli Transfer Matrix (PTM), Choi-Jamiolkowski mapping and \(\chi\)-matrix. They can be converted into one another through dedicated methods, for example to_chi(). Channels that depend on a parameter, for instance a duration that represents the exposition time to an environment, are called parametric quantum channels and derive from ParametricQuantumChannel.

The following functions allows to check for important properties of a QuantumChannel. Be aware that they are not defined for all representations.

qat.quops.is_completely_positive()

Check if a channel is completely positive

qat.quops.is_trace_preserving()

Check if a channel is trace preserving

qat.quops.is_trace_reducing()

Check if a channel is trace reducing

qat.quops.is_unital()

Check if a channel is unital

Predefined quantum channels

The following commonly used channels are already defined in Qaptiva:

qat.quops.make_avg_fid_equiv_depol_channel()

Quantum channel for depolarizing noise (alternative)

qat.quops.make_depolarizing_channel()

Quantum channel for depolarizing noise

qat.quops.make_generalized_amplitude_damping()

Quantum channel for generalized amplitude damping noise

qat.quops.ParametricAmplitudeDamping

Parametric quantum channel for amplitude damping noise

qat.quops.ParametricPureDephasing

Parametric quantum channel for pure dephasing noise

Metrics

qat.quops.metrics regroups functions related to metrics of the space of density matrices and of the space of quantum maps (also called processes in this context), i.e. distances, norms and fidelities.

qat.quops.metrics.get_average_process_fidelity()

Average process fidelity between two quantum channels

qat.quops.metrics.get_diamond_norm()

Diamond norm of a quantum channel

qat.quops.metrics.get_entanglement_process_fidelity()

Entanglement process fidelity between two quantum channels

qat.quops.metrics.get_process_distance()

Trace distance between Choi representations of two quantum channels

qat.quops.metrics.get_state_fidelity()

Fidelity between two states

qat.quops.metrics.get_trace_distance()

Trace distance between two density matrices

Operator basis

The \(\chi\)-matrix representation depends on the choice of operator basis. Here are functions to define such basis.

qat.quops.math_util.convert_density_mat_to_pauli_vec()

Convert matrix from canonical to Pauli

qat.quops.math_util.convert_pauli_vec_to_density_mat()

Convert matrix from Pauli to canonical

qat.quops.math_util.make_pauli_matrix_basis()

Pauli matrix basis

qat.quops.math_util.make_standard_matrix_basis()

Canonical matrix basis

qat.quops.math_util.make_standard_vector_basis()

Canonical vector basis

Mathematical utilities

Some useful functions related to the manipulation of quantum channels.

qat.quops.math_util.are_equal_up_to_phase()

Check equality of states up to a global phase

qat.quops.math_util.multikron()

Kronecker product of a list of matrices

qat.quops.math_util.partial_trace()

Partial trace of a matrix