Quantum Channel Properties API
Quantum Channel Properties
- graphcalc.quantum.channel_properties.is_completely_positive(channel: QuantumChannel, *, tol: float | None = None) bool[source]
Return whether the channel is completely positive.
- Parameters:
channel (QuantumChannel) – Input channel.
tol (float | None, default=None) – Numerical tolerance used for positive semidefiniteness. If omitted,
channel.tolis used.
Notes
By the Choi theorem, a linear map is completely positive if and only if its Choi matrix is positive semidefinite.
- graphcalc.quantum.channel_properties.is_quantum_channel(channel: QuantumChannel, *, tol: float | None = None) bool[source]
Return whether the input defines a completely positive trace-preserving map.
- Parameters:
channel (QuantumChannel) – Input channel.
tol (float | None, default=None) – Numerical tolerance used in the underlying tests.
Notes
In this module, “quantum channel” means a completely positive, trace-preserving linear map.
- graphcalc.quantum.channel_properties.is_trace_preserving(channel: QuantumChannel, *, tol: float | None = None) bool[source]
Return whether the channel is trace preserving.
- Parameters:
channel (QuantumChannel) – Input channel.
tol (float | None, default=None) – Numerical tolerance for matrix comparison. If omitted,
channel.tolis used.
Notes
For the Choi convention used in
QuantumChannel, trace preservation is equivalent to the partial trace over the output subsystem equaling the identity on the input space.
- graphcalc.quantum.channel_properties.is_unital(channel: QuantumChannel, *, tol: float | None = None) bool[source]
Return whether the channel is unital.
- Parameters:
channel (QuantumChannel) – Input channel.
tol (float | None, default=None) – Numerical tolerance for matrix comparison. If omitted,
channel.tolis used.
Notes
A channel is unital if it preserves the identity operator. For the Choi convention used in
QuantumChannel, this is equivalent to the partial trace over the input subsystem equaling the identity on the output space.
- graphcalc.quantum.channel_properties.is_unitary_channel(channel: QuantumChannel, *, tol: float | None = None) bool[source]
Return whether the channel is a unitary channel.
- Parameters:
channel (QuantumChannel) – Input channel.
tol (float | None, default=None) – Numerical tolerance used in rank and matrix comparisons. If omitted,
channel.tolis used.
Notes
A channel is a unitary channel if it has the form
Phi(rho) = U rho U^daggerfor some unitary matrix
U.For finite-dimensional channels, this is equivalent to the existence of a Kraus representation with a single Kraus operator that is unitary. With the Choi representation, a necessary condition is that the Choi matrix has rank one. For a CPTP square channel, rank one is sufficient to recover a single Kraus operator, which is then tested for unitarity.