From ca797325f4ce5683973c176e933739efe059500e Mon Sep 17 00:00:00 2001
From: Tiago Freitas Pereira <tiagofrepereira@gmail.com>
Date: Wed, 3 Jan 2018 14:20:56 +0100
Subject: [PATCH] Included metadata durint the feature extraction. Ongoing with
 cd workspace_HTFace/

Included metadata durint the feature extraction. Ongoing with cd workspace_HTFace/
---
 bob/bio/base/test/dummy/extractor.py | 11 +++++++++++
 bob/bio/base/test/test_scripts.py    | 19 +++++++++++++++++++
 bob/bio/base/tools/extractor.py      |  7 ++++++-
 setup.py                             |  1 +
 4 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/bob/bio/base/test/dummy/extractor.py b/bob/bio/base/test/dummy/extractor.py
index eca7517c..dbdf0946 100644
--- a/bob/bio/base/test/dummy/extractor.py
+++ b/bob/bio/base/test/dummy/extractor.py
@@ -25,3 +25,14 @@ class DummyExtractor (Extractor):
     return data.astype(numpy.float).flatten()
 
 extractor = DummyExtractor()
+
+
+class DummyExtractorMetadata (DummyExtractor):
+
+  def __call__(self, data, metadata=None):
+    """Does nothing, simply converts the data type of the data, ignoring any annotation."""
+    assert metadata is not None
+    assert self.model
+    return data.astype(numpy.float).flatten()
+
+extractor_metadata = DummyExtractorMetadata()
diff --git a/bob/bio/base/test/test_scripts.py b/bob/bio/base/test/test_scripts.py
index 05aa6cad..fcf369b7 100644
--- a/bob/bio/base/test/test_scripts.py
+++ b/bob/bio/base/test/test_scripts.py
@@ -143,6 +143,25 @@ def test_verify_resources():
   _verify(parameters, test_dir, 'test_resource')
 
 
+def test_verify_resources_metadata():
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
+  # define dummy parameters
+  parameters = [
+      '-d', 'dummy',
+      '-p', 'dummy',
+      '-e', 'dummy_metadata',
+      '-a', 'dummy',
+      '--zt-norm',
+      '--allow-missing-files',
+      '-vs', 'test_resource',
+      '--temp-directory', test_dir,
+      '--result-directory', test_dir,
+      '--preferred-package', 'bob.bio.base'
+  ]
+
+  _verify(parameters, test_dir, 'test_resource')
+
+
 def test_verify_commandline():
   test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
diff --git a/bob/bio/base/tools/extractor.py b/bob/bio/base/tools/extractor.py
index 28131467..84705eac 100644
--- a/bob/bio/base/tools/extractor.py
+++ b/bob/bio/base/tools/extractor.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
@@ -90,6 +91,7 @@ def extract(extractor, preprocessor, groups=None, indices = None, allow_missing_
   extractor.load(fs.extractor_file)
   data_files = fs.preprocessed_data_list(groups=groups)
   feature_files = fs.feature_list(groups=groups)
+  metadata = fs.original_data_list(groups=groups)
 
   # select a subset of indices to iterate
   if indices is not None:
@@ -119,7 +121,10 @@ def extract(extractor, preprocessor, groups=None, indices = None, allow_missing_
       # load data
       data = preprocessor.read_data(data_file)
       # extract feature
-      feature = extractor(data)
+      if "metadata" in inspect.getargspec(extractor.__call__).args:
+        feature = extractor(data, metadata=metadata[i])
+      else:
+        feature = extractor(data)
 
       if feature is None:
         if allow_missing_files:
diff --git a/setup.py b/setup.py
index e93fd72f..91b66c18 100644
--- a/setup.py
+++ b/setup.py
@@ -99,6 +99,7 @@ setup(
 
       'bob.bio.extractor': [
         'dummy             = bob.bio.base.test.dummy.extractor:extractor', # for test purposes only
+        'dummy_metadata    = bob.bio.base.test.dummy.extractor:extractor_metadata', # for test purposes only
         'linearize         = bob.bio.base.config.extractor.linearize:extractor',
       ],
 
-- 
GitLab