Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
4136d2b
Added abstract method for obtaining gate-sequence indices at which pa…
MiniSean Aug 1, 2025
d5d6e66
Fixed stabilizer type definition in Surface17Round8Code
MiniSean Aug 1, 2025
69450a5
Fix color overwrite in CZ and measure operations
Aug 5, 2025
56bbc4a
Merge branch '26-feature-supportquantify' into 36-feature-paritygroup…
MiniSean Aug 5, 2025
92bdee4
Fixed bug related to pivot offset
MiniSean Aug 14, 2025
b5e748c
Added functionality to enable or disable element label text
MiniSean Aug 14, 2025
b081c20
Fixed bug with inconsistent determination of rotation because of floa…
MiniSean Aug 14, 2025
61071e4
Updated use of minimalist visualization argument. Can now be set at p…
MiniSean Aug 14, 2025
13992c3
Added basic virtual QEC (multi-pivot text) block operator
MiniSean Aug 17, 2025
e486a75
Fixed bug related to VirtualQECOperation hashing ID based on list pro…
MiniSean Aug 17, 2025
66bbee2
Fixed bug where overwrite color was not copied over during copy opera…
MiniSean Aug 17, 2025
f5db241
Added color_outline_dim to be included in color overwrite
MiniSean Aug 17, 2025
7439621
Added global barrier duration registry
MiniSean Aug 17, 2025
7b9593d
Updated VirtualInjectedError by allowing custom line style and backgr…
MiniSean Aug 17, 2025
77d360f
MAJOR Refactoring adding ITwoQubitOperation interface to describe any…
MiniSean Aug 17, 2025
1b1b7e8
Added factory pattern for recognizing Virtual (two-qubit) color overw…
MiniSean Aug 17, 2025
bb614bd
Merge branch 'main' into 36-feature-paritygroupindices
MiniSean Aug 29, 2025
460683e
Merge branch 'main' into 36-feature-paritygroupindices
MiniSean Aug 29, 2025
471a856
Updated fixed bug related to temporary overwrite of global duration s…
MiniSean Aug 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 32 additions & 3 deletions src/qce_circuit/connectivity/generic_gate_sequence.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# -------------------------------------------
# Module containing interface and implementation of generic (Surface17) gate sequences.
# -------------------------------------------
from abc import ABCMeta
from abc import ABCMeta, abstractmethod
from typing import List, Union
from qce_circuit.utilities.custom_exceptions import ElementNotIncludedException
from qce_circuit.utilities.custom_exceptions import ElementNotIncludedException, InterfaceMethodException
from qce_circuit.utilities.array_manipulation import unique_in_order
from qce_circuit.connectivity.intrf_channel_identifier import (
IQubitID,
Expand All @@ -26,7 +26,16 @@ class IGenericSurfaceCodeLayer(ISurfaceCodeLayer, IGateSequenceLayer, metaclass=
"""
Interface class, combining ISurfaceCodeLayer and IGateSequenceLayer.
"""
pass

# region Interface Methods
@abstractmethod
def get_gate_sequence_indices(self, parity_group: IParityGroup) -> List[int]:
"""
:return: Array-like of gate-sequence indices corresponding to parity-group edge-ID's.
Returns an empty list if parity-group is not present.
"""
raise InterfaceMethodException
# endregion


class GenericSurfaceCode(IGenericSurfaceCodeLayer):
Expand Down Expand Up @@ -98,6 +107,26 @@ def __init__(self, gate_sequences: List[GateSequenceLayer], parity_group_z: List
self._surface_code_layer: ISurfaceCodeLayer = surface_code_layer
# endregion

# region IGenericSurfaceCodeLayer Methods
def get_gate_sequence_indices(self, parity_group: IParityGroup) -> List[int]:
"""
:return: Array-like of gate-sequence indices corresponding to parity-group edge-ID's.
Returns an empty list if parity-group is not present.
"""
# Guard clause, if parity-group is not present, return empty list
if parity_group not in self.parity_group_x + self.parity_group_z:
return []
edge_ids: List[IEdgeID] = parity_group.edge_ids
result: List[int] = []
for gate_sequence_index, gate_sequence in enumerate(self.gate_sequences):
contains_any_edge: bool = any([edge_id in gate_sequence.edge_ids for edge_id in edge_ids])
if contains_any_edge:
result.append(gate_sequence_index)
continue

return result
# endregion

# region IGateSequenceLayer Interface Methods
def get_gate_sequence_at_index(self, index: int) -> GateSequenceLayer:
""":return: Gate-sequence object based on round index."""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -321,22 +321,22 @@ def __init__(self):
],
parity_group_x=[
ParityGroup(
_parity_type=StabilizerType.STABILIZER_Z,
_parity_type=StabilizerType.STABILIZER_X,
_ancilla_qubit=QubitIDObj('X1'),
_data_qubits=[QubitIDObj('D1'), QubitIDObj('D2')]
),
ParityGroup(
_parity_type=StabilizerType.STABILIZER_Z,
_parity_type=StabilizerType.STABILIZER_X,
_ancilla_qubit=QubitIDObj('X2'),
_data_qubits=[QubitIDObj('D2'), QubitIDObj('D3'), QubitIDObj('D5'), QubitIDObj('D6')]
),
ParityGroup(
_parity_type=StabilizerType.STABILIZER_Z,
_parity_type=StabilizerType.STABILIZER_X,
_ancilla_qubit=QubitIDObj('X3'),
_data_qubits=[QubitIDObj('D4'), QubitIDObj('D5'), QubitIDObj('D7'), QubitIDObj('D8')]
),
ParityGroup(
_parity_type=StabilizerType.STABILIZER_Z,
_parity_type=StabilizerType.STABILIZER_X,
_ancilla_qubit=QubitIDObj('X4'),
_data_qubits=[QubitIDObj('D8'), QubitIDObj('D9')]
),
Expand Down
4 changes: 2 additions & 2 deletions src/qce_circuit/structure/circuit_modifiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ def match(self, matched_operation: TMaskedTwoQubitOperation) -> bool:
def construct_operation_mask(self, masked_operation: TMaskedTwoQubitOperation) -> VirtualTwoQubitVacant:
""":return: Newly constructed 'mask'-operation based on masked-operation."""
return VirtualTwoQubitVacant(
control_qubit_index=masked_operation.control_qubit_index,
target_qubit_index=masked_operation.target_qubit_index,
_control_qubit_index=masked_operation.control_qubit_index,
_target_qubit_index=masked_operation.target_qubit_index,
relation=masked_operation.relation_link,
duration_strategy=masked_operation.duration_strategy,
)
Expand Down
Loading