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), []))
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
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 ], )
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)
def _create_device(qubits: Iterable[cirq.GridQubit]): return cg.XmonDevice( cirq.Duration(nanos=0), cirq.Duration(nanos=0), cirq.Duration(nanos=0), qubits )