From d0adbeecbf83143715ce7dbcd297accd526c7bd6 Mon Sep 17 00:00:00 2001
From: Guillaume HEUSCH <guillaume.heusch@idiap.ch>
Date: Wed, 20 Jun 2018 14:37:12 +0200
Subject: [PATCH] [ssr] python 2 and 3 compatibility, bob logger

---
 bob/rppg/ssr/script/ssr_from_mask.py | 56 +++++++++-------------------
 1 file changed, 17 insertions(+), 39 deletions(-)

diff --git a/bob/rppg/ssr/script/ssr_from_mask.py b/bob/rppg/ssr/script/ssr_from_mask.py
index f48c01d..944926a 100644
--- a/bob/rppg/ssr/script/ssr_from_mask.py
+++ b/bob/rppg/ssr/script/ssr_from_mask.py
@@ -1,25 +1,7 @@
 #!/usr/bin/env python
 # encoding: utf-8
 
-# Copyright (c) 2017 Idiap Research Institute, http://www.idiap.ch/
-# Written by Guillaume Heusch <guillaume.heusch@idiap.ch>,
-# 
-# This file is part of bob.rpgg.base.
-# 
-# bob.rppg.base is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 3 as
-# published by the Free Software Foundation.
-# 
-# bob.rppg.base is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with bob.rppg.base. If not, see <http://www.gnu.org/licenses/>.
-
-
-"""Pulse extractor for database videos (%(version)s)
+"""Pulse extractor using 2SR algorithm (%(version)s)
 
 Usage:
   %(prog)s (cohface | hci) [--protocol=<string>] [--subset=<string> ...]
@@ -68,15 +50,14 @@ Example:
 See '%(prog)s --help' for more information.
 
 """
+from __future__ import print_function
 
 import os
 import sys
 import pkg_resources
 
-import logging
-__logging_format__='[%(levelname)s] %(message)s'
-logging.basicConfig(format=__logging_format__)
-logger = logging.getLogger("extract_log")
+from bob.core.log import setup
+logger = setup("bob.rppg.base")
 
 from docopt import docopt
 
@@ -110,19 +91,12 @@ def main(user_input=None):
       arguments = sys.argv[1:]
 
   prog = os.path.basename(sys.argv[0])
-  completions = dict(
-          prog=prog,
-          version=version,
-          )
-  args = docopt(
-      __doc__ % completions,
-      argv=arguments,
-      version='Signal extractor for videos (%s)' % version,
-      )
+  completions = dict(prog=prog, version=version,)
+  args = docopt(__doc__ % completions, argv=arguments, version='Signal extractor for videos (%s)' % version,)
 
   # if the user wants more verbosity, lowers the logging level
-  if args['--verbose'] == 1: logging.getLogger("extract_log").setLevel(logging.INFO)
-  elif args['--verbose'] >= 2: logging.getLogger("extract_log").setLevel(logging.DEBUG)
+  from bob.core.log import set_verbosity_level
+  set_verbosity_level(logger, args['--verbose'])
 
   # chooses the database driver to use
   if args['cohface']:
@@ -161,16 +135,20 @@ def main(user_input=None):
     objects = db.objects(args['--protocol'], args['--subset'])
 
   # if we are on a grid environment, just find what I have to process.
-  if os.environ.has_key('SGE_TASK_ID'):
+  sge = False
+  try:
+    sge = os.environ.has_key('SGE_TASK_ID') # python2
+  except AttributeError:
+    sge = 'SGE_TASK_ID' in os.environ # python3
+    
+  if sge:
     pos = int(os.environ['SGE_TASK_ID']) - 1
     if pos >= len(objects):
-      raise RuntimeError, "Grid request for job %d on a setup with %d jobs" % \
-          (pos, len(objects))
+      raise RuntimeError("Grid request for job {} on a setup with {} jobs".format(pos, len(objects)))
     objects = [objects[pos]]
 
   if args['--gridcount']:
-    print len(objects)
-    sys.exit()
+    print(len(objects))
 
   # the temporal stride
   temporal_stride = int(args['--stride'])
-- 
GitLab