SparsePauliOp
class SparsePauliOp(data, coeffs=None)
Bases: qiskit.quantum_info.operators.linear_op.LinearOp
Sparse N-qubit operator in a Pauli basis representation.
This is a sparse representation of an N-qubit matrix Operator
in terms of N-qubit PauliTable
and complex coefficients.
It can be used for performing operator arithmetic for hundred of qubits if the number of non-zero Pauli basis terms is sufficiently small.
The Pauli basis components are stored as a PauliTable
object and can be accessed using the table
attribute. The coefficients are stored as a complex Numpy array vector and can be accessed using the coeffs
attribute.
Initialize an operator object.
Parameters
- data (PauliTable) – Pauli table of terms.
- coeffs (np.ndarray) – complex coefficients for Pauli terms.
Raises
QiskitError – If the input data or coeffs are invalid.
Methods
adjoint
SparsePauliOp.adjoint()
Return the adjoint of the Operator.
compose
SparsePauliOp.compose(other, qargs=None, front=False)
Return the operator composition with another SparsePauliOp.
Parameters
- other (SparsePauliOp) – a SparsePauliOp 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].
Returns
The composed SparsePauliOp.
Return type
Raises
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
SparsePauliOp.conjugate()
Return the conjugate of the SparsePauliOp.
copy
SparsePauliOp.copy()
Make a deep copy of current operator.
dot
SparsePauliOp.dot(other, qargs=None)
Return the right multiplied operator self * other.
Parameters
- 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).
Returns
The right matrix multiplied Operator.
Return type
expand
SparsePauliOp.expand(other)
Return the reverse-order tensor product with another SparsePauliOp.
Parameters
other (SparsePauliOp) – a SparsePauliOp object.
Returns
the tensor product , where
is the current SparsePauliOp, and is the other SparsePauliOp.
Return type
from_list
static SparsePauliOp.from_list(obj)
Construct from a list [(pauli_str, coeffs)]
from_operator
static SparsePauliOp.from_operator(obj, atol=None, rtol=None)
Construct from an Operator objector.
Note that the cost of this construction is exponential as it involves taking inner products with every element of the N-qubit Pauli basis.
Parameters
- obj (Operator) – an N-qubit operator.
- atol (float) – Optional. Absolute tolerance for checking if coefficients are zero (Default: 1e-8).
- rtol (float) – Optional. relative tolerance for checking if coefficients are zero (Default: 1e-5).
Returns
the SparsePauliOp representation of the operator.
Return type
Raises
QiskitError – if the input operator is not an N-qubit operator.
input_dims
SparsePauliOp.input_dims(qargs=None)
Return tuple of input dimension for specified subsystems.
is_unitary
SparsePauliOp.is_unitary(atol=None, rtol=None)
Return True if operator is a unitary matrix.
Parameters
- atol (float) – Optional. Absolute tolerance for checking if coefficients are zero (Default: 1e-8).
- rtol (float) – Optional. relative tolerance for checking if coefficients are zero (Default: 1e-5).
Returns
True if the operator is unitary, False otherwise.
Return type
bool
label_iter
SparsePauliOp.label_iter()
Return a label representation iterator.
This is a lazy iterator that converts each term in the SparsePauliOp into a tuple (label, coeff). To convert the entire table to labels use the to_labels()
method.
Returns
label iterator object for the PauliTable.
Return type
LabelIterator
matrix_iter
SparsePauliOp.matrix_iter(sparse=False)
Return a matrix representation iterator.
This is a lazy iterator that converts each term in the SparsePauliOp into a matrix as it is used. To convert to a single matrix use the to_matrix()
method.
Parameters
sparse (bool) – optionally return sparse CSR matrices if True, otherwise return Numpy array matrices (Default: False)
Returns
matrix iterator object for the PauliTable.
Return type
MatrixIterator
output_dims
SparsePauliOp.output_dims(qargs=None)
Return tuple of output dimension for specified subsystems.
power
SparsePauliOp.power(n)
Return the compose of a operator with itself n times.
Parameters
n (int) – the number of times to compose with self (n>0).
Returns
the n-times composed operator.
Return type
Raises
QiskitError – if the input and output dimensions of the operator are not equal, or the power is not a positive integer.
reshape
SparsePauliOp.reshape(input_dims=None, output_dims=None, num_qubits=None)
Return a shallow copy with reshaped input and output subsystem dimensions.
Parameters
- 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
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.
simplify
SparsePauliOp.simplify(atol=None, rtol=None)
Simplify PauliTable by combining duplicates and removing zeros.
Parameters
- atol (float) – Optional. Absolute tolerance for checking if coefficients are zero (Default: 1e-8).
- rtol (float) – Optional. relative tolerance for checking if coefficients are zero (Default: 1e-5).
Returns
the simplified SparsePauliOp operator.
Return type
tensor
SparsePauliOp.tensor(other)
Return the tensor product with another SparsePauliOp.
Parameters
other (SparsePauliOp) – a SparsePauliOp object.
Returns
the tensor product , where
is the current SparsePauliOp, and is the other SparsePauliOp.
Return type
The tensor product can be obtained using the ^
binary operator. Hence a.tensor(b)
is equivalent to a ^ b
.
to_list
SparsePauliOp.to_list(array=False)
Convert to a list Pauli string labels and coefficients.
For operators with a lot of terms converting using the array=True
kwarg will be more efficient since it allocates memory for the full Numpy array of labels in advance.
Parameters
array (bool) – return a Numpy array if True, otherwise return a list (Default: False).
Returns
List of pairs (label, coeff) for rows of the PauliTable.
Return type
list or array
to_matrix
SparsePauliOp.to_matrix(sparse=False)
Convert to a dense or sparse matrix.
Parameters
sparse (bool) – if True return a sparse CSR matrix, otherwise return dense Numpy array (Default: False).
Returns
A dense matrix if sparse=False. csr_matrix: A sparse matrix in CSR format if sparse=True.
Return type
array
to_operator
SparsePauliOp.to_operator()
Convert to a matrix Operator object
transpose
SparsePauliOp.transpose()
Return the transpose of the SparsePauliOp.
Attributes
atol
Default value: 1e-08
coeffs
Return the Pauli coefficients.
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 value: 1e-05
settings
Return settings.
Return type
Dict
size
The number of Pauli of Pauli terms in the operator.
table
Return the the PauliTable.