diff --git a/bob/bio/base/tools/command_line.py b/bob/bio/base/tools/command_line.py index 70b4ad431ffa529246c363201660ee3f40ec51dd..cf8010c159094aed99a1de3d29e0bc2c44e64d3c 100644 --- a/bob/bio/base/tools/command_line.py +++ b/bob/bio/base/tools/command_line.py @@ -234,8 +234,15 @@ def initialize(parsers, command_line_parameters = None, skips = []): parser = parsers['main'] args = parser.parse_args(command_line_parameters) + # check if the "create_configuration_file" function was requested if args.create_configuration_file is not None: + # update list of options to be written into the config file + set_required_common_optional_arguments( + required = ['database', 'preprocessor', 'extractor', 'algorithm', 'sub_directory'], + common = ['protocol', 'grid', 'parallel', 'verbose', 'groups', 'temp_directory', 'result_directory', 'zt_norm', 'allow_missing_files', 'dry_run', 'force'], + optional = ['preprocessed_directory', 'extracted_directory', 'projected_directory', 'model_directories', 'extractor_file', 'projector_file', 'enroller_file'] + ) # this will exit at the end _create_configuration_file(parsers, args) @@ -441,6 +448,16 @@ def write_info(args, command_line_parameters, executable): except IOError: logger.error("Could not write the experimental setup into file '%s'", args.info_file) +global _required_list, _common_list, _optional_list +_required_list = set() +_common_list = set() +_optional_list = set() + +def set_required_common_optional_arguments(required = [], common = [], optional = []): + _required_list.update(required) + _common_list.update(common) + _optional_list.update(optional) + def _create_configuration_file(parsers, args): """This function writes an empty configuration file with all possible options.""" logger.info("Writing configuration file %s", args.create_configuration_file) @@ -462,11 +479,6 @@ def _create_configuration_file(parsers, args): optional += "# Files and directories might commonly be specified with absolute paths or relative to the temp_directory.\n# Change these options, e.g., to reuse parts of other experiments.\n\n\n" rare = "##################################################\n############ RARELY CHANGED ARGUMENTS ############\n##################################################\n\n\n" - required_list = set(['database', 'preprocessor', 'extractor', 'algorithm', 'sub_directory']) - common_list = set(['protocol', 'grid', 'parallel', 'verbose', 'groups', 'temp_directory', 'result_directory', 'zt_norm', 'allow_missing_files', 'dry_run', 'force']) - optional_list = set(['preprocessed_directory', 'extracted_directory', 'projected_directory', 'model_directories', 'extractor_file', 'projector_file', 'enroller_file']) - - with open(args.create_configuration_file, 'w') as f: for action in parser._actions[3:]: @@ -479,11 +491,11 @@ def _create_configuration_file(parsers, args): else: tmp += "#%s = %s\n\n\n" % (action.dest, action.default) - if action.dest in required_list: + if action.dest in _required_list: required += tmp - elif action.dest in common_list: + elif action.dest in _common_list: common += tmp - elif action.dest in optional_list: + elif action.dest in _optional_list: optional += tmp else: rare += tmp