Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK. Go to the latest version

qiskit.quantum_info.PTM

class PTM(data, input_dims=None, output_dims=None)

GitHub

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

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

Ri,j=Tr[PiE(Pj)]R_{i,j} = \text{Tr}\left[P_i \mathcal{E}(P_j) \right]

where [P0,P1,...,P4n1][P_0, P_1, ..., P_{4^{n}-1}] is the nn-qubit Pauli basis in lexicographic order.

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

E(ρ) ⁣P=SPρ ⁣P|\mathcal{E}(\rho)\rangle\!\rangle_P = S_P |\rho\rangle\!\rangle_P

where A ⁣P|A\rangle\!\rangle_P denotes vectorization in the Pauli basis iA ⁣P=Tr[PiA]\langle i | A\rangle\!\rangle_P = \text{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.

Parameters

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

Raises

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.

__init__

__init__(data, input_dims=None, output_dims=None)

Initialize a PTM quantum channel operator.

Parameters

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

Raises

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.


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.
conjugate()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.
to_instruction()Convert to a Kraus or UnitaryGate circuit instruction.
to_operator()Try to convert channel to a unitary representation Operator.
transpose()Return the transpose of the QuantumChannel.

Attributes

atolThe default absolute tolerance parameter for float comparisons.
dataReturn data.
dimReturn tuple (input_shape, output_shape).
num_qubitsReturn the number of qubits if a N-qubit operator or None otherwise.
qargsReturn the qargs for the operator.
rtolThe relative tolerance parameter for float comparisons.

add

add(other)

Return the linear operator self + other.

DEPRECATED: use operator + other instead.

Parameters

other (BaseOperator) – an operator object.

Returns

the operator self + other.

Return type

BaseOperator

adjoint

adjoint()

Return the adjoint of the operator.

atol

The default absolute tolerance parameter for float comparisons.

compose

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

Return the composed quantum channel self @ other.

Parameters

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

Returns

The quantum channel self @ other.

Return type

PTM

Raises

QiskitError – if other has incompatible dimensions.

Additional Information:

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

conjugate()

Return the conjugate of the QuantumChannel.

copy

copy()

Make a deep copy of current operator.

data

Return data.

dim

Return tuple (input_shape, output_shape).

dot

dot(other, qargs=None)

Return the right multiplied operator self * other.

Parameters

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

Returns

The operator self * other.

Return type

BaseOperator

Raises

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

expand

expand(other)

Return the tensor product channel other ⊗ self.

Parameters

other (QuantumChannel) – a quantum channel.

Returns

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

Return type

PTM

Raises

QiskitError – if other cannot be converted to a channel.

input_dims

input_dims(qargs=None)

Return tuple of input dimension for specified subsystems.

is_cp

is_cp(atol=None, rtol=None)

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

is_cptp

is_cptp(atol=None, rtol=None)

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

is_tp

is_tp(atol=None, rtol=None)

Test if a channel is completely-positive (CP)

is_unitary

is_unitary(atol=None, rtol=None)

Return True if QuantumChannel is a unitary channel.

multiply

multiply(other)

Return the linear operator other * self.

DEPRECATED: use other * operator instead.

Parameters

other (complex) – a complex number.

Returns

the linear operator other * self.

Return type

BaseOperator

Raises

NotImplementedError – if subclass does not support multiplication.

num_qubits

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

output_dims

output_dims(qargs=None)

Return tuple of output dimension for specified subsystems.

power

power(n)

The matrix power of the channel.

Parameters

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

Returns

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

Return type

PTM

Raises

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

qargs

Return the qargs for the operator.

reshape

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

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.

rtol

The relative tolerance parameter for float comparisons.

set_atol

classmethod set_atol(value)

Set the class default absolute tolerance parameter for float comparisons.

DEPRECATED: use operator.atol = value instead

set_rtol

classmethod set_rtol(value)

Set the class default relative tolerance parameter for float comparisons.

DEPRECATED: use operator.rtol = value instead

subtract

subtract(other)

Return the linear operator self - other.

DEPRECATED: use operator - other instead.

Parameters

other (BaseOperator) – an operator object.

Returns

the operator self - other.

Return type

BaseOperator

tensor

tensor(other)

Return the tensor product channel self ⊗ other.

Parameters

other (QuantumChannel) – a quantum channel.

Returns

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

Return type

PTM

Raises

QiskitError – if other cannot be converted to a channel.

to_instruction

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.

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()

Try to convert channel to a unitary representation Operator.

transpose

transpose()

Return the transpose of the QuantumChannel.

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