def test_ops_are_consistent_with_device_graph(): device_graph = ccr.get_linear_device_graph(3) qubits = cirq.LineQubit.range(3) circuit = cirq.Circuit(cirq.ZZ(qubits[0], qubits[2])) assert not ccr.ops_are_consistent_with_device_graph( circuit.all_operations(), device_graph) assert not ccr.ops_are_consistent_with_device_graph( [cirq.X(cirq.GridQubit(0, 0))], device_graph)
def test_route_circuit(circuit, device_graph, algo): swap_network = ccr.route_circuit(circuit, device_graph, algo_name=algo) assert set(swap_network.initial_mapping).issubset(device_graph) assert (sorted(swap_network.initial_mapping.values()) == sorted( circuit.all_qubits())) assert ccr.ops_are_consistent_with_device_graph( swap_network.circuit.all_operations(), device_graph) assert ccr.is_valid_routing(circuit, swap_network)
def test_route_circuit(n_moments, algo, circuit_seed, routing_seed): circuit = cirq.testing.random_circuit(10, n_moments, 0.5, random_state=circuit_seed) device_graph = ccr.get_grid_device_graph(4, 3) swap_network = ccr.route_circuit(circuit, device_graph, algo_name=algo, random_state=routing_seed) assert set(swap_network.initial_mapping).issubset(device_graph) assert sorted(swap_network.initial_mapping.values()) == sorted( circuit.all_qubits()) assert ccr.ops_are_consistent_with_device_graph( swap_network.circuit.all_operations(), device_graph) assert ccr.is_valid_routing(circuit, swap_network)
def test_calculate_quantum_volume_result_with_device_graph(): """Test that running the main loop routes the circuit onto the given device graph""" device_qubits = [cirq.GridQubit(i, j) for i in range(2) for j in range(3)] results = cirq.contrib.quantum_volume.calculate_quantum_volume( num_qubits=3, depth=3, num_circuits=1, device_or_qubits=device_qubits, samplers=[cirq.Simulator()], routing_attempts=2, random_state=1, ) assert len(results) == 1 assert ccr.ops_are_consistent_with_device_graph( results[0].compiled_circuit.all_operations(), ccr.get_grid_device_graph(2, 3))