Skip to main content
IBM Quantum Platform
This page is from an old version of Qiskit SDK Go to the latest version

Chi

class qiskit.quantum_info.Chi(data, input_dims=None, output_dims=None)

GitHub

Bases: QuantumChannel

Pauli basis Chi-matrix representation of a quantum channel.

The Chi-matrix representation of an nn-qubit quantum channel E\mathcal{E} is a matrix χ\chi such that the evolution of a DensityMatrix ρ\rho is given by

E(ρ)=12n∑i,jχi,jPiρPj\mathcal{E}(ρ) = \frac{1}{2^n} \sum_{i, j} \chi_{i,j} P_i ρ P_j

where [P0,P1,...,P4n−1][P_0, P_1, ..., P_{4^{n}-1}] is the nn-qubit Pauli basis in lexicographic order. It is related to the Choi representation by a change of basis of the Choi-matrix into the Pauli basis. The 12n\frac{1}{2^n} in the definition above is a normalization factor that arises from scaling the Pauli basis to make it orthonormal.

See reference [1] for further details.

References

  1. C.J. Wood, J.D. Biamonte, D.G. Cory, Tensor networks and graphical calculus for open quantum systems, Quant. Inf. Comp. 15, 0579-0811 (2015). arXiv:1111.6950 [quant-ph]

Initialize a quantum channel Chi-matrix operator.

Parameters

Raises

QiskitError – if input data is not an N-qubit channel or cannot be initialized as a Chi-matrix.

Additional Information:

If the input or output dimensions are None, they will be automatically determined from the input data. The Chi matrix representation is only valid for N-qubit channels.


Attributes

atol

Default value: 1e-08

data

Return data.

dim

Return tuple (input_shape, output_shape).

num_qubits

Return the number of qubits if a N-qubit operator or None otherwise.

qargs

Return the qargs for the operator.

rtol

Default value: 1e-05

settings

Return settings.


Methods

adjoint

adjoint()

GitHub

Return the adjoint quantum channel.

Note

This is equivalent to the matrix Hermitian conjugate in the SuperOp representation ie. for a channel E\mathcal{E}, the SuperOp of the adjoint channel E†\mathcal{{E}}^\dagger is SE†=SE†S_{\mathcal{E}^\dagger} = S_{\mathcal{E}}^\dagger.

compose

compose(other, qargs=None, front=False)

GitHub

Return the operator composition with another Chi.

Parameters

  • other (Chi) – a Chi object.
  • qargs (list or None) – a list of subsystem positions to apply other on. If None apply on all subsystems (default: None).
  • front (bool) – If True compose using right operator multiplication, instead of left multiplication [default: False].

Returns

The composed Chi.

Return type

Chi

Raises

QiskitError – if other cannot be converted to an operator, or has incompatible dimensions for specified subsystems.

Note

Composition (&) by default is defined as left matrix multiplication for matrix operators, while @ (equivalent to dot()) is defined as right matrix multiplication. That is that A & B == A.compose(B) is equivalent to B @ A == B.dot(A) when A and B are of the same type.

Setting the front=True kwarg changes this to right matrix multiplication and is equivalent to the dot() method A.dot(B) == A.compose(B, front=True).

conjugate

conjugate()

GitHub

Return the conjugate quantum channel.

Note

This is equivalent to the matrix complex conjugate in the SuperOp representation ie. for a channel E\mathcal{E}, the SuperOp of the conjugate channel E‾\overline{{\mathcal{{E}}}} is SE†‾=SE‾S_{\overline{\mathcal{E}^\dagger}} = \overline{S_{\mathcal{E}}}.

copy

copy()

GitHub

Make a deep copy of current operator.

dot

dot(other, qargs=None)

GitHub

Return the right multiplied operator self * other.

Parameters

  • other (Operator) – an operator object.
  • qargs (list or None) – a list of subsystem positions to apply other on. If None apply on all subsystems (default: None).

Returns

The right matrix multiplied Operator.

Return type

Operator

Note

The dot product can be obtained using the @ binary operator. Hence a.dot(b) is equivalent to a @ b.

expand

expand(other)

GitHub

Return the reverse-order tensor product with another Chi.

Parameters

other (Chi) – a Chi object.

Returns

the tensor product b⊗ab \otimes a, where aa

is the current Chi, and bb is the other Chi.

Return type

Chi

input_dims

input_dims(qargs=None)

GitHub

Return tuple of input dimension for specified subsystems.

is_cp

is_cp(atol=None, rtol=None)

GitHub

Test if Choi-matrix is completely-positive (CP)

Parameters

Return type

bool

is_cptp

is_cptp(atol=None, rtol=None)

GitHub

Return True if completely-positive trace-preserving (CPTP).

Parameters

Return type

bool

is_tp

is_tp(atol=None, rtol=None)

GitHub

Test if a channel is trace-preserving (TP)

Parameters

Return type

bool

is_unitary

is_unitary(atol=None, rtol=None)

GitHub

Return True if QuantumChannel is a unitary channel.

Parameters

Return type

bool

output_dims

output_dims(qargs=None)

GitHub

Return tuple of output dimension for specified subsystems.

power

power(n)

GitHub

Return the power of the quantum channel.

Parameters

n (float) – the power exponent.

Returns

the channel En\mathcal{{E}} ^n.

Return type

SuperOp

Raises

QiskitError – if the input and output dimensions of the SuperOp are not equal.

Note

For non-positive or non-integer exponents the power is defined as the matrix power of the SuperOp representation ie. for a channel E\mathcal{{E}}, the SuperOp of the powered channel En\mathcal{{E}}^n is SEn=SEnS_{{\mathcal{{E}}^n}} = S_{{\mathcal{{E}}}}^n.

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

Return a shallow copy with reshaped input and output subsystem dimensions.

Parameters

  • input_dims (None or tuple) – new subsystem input dimensions. If None the original input dims will be preserved [Default: None].
  • output_dims (None or tuple) – new subsystem output dimensions. If None the original output dims will be preserved [Default: None].
  • num_qubits (None or int) – reshape to an N-qubit operator [Default: None].

Returns

returns self with reshaped input and output dimensions.

Return type

BaseOperator

Raises

QiskitError – if combined size of all subsystem input dimension or subsystem output dimensions is not constant.

tensor

tensor(other)

GitHub

Return the tensor product with another Chi.

Parameters

other (Chi) – a Chi object.

Returns

the tensor product a⊗ba \otimes b, where aa

is the current Chi, and bb is the other Chi.

Return type

Chi

Note

The tensor product can be obtained using the ^ binary operator. Hence a.tensor(b) is equivalent to a ^ b.

to_instruction

to_instruction()

GitHub

Convert to a Kraus or UnitaryGate circuit instruction.

If the channel is unitary it will be added as a unitary gate, otherwise it will be added as a kraus simulator instruction.

Returns

A kraus instruction for the channel.

Return type

qiskit.circuit.Instruction

Raises

QiskitError – if input data is not an N-qubit CPTP quantum channel.

to_operator

to_operator()

GitHub

Try to convert channel to a unitary representation Operator.

Return type

Operator

transpose

transpose()

GitHub

Return the transpose quantum channel.

Note

This is equivalent to the matrix transpose in the SuperOp representation, ie. for a channel E\mathcal{E}, the SuperOp of the transpose channel ET\mathcal{{E}}^T is SET=SETS_{\mathcal{E}^T} = S_{\mathcal{E}}^T.

Was this page helpful?
Report a bug, typo, or request content on GitHub.