def main(): """Reproduce a specified experiment.""" logs.initialize() parser = argparse.ArgumentParser( description='Reproduce an experiment from a full config file.') parser.add_argument('-c', '--experiment-config', help='Path to the experiment configuration yaml file.', required=True) parser.add_argument('-e', '--experiment-name', help='Experiment name.', required=True) parser.add_argument('-d', '--description', help='Description of the experiment.', required=False) args = parser.parse_args() config = yaml_utils.read(args.experiment_config) run_experiment.validate_experiment_name(args.experiment_name) if args.experiment_name == config['experiment']: raise Exception('Must use a different experiment name.') config['experiment'] = args.experiment_name config['description'] = args.description validate_config(config) run_experiment.start_experiment_from_full_config(config) return 0
def validate_experiment_name(experiment_name): """Returns True if |experiment_name| is valid.""" if EXPERIMENT_NAME_REGEX.match(experiment_name) is None: logger.error('Experiment name: %s is not valid.', experiment_name) return False try: run_experiment.validate_experiment_name(experiment_name) return True except run_experiment.ValidationError: logger.error('Experiment name: %s is not valid.', experiment_name) return False
def test_validate_experiment_name_invalid(experiment_name): """Tests that validate_experiment_name raises an exception when passed an an invalid experiment name.""" with pytest.raises(Exception) as exception: run_experiment.validate_experiment_name(experiment_name) assert 'is invalid. Must match' in str(exception.value)
def test_validate_experiment_name_valid(): """Tests that validate_experiment_name says that a valid experiment_name is valid.""" run_experiment.validate_experiment_name('experiment-1')