Exemplo n.º 1
0
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)))
Exemplo n.º 2
0
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)
Exemplo n.º 4
0
    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