# qiskit.quantum_info.PTM¶

class PTM(data, input_dims=None, output_dims=None)[소스]

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} = \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 = \mbox{Tr}[P_i A]$$.

See reference [1] for further details.

참조

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.

매개변수
• (QuantumCircuit or (data) – 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.

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.

__init__(data, input_dims=None, output_dims=None)[소스]

Initialize a PTM quantum channel operator.

매개변수
• (QuantumCircuit or (data) – 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.

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.

Methods

 __init__(data[, input_dims, output_dims]) Initialize a PTM quantum channel operator. Return the adjoint quantum channel. compose(other[, qargs, front]) Return the operator composition with another PTM. Return the conjugate quantum channel. Make a deep copy of current operator. dot(other[, qargs]) Return the right multiplied operator self * other. expand(other) Return the reverse-order tensor product with another PTM. input_dims([qargs]) Return tuple of input dimension for specified subsystems. is_cp([atol, rtol]) Test if Choi-matrix is completely-positive (CP) is_cptp([atol, rtol]) Return True if completely-positive trace-preserving (CPTP). is_tp([atol, rtol]) Test if a channel is trace-preserving (TP) is_unitary([atol, rtol]) Return True if QuantumChannel is a unitary channel. output_dims([qargs]) Return tuple of output dimension for specified subsystems. Return the power of the quantum channel. reshape([input_dims, output_dims, num_qubits]) Return a shallow copy with reshaped input and output subsystem dimensions. tensor(other) Return the tensor product with another PTM. Convert to a Kraus or UnitaryGate circuit instruction. Try to convert channel to a unitary representation Operator. Return the transpose quantum channel.

Attributes

 atol Default absolute tolerance parameter for float comparisons. 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 relative tolerance parameter for float comparisons.
adjoint()[소스]

참고

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$$.

property atol

Default absolute tolerance parameter for float comparisons.

compose(other, qargs=None, front=False)[소스]

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 dot() is defined as right matrix multiplication. That is that A & B == A.compose(B) is equivalent to 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()[소스]

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.

property data

Return data.

property dim

Return tuple (input_shape, output_shape).

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

expand(other)[소스]

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)

is_cptp(atol=None, rtol=None)

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

is_tp(atol=None, rtol=None)

Test if a channel is trace-preserving (TP)

is_unitary(atol=None, rtol=None)

Return True if QuantumChannel is a unitary channel.

property num_qubits

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

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$$.

property qargs

Return the qargs for the operator.

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.

property rtol

Default relative tolerance parameter for float comparisons.

tensor(other)[소스]

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.

transpose()[소스]

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$$.