Skip to content

bloqade.qasm2.dialects.noise.model.TwoRowZoneModel

← Module overview

classTwoRowZoneModelsource

bloqade.qasm2.dialects.noise.model.TwoRowZoneModel

Bases: MoveNoiseModelABC

This model assumes that the qubits are arranged in a single storage row with a row corresponding to a gate zone below it.

Signature
class TwoRowZoneModel(*, local_px: float = 0.0004102, local_py: float = 0.0004102, local_pz: float = 0.0004112, local_loss_prob: float = 0.0, local_unaddressed_px: float = 2e-07, local_unaddressed_py: float = 2e-07, local_unaddressed_pz: float = 1.2e-06, local_unaddressed_loss_prob: float = 0.0, global_px: float = 6.5e-05, global_py: float = 6.5e-05, global_pz: float = 6.5e-05, global_loss_prob: float = 0.0, cz_paired_gate_px: float = 0.0006549, cz_paired_gate_py: float = 0.0006549, cz_paired_gate_pz: float = 0.003184, cz_gate_loss_prob: float = 0.0, cz_unpaired_gate_px: float = 0.0005149, cz_unpaired_gate_py: float = 0.0005149, cz_unpaired_gate_pz: float = 0.002185, cz_unpaired_loss_prob: float = 0.0, mover_px: float = 0.000806, mover_py: float = 0.000806, mover_pz: float = 0.002458, move_loss_prob: float = 0.0, sitter_px: float = 0.0003066, sitter_py: float = 0.0003066, sitter_pz: float = 0.0004639, sit_loss_prob: float = 0.0)

The CZ gate noise is calculated using the following heuristic: The idle error is calculated by the total duration required to do the move and entangle the qubits. Not every pair can be entangled at the same time, so we first deconflict the qargs by finding subsets in which both the ctrl and the qarg qubits are in ascending order. This breaks the pairs into groups that can be moved and entangled separately. We then take each group and assign each pair to a gate zone slot. The slots are allocated by starting from the middle of the atoms and moving outwards making sure to keep the ctrl qubits in ascending order. The time to move a group is calculated by finding the maximum travel distance of the qarg and ctrl qubits and dviding by the move speed. The total move time is the sum of all the group move times. The error rate for all the qubits is then calculated by using the poisson_pauli_prob function. An additional error for the pick operation is calculated by joining the binary probabilities of the pick operation and the move operation.

Parameters

NameTypeDefaultDescription
local_pxfloat0.0004102
local_pyfloat0.0004102
local_pzfloat0.0004112
local_loss_probfloat0.0
local_unaddressed_pxfloat2e-07
local_unaddressed_pyfloat2e-07
local_unaddressed_pzfloat1.2e-06
local_unaddressed_loss_probfloat0.0
global_pxfloat6.5e-05
global_pyfloat6.5e-05
global_pzfloat6.5e-05
global_loss_probfloat0.0
cz_paired_gate_pxfloat0.0006549
cz_paired_gate_pyfloat0.0006549
cz_paired_gate_pzfloat0.003184
cz_gate_loss_probfloat0.0
cz_unpaired_gate_pxfloat0.0005149
cz_unpaired_gate_pyfloat0.0005149
cz_unpaired_gate_pzfloat0.002185
cz_unpaired_loss_probfloat0.0
mover_pxfloat0.000806
mover_pyfloat0.000806
mover_pzfloat0.002458
move_loss_probfloat0.0
sitter_pxfloat0.0003066
sitter_pyfloat0.0003066
sitter_pzfloat0.0004639
sit_loss_probfloat0.0

propertymove_errorssource

bloqade.qasm2.dialects.noise.model.TwoRowZoneModel.move_errors

move_errors: tuple[float, float, float, float]

Returns the error rates for a move operation.

source

methoddeconflictsource

bloqade.qasm2.dialects.noise.model.TwoRowZoneModel.deconflict

Signature
def deconflict(ctrls: list[int], qargs: list[int]) -> list[tuple[tuple[int, ...], tuple[int, ...]]]

Return a list of groups of ctrl and qarg qubits that can be moved and entangled separately.

Parameters

NameTypeDescription
ctrlslist[int]
qargslist[int]

Returns

list[tuple[tuple[int, ...], tuple[int, ...]]]

source

methodparallel_cz_errorssource

bloqade.qasm2.dialects.noise.model.TwoRowZoneModel.parallel_cz_errors

Signature
def parallel_cz_errors(ctrls: list[int], qargs: list[int], rest: list[int]) -> dict[tuple[float, float, float, float], list[int]]

Apply parallel gates by moving ctrl qubits to qarg qubits.

Parameters

NameTypeDescription
ctrlslist[int]
qargslist[int]
restlist[int]

Returns

dict[tuple[float, float, float, float], list[int]]

source