diff --git a/bob/bio/base/tools/FileSelector.py b/bob/bio/base/tools/FileSelector.py index 2a3e56df2983f7390a8faa7dc1ad28d835b04b96..63313a7d493d404afe0194c977b694496faece1b 100644 --- a/bob/bio/base/tools/FileSelector.py +++ b/bob/bio/base/tools/FileSelector.py @@ -110,6 +110,10 @@ class FileSelector: """Returns the list of original data that can be used for preprocessing.""" return self.database.original_file_names(self.database.all_files(groups=groups)) + def original_data_list_files(self, groups = None): + """Returns the list of original data that can be used for preprocessing.""" + return (self.database.all_files(groups=groups), self.database.database.original_directory, self.database.database.original_extension) + def annotation_list(self, groups = None): """Returns the list of annotations objects.""" return self.database.all_files(groups=groups) diff --git a/bob/bio/base/tools/preprocessor.py b/bob/bio/base/tools/preprocessor.py index 01dea478a7976255216d159ba4d1653d9c1e05b5..86ec390c0f10f2adc4935841a31777341a6a019b 100644 --- a/bob/bio/base/tools/preprocessor.py +++ b/bob/bio/base/tools/preprocessor.py @@ -42,7 +42,7 @@ def preprocess(preprocessor, groups = None, indices = None, allow_missing_files fs = FileSelector.instance() # get the file lists - data_files = fs.original_data_list(groups=groups) + data_files, original_directory, original_extension = fs.original_data_list_files(groups=groups) preprocessed_data_files = fs.preprocessed_data_list(groups=groups) # select a subset of keys to iterate @@ -60,12 +60,16 @@ def preprocess(preprocessor, groups = None, indices = None, allow_missing_files # iterate over the selected files for i in index_range: preprocessed_data_file = preprocessed_data_files[i] - file_name = data_files[i] + file_object = data_files[i] + file_name = file_object.make_path(original_directory, original_extension) # check for existence if not utils.check_file(preprocessed_data_file, force, 1000): logger.debug("... Processing original data file '%s'", file_name) - data = preprocessor.read_original_data(file_name) + if hasattr(file_object, 'load'): + data = file_object.load(original_directory, original_extension) + else: + data = preprocessor.read_original_data(file_name) # create output directory before reading the data file (is sometimes required, when relative directories are specified, especially, including a .. somewhere) bob.io.base.create_directories_safe(os.path.dirname(preprocessed_data_file))