Beispiel #1
0
def test_experiment_double_named_config():
    ex = Experiment()

    @ex.config
    def config():
        a = 0
        d = {
            'e': 0,
            'f': 0
        }

    @ex.named_config
    def A():
        a = 2
        d = {
            'e': 2,
            'f': 2
        }

    @ex.named_config
    def B():
        d = {'f': -1}

    @ex.main
    def run(a, d):
        return a, d['e'], d['f']

    assert ex.run().result == (0, 0, 0)
    assert ex.run(named_configs=['A']).result == (2, 2, 2)
    assert ex.run(named_configs=['B']).result == (0, 0, -1)
    assert ex.run(named_configs=['A', 'B']).result == (2, 2, -1)
    assert ex.run(named_configs=['B', 'A']).result == (2, 2, 2)
Beispiel #2
0
def test_experiment_double_named_config():
    ex = Experiment()

    @ex.config
    def config():
        a = 0
        d = {
            'e': 0,
            'f': 0
        }

    @ex.named_config
    def A():
        a = 2
        d = {
            'e': 2,
            'f': 2
        }

    @ex.named_config
    def B():
        d = {'f': -1}

    @ex.main
    def run(a, d):
        return a, d['e'], d['f']

    assert ex.run().result == (0, 0, 0)
    assert ex.run(named_configs=['A']).result == (2, 2, 2)
    assert ex.run(named_configs=['B']).result == (0, 0, -1)
    assert ex.run(named_configs=['A', 'B']).result == (2, 2, -1)
    assert ex.run(named_configs=['B', 'A']).result == (2, 2, 2)
Beispiel #3
0
def test_experiment_named_config_subingredient():
    somemod = Ingredient("somemod")

    @somemod.config
    def sub_cfg():
        a = 15

    @somemod.capture
    def get_answer(a):
        return a

    @somemod.named_config
    def nsubcfg():
        a = 16

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.config
    def cfg():
        a = 1

    @ex.named_config
    def ncfg():
        a = 2
        somemod = {'a': 25}

    @ex.main
    def main(a):
        return a, get_answer()

    assert ex.run().result == (1, 15)
    assert ex.run(named_configs=['somemod.nsubcfg']).result == (1, 16)
    assert ex.run(named_configs=['ncfg']).result == (2, 25)
    assert ex.run(named_configs=['ncfg', 'somemod.nsubcfg']).result == (2, 16)
    assert ex.run(named_configs=['somemod.nsubcfg', 'ncfg']).result == (2, 25)
Beispiel #4
0
def test_double_nested_config():
    sub_sub_ing = Ingredient('sub_sub_ing')
    sub_ing = Ingredient('sub_ing', [sub_sub_ing])
    ing = Ingredient('ing', [sub_ing])
    ex = Experiment('ex', [ing])

    @ex.config
    def config():
        a = 1
        seed = 42

    @ing.config
    def config():
        b = 1

    @sub_ing.config
    def config():
        c = 2

    @sub_sub_ing.config
    def config():
        d = 3

    @sub_sub_ing.capture
    def sub_sub_ing_main(_config):
        assert _config == {
            'd': 3
        }, _config

    @sub_ing.capture
    def sub_ing_main(_config):
        assert _config == {
            'c': 2,
            'sub_sub_ing': {'d': 3}
        }, _config

    @ing.capture
    def ing_main(_config):
        assert _config == {
            'b': 1,
            'sub_sub_ing': {'d': 3},
            'sub_ing': {'c': 2}
        }, _config

    @ex.main
    def main(_config):
        assert _config == {
            'a': 1,
            'sub_sub_ing': {'d': 3},
            'sub_ing': {'c': 2},
            'ing': {'b': 1},
            'seed': 42
        }, _config

        ing_main()
        sub_ing_main()
        sub_sub_ing_main()

    ex.run()
Beispiel #5
0
def test_experiment_run():
    ex = Experiment("some_experiment")

    @ex.main
    def main():
        return 12

    assert ex.run().result == 12
Beispiel #6
0
def test_experiment_run():
    ex = Experiment("some_experiment")

    @ex.main
    def main():
        return 12

    assert ex.run().result == 12
