From 11a7e2292f46229d39da2dd0161eb7073788f4a4 Mon Sep 17 00:00:00 2001
From: Amir Mohammadi <amir.mohammadi@idiap.ch>
Date: Tue, 2 Aug 2016 18:33:35 +0200
Subject: [PATCH] use the File.load method if possible.

---
 bob/bio/base/tools/FileSelector.py |  4 ++++
 bob/bio/base/tools/preprocessor.py | 10 +++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/bob/bio/base/tools/FileSelector.py b/bob/bio/base/tools/FileSelector.py
index 2a3e56df..63313a7d 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 01dea478..86ec390c 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))
 
-- 
GitLab