qrunch.quantum.groupers.groupers_protocols

Module containing groupers for grouping operators into groups of commuting operators.

Classes

MeasurementGroup

Class that stores pauli sums, that can be measured simultaneously.

MeasurementGrouper

Grouper for grouping Pauli string into groups of mutually commuting groups.

class MeasurementGroup

Bases: object

Class that stores pauli sums, that can be measured simultaneously.

All fields are immutable (frozen=True) so an instance can be safely reused.

Parameters:
  • measurement_basis – The measurement basis to use for the group.

  • pauli_sums – Mapping between original pauli sum and the part that belongs in the group.

__init__(measurement_basis: MeasurementBasis, pauli_sums: dict[HermitianPauliSum, HermitianPauliSum]) None
Parameters:
Return type:

None

calculate_expectation_value(measurement: QuantumMeasurement) dict[HermitianPauliSum, ExpectationValue]

Calculate the expectation value of the given pauli strings from the measurement.

Parameters:
  • pauli_strings – A dictionary mapping Pauli strings to their coefficients.

  • measurement (QuantumMeasurement) – The measurement results.

Return type:

dict[HermitianPauliSum, ExpectationValue]

measurement_basis: MeasurementBasis
pauli_sums: dict[HermitianPauliSum, HermitianPauliSum]
class MeasurementGrouper

Bases: Protocol

Grouper for grouping Pauli string into groups of mutually commuting groups.

__init__(*args, **kwargs)
group(pauli_sums: Sequence[HermitianPauliSum], circuit: Circuit | None = None) tuple[MeasurementGroup, ...]

Group the terms in the pauli sums into groups of Pauli strings of mutually commuting strings.

Parameters:
  • pauli_sums (Sequence[HermitianPauliSum]) – Pauli sums to group.

  • circuit (Circuit | None) – Circuit for the pauli sums to be measured on. Most groupers do not require or use this.

Returns:

A list measurement groups which can be measured simultaneously.

Return type:

tuple[MeasurementGroup, …]