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:
objectCompute 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.