quri_parts.core.measurement package

PauliMeasurementCircuitGeneration

PauliMeasurementCircuitGeneration represents a function that generates a circuit (a gate list) for measuring mutually commuting Pauli operators.

alias of Callable[[Set[PauliLabel]], Sequence[QuantumGate]]

PauliReconstructor

PauliReconstructor represents a function that reconstructs a value of a Pauli operator from a measurement result of its measurement circuit.

alias of Callable[[int], int]

PauliReconstructorFactory

PauliReconstructorFactory represents a factory function that returns a PauliReconstructor for a given Pauli operator.

alias of Callable[[PauliLabel], Callable[[int], int]]

class CommutablePauliSetMeasurement(*args, **kwargs)

Bases: Protocol

Represents a measurement scheme for a set of commutable Pauli operators.

abstract property pauli_set: core.operator.pauli.CommutablePauliSet

A set of commutable Pauli operators subject to the measurement.

abstract property measurement_circuit: Sequence[QuantumGate]

A circuit required to measure the given commutable Pauli operators at once.

abstract property pauli_reconstructor_factory: core.measurement.interface.PauliReconstructorFactory

A factory of PauliReconstructor that reconstructs a value of a Pauli operator from a measurement result of the measurement circuit.

class CommutablePauliSetMeasurementTuple(pauli_set, measurement_circuit, pauli_reconstructor_factory)

Bases: NamedTuple

Parameters:
  • pauli_set (core.operator.pauli.CommutablePauliSet)

  • measurement_circuit (Sequence[QuantumGate])

  • pauli_reconstructor_factory (core.measurement.interface.PauliReconstructorFactory)

pauli_set: CommutablePauliSet

Alias for field number 0

measurement_circuit: Sequence[QuantumGate]

Alias for field number 1

pauli_reconstructor_factory: PauliReconstructorFactory

Alias for field number 2

CommutablePauliSetMeasurementFactory

Represents a function that performs grouping of Pauli operators into groups of commutable Pauli operators and returns measurement schemes for them.

alias of Callable[[Operator | Iterable[PauliLabel]], Iterable[CommutablePauliSetMeasurement]]

bitwise_commuting_pauli_measurement_circuit(pauli_set)

An implementation of PauliMeasurementCircuitGeneration, which generates a circuit (a gate list) for a “trivial” measurement of bitwise- commuting Pauli strings.

The “trivial” measurement of a Pauli string refers to a measurement in computational basis preceded by single qubit rotations to map each Pauli matrix on each qubit to \(Z\). For example, if the Pauli string contains \(X\) (\(Y\)) at a qubit index \(i\), then (an \(S^\dagger\) gate and) an Hadamard gate is applied on the qubit \(i\) before performing the \(Z\) measurements on all qubits.

Parameters:

pauli_set (core.operator.pauli.CommutablePauliSet)

Return type:

Sequence[QuantumGate]

bitwise_pauli_reconstructor_factory(pauli)

A factory of a function that reconstructs a value of the given Pauli operator from a result of a “trivial” measurement of bitwise-commuting Pauli strings.

The “trivial” measurement of a Pauli string refers to a measurement in computational basis preceded by single qubit rotations to map each Pauli matrix on each qubit to \(Z\). For example, if the Pauli string contains \(X\) (\(Y\)) at a qubit index \(i\), then (an \(S^\dagger\) gate and) an Hadamard gate is applied on the qubit \(i\) before performing the \(Z\) measurements on all qubits.

Parameters:

pauli (PauliLabel)

Return type:

core.measurement.interface.PauliReconstructor

bitwise_commuting_pauli_measurement(paulis)

Groups the given Pauli operators into sets of bitwise commuting Pauli operators and returns measurement schemes for them.

Parameters:

paulis (Operator | Iterable[PauliLabel])

Return type:

Collection[CommutablePauliSetMeasurement]

individual_pauli_measurement(paulis)

Returns measurement schemes for Pauli operators where each operator is measured individually (i.e. no grouping).

Parameters:

paulis (Operator | Iterable[PauliLabel])

Return type:

Collection[CommutablePauliSetMeasurement]

class CachedMeasurementFactory(measurement_factory)

Bases: object

A class decorator that converts a CommutablePauliSetMeasurementFactory to a new CommutablePauliSetMeasurementFactory runs the same grouping algorithm but caches grouping result for later usage.

Example: >>> cached_measurement_factory = CachedMeasuremetFactory( … bitwise_commuting_pauli_measurement … ) >>> operator = Operator({ … pauli_label(“X0 Y1”): 1, … pauli_label(“X0 Z2”): 2, … pauli_label(“Y0 Z2”): 3, … PAULI_IDENTITY: 4 … }) >>> cached_measurement_factory(operator)

Parameters:

measurement_factory (CommutablePauliSetMeasurementFactory)

property cached_groups: dict[frozenset[tuple[PauliLabel, complex]], Iterable[CommutablePauliSetMeasurement]]

Submodules