squlearn.observables.SummedPaulis

class squlearn.observables.SummedPaulis(num_qubits: int, op_str: str | tuple[str] = 'Z', full_sum: bool = True, include_identity: bool = True)

Observable for summation of single Pauli operators.

Equation for Z Pauli operator:

\[\hat{H} = a\hat{I} + \sum_i b_i \hat{Z}_i\]

Multiple Pauli operators can be specified by a tuple of strings, e.g. op_str=("X","Z"):

\[\hat{H} = a\hat{I} + \sum_i b_i \hat{X}_i + \sum_i c_i \hat{Z}_i\]

The parameter can optionally be equal for the same kind of Pauli operators.

Parameters:
  • num_qubits (int) – Number of qubits.

  • op_str (Union[str,tuple[str]]) – String of the Pauli operator that is measured. Possible values are "I", "X", "Y", "Z". Also a tuples of strings are allowed for multiple Pauli operators (default: "Z").

  • full_sum (bool) – If False, only one parameter is used for each Pauli operator, i.e. the sum is \(b\sum_i \hat{Z}_i\) instead of \(\sum_i b_i \hat{Z}_i\) (default: True).

  • include_identity (bool) – If True, the identity operator is included in the sum. (default: True)

Attributes:

num_qubits

Number of qubits.

Type:

int

num_parameters

Number of trainable parameters in the summed Paulis operator.

Type:

int

op_str

String of the Pauli operator that is measured.

Type:

Union[str,tuple[str]]

full_sum

If False, only one parameter is used for each Pauli operator.

Type:

bool

include_identity

If True, the identity operator is included in the sum.

Type:

bool

Methods:

generate_initial_parameters(ones: bool = True, seed: int | None = None) ndarray

Generates random parameters for the observable

Parameters:
  • ones (bool) – If True, returns an array of ones (default: True)

  • seed (Union[int,None]) – Seed for the random number generator

Returns:

The randomly generated parameters

get_operator(parameters: ParameterVector | ndarray) SparsePauliOp

Returns Operator as a SparsePauliOp expression.

Parameters:

parameters (Union[ParameterVector, np.ndarray]) – Vector of parameters used in the operator

Returns:

StateFn expression of the observable.

get_params(deep: bool = True) dict

Returns hyper-parameters and their values of the single summed Pauli operator.

Parameters:

deep (bool) – If True, also the parameters for contained objects are returned (default=True).

Returns:

Dictionary with hyper-parameters and values.

get_pauli(parameters: ParameterVector | ndarray) SparsePauliOp

Function for generating the PauliOp expression of the summed Paulis operator.

Parameters:

parameters (Union[ParameterVector, np.ndarray]) – Parameters of the summed Paulis operator.

Returns:

PauliOp expression of the specified summed Paulis operator.

get_pauli_mapped(parameters: ParameterVector | ndarray) SparsePauliOp

Changes the operator to the physical qubits, set by set_map().

Parameters:

parameters (Union[ParameterVector, np.ndarray]) – Vector of parameters used in the operator

Returns:

Expectation operator in Qiskit’s SprasePauliOp class with qubits mapped to physical ones

set_map(qubit_map: list | dict, num_all_qubits: int)

Function for setting a qubit mapping from physical qubits to the ones of the operator.

This function is necessary whenever the number of physical qubits are different from the operator definition, as for example when running on a real backend. The number of qubits in the system has to be larger than the number of qubits in the observable.

Parameters:
  • qubit_map (Union[list, dict]) – A list or dictionary specifying which of the input qubits are mapped to the output qubits.

  • num_all_qubits (int) – The total number of qubits in the system.

set_params(**params) None

Sets value of the operator hyper-parameters.

Parameters:

params – Hyper-parameters and their values, e.g. num_qubits=2.