def test_get_latest(): with experiment_testing_context(): record_1 = experiment_test_function.run() time.sleep(0.01) record_2 = experiment_test_function.run() identifier = experiment_id_to_latest_record_id( 'experiment_test_function') assert identifier == record_2.get_identifier()
def test_get_latest_identifier(): with experiment_testing_context(): exp_rec = experiment_test_function.run() print get_experiment_info('experiment_test_function') assert_experiment_record_is_correct(exp_rec) last_experiment_identifier = experiment_id_to_latest_record_id( 'experiment_test_function') assert last_experiment_identifier is not None, 'Experiment was run, this should not be none' same_exp_rec = load_experiment_record(last_experiment_identifier) assert_experiment_record_is_correct(same_exp_rec)
def test_run_and_show(): """ This is nice because it no longer required that an experiment be run and shown in a single session - each experiment just has a unique identifier that can be used to show its results whenevs. """ with experiment_testing_context(): experiment_record = experiment_test_function.run() assert_experiment_record_is_correct(experiment_record, show_figures=False) experiment_record.show()
def test_experiment_with(): """ DEPRECATED INTERFACE This syntax uses the record_experiment function directly instead of hiding it. """ with experiment_testing_context(): delete_experiment_with_id('test_exp') with record_experiment(identifier='test_exp', print_to_console=True) as exp_rec: experiment_test_function() assert_experiment_record_is_correct(exp_rec, show_figures=False)
def test_start_experiment(): """ DEPRECATED INTERFACE An alternative syntax to the with statement - less tidy but possibly better for notebooks and such because it avoids you having to indent all code in the experiment. """ with experiment_testing_context(): record = start_experiment('start_stop_test') experiment_test_function() end_current_experiment() assert_experiment_record_is_correct(record, show_figures=False)
def test_variants(): @experiment_function def add_some_numbers(a=1, b=1): c = a + b print c return c with experiment_testing_context(): # Create a named variant e1 = add_some_numbers.add_variant('b is 3', b=3) assert e1.run().get_result() == 4 # Creata a sub-variant e11 = e1.add_variant('a is 2', a=2) assert e11.run().get_result() == 5 # Create unnamed variant e2 = add_some_numbers.add_variant(b=4) assert e2.run().get_result() == 5 assert e2.get_name() == 'add_some_numbers.b=4' # Create array of variants e_list = [add_some_numbers.add_variant(b=i) for i in xrange(5, 8)] assert [e.get_name() for e in e_list] == [ 'add_some_numbers.b=5', 'add_some_numbers.b=6', 'add_some_numbers.b=7' ] assert [ e.run().get_result() == j for e, j in zip(e_list, range(6, 11)) ] # Create grid of variants e_grid = [ add_some_numbers.add_variant(a=a, b=b) for a, b in itertools.product([2, 3], [4, 5, 6]) ] assert [e.get_name() for e in e_grid] == [ 'add_some_numbers.a=2,b=4', 'add_some_numbers.a=2,b=5', 'add_some_numbers.a=2,b=6', 'add_some_numbers.a=3,b=4', 'add_some_numbers.a=3,b=5', 'add_some_numbers.a=3,b=6' ] assert add_some_numbers.get_unnamed_variant( a=2, b=4).run().get_result() == 6 assert add_some_numbers.get_unnamed_variant( a=3, b=5).run().get_result() == 8 experiments = add_some_numbers.get_all_variants(include_roots=True, include_self=True) assert len(experiments) == 13
def test_accessing_experiment_dir(): with experiment_testing_context(): @experiment_function def access_dir_test(): print '123' print 'abc' dir = get_current_experiment_dir() with open_in_experiment_dir('my_test_file.txt', 'w') as f: f.write('Experiment Directory is: {}'.format(dir)) record = access_dir_test.run() filepaths = record.list_files() assert 'my_test_file.txt' in filepaths with record.open_file('my_test_file.txt') as f: assert f.read() == 'Experiment Directory is: {}'.format( record.get_dir()) with record.open_file('output.txt') as f: assert f.read() == '123\nabc\n'
def test_saving_result(): # Run root experiment with experiment_testing_context(): rec = add_some_numbers_test_experiment.run() assert rec.get_result() == 2