Ejemplo n.º 1
0
def test_run_engine_program():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine,
                                      processor_id='tmp',
                                      gate_set=cg.XMON)
    program = mock.Mock(spec=cg.EngineProgram)
    params = [cirq.ParamResolver({'a': 1})]
    sampler.run_sweep(program, params, 5)
    program.run_sweep.assert_called_with(params=params,
                                         processor_ids=['tmp'],
                                         repetitions=5)
    engine.run_sweep.assert_not_called()
Ejemplo n.º 2
0
def test_run_circuit():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine,
                                      processor_id='tmp',
                                      gate_set=cg.XMON)
    circuit = cirq.Circuit()
    params = [cirq.ParamResolver({'a': 1})]
    sampler.run_sweep(circuit, params, 5)
    engine.run_sweep.assert_called_with(gate_set=cg.XMON,
                                        params=params,
                                        processor_ids=['tmp'],
                                        program=circuit,
                                        repetitions=5)
def test_incorrect_sampler_raises_exception():
    qubits = cirq.LineQubit.range(1)
    circuit = cirq.Circuit(cirq.X(qubits[0]))

    sampler_incorrect_type = cg.QuantumEngineSampler(engine=None,
                                                     processor_id='dummy_id',
                                                     gate_set=[])

    with pytest.raises(TypeError):
        dfe.direct_fidelity_estimation(circuit,
                                       qubits,
                                       sampler_incorrect_type,
                                       n_measured_operators=3,
                                       samples_per_term=0)
Ejemplo n.º 4
0
def test_run_batch_bad_number_of_repetitions():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine,
                                      processor_id='tmp',
                                      gate_set=cg.XMON)
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    with pytest.raises(ValueError, match='2 and 3'):
        sampler.run_batch(circuits, params_list, [5, 5, 5])
Ejemplo n.º 5
0
def test_run_batch_identical_repetitions():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine,
                                      processor_id='tmp',
                                      gate_set=cg.XMON)
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    sampler.run_batch(circuits, params_list, [5, 5])
    engine.run_batch.assert_called_with(gate_set=cg.XMON,
                                        params_list=params_list,
                                        processor_ids=['tmp'],
                                        programs=circuits,
                                        repetitions=5)
Ejemplo n.º 6
0
def test_run_batch_differing_repetitions():
    engine = mock.Mock()
    job = mock.Mock()
    job.results.return_value = []
    engine.run_sweep.return_value = job
    sampler = cg.QuantumEngineSampler(engine=engine,
                                      processor_id='tmp',
                                      gate_set=cg.XMON)
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    repetitions = [1, 2]
    sampler.run_batch(circuits, params_list, repetitions)
    engine.run_sweep.assert_called_with(gate_set=cg.XMON,
                                        params=params2,
                                        processor_ids=['tmp'],
                                        program=circuit2,
                                        repetitions=2)
    engine.run_batch.assert_not_called()
Ejemplo n.º 7
0
def test_engine_sampler_engine_property():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine,
                                      processor_id='tmp',
                                      gate_set=cg.XMON)
    assert sampler.engine is engine