# qiskit.quantum_info.PTM¶

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

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.

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.

Parameter
• (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]

Verursacht

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)[Quellcode]

Initialize a PTM quantum channel operator.

Parameter
• (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]

Verursacht

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. add(other) Return the linear operator self + other. adjoint() Return the adjoint of the operator. compose(other[, qargs, front]) Return the composed quantum channel self @ other. Return the conjugate of the QuantumChannel. copy() Make a deep copy of current operator. dot(other[, qargs]) Return the right multiplied operator self * other. expand(other) Return the tensor product channel other ⊗ self. 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 completely-positive (CP) is_unitary([atol, rtol]) Return True if QuantumChannel is a unitary channel. multiply(other) Return the linear operator other * self. output_dims([qargs]) Return tuple of output dimension for specified subsystems. power(n) The matrix power of the channel. reshape([input_dims, output_dims]) Return a shallow copy with reshaped input and output subsystem dimensions. set_atol(value) Set the class default absolute tolerance parameter for float comparisons. set_rtol(value) Set the class default relative tolerance parameter for float comparisons. subtract(other) Return the linear operator self - other. tensor(other) Return the tensor product channel self ⊗ other. Convert to a Kraus or UnitaryGate circuit instruction. Try to convert channel to a unitary representation Operator. Return the transpose of the QuantumChannel.

Attributes

 atol The 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 The relative tolerance parameter for float comparisons.

Return the linear operator self + other.

DEPRECATED: use operator + other instead.

Parameter

other (BaseOperator) – an operator object.

Rückgabe

the operator self + other.

Rückgabetyp

BaseOperator

Return the adjoint of the operator.

property atol

The default absolute tolerance parameter for float comparisons.

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

Return the composed quantum channel self @ other.

Parameter
• other (QuantumChannel) – a quantum channel.

• 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].

Rückgabe

The quantum channel self @ other.

Rückgabetyp

PTM

Verursacht

QiskitError – if other has incompatible dimensions.

Composition (@) is defined as left matrix multiplication for SuperOp matrices. That is that A @ B is equal to B * A. Setting front=True returns right matrix multiplication A * B and is equivalent to the dot() method.

conjugate()[Quellcode]

Return the conjugate of the QuantumChannel.

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.

Parameter
• other (BaseOperator) – an operator object.

• qargs (list or None) – a list of subsystem positions to apply other on. If None apply on all subsystems [default: None].

Rückgabe

The operator self * other.

Rückgabetyp

BaseOperator

Verursacht

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

expand(other)[Quellcode]

Return the tensor product channel other ⊗ self.

Parameter

other (QuantumChannel) – a quantum channel.

Rückgabe

the tensor product channel other ⊗ self as a PTM object.

Rückgabetyp

PTM

Verursacht

QiskitError – if other cannot be converted to a channel.

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 completely-positive (CP)

is_unitary(atol=None, rtol=None)

Return True if QuantumChannel is a unitary channel.

multiply(other)

Return the linear operator other * self.

DEPRECATED: use other * operator instead.

Parameter

other (complex) – a complex number.

Rückgabe

the linear operator other * self.

Rückgabetyp

BaseOperator

Verursacht

NotImplementedError – if subclass does not support multiplication.

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)[Quellcode]

The matrix power of the channel.

Parameter

n (int) – compute the matrix power of the superoperator matrix.

Rückgabe

the matrix power of the SuperOp converted to a PTM channel.

Rückgabetyp

PTM

Verursacht

QiskitError – if the input and output dimensions of the QuantumChannel are not equal, or the power is not an integer.

property qargs

Return the qargs for the operator.

reshape(input_dims=None, output_dims=None)

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

Arg:
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].

Rückgabe

returns self with reshaped input and output dimensions.

Rückgabetyp

BaseOperator

Verursacht

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

property rtol

The relative tolerance parameter for float comparisons.

classmethod set_atol(value)

Set the class default absolute tolerance parameter for float comparisons.

DEPRECATED: use operator.atol = value instead

classmethod set_rtol(value)

Set the class default relative tolerance parameter for float comparisons.

DEPRECATED: use operator.rtol = value instead

subtract(other)

Return the linear operator self - other.

DEPRECATED: use operator - other instead.

Parameter

other (BaseOperator) – an operator object.

Rückgabe

the operator self - other.

Rückgabetyp

BaseOperator

tensor(other)[Quellcode]

Return the tensor product channel self ⊗ other.

Parameter

other (QuantumChannel) – a quantum channel.

Rückgabe

the tensor product channel self ⊗ other as a PTM object.

Rückgabetyp

PTM

Verursacht

QiskitError – if other cannot be converted to a channel.

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.

Rückgabe

A kraus instruction for the channel.

Rückgabetyp

qiskit.circuit.Instruction

Verursacht

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

to_operator()

Try to convert channel to a unitary representation Operator.

transpose()[Quellcode]

Return the transpose of the QuantumChannel.