def test_lists(): sampler = ScenicSampler.fromScenicCode( 'ego = Object with foo [1, -1, 3.3]', maxIterations=1) sample = sampler.nextSample() foo = sample.objects.object0.foo assert type(foo) is tuple assert foo == pytest.approx((1, -1, 3.3))
def main(): # path = '../Scenic-devel/examples/carla/pedestrian.scenic' path = 'fullScenario.scenic' sampler = ScenicSampler.fromScenario(path) falsifier_params = DotMap( n_iters=1, save_error_table=True, save_safe_table=True, error_table_path="failures_file.txt", ) falsifier_params.fal_thres = 4 # falsifier_params.fal_thres = 7 server_options = DotMap(maxSteps=800, verbosity=0) falsifier = generic_falsifier(sampler=sampler, falsifier_params=falsifier_params, server_class=ScenicServer, server_options=server_options, monitor=specification_monitor(specification)) t0 = time.time() falsifier.run_falsifier() t = time.time() - t0 print( f'Generated {len(falsifier.samples)} samples in {t} seconds with 1 worker' ) print(f'Number of counterexamples: {len(falsifier.error_table.table)}')
def test_webots_road(pathToLocalFile): path = pathToLocalFile('scenic_road.scenic') sampler = ScenicSampler.fromScenario(path) for i in range(3): sample = sampler.nextSample() print(f'Sample #{i}:') print(sample)
def test_quoted_param(): sampler = ScenicSampler.fromScenicCode( 'param "x/y" = (3, 5)\n' 'ego = Object', maxIterations=1) sample = sampler.nextSample() v = sampler.paramDictForSample(sample)['x/y'] assert type(v) is float assert 3 <= v <= 5
def test_params(): sampler = ScenicSampler.fromScenicCode('param x = (3, 5)\n' 'ego = Object', maxIterations=1) sample = sampler.nextSample() x = sample.params.x assert type(x) is float assert 3 <= x <= 5
def test_objects(): sampler = ScenicSampler.fromScenicCode('ego = Object at 4 @ 9', maxIterations=1) sample = sampler.nextSample() objects = sample.objects assert len(objects) == 1 pos = objects.object0.position assert type(pos) is tuple assert pos == (4, 9)
def test_object_order(): sampler = ScenicSampler.fromScenicCode( 'ego = Object at 0 @ 0\n' 'for i in range(1, 11):\n' ' Object at 2*i @ 0', maxIterations=1) sample = sampler.nextSample() objects = sample.objects assert len(objects) == 11 for i, obj in enumerate(objects): assert obj.position == pytest.approx((2 * i, 0))
def test_driving_dynamic(pathToLocalFile): path = pathToLocalFile('scenic_driving.scenic') sampler = ScenicSampler.fromScenario(path) falsifier_params = DotMap( n_iters=3, save_error_table=False, save_safe_table=False, ) server_options = DotMap(maxSteps=2, verbosity=3) falsifier = generic_falsifier(sampler=sampler, falsifier_params=falsifier_params, server_class=ScenicServer, server_options=server_options) falsifier.run_falsifier()
def test_active_sampling(): sampler = ScenicSampler.fromScenicCode( 'from dotmap import DotMap\n' 'param verifaiSamplerType = "ce"\n' 'ce_params = DotMap(alpha=0.9)\n' 'ce_params.cont.buckets = 2\n' 'param verifaiSamplerParams = ce_params\n' 'ego = Object at VerifaiRange(-1, 1) @ 0', maxIterations=1) def f(sample): return -1 if sample.objects.object0.position[0] < 0 else 1 samples = sampleWithFeedback(sampler, 120, f) xs = [sample.objects.object0.position[0] for sample in samples] assert all(-1 <= x <= 1 for x in xs) assert any(x > 0 for x in xs) assert 66 <= sum(x < 0 for x in xs[50:])
from verifai.samplers.scenic_sampler import ScenicSampler from dotmap import DotMap from verifai.falsifier import generic_falsifier path_to_scenic_file = 'lane_cones.sc' sampler = ScenicSampler.fromScenario(path_to_scenic_file) MAX_ITERS = 20 PORT = 8888 MAXREQS = 5 BUFSIZE = 4096 falsifier_params = DotMap() falsifier_params.port = PORT falsifier_params.n_iters = MAX_ITERS falsifier_params.maxreqs = MAXREQS falsifier_params.bufsize = BUFSIZE falsifier_params.save_error_table = False falsifier_params.save_good_samples = False falsifier = generic_falsifier(sampler=sampler, sampler_type='scenic', falsifier_params=falsifier_params) falsifier.run_falsifier() print("Scenic Samples") for i in falsifier.samples.keys(): print("Sample: ", i) print(falsifier.samples[i])
def test_active_save_restore(tmpdir): sampler = ScenicSampler.fromScenicCode( 'param verifaiSamplerType = "halton"\n' 'ego = Object at VerifaiRange(-1, 1) @ 0', maxIterations=1) checkSaveRestore(sampler, tmpdir)
def test_save_restore(tmpdir): sampler = ScenicSampler.fromScenicCode('ego = Object at (-1, 1) @ 0', maxIterations=1) checkSaveRestore(sampler, tmpdir)
def test_driving(pathToLocalFile): path = pathToLocalFile('scenic_driving.scenic') sampler = ScenicSampler.fromScenario(path) runSampler(sampler)
def test_webots_road(pathToLocalFile): path = pathToLocalFile('scenic_road.scenic') sampler = ScenicSampler.fromScenario(path) runSampler(sampler)