PTM¶
- class PTM(data, input_dims=None, output_dims=None)[source]¶
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
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
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]
- 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.
Attributes
The default absolute tolerance parameter for float comparisons.
Return data.
Return tuple (input_shape, output_shape).
Return the number of qubits if a N-qubit operator or None otherwise.
Return the qargs for the operator.
The relative tolerance parameter for float comparisons.
Methods
PTM.__call__
(qargs)Return a clone with qargs set
PTM.__mul__
(other)PTM.add
(other)Return the linear operator self + other.
Return the adjoint of the operator.
PTM.compose
(other[, qargs, front])Return the composed quantum channel self @ other.
Return the conjugate of the QuantumChannel.
PTM.copy
()Make a deep copy of current operator.
PTM.dot
(other[, qargs])Return the right multiplied operator self * other.
PTM.expand
(other)Return the tensor product channel other ⊗ self.
PTM.input_dims
([qargs])Return tuple of input dimension for specified subsystems.
PTM.is_cp
([atol, rtol])Test if Choi-matrix is completely-positive (CP)
PTM.is_cptp
([atol, rtol])Return True if completely-positive trace-preserving (CPTP).
PTM.is_tp
([atol, rtol])Test if a channel is completely-positive (CP)
PTM.is_unitary
([atol, rtol])Return True if QuantumChannel is a unitary channel.
PTM.multiply
(other)Return the linear operator other * self.
PTM.output_dims
([qargs])Return tuple of output dimension for specified subsystems.
PTM.power
(n)The matrix power of the channel.
PTM.reshape
([input_dims, output_dims])Return a shallow copy with reshaped input and output subsystem dimensions.
PTM.set_atol
(value)Set the class default absolute tolerance parameter for float comparisons.
PTM.set_rtol
(value)Set the class default relative tolerance parameter for float comparisons.
PTM.subtract
(other)Return the linear operator self - other.
PTM.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.
PTM.__call__
(qargs)Return a clone with qargs set
PTM.__mul__
(other)