def example_sweeps(): empty_sweep = params_pb2.ParameterSweep() empty_product = params_pb2.ParameterSweep(sweep=params_pb2.ProductSweep()) empty_zip = params_pb2.ParameterSweep(sweep=params_pb2.ProductSweep( factors=[params_pb2.ZipSweep(), params_pb2.ZipSweep()])) full_sweep = params_pb2.ParameterSweep(sweep=params_pb2.ProductSweep( factors=[ params_pb2.ZipSweep(sweeps=[ params_pb2.SingleSweep( parameter_key='11', linspace=params_pb2.Linspace( first_point=0, last_point=10, num_points=5)), params_pb2.SingleSweep(parameter_key='12', points=params_pb2.Points( points=range(7))) ]), params_pb2.ZipSweep(sweeps=[ params_pb2.SingleSweep( parameter_key='21', linspace=params_pb2.Linspace( first_point=0, last_point=10, num_points=11)), params_pb2.SingleSweep(parameter_key='22', points=params_pb2.Points( points=range(13))) ]) ])) return [empty_sweep, empty_product, empty_zip, full_sweep]
def test_param_sweep_keys(): ps = params_pb2.ParameterSweep( sweep=params_pb2.ProductSweep( factors=[ params_pb2.ZipSweep( sweeps=[ params_pb2.SingleSweep( parameter_key='foo', points=params_pb2.Points(points=range(5)) ), params_pb2.SingleSweep( parameter_key='bar', points=params_pb2.Points(points=range(7)) ), ] ), params_pb2.ZipSweep( sweeps=[ params_pb2.SingleSweep( parameter_key='baz', points=params_pb2.Points(points=range(11)) ), params_pb2.SingleSweep( parameter_key='qux', points=params_pb2.Points(points=range(13)) ), ] ), ] ) ) out = params.sweep_from_proto(ps) assert out.keys == ['foo', 'bar', 'baz', 'qux']
def test_gen_param_sweep(): ps = params_pb2.ParameterSweep( sweep=params_pb2.ProductSweep( factors=[ params_pb2.ZipSweep( sweeps=[ params_pb2.SingleSweep( parameter_key='foo', points=params_pb2.Points(points=[1, 2, 3]) ) ] ), params_pb2.ZipSweep( sweeps=[ params_pb2.SingleSweep( parameter_key='bar', points=params_pb2.Points(points=[4, 5]) ) ] ), ] ) ) out = params.sweep_from_proto(ps) assert out == cirq.Product( cirq.Zip(cirq.Points('foo', [1, 2, 3])), cirq.Zip(cirq.Points('bar', [4, 5])) )
def test_sweep_from_proto_missing_type(): ps = params_pb2.ParameterSweep(sweep=params_pb2.ProductSweep(factors=[ params_pb2.ZipSweep( sweeps=[params_pb2.SingleSweep(parameter_key='foo')]) ])) with pytest.raises(ValueError): params.sweep_from_proto(ps)
def test_gen_param_sweep_zip(): sweep = params_pb2.ZipSweep(sweeps=[ params_pb2.SingleSweep(parameter_key='foo', points=params_pb2.Points(points=[1, 2, 3])), params_pb2.SingleSweep(parameter_key='bar', points=params_pb2.Points(points=[4, 5])) ]) out = params._sweep_from_param_sweep_zip_proto(sweep) assert out == cirq.Points('foo', [1, 2, 3]) + cirq.Points('bar', [4, 5])
def test_param_sweep_size(): ps = params_pb2.ParameterSweep(sweep=params_pb2.ProductSweep(factors=[ params_pb2.ZipSweep(sweeps=[ params_pb2.SingleSweep(parameter_key='11', linspace=params_pb2.Linspace(first_point=0, last_point=10, num_points=5)), params_pb2.SingleSweep(parameter_key='12', points=params_pb2.Points(points=range(7))) ]), params_pb2.ZipSweep(sweeps=[ params_pb2.SingleSweep( parameter_key='21', linspace=params_pb2.Linspace( first_point=0, last_point=10, num_points=11)), params_pb2.SingleSweep(parameter_key='22', points=params_pb2.Points(points=range(13))) ]) ])) # 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(params.sweep_from_proto(ps)) == 5 * 11
def _sweep_zip_to_proto(sweep: sweeps.Zip) -> params_pb2.ZipSweep: sweep_list = [ _single_param_sweep_to_proto(cast(sweeps.SingleSweep, s)) for s in sweep.sweeps ] return params_pb2.ZipSweep(sweeps=sweep_list)
def test_param_sweep_size_no_sweeps(): ps = params_pb2.ParameterSweep(sweep=params_pb2.ProductSweep( factors=[params_pb2.ZipSweep(), params_pb2.ZipSweep()])) assert len(params.sweep_from_proto(ps)) == 1