n_errors.extend(n_error_vec) for i in range(1, len(sizes)): n_qubits = sizes[i]**2 n_error_vec = removedup(vround(error_probabilities * n_qubits)) n_errors.extend(n_error_vec[n_error_vec > n_errors[-1]]) biasstr_list = ['X', 'Y', 'Z'] for biasstr in biasstr_list: timestr = time.strftime("%Y%m%d-%H%M%S ") #record current date and time dirname = "./data/" + timestr + code_name + '_bias=' + biasstr os.mkdir(dirname) for bias in bias_list: error_model = BiasedDepolarizingErrorModel(bias, biasstr) chi_val = 10 decoder = _rotatedplanarmpsdecoder_def.RotatedPlanarMPSDecoder_def( chi=chi_val) # print run parameters print('codes_and_size:', [code.label for code in codes_and_size]) print('Error model:', error_model.label) print('Decoder:', decoder.label) print('Error probabilities:', error_probabilities) print('Maximum runs:', max_runs) pL_list_rand = np.zeros( (len(codes_and_size), realizations, len(error_probabilities))) std_list_rand = np.zeros( (len(codes_and_size), realizations, len(error_probabilities)))
def test_planar_rmps_decoder_cosets_probability_pair_optimisation(shape, mode): code = PlanarCode(*shape) decoder = PlanarRMPSDecoder(mode=mode) # probabilities prob_dist = BiasedDepolarizingErrorModel( bias=10).probability_distribution(0.1) # coset probabilities for null Pauli coset_i_ps, _ = decoder._coset_probabilities(prob_dist, code.new_pauli()) # X coset_x_ps, _ = decoder._coset_probabilities(prob_dist, code.new_pauli().logical_x()) # expect Pr(iIG) ~= Pr(xXG) assert _is_close( coset_i_ps[0], coset_x_ps[1], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iIG) ~= Pr(xXG)') # expect Pr(iXG) ~= Pr(xIG) assert _is_close( coset_i_ps[1], coset_x_ps[0], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iXG) ~= Pr(xIG)') # expect Pr(iYG) ~= Pr(xZG) assert _is_close( coset_i_ps[2], coset_x_ps[3], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iYG) ~= Pr(xZG)') # expect Pr(iZG) ~= Pr(xYG) assert _is_close( coset_i_ps[3], coset_x_ps[2], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iZG) ~= Pr(xYG)') # Y coset_y_ps, _ = decoder._coset_probabilities( prob_dist, code.new_pauli().logical_x().logical_z()) # expect Pr(iIG) ~= Pr(yYG) assert _is_close( coset_i_ps[0], coset_y_ps[2], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iIG) ~= Pr(yYG)') # expect Pr(iXG) ~= Pr(yZG) assert _is_close( coset_i_ps[1], coset_y_ps[3], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iXG) ~= Pr(yZG)') # expect Pr(iYG) ~= Pr(yIG) assert _is_close( coset_i_ps[2], coset_y_ps[0], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iYG) ~= Pr(yIG)') # expect Pr(iZG) ~= Pr(yXG) assert _is_close( coset_i_ps[3], coset_y_ps[1], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iZG) ~= Pr(yXG)') # Z coset_z_ps, _ = decoder._coset_probabilities(prob_dist, code.new_pauli().logical_z()) # expect Pr(iIG) ~= Pr(zZG) assert _is_close( coset_i_ps[0], coset_z_ps[3], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iIG) ~= Pr(zZG)') # expect Pr(iXG) ~= Pr(zYG) assert _is_close( coset_i_ps[1], coset_z_ps[2], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iXG) ~= Pr(zYG)') # expect Pr(iYG) ~= Pr(zXG) assert _is_close( coset_i_ps[2], coset_z_ps[1], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iYG) ~= Pr(zXG)') # expect Pr(iZG) ~= Pr(zIG) assert _is_close( coset_i_ps[3], coset_z_ps[0], rtol=1e-15, atol=0), ('Coset probabilites do not satisfy Pr(iZG) ~= Pr(zIG)')
def test_biased_depolarizing_error_model_invalid_parameters(bias, axis): with pytest.raises((ValueError, TypeError), match=r"^BiasedDepolarizingErrorModel") as exc_info: BiasedDepolarizingErrorModel(bias, axis) print(exc_info)
def label(self): return 'fixed' @pytest.mark.parametrize('code, error_model, decoder', [ # each code with each valid decoder (Color666Code(5), DepolarizingErrorModel(), Color666MPSDecoder(chi=8)), (FiveQubitCode(), DepolarizingErrorModel(), NaiveDecoder()), (PlanarCode(5, 5), DepolarizingErrorModel(), PlanarCMWPMDecoder()), (PlanarCode(5, 5), DepolarizingErrorModel(), PlanarMPSDecoder(chi=6)), (PlanarCode(5, 5), DepolarizingErrorModel(), PlanarMWPMDecoder()), (PlanarCode(5, 5), DepolarizingErrorModel(), PlanarRMPSDecoder(chi=6)), (PlanarCode(4, 5), BitPhaseFlipErrorModel(), PlanarYDecoder()), (RotatedPlanarCode(7, 7), DepolarizingErrorModel(), RotatedPlanarMPSDecoder(chi=8)), (RotatedPlanarCode(7, 7), DepolarizingErrorModel(), RotatedPlanarRMPSDecoder(chi=8)), (RotatedPlanarCode(7, 7), BiasedDepolarizingErrorModel(100), RotatedPlanarSMWPMDecoder()), (RotatedToricCode(6, 6), BiasedDepolarizingErrorModel(100), RotatedToricSMWPMDecoder()), (SteaneCode(), DepolarizingErrorModel(), NaiveDecoder()), (ToricCode(5, 5), DepolarizingErrorModel(), ToricMWPMDecoder()), # each generic noise model (PlanarCode(5, 5), BiasedDepolarizingErrorModel(10), PlanarMPSDecoder(chi=6)), (PlanarCode(5, 5), BiasedYXErrorModel(10), PlanarMPSDecoder(chi=6)), (PlanarCode(5, 5), BitFlipErrorModel(), PlanarMPSDecoder(chi=6)), (PlanarCode(5, 5), BitPhaseFlipErrorModel(), PlanarMPSDecoder(chi=6)), (PlanarCode(5, 5), CenterSliceErrorModel((0.2, 0.8, 0), 0.5), PlanarMPSDecoder(chi=6)), (PlanarCode(5, 5), DepolarizingErrorModel(), PlanarMPSDecoder(chi=6)), (PlanarCode(5, 5), PhaseFlipErrorModel(), PlanarMPSDecoder(chi=6)), ]) def test_run_once(code, error_model, decoder): error_probability = 0.15 data = app.run_once(code, error_model, decoder, error_probability) # no error raised
def test_biased_depolarizing_error_model_valid_parameters(bias, axis): BiasedDepolarizingErrorModel(bias, axis) # no error raised