def test_supported_gates_consistent(self, op_and_sim): """Ensure that supported gates are consistent across backends.""" op = op_and_sim[0] sim = op_and_sim[1] qubits = cirq.GridQubit.rect(1, 5) circuit_batch = [] gate_ref = util.get_supported_gates() for gate in gate_ref: # Create a circuit with non zero entries on real # and imaginary values. c = cirq.Circuit() for qubit in qubits: c += cirq.Circuit(cirq.Y(qubit)**0.125) if gate_ref[gate] == 2: op_qubits = np.random.choice(qubits, size=2, replace=False) c += cirq.Circuit(gate(*op_qubits)) elif gate_ref[gate] == 1: op_qubits = np.random.choice(qubits, size=1, replace=False) c += cirq.Circuit(gate(*op_qubits)) else: raise ValueError( "Unable to test supported gates across all ops." "please update circuit_execution_ops_test.py") circuit_batch.append(c) op_states = op(util.convert_to_tensor(circuit_batch), [], [[]] * len(circuit_batch)).to_list() cirq_states = batch_util.batch_calculate_state( circuit_batch, [cirq.ParamResolver({}) for _ in circuit_batch], sim) self.assertAllClose(cirq_states, op_states, atol=1e-5, rtol=1e-5)
def test_get_supported_channels(self): """Confirm one of every channel is returned.""" mapping_1 = util.get_supported_channels() self.assertEqual( len(mapping_1.keys()), len(serializer.SERIALIZER.supported_gate_types()) - len(util.get_supported_gates()))
def _items_to_tensorize(): """Objects on which convert_to_tensor convert_from_tensor will be tested.""" return [{ 'item': x } for x in (util.random_pauli_sums(BITS, 5, 5) + [ cirq.PauliSum.from_pauli_strings([ cirq.PauliString(), cirq.PauliString(cirq.Z(cirq.GridQubit(0, 0))) ]) ] + [cirq.PauliString(), cirq.PauliString()] + [cirq.Circuit()] + [ cirq.testing.random_circuit(BITS, 25, 0.9, util.get_supported_gates()) for _ in range(5) ])]
def test_addcircuit_modify(self): """Test that a addcircuit layer correctly modifies input circuits.""" bits = cirq.GridQubit.rect(1, 20) circuit_a = cirq.testing.random_circuit(bits, 10, 0.9, util.get_supported_gates()) circuit_b = cirq.testing.random_circuit(bits, 10, 0.9, util.get_supported_gates()) expected_append = util.convert_to_tensor([circuit_a + circuit_b]) expected_prepend = util.convert_to_tensor([circuit_b + circuit_a]) append_layer = elementary.AddCircuit() prepend_layer = elementary.AddCircuit() actual_append = util.convert_to_tensor( util.from_tensor(append_layer(circuit_a, append=circuit_b))) actual_prepend = util.convert_to_tensor( util.from_tensor(prepend_layer(circuit_a, prepend=circuit_b))) self.assertEqual(expected_append.numpy()[0], actual_append.numpy()[0]) self.assertEqual(expected_prepend.numpy()[0], actual_prepend.numpy()[0])