Beispiel #7
0
def test_double_nested_config():
    sub_sub_ing = Ingredient('sub_sub_ing')
    sub_ing = Ingredient('sub_ing', [sub_sub_ing])
    ing = Ingredient('ing', [sub_ing])
    ex = Experiment('ex', [ing])

    @ex.config
    def config():
        a = 1

    @ing.config
    def config():
        b = 1

    @sub_ing.config
    def config():
        c = 2

    @sub_sub_ing.config
    def config():
        d = 3

    @sub_sub_ing.capture
    def sub_sub_ing_main(_config):
        assert _config == {
            'd': 3
        }, _config

    @sub_ing.capture
    def sub_ing_main(_config):
        assert _config == {
            'c': 2,
            'sub_sub_ing': {'d': 3}
        }, _config

    @ing.capture
    def ing_main(_config):
        assert _config == {
            'b': 1,
            'sub_sub_ing': {'d': 3},
            'sub_ing': {'c': 2}
        }, _config

    @ex.main
    def main(_config):
        _config.pop('seed')
        assert _config == {
            'a': 1,
            'sub_sub_ing': {'d': 3},
            'sub_ing': {'c': 2},
            'ing': {'b': 1}
        }, _config

        ing_main()
        sub_ing_main()
        sub_sub_ing_main()

    ex.run()
Beispiel #8
0
def test_additional_gatherers():
    @host_info_gatherer("hello")
    def get_hello():
        return "hello world"

    experiment = Experiment("ator3000", additional_host_info=[get_hello])

    @experiment.main
    def foo():
        pass

    experiment.run()
    assert experiment.current_run.host_info["hello"] == "hello world"
Beispiel #9
0
def test_config_docs_are_preserved(ing):
    @ing.config
    def ing_cfg():
        a = 5  # documented entry

    ex = Experiment(ingredients=[ing])

    @ex.main
    def run():
        return 5

    run = ex._create_run()
    assert 'tickle.a' in run.config_modifications.docs
    assert run.config_modifications.docs['tickle.a'] == 'documented entry'
Beispiel #10
0
def test_config_docs_are_preserved(ing):
    @ing.config
    def ing_cfg():
        a = 5  # documented entry

    ex = Experiment(ingredients=[ing])

    @ex.main
    def run():
        return 5

    run = ex._create_run()
    assert 'tickle.a' in run.config_modifications.docs
    assert run.config_modifications.docs['tickle.a'] == 'documented entry'
Beispiel #11
0
def test_ingredient_command():
    m = Ingredient("somemod")

    m.add_config(a=42, b='foo{}')

    @m.command
    def transmogrify(a, b):
        return b.format(a)

    assert 'transmogrify' in m.commands
    assert m.commands['transmogrify'] == transmogrify
    ex = Experiment('foo', ingredients=[m])

    assert ex.run_command('somemod.transmogrify').result == 'foo42'
Beispiel #12
0
def test_ingredient_command():
    m = Ingredient("somemod")

    m.add_config(a=42, b='foo{}')

    @m.command
    def transmogrify(a, b):
        return b.format(a)

    assert 'transmogrify' in m.commands
    assert m.commands['transmogrify'] == transmogrify
    ex = Experiment('foo', ingredients=[m])

    assert ex.run_command('somemod.transmogrify').result == 'foo42'
Beispiel #13
0
def test_parse_tinydboption_apply(tmpdir):

    exp = Experiment()
    args = os.path.join(tmpdir.strpath)

    TinyDbOption.apply(args, exp)
    assert type(exp.observers[0]) == TinyDbObserver
Beispiel #14
0
def test_additional_cli_options(command_line_option):

    executed = [False]

    @cli_option("-w", "--warning")
    def dummy_option(args, run):
        executed[0] = args

    experiment = Experiment("ator3000", additional_cli_options=[dummy_option])

    @experiment.main
    def foo():
        pass

    experiment.run_commandline([__file__, command_line_option, "10"])
    assert executed[0] == "10"
Beispiel #15
0
def test_experiment_run_access_subingredient():
    somemod = Ingredient("somemod")

    @somemod.config
    def cfg():
        a = 5
        b = 'foo'

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.main
    def main(somemod):
        return somemod

    r = ex.run().result
    assert r['a'] == 5
    assert r['b'] == 'foo'
Beispiel #16
0
def test_experiment_run_access_subingredient():
    somemod = Ingredient("somemod")

    @somemod.config
    def cfg():
        a = 5
        b = 'foo'

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.main
    def main(somemod):
        return somemod

    r = ex.run().result
    assert r['a'] == 5
    assert r['b'] == 'foo'
Beispiel #17
0
def test_experiment_run_subingredient_function():
    somemod = Ingredient("somemod")

    @somemod.config
    def cfg():
        a = 5
        b = 'foo'

    @somemod.capture
    def get_answer(b):
        return b

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.main
    def main():
        return get_answer()

    assert ex.run().result == 'foo'
