Source code for tqec.plaquette.library.measurement

from __future__ import annotations

from tqec.plaquette.enums import PlaquetteOrientation
from tqec.plaquette.library.pauli import MeasurementBasis, pauli_memory_plaquette
from tqec.plaquette.library.utils.schedule import cnot_pauli_schedule
from tqec.plaquette.plaquette import Plaquette
from tqec.plaquette.qubit import (
    RoundedPlaquetteQubits,
    SquarePlaquetteQubits,
)


[docs] def xx_measurement_plaquette( orientation: PlaquetteOrientation, schedule: list[int] | None = None, data_qubit_measurement_basis: MeasurementBasis = MeasurementBasis.Z, ) -> Plaquette: """R - H - CX - CX - H - M""" if schedule is None: schedule = [1, 2] + cnot_pauli_schedule("xx", orientation) + [7, 8] return pauli_memory_plaquette( RoundedPlaquetteQubits(orientation), "XX", schedule, data_qubit_measurement_basis=data_qubit_measurement_basis, )
[docs] def xxxx_measurement_plaquette( schedule: list[int] | None = None, data_qubit_measurement_basis: MeasurementBasis = MeasurementBasis.Z, ) -> Plaquette: """R - H - CX - CX - CX - CX - H - M""" if schedule is None: schedule = [1, 2, 3, 4, 5, 6, 7, 8] return pauli_memory_plaquette( SquarePlaquetteQubits(), "XXXX", schedule, data_qubit_measurement_basis=data_qubit_measurement_basis, )
[docs] def zz_measurement_plaquette( orientation: PlaquetteOrientation, schedule: list[int] | None = None, data_qubit_measurement_basis: MeasurementBasis = MeasurementBasis.Z, ) -> Plaquette: """R - CX - CX - M""" if schedule is None: schedule = [1] + cnot_pauli_schedule("zz", orientation) + [8] return pauli_memory_plaquette( RoundedPlaquetteQubits(orientation), "ZZ", schedule, data_qubit_measurement_basis=data_qubit_measurement_basis, )
[docs] def zzzz_measurement_plaquette( schedule: list[int] | None = None, data_qubit_measurement_basis: MeasurementBasis = MeasurementBasis.Z, ) -> Plaquette: """R - CX - CX - CX - CX - M""" if schedule is None: schedule = [1, 3, 4, 5, 6, 8] return pauli_memory_plaquette( SquarePlaquetteQubits().permute_data_qubits([0, 2, 1, 3]), "ZZZZ", schedule, data_qubit_measurement_basis=data_qubit_measurement_basis, )