PTM#
- class qiskit.quantum_info.PTM(data, input_dims=None, output_dims=None)[fuente]#
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.
Referencias
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.
- Parámetros:
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]
- Muestra:
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()[fuente]#
Return the adjoint quantum channel.
Nota
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)[fuente]#
Return the operator composition with another PTM.
- Parámetros:
- Devuelve:
The composed PTM.
- Tipo del valor devuelto:
- Muestra:
QiskitError – if other cannot be converted to an operator, or has incompatible dimensions for specified subsystems.
Nota
Composition (
&
) by default is defined as left matrix multiplication for matrix operators, while@
(equivalent todot()
) is defined as right matrix multiplication. That is thatA & B == A.compose(B)
is equivalent toB @ A == B.dot(A)
whenA
andB
are of the same type.Setting the
front=True
kwarg changes this to right matrix multiplication and is equivalent to thedot()
methodA.dot(B) == A.compose(B, front=True)
.
- conjugate()[fuente]#
Return the conjugate quantum channel.
Nota
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.
- Parámetros:
- Devuelve:
The right matrix multiplied Operator.
- Tipo del valor devuelto:
Nota
The dot product can be obtained using the
@
binary operator. Hencea.dot(b)
is equivalent toa @ b
.
- 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)
- Tipo del valor devuelto:
- is_cptp(atol=None, rtol=None)#
Return True if completely-positive trace-preserving (CPTP).
- Tipo del valor devuelto:
- is_tp(atol=None, rtol=None)#
Test if a channel is trace-preserving (TP)
- Tipo del valor devuelto:
- is_unitary(atol=None, rtol=None)#
Return True if QuantumChannel is a unitary channel.
- Tipo del valor devuelto:
- output_dims(qargs=None)#
Return tuple of output dimension for specified subsystems.
- power(n)#
Return the power of the quantum channel.
- Parámetros:
n (float) – the power exponent.
- Devuelve:
the channel \(\mathcal{{E}} ^n\).
- Tipo del valor devuelto:
- Muestra:
QiskitError – if the input and output dimensions of the SuperOp are not equal.
Nota
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.
- Parámetros:
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].
- Devuelve:
returns self with reshaped input and output dimensions.
- Tipo del valor devuelto:
BaseOperator
- Muestra:
QiskitError – if combined size of all subsystem input dimension or subsystem output dimensions is not constant.
- tensor(other)[fuente]#
Return the tensor product with another PTM.
- Parámetros:
other (PTM) – a PTM object.
- Devuelve:
- the tensor product \(a \otimes b\), where \(a\)
is the current PTM, and \(b\) is the other PTM.
- Tipo del valor devuelto:
Nota
The tensor product can be obtained using the
^
binary operator. Hencea.tensor(b)
is equivalent toa ^ 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.
- Devuelve:
A kraus instruction for the channel.
- Tipo del valor devuelto:
- Muestra:
QiskitError – if input data is not an N-qubit CPTP quantum channel.
- to_operator()#
Try to convert channel to a unitary representation Operator.
- Tipo del valor devuelto: