QCumulant

class qumeas.cumulant.QCumulant(protocol: RandomShadow | Mole | None = None, PauliObj: PauliContainer | None = None, measure_basis: List[str | List[int]] | None = None, measure_outcome_bits: List[str | List[int]] | None = None, partitions: List[List[List[int]]] | None = None)

Bases: object

Compute expectation values for Pauli strings using Cumulant expansion and non-crossing partitioning.

compute_expectation_bits(return_Elist=False)

Compute expectation values for the cumulant expansion using quantum measurement bits. This method uses parition_expectation_bits function in libmeas that uses asynchronous tasks to parallelize each cumulant expectation computation. Each cumulant expectation computation is OpenMP parallelized for optimal performance.

Parameters:

return_Elist (bool, optional) – If True, return both expectation value and a list of expectation values for each Pauli string (default is False).

Returns:

The computed expectation value and optionally the list of expectation values.

Return type:

Union[float, Tuple[float, List[float]]]

compute_expectation_state(return_Elist=False)

Compute expectation values for the cumulant expansion using the state vector in PauliObj (or protocol.PauliObj). This method uses parition_expectation_state function in libmeas that uses asynchronous tasks to parallelize each cumulant expectation computation. Each cumulant expectation computation is OpenMP parallelized for optimal performance.

Parameters:

return_Elist (bool, optional) – If True, return both expectation value and a list of expectation values for each Pauli string (default is False).

Returns:

The computed expectation value and optionally the list of expectation values.

Return type:

Union[float, Tuple[float, List[float]]]

generate_partitions(max_size=4, num_threads=1)

Generate non-crossing partitions for Pauli strings in PauliObj (or protocol.PauliObj).

Parameters:
  • max_size (int, optional) – Maximum block size for non-crossing partitions (default is 4).

  • num_threads (int, optional) – Number of threads to use for partition generation (default is 1).

Raises:

ValueError – If PauliObj.pauli_list is empty.