コード例 #1
0
ファイル: aqt_sampler_test.py プロジェクト: towynlin/Cirq
def test_aqt_sampler_sim():
    theta = sympy.Symbol('theta')
    num_points = 10
    max_angle = np.pi
    repetitions = 1000
    num_qubits = 4
    _, qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    sampler.simulate_ideal = True
    circuit = cirq.Circuit(
        cirq.X(qubits[3])**theta,
        cirq.X(qubits[0]),
        cirq.X(qubits[0]),
        cirq.X(qubits[1]),
        cirq.X(qubits[1]),
        cirq.X(qubits[2]),
        cirq.X(qubits[2]),
    )
    circuit.append(
        cirq.PhasedXPowGate(phase_exponent=0.5, exponent=-0.5).on(qubits[0]))
    circuit.append(
        cirq.PhasedXPowGate(phase_exponent=0.5, exponent=0.5).on(qubits[0]))
    sweep = cirq.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
コード例 #2
0
ファイル: aqt_sampler_test.py プロジェクト: towynlin/Cirq
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')
            _, qubits = get_aqt_device(1)
            circuit = cirq.Circuit(cirq.X(qubits[0])**theta)
            sweep = cirq.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
ファイル: aqt_sampler_test.py プロジェクト: towynlin/Cirq
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')
        _, qubits = get_aqt_device(1)
        circuit = cirq.Circuit(cirq.X(qubits[0])**theta)
        sweep = cirq.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
コード例 #4
0
ファイル: aqt_sampler_test.py プロジェクト: towynlin/Cirq
def test_aqt_sampler_ms():
    repetitions = 1000
    num_qubits = 4
    _, qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    circuit = cirq.Circuit(cirq.Z.on_each(*qubits), cirq.Z.on_each(*qubits))
    for _dummy in range(9):
        circuit.append(cirq.XX(qubits[0], qubits[1])**0.5)
    circuit.append(cirq.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
ファイル: aqt_simulator_test.py プロジェクト: ybc1991/Cirq
def test_x_crosstalk_n_noise():
    num_qubits = 4
    noise_mod = AQTNoiseModel()
    device, qubits = get_aqt_device(num_qubits)
    circuit = cirq.Circuit(device=device)
    circuit.append(cirq.Y(qubits[1])**0.5)
    circuit.append(cirq.Z(qubits[1])**0.5)
    circuit.append(cirq.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
ファイル: aqt_sampler_test.py プロジェクト: towynlin/Cirq
def test_aqt_sampler_empty_circuit():
    num_points = 10
    max_angle = np.pi
    repetitions = 1000
    num_qubits = 4
    _, _qubits = get_aqt_device(num_qubits)
    sampler = AQTSamplerLocalSimulator()
    sampler.simulate_ideal = True
    circuit = cirq.Circuit()
    sweep = cirq.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)
コード例 #7
0
ファイル: aqt_sampler_test.py プロジェクト: ybc1991/Cirq
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 = cirq.Circuit(cirq.X(qubits[0]),
                           cirq.X(qubits[3]),
                           cirq.X(qubits[2]),
                           device=device)
    sweep = cirq.Linspace(key='theta',
                          start=0.1,
                          stop=max_angle / np.pi,
                          length=num_points)
    _results = sampler.run_sweep(circuit,
                                 params=sweep,
                                 repetitions=repetitions)