qrunch.quantum.measurement.bases.qubit_wise_measurement_basis

Module defining a measurement basis for qubit-wise measurements.

Classes

ComputationalBasis

Class representing the computational basis.

QubitWiseMeasurementBasis

Class that makes it possible to identify a measurement group of qubit wise commuting operators.

class ComputationalBasis

Bases: QubitWiseMeasurementBasis

Class representing the computational basis.

__init__(num_qubits: int) → None

Initialize the computational basis.

Parameters:

num_qubits (int)

Return type:

None

calculate_expectation_value(pauli_sum: HermitianPauliSum, measurement: QuantumMeasurement) → ExpectationValue

Calculate expectation value for an observable given a qubit-wise quantum measurement.

It is assumed that the states are in a diagonal basis corresponding to the Pauli operators in the observable.

Parameters:
Return type:

ExpectationValue

difference_size(other: QubitWiseMeasurementBasis) → int

Calculate the difference in size between this and the other group identifier.

Parameters:

other (QubitWiseMeasurementBasis) – Other group identifier.

Return type:

int

Returns: The size of the difference of the group identifiers.

classmethod from_indices(pauli_x_indices: Sequence[int], pauli_y_indices: Sequence[int], pauli_z_indices: Sequence[int]) → QubitWiseMeasurementBasis

Create a qubit wise measurement basis from lists of indices.

Parameters:
  • x_indices – List of qubit indices hit by X operators.

  • y_indices – List of qubit indices hit by Y operators.

  • z_indices – List of qubit indices hit by Z operators.

  • pauli_x_indices (Sequence[int])

  • pauli_y_indices (Sequence[int])

  • pauli_z_indices (Sequence[int])

Return type:

QubitWiseMeasurementBasis

classmethod from_pauli_string(pauli_string: PauliString) → QubitWiseMeasurementBasis

Create a group identifier from a Pauli string.

Parameters:

pauli_string (PauliString) – Pauli string to create the identifier for.

Return type:

QubitWiseMeasurementBasis

Returns: A group identifier for the given Pauli string.

classmethod from_pauli_strings(pauli_strings: list[PauliString]) → QubitWiseMeasurementBasis

Create a qubit wise measurement basis from multiple pauli strings

Parameters:

pauli_strings (list[PauliString]) – Sequence of pauli strings to create the basis from.

Return type:

QubitWiseMeasurementBasis

get_diagonalizing_circuit(num_qubits: int) → Circuit

Get the diagonalizing circuit for the given circuit.

Parameters:

num_qubits (int) – Number of qubits in the circuit.

Return type:

Circuit

is_compatible_with(other: PauliString) → bool

Check if compatible with other.

Parameters:

other (PauliString) – Other PauliString to check compatibility with.

Return type:

bool

Returns: True if compatible.

is_compatible_with_qubitwise_basis(other: QubitWiseMeasurementBasis) → bool

Check if another group identifier is compatible, i.e. can be measured simultaneous.

Parameters:

other (QubitWiseMeasurementBasis) – Other group identifier to check compatibility with.

Return type:

bool

Returns: True if compatible.

is_diagonal() → bool

Check if the measurement basis is diagonal, i.e., measured in the Z basis only.

Return type:

bool

property pauli_x_indices: tuple[int, ...]

Get all qubit indices of Pauli X operators.

pauli_x_mask: int
property pauli_y_indices: tuple[int, ...]

Get all qubit indices of Pauli Y operators.

pauli_y_mask: int
property pauli_z_indices: tuple[int, ...]

Get all qubit indices of Pauli Z operators.

pauli_z_mask: int
union(other: QubitWiseMeasurementBasis) → QubitWiseMeasurementBasis

Create the union with the other group identifier.

Parameters:

other (QubitWiseMeasurementBasis) – Other identifier.

Return type:

QubitWiseMeasurementBasis

Returns: A new group identifier that is the union of this and the other.

class QubitWiseMeasurementBasis

Bases: MeasurementBasis

