Example #1
0
def test_xmon_device_eq():
    eq = cirq.testing.EqualsTester()
    eq.make_equality_group(lambda: square_device(3, 3))
    eq.make_equality_group(
        lambda: square_device(3, 3, holes=[cirq.GridQubit(1, 1)]))
    eq.make_equality_group(lambda: cg.XmonDevice(cirq.Duration(
        nanos=1), cirq.Duration(nanos=2), cirq.Duration(nanos=3), []))
    eq.make_equality_group(lambda: cg.XmonDevice(cirq.Duration(
        nanos=1), cirq.Duration(nanos=1), cirq.Duration(nanos=1), []))
Example #2
0
def square_device(width: int, height: int, holes=()) -> cg.XmonDevice:
    ns = cirq.Duration(nanos=1)
    return cg.XmonDevice(measurement_duration=ns,
                         exp_w_duration=2 * ns,
                         exp_11_duration=3 * ns,
                         qubits=[cirq.GridQubit(row, col)
                                 for col in range(width)
                                 for row in range(height)
                                 if cirq.GridQubit(col, row) not in holes])
Example #3
0
def test_greedy_method_calls_greedy_search():
    q00 = cirq.GridQubit(0, 0)
    q01 = cirq.GridQubit(0, 1)
    q03 = cirq.GridQubit(0, 3)
    device = cg.XmonDevice(cirq.Duration(), cirq.Duration(),
                           cirq.Duration(), qubits=[q00, q01, q03])
    length = 2
    method = cirq.GreedySequenceSearchStrategy()

    with mock.patch.object(method, 'place_line') as place_line:
        sequences = [[q00, q01]]
        place_line.return_value = sequences

        assert method.place_line(device, length) == sequences
        place_line.assert_called_once_with(device, length)
Example #4
0
def test_anneal_method_calls_anneal_search():
    q00 = cirq.GridQubit(0, 0)
    q01 = cirq.GridQubit(0, 1)
    q03 = cirq.GridQubit(0, 3)
    device = cg.XmonDevice(
        cirq.Duration(), cirq.Duration(), cirq.Duration(), qubits=[q00, q01, q03]
    )
    length = 2
    method = cg.AnnealSequenceSearchStrategy()

    with mock.patch.object(method, 'place_line') as place_line:
        sequences = GridQubitLineTuple((q00, q01))
        place_line.return_value = sequences

        assert line_on_device(device, length, method) == sequences
        place_line.assert_called_once_with(device, length)
Example #5
0
def test_init_timedelta():
    from datetime import timedelta
    timedelta_duration = timedelta(microseconds=1)
    d = cg.XmonDevice(measurement_duration=timedelta_duration,
                      exp_w_duration=2 * timedelta_duration,
                      exp_11_duration=3 * timedelta_duration,
                      qubits=[
                          cirq.GridQubit(row, col) for col in range(2)
                          for row in range(2)
                      ])
    microsecond = cirq.Duration(nanos=1000)
    q00 = cirq.GridQubit(0, 0)
    q01 = cirq.GridQubit(0, 1)
    q10 = cirq.GridQubit(1, 0)
    q11 = cirq.GridQubit(1, 1)

    assert d.qubits == {q00, q01, q10, q11}
    assert d.duration_of(cirq.Z(q00)) == 0 * microsecond
    assert d.duration_of(cirq.measure(q00)) == microsecond
    assert d.duration_of(cirq.measure(q00, q01)) == microsecond
    assert d.duration_of(cirq.X(q00)) == 2 * microsecond
    assert d.duration_of(cirq.CZ(q00, q01)) == 3 * microsecond
Example #6
0
def _create_device(qubits: Iterable[cirq.GridQubit]):
    return cg.XmonDevice(cirq.Duration(nanos=0), cirq.Duration(nanos=0),
                         cirq.Duration(nanos=0), qubits)