예제 #1
0
def test_aqt_sampler():
    put_call_args0 = {
        'access_token': 'testkey',
        'id': '2131da',
    }

    e_return = EngineReturn()
    with mock.patch('cirq.aqt.aqt_sampler.put',
                    return_value=e_return,
                    side_effect=e_return.update) as mock_method:
        theta = sympy.Symbol('theta')
        num_points = 1
        max_angle = np.pi
        repetitions = 10
        sampler = AQTSampler(remote_host="http://localhost:5000",
                             access_token='testkey')
        device, qubits = get_aqt_device(1)
        circuit = Circuit(X(qubits[0])**theta, device=device)
        sweep = study.Linspace(key='theta',
                               start=0.1,
                               stop=max_angle / np.pi,
                               length=num_points)
        results = sampler.run_sweep(circuit,
                                    params=sweep,
                                    repetitions=repetitions)
        excited_state_probs = np.zeros(num_points)
        for i in range(num_points):
            excited_state_probs[i] = np.mean(results[i].measurements['m'])
    callargs = mock_method.call_args[1]['data']
    for keys in put_call_args0:
        assert callargs[keys] == put_call_args0[keys]
    assert mock_method.call_count == 3
예제 #2
0
def test_aqt_sampler_error_handling():
    for e_return in [
            EngineError(),
            EngineErrorSecond(),
            EngineNoStatus(),
            EngineNoStatus2(),
            EngineNoid()
    ]:
        with mock.patch('cirq.aqt.aqt_sampler.put',
                        return_value=e_return,
                        side_effect=e_return.update) as _mock_method:
            theta = sympy.Symbol('theta')
            num_points = 1
            max_angle = np.pi
            repetitions = 10
            sampler = AQTSampler(remote_host="http://localhost:5000",
                                 access_token='testkey')
            device, qubits = get_aqt_device(1)
            circuit = Circuit(X(qubits[0])**theta, device=device)
            sweep = study.Linspace(key='theta',
                                   start=0.1,
                                   stop=max_angle / np.pi,
                                   length=num_points)
            with pytest.raises(RuntimeError):
                _results = sampler.run_sweep(circuit,
                                             params=sweep,
                                             repetitions=repetitions)
예제 #3
0
def test_aqt_sampler_wrong_gate():
    repetitions = 100
    num_qubits = 4
    device, qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    circuit = Circuit(device=device)
    circuit.append(Y(qubits[0])**0.5)
    circuit.append(ZZ(qubits[0], qubits[1])**0.5)
    with pytest.raises(ValueError):
        _results = sampler.run(circuit, repetitions=repetitions)
예제 #4
0
def test_aqt_sampler_ms():
    repetitions = 1000
    num_qubits = 4
    device, qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    circuit = Circuit(device=device)
    for _dummy in range(9):
        circuit.append(XX(qubits[0], qubits[1])**0.5)
    circuit.append(Z(qubits[0])**0.5)
    results = sampler.run(circuit, repetitions=repetitions)
    hist = (results.histogram(key='m'))
    assert hist[12] > repetitions / 3
    assert hist[0] > repetitions / 3
예제 #5
0
def test_x_crosstalk_n_noise():
    num_qubits = 4
    noise_mod = AQTNoiseModel()
    device, qubits = get_aqt_device(num_qubits)
    circuit = Circuit(device=device)
    circuit.append(Y(qubits[1])**0.5)
    circuit.append(Z(qubits[1])**0.5)
    circuit.append(X(qubits[1])**0.5)
    for moment in circuit.moments:
        noisy_moment = noise_mod.noisy_moment(moment, qubits)
    assert noisy_moment == [(cirq.X**0.5).on(cirq.LineQubit(1)),
                            cirq.depolarize(p=0.001).on(cirq.LineQubit(1)),
                            (cirq.X**0.015).on(cirq.LineQubit(0)),
                            (cirq.X**0.015).on(cirq.LineQubit(2))]
예제 #6
0
def test_aqt_sampler_sim_xtalk():
    num_points = 10
    max_angle = np.pi
    repetitions = 100
    num_qubits = 4
    device, qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    sampler.simulate_ideal = False
    circuit = Circuit(X(qubits[0]), X(qubits[3]), X(qubits[2]), device=device)
    sweep = study.Linspace(key='theta',
                           start=0.1,
                           stop=max_angle / np.pi,
                           length=num_points)
    _results = sampler.run_sweep(circuit, params=sweep, repetitions=repetitions)
예제 #7
0
def test_aqt_sampler_empty_circuit():
    num_points = 10
    max_angle = np.pi
    repetitions = 1000
    num_qubits = 4
    device, _qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    sampler.simulate_ideal = True
    circuit = Circuit(device=device)
    sweep = study.Linspace(key='theta',
                           start=0.1,
                           stop=max_angle / np.pi,
                           length=num_points)
    with pytest.raises(RuntimeError):
        _results = sampler.run_sweep(circuit,
                                     params=sweep,
                                     repetitions=repetitions)
예제 #8
0
def test_aqt_sampler_sim():
    theta = sympy.Symbol('theta')
    num_points = 10
    max_angle = np.pi
    repetitions = 1000
    num_qubits = 4
    device, qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    sampler.simulate_ideal = True
    circuit = Circuit(X(qubits[3])**theta, device=device)
    sweep = study.Linspace(key='theta',
                           start=0.1,
                           stop=max_angle / np.pi,
                           length=num_points)
    results = sampler.run_sweep(circuit, params=sweep, repetitions=repetitions)
    excited_state_probs = np.zeros(num_points)
    for i in range(num_points):
        excited_state_probs[i] = np.mean(results[i].measurements['m'])
    assert excited_state_probs[-1] == 0.25