From 75451c07ad03b2757c3301e79fe45df473eb866c Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira <tiagofrepereira@gmail.com> Date: Wed, 24 Jan 2018 15:19:44 +0100 Subject: [PATCH] Appended the metadata during preprocessing --- bob/bio/base/test/dummy/preprocessor.py | 11 ++++++++++- bob/bio/base/test/test_scripts.py | 2 +- bob/bio/base/tools/preprocessor.py | 13 +++++++++---- setup.py | 1 + 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/bob/bio/base/test/dummy/preprocessor.py b/bob/bio/base/test/dummy/preprocessor.py index 89376c31..506f0ef8 100644 --- a/bob/bio/base/test/dummy/preprocessor.py +++ b/bob/bio/base/test/dummy/preprocessor.py @@ -16,5 +16,14 @@ class DummyPreprocessor (Preprocessor): return data - preprocessor = DummyPreprocessor() + + +class DummyPreprocessorMetadata (DummyPreprocessor): + + def __call__(self, data, annotation, metadata=None): + """Does nothing, simply converts the data type of the data, ignoring any annotation.""" + assert metadata is not None + return super(DummyPreprocessorMetadata, self).__call__(data, annotation) + +preprocessor_metadata = DummyPreprocessorMetadata() diff --git a/bob/bio/base/test/test_scripts.py b/bob/bio/base/test/test_scripts.py index fcf369b7..60948798 100644 --- a/bob/bio/base/test/test_scripts.py +++ b/bob/bio/base/test/test_scripts.py @@ -148,7 +148,7 @@ def test_verify_resources_metadata(): # define dummy parameters parameters = [ '-d', 'dummy', - '-p', 'dummy', + '-p', 'dummy_metadata', '-e', 'dummy_metadata', '-a', 'dummy', '--zt-norm', diff --git a/bob/bio/base/tools/preprocessor.py b/bob/bio/base/tools/preprocessor.py index 83eafab8..b4140dfa 100644 --- a/bob/bio/base/tools/preprocessor.py +++ b/bob/bio/base/tools/preprocessor.py @@ -2,6 +2,7 @@ import bob.io.base import os import logging +import inspect logger = logging.getLogger("bob.bio.base") from .FileSelector import FileSelector @@ -45,6 +46,7 @@ def preprocess(preprocessor, groups = None, indices = None, allow_missing_files data_files = fs.original_data_list(groups=groups) original_directory, original_extension = fs.original_directory_and_extension() preprocessed_data_files = fs.preprocessed_data_list(groups=groups) + metadata = fs.original_data_list(groups=groups) # select a subset of keys to iterate if indices is not None: @@ -58,7 +60,7 @@ def preprocess(preprocessor, groups = None, indices = None, allow_missing_files # read annotation files annotation_list = fs.annotation_list(groups=groups) - # iterate over the selected files + # iterate over the selected files for i in index_range: preprocessed_data_file = preprocessed_data_files[i] file_object = data_files[i] @@ -78,7 +80,11 @@ def preprocess(preprocessor, groups = None, indices = None, allow_missing_files annotations = fs.get_annotations(annotation_list[i]) # call the preprocessor - preprocessed_data = preprocessor(data, annotations) + if "metadata" in inspect.getargspec(preprocessor.__call__).args: + preprocessed_data = preprocessor(data, annotations, metadata=metadata[i]) + else: + preprocessed_data = preprocessor(data, annotations) + if preprocessed_data is None: if allow_missing_files: logger.debug("... Processing original data file '%s' was not successful", file_name) @@ -90,8 +96,7 @@ def preprocess(preprocessor, groups = None, indices = None, allow_missing_files preprocessor.write_data(preprocessed_data, preprocessed_data_file) else: - logger.debug("... Skipping original data file '%s' since preprocessed data '%s' exists", file_name, preprocessed_data_file) - + logger.debug("... Skipping original data file '%s' since preprocessed data '%s' exists", file_name, preprocessed_data_file) def read_preprocessed_data(file_names, preprocessor, split_by_client = False, allow_missing_files = False): diff --git a/setup.py b/setup.py index 91b66c18..4ddf3c93 100644 --- a/setup.py +++ b/setup.py @@ -95,6 +95,7 @@ setup( 'bob.bio.preprocessor': [ 'dummy = bob.bio.base.test.dummy.preprocessor:preprocessor', # for test purposes only 'filename = bob.bio.base.config.preprocessor.filename:preprocessor', + 'dummy_metadata = bob.bio.base.test.dummy.preprocessor:preprocessor_metadata', ], 'bob.bio.extractor': [ -- GitLab