Class that makes it possible to identify a measurement group of qubit wise commuting operators.

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

Parameters:
  • pauli_x_mask – Integer corresponding to the bit-string of hit qubit indices.

  • pauli_y_mask – Integer corresponding to the bit-string of hit qubit indices.

  • pauli_z_mask – Integer corresponding to the bit-string of hit qubit indices.

__init__(pauli_x_mask: int, pauli_y_mask: int, pauli_z_mask: int) → None
Parameters:
  • pauli_x_mask (int)

  • pauli_y_mask (int)

  • pauli_z_mask (int)

Return type:

None

calculate_expectation_value(pauli_sum: HermitianPauliSum, measurement: QuantumMeasurement) → ExpectationValue

Calculate expectation value for an observable given a qubit-wise quantum measurement.

It is assumed that the states are in a diagonal basis corresponding to the Pauli operators in the observable.

Parameters:
Return type:

ExpectationValue

difference_size(other: QubitWiseMeasurementBasis) → int

Calculate the difference in size between this and the other group identifier.

Parameters:

other (QubitWiseMeasurementBasis) – Other group identifier.

Return type:

int

Returns: The size of the difference of the group identifiers.

classmethod from_indices(pauli_x_indices: Sequence[int], pauli_y_indices: Sequence[int], pauli_z_indices: Sequence[int]) → QubitWiseMeasurementBasis

Create a qubit wise measurement basis from lists of indices.

Parameters:
  • x_indices – List of qubit indices hit by X operators.

  • y_indices – List of qubit indices hit by Y operators.

  • z_indices – List of qubit indices hit by Z operators.

  • pauli_x_indices (Sequence[int])

  • pauli_y_indices (Sequence[int])

  • pauli_z_indices (Sequence[int])

Return type:

QubitWiseMeasurementBasis

classmethod from_pauli_string(pauli_string: PauliString) → QubitWiseMeasurementBasis

Create a group identifier from a Pauli string.

Parameters:

pauli_string (PauliString) – Pauli string to create the identifier for.

Return type:

QubitWiseMeasurementBasis

Returns: A group identifier for the given Pauli string.

classmethod from_pauli_strings(pauli_strings: list[PauliString]) → QubitWiseMeasurementBasis

Create a qubit wise measurement basis from multiple pauli strings

Parameters:

pauli_strings (list[PauliString]) – Sequence of pauli strings to create the basis from.

Return type:

QubitWiseMeasurementBasis

get_diagonalizing_circuit(num_qubits: int) → Circuit

Get the diagonalizing circuit for the given circuit.

Parameters:

num_qubits (int) – Number of qubits in the circuit.

Return type:

Circuit

is_compatible_with(other: PauliString) → bool

Check if compatible with other.

Parameters:

other (PauliString) – Other PauliString to check compatibility with.

Return type:

bool

Returns: True if compatible.

is_compatible_with_qubitwise_basis(other: QubitWiseMeasurementBasis) → bool

Check if another group identifier is compatible, i.e. can be measured simultaneous.

Parameters:

other (QubitWiseMeasurementBasis) – Other group identifier to check compatibility with.

Return type:

bool

Returns: True if compatible.

is_diagonal() → bool

Check if the measurement basis is diagonal, i.e., measured in the Z basis only.

Return type:

bool

property pauli_x_indices: tuple[int, ...]

Get all qubit indices of Pauli X operators.

pauli_x_mask: int
property pauli_y_indices: tuple[int, ...]

Get all qubit indices of Pauli Y operators.

pauli_y_mask: int
property pauli_z_indices: tuple[int, ...]

Get all qubit indices of Pauli Z operators.

pauli_z_mask: int
union(other: QubitWiseMeasurementBasis) → QubitWiseMeasurementBasis

Create the union with the other group identifier.

Parameters:

other (QubitWiseMeasurementBasis) – Other identifier.

Return type:

QubitWiseMeasurementBasis

Returns: A new group identifier that is the union of this and the other.