Beispiel #18
0
def test_experiment_run_subingredient_function():
    somemod = Ingredient("somemod")

    @somemod.config
    def cfg():
        a = 5
        b = 'foo'

    @somemod.capture
    def get_answer(b):
        return b

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.main
    def main():
        return get_answer()

    assert ex.run().result == 'foo'
Beispiel #19
0
def test_experiment_named_config_subingredient():
    somemod = Ingredient("somemod")

    @somemod.config
    def sub_cfg():
        a = 15

    @somemod.capture
    def get_answer(a):
        return a

    @somemod.named_config
    def nsubcfg():
        a = 16

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.config
    def cfg():
        a = 1

    @ex.named_config
    def ncfg():
        a = 2
        somemod = {'a': 25}

    @ex.main
    def main(a):
        return a, get_answer()

    assert ex.run().result == (1, 15)
    assert ex.run(named_configs=['somemod.nsubcfg']).result == (1, 16)
    assert ex.run(named_configs=['ncfg']).result == (2, 25)
    assert ex.run(named_configs=['ncfg', 'somemod.nsubcfg']).result == (2, 16)
    assert ex.run(named_configs=['somemod.nsubcfg', 'ncfg']).result == (2, 25)
Beispiel #20
0
def test_experiment_named_config_subingredient_overwrite():
    somemod = Ingredient("somemod")

    @somemod.capture
    def get_answer(a):
        return a

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.named_config
    def ncfg():
        somemod = {'a': 1}

    @ex.main
    def main():
        return get_answer()

    assert ex.run(named_configs=['ncfg']).result == 1
    assert ex.run(config_updates={'somemod': {'a': 2}}).result == 2
    assert ex.run(named_configs=['ncfg'],
                  config_updates={'somemod': {'a': 2}}
                  ).result == 2
Beispiel #21
0
def test_experiment_named_config_subingredient_overwrite():
    somemod = Ingredient("somemod")

    @somemod.capture
    def get_answer(a):
        return a

    ex = Experiment("some_experiment", ingredients=[somemod])

    @ex.named_config
    def ncfg():
        somemod = {'a': 1}

    @ex.main
    def main():
        return get_answer()

    assert ex.run(named_configs=['ncfg']).result == 1
    assert ex.run(config_updates={'somemod': {'a': 2}}).result == 2
    assert ex.run(named_configs=['ncfg'],
                  config_updates={'somemod': {'a': 2}}
                  ).result == 2
Beispiel #22
0
def test_named_config_and_ingredient():
    ing = Ingredient('foo')

    @ing.config
    def cfg():
        a = 10

    ex = Experiment(ingredients=[ing])

    @ex.config
    def default():
        b = 20

    @ex.named_config
    def named():
        b = 30

    @ex.main
    def main():
        pass

    r = ex.run(named_configs=['named'])
    assert r.config['b'] == 30
    assert r.config['foo'] == {'a': 10}
Beispiel #23
0
def test_named_config_and_ingredient():
    ing = Ingredient("foo")

    @ing.config
    def cfg():
        a = 10

    ex = Experiment(ingredients=[ing])

    @ex.config
    def default():
        b = 20

    @ex.named_config
    def named():
        b = 30

    @ex.main
    def main():
        pass

    r = ex.run(named_configs=["named"])
    assert r.config["b"] == 30
    assert r.config["foo"] == {"a": 10}
Beispiel #24
0
def ex():
    return Experiment('ator3000')
Beispiel #25
0
from sacred.experiment import Experiment

ex = Experiment('named_configs_demo')


@ex.config
def cfg():
    a = 10
    b = 3 * a
    c = "foo"


@ex.named_config
def variant1():
    a = 100
    c = "bar"


@ex.main
def my_main(a: int):
    print(a)


if __name__ == "__main__":
    ex.run_commandline()
Beispiel #26
0
from sacred.experiment import Experiment

from carbrain.datasets import DATASET_LIBRARY
from carbrain.datasets.util import AnnotationType

ex = Experiment('CenterNet')

@ex.config
def config():
    dataset = 'nuscenes'
    dataset_config = {'split': 'v1.0-mini'}

    # check that we use a dataset which is capable of supplying 2D bounding boxes
    available_annotation_types = DATASET_LIBRARY[dataset].available_annotation_types
    if AnnotationType.OBJECT_DETECTION_2D not in available_annotation_types:
        raise ValueError('The dataset {} does not supply 2D bounding boxes.'.format(dataset))


@ex.automain
def train(_config, _log, _seed):
    transforms =
    dataset = DATASET_LIBRARY[_config['dataset']](**_config['dataset_config'])
Beispiel #27
0
def ex():
    return Experiment("ator3000")