Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 6 additions & 2 deletions src/qce_interp/decoder_examples/majority_voting.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
# https://arxiv.org/pdf/1703.04136.pdf
# -------------------------------------------
import numpy as np
from qce_circuit.connectivity.intrf_connectivity_surface_code import StabilizerType
from qce_interp.interface_definitions.intrf_error_identifier import IErrorDetectionIdentifier
from qce_interp.interface_definitions.intrf_syndrome_decoder import IDecoder
from qce_interp.interface_definitions.intrf_state_classification import IStateClassifierContainer
Expand All @@ -22,8 +23,9 @@ class MajorityVotingDecoder(IDecoder):
"""

# region Class Constructor
def __init__(self, error_identifier: IErrorDetectionIdentifier):
def __init__(self, error_identifier: IErrorDetectionIdentifier, initial_state_basis: StabilizerType = StabilizerType.STABILIZER_Z):
self._error_identifier: IErrorDetectionIdentifier = error_identifier
self._initial_state_basis: StabilizerType = initial_state_basis
# endregion

# region ILookupDecoder Interface Methods
Expand All @@ -40,7 +42,9 @@ def get_fidelity(self, cycle_stabilizer_count: int, target_state: np.ndarray) ->
# (N, D)
corrected_binary_output: np.ndarray = binary_output.reshape((n, d))
# Correct for refocusing (bit-flips)
if cycle_stabilizer_count % 2 == 0 and cycle_stabilizer_count != 0:
if self._initial_state_basis == StabilizerType.STABILIZER_X:
corrected_binary_output = corrected_binary_output ^ 1
elif cycle_stabilizer_count % 2 == 0 and cycle_stabilizer_count != 0:
corrected_binary_output = IStateClassifierContainer.binary_to_eigenvalue(corrected_binary_output) * -1
corrected_binary_output = IStateClassifierContainer.eigenvalue_to_binary(corrected_binary_output)

Expand Down
2 changes: 1 addition & 1 deletion src/qce_interp/visualization/plot_logical_fidelity.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ def plot_fidelity(decoder: IDecoder, included_rounds: List[int], target_state: I
)
contains_nan_values: bool = np.isnan(y_array).any()
if fit_error_rate and not contains_nan_values:
code_distance: int = len(target_state.as_ordered_array(qubit_order=target_state_order))
code_distance: int = target_state.distance
exclude_first_n: int = code_distance
if code_distance < 5:
exclude_first_n = 2 * code_distance
Expand Down
Loading