PTM#

class qiskit.quantum_info.PTM(data, input_dims=None, output_dims=None)[source]#

Bases: QuantumChannel

Pauli Transfer Matrix (PTM) representation of a Quantum Channel.

The PTM representation of an \(n\)-qubit quantum channel \(\mathcal{E}\) is an \(n\)-qubit SuperOp \(R\) defined with respect to vectorization in the Pauli basis instead of column-vectorization. The elements of the PTM \(R\) are given by

\[R_{i,j} = \frac{1}{2^n} \mbox{Tr}\left[P_i \mathcal{E}(P_j) \right]\]

where \([P_0, P_1, ..., P_{4^{n}-1}]\) is the \(n\)-qubit Pauli basis in lexicographic order.

Evolution of a DensityMatrix \(\rho\) with respect to the PTM is given by

\[|\mathcal{E}(\rho)\rangle\!\rangle_P = S_P |\rho\rangle\!\rangle_P\]

where \(|A\rangle\!\rangle_P\) denotes vectorization in the Pauli basis \(\langle i | A\rangle\!\rangle_P = \sqrt{\frac{1}{2^n}} \mbox{Tr}[P_i A]\).

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 PTM quantum channel operator.

প্যারামিটার:
  • or (data (QuantumCircuit) -- Instruction or BaseOperator or matrix): data to initialize superoperator.

  • input_dims (tuple) -- the input subsystem dimensions. [Default: None]

  • output_dims (tuple) -- the output subsystem dimensions. [Default: None]

রেইজেস:

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

Additional Information:

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

Attributes

atol = 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 = 1e-05#
settings#

Return settings.

Methods

adjoint()[source]#

Return the adjoint quantum channel.

নোট

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

compose(other, qargs=None, front=False)[source]#

Return the operator composition with another PTM.

প্যারামিটার:
  • other (PTM) -- a PTM object.

  • qargs (list or None) -- Optional, 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].

রিটার্নস:

The composed PTM.

রিটার্ন টাইপ:

PTM

রেইজেস:

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

নোট

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()[source]#

Return the conjugate quantum channel.

নোট

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

copy()#

Make a deep copy of current operator.

dot(other, qargs=None)#

Return the right multiplied operator self * other.

প্যারামিটার:
  • other (Operator) -- an operator object.

  • qargs (list or None) -- Optional, a list of subsystem positions to apply other on. If None apply on all subsystems (default: None).

রিটার্নস:

The right matrix multiplied Operator.

রিটার্ন টাইপ:

Operator

নোট

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

expand(other)[source]#

Return the reverse-order tensor product with another PTM.

প্যারামিটার:

other (PTM) -- a PTM object.

রিটার্নস:

the tensor product \(b \otimes a\), where \(a\)

is the current PTM, and \(b\) is the other PTM.

রিটার্ন টাইপ:

PTM

input_dims(qargs=None)#

Return tuple of input dimension for specified subsystems.

is_cp(atol=None, rtol=None)#

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

রিটার্ন টাইপ:

bool

is_cptp(atol=None, rtol=None)#

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

রিটার্ন টাইপ:

bool

is_tp(atol=None, rtol=None)#

Test if a channel is trace-preserving (TP)

রিটার্ন টাইপ:

bool

is_unitary(atol=None, rtol=None)#

Return True if QuantumChannel is a unitary channel.

রিটার্ন টাইপ:

bool

output_dims(qargs=None)#

Return tuple of output dimension for specified subsystems.

power(n)#

Return the power of the quantum channel.

প্যারামিটার:

n (float) -- the power exponent.

রিটার্নস:

the channel \(\mathcal{{E}} ^n\).

রিটার্ন টাইপ:

SuperOp

রেইজেস:

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

নোট

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

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

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

প্যারামিটার:
  • 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 self with reshaped input and output dimensions.

রিটার্ন টাইপ:

BaseOperator

রেইজেস:

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

tensor(other)[source]#

Return the tensor product with another PTM.

প্যারামিটার:

other (PTM) -- a PTM object.

রিটার্নস:

the tensor product \(a \otimes b\), where \(a\)

is the current PTM, and \(b\) is the other PTM.

রিটার্ন টাইপ:

PTM

নোট

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

to_instruction()#

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.

রিটার্নস:

A kraus instruction for the channel.

রিটার্ন টাইপ:

qiskit.circuit.Instruction

রেইজেস:

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

to_operator()#

Try to convert channel to a unitary representation Operator.

রিটার্ন টাইপ:

Operator

transpose()[source]#

Return the transpose quantum channel.

নোট

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