def test_sweep_from_proto_dict_missing_type(): s1 = { 'parameter_key': 'foo', } ps = { 'sweep': { 'factors': [ { 'sweeps': [s1] }, ] } } with pytest.raises(ValueError): cg.sweep_from_proto_dict(ps)
def test_param_sweep_keys(): s11 = { 'parameter_key': 'foo', 'points': { 'points': range(5) }, } s12 = { 'parameter_key': 'bar', 'points': { 'points': range(7) }, } s21 = { 'parameter_key': 'baz', 'points': { 'points': range(11) }, } s22 = {'parameter_key': 'qux', 'points': {'points': range(13)}} ps = { 'sweep': { 'factors': [{ 'sweeps': [s11, s12], }, { 'sweeps': [s21, s22] }] } } out = cg.sweep_from_proto_dict(ps) assert out.keys == ['foo', 'bar', 'baz', 'qux']
def test_param_sweep_size(): s11 = { 'parameter_key': '11', 'linspace': { 'first_point': 0, 'last_point': 10, 'num_points': 5 } } s12 = {'parameter_key': '12', 'points': {'points': range(7)}} s21 = { 'parameter_key': '21', 'linspace': { 'first_point': 0, 'last_point': 10, 'num_points': 11 } } s22 = {'parameter_key': '22', 'points': {'points': range(13)}} ps = { 'sweep': { 'factors': [{ 'sweeps': [s11, s12], }, { 'sweeps': [s21, s22] }] } } # Sweeps sx1 and sx2 are zipped, so should use num number of points. # These are then producted, so this should multiply number of points. assert len(cg.sweep_from_proto_dict(ps)) == 5 * 11
def test_gen_param_sweep(): s1 = {'parameter_key': 'foo', 'points': {'points': [1, 2, 3]}} s2 = {'parameter_key': 'bar', 'points': {'points': [4, 5]}} ps = {'sweep': {'factors': [{'sweeps': [s1]}, {'sweeps': [s2]}]}} out = cg.sweep_from_proto_dict(ps) assert out == cirq.Product(cirq.Zip(cirq.Points('foo', [1, 2, 3])), cirq.Zip(cirq.Points('bar', [4, 5])))
def test_empty_param_sweep_keys(): assert cg.sweep_from_proto_dict({}).keys == []
def test_gen_empty_param_sweep(): out = cg.sweep_from_proto_dict({}) assert out == cirq.UnitSweep
def test_sweep_to_proto_dict(sweep, expected): proto = cg.sweep_to_proto_dict(sweep) out = cg.sweep_from_proto_dict(proto) assert out == expected
def test_param_sweep_size_versus_gen(param_sweep): sweep = cg.sweep_from_proto_dict(param_sweep) print(sweep) predicted_size = len(sweep) out = list(sweep) assert len(out) == predicted_size
def test_param_sweep_size_no_sweeps(): ps = {'sweep': {'factors': [{}, {}]}} assert len(cg.sweep_from_proto_dict(ps)) == 1
def test_empty_param_sweep_size(): assert len(cg.sweep_from_proto_dict({})) == 1