def test_select_all(method): q = cirq.LineQubit(0) ops = [cirq.ops.rz(0.01).on(q), cirq.ops.rz(-0.77).on(q)] indices = _select(ops, 0.0, method=method, random_state=np.random.RandomState(1)) assert np.allclose(indices, np.array(list(range(len(ops)))))
def test_select(method): q = cirq.NamedQubit("q") non_clifford_ops = [ cirq.ops.rz(a).on(q) for a in np.linspace(1, 2, 10) / np.e ] fraction_non_clifford = 0.4 indices = _select( non_clifford_ops, fraction_non_clifford, method=method, sigma=0.5, random_state=np.random.RandomState(1), ) assert all(isinstance(index, int) for index in indices) assert len(indices) == int( round((1.0 - fraction_non_clifford) * len(non_clifford_ops)))
def test_select_bad_method(): with pytest.raises(ValueError, match="Arg `method_select` must be"): _select([], fraction_non_clifford=0.0, method="unknown method")
def test_select_some(method): n = 10 # Number to select. q = cirq.GridQubit(1, 1) ops = [cirq.ops.rz(a).on(q) for a in np.random.randn(n)] indices = _select(ops, fraction_non_clifford=0.5, method=method) assert len(indices) == n // 2