From cd839a7e1da9d0662436b5cb346e79e49b5617b8 Mon Sep 17 00:00:00 2001
From: Theophile GENTILHOMME <tgentilhomme@jurasix08.idiap.ch>
Date: Mon, 7 May 2018 14:49:12 +0200
Subject: [PATCH] Rewrite old evaluate tests and remove them

---
 bob/bio/base/script/commands.py    |  3 +-
 bob/bio/base/script/figure.py      |  6 ++
 bob/bio/base/test/test_commands.py | 97 +++++++++++++++++++++---------
 bob/bio/base/test/test_scripts.py  | 61 -------------------
 4 files changed, 78 insertions(+), 89 deletions(-)

diff --git a/bob/bio/base/script/commands.py b/bob/bio/base/script/commands.py
index e4d4ce6b..f712823e 100644
--- a/bob/bio/base/script/commands.py
+++ b/bob/bio/base/script/commands.py
@@ -243,7 +243,7 @@ def cmc(ctx, scores, evaluation, **kargs):
 @common_options.title_option()
 @common_options.legends_option()
 @common_options.sep_dev_eval_option()
-@common_options.output_plot_file_option(default_out='cmc.pdf')
+@common_options.output_plot_file_option(default_out='dir.pdf')
 @common_options.eval_option()
 @common_options.semilogx_option(True)
 @common_options.axes_val_option(dflt=None)
@@ -253,6 +253,7 @@ def cmc(ctx, scores, evaluation, **kargs):
 @common_options.style_option()
 @common_options.linestyles_option()
 @common_options.figsize_option()
+@common_options.min_far_option()
 @verbosity_option()
 @click.pass_context
 def dir(ctx, scores, evaluation, **kargs):
diff --git a/bob/bio/base/script/figure.py b/bob/bio/base/script/figure.py
index 00242f77..ec95d88e 100644
--- a/bob/bio/base/script/figure.py
+++ b/bob/bio/base/script/figure.py
@@ -1,5 +1,6 @@
 '''Plots and measures for bob.bio.base'''
 
+import math
 import click
 import matplotlib.pyplot as mpl
 import bob.measure.script.figure as measure_figure
@@ -76,6 +77,8 @@ class Dir(measure_figure.PlotBase):
         self._x_label = self._title or 'FAR'
         self._y_label = self._title or 'DIR'
 
+
+
     def compute(self, idx, input_scores, input_names):
         ''' Plot DIR for dev and eval data using
         :py:func:`bob.measure.plot.detection_identification_curve`'''
@@ -104,6 +107,9 @@ class Dir(measure_figure.PlotBase):
                 label=self._label('development', input_names[0], idx)
             )
 
+        if self._min_dig is not None:
+            mpl.xlim(xmin=math.pow(10, self._min_dig))
+
 class Metrics(measure_figure.Metrics):
     ''' Compute metrics from score files'''
     def init_process(self):
diff --git a/bob/bio/base/test/test_commands.py b/bob/bio/base/test/test_commands.py
index 9d3dbb25..7ed0a6a6 100644
--- a/bob/bio/base/test/test_commands.py
+++ b/bob/bio/base/test/test_commands.py
@@ -86,6 +86,7 @@ def test_metrics():
         assert result.exit_code == 0, (result.exit_code, result.output)
 
 
+
 def test_roc():
     dev1 = pkg_resources.resource_filename('bob.bio.base.test',
                                            'data/dev-4col.txt')
@@ -119,6 +120,22 @@ def test_roc():
             click.echo(result.output)
         assert result.exit_code == 0, (result.exit_code, result.output)
 
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.roc, [
+            '--min-far-value', '1e-6',
+            '--lines-at', '1e-5',
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
 
 def test_det():
     dev1 = pkg_resources.resource_filename('bob.bio.base.test',
@@ -150,6 +167,23 @@ def test_det():
             click.echo(result.output)
         assert result.exit_code == 0, (result.exit_code, result.output)
 
+
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.det, [
+            '--min-far-value', '1e-6',
+            '--lines-at', '1e-5',
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
 def test_epc():
     dev1 = pkg_resources.resource_filename('bob.bio.base.test',
                                            'data/dev-4col.txt')
@@ -173,6 +207,22 @@ def test_epc():
             click.echo(result.output)
         assert result.exit_code == 0, (result.exit_code, result.output)
 
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.epc, [
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+
 def test_hist():
     dev1 = pkg_resources.resource_filename('bob.bio.base.test',
                                            'data/dev-4col.txt')
@@ -206,6 +256,8 @@ def test_hist():
             click.echo(result.output)
         assert result.exit_code == 0, (result.exit_code, result.output)
 
+
+
 def test_cmc():
     dev1 = pkg_resources.resource_filename('bob.bio.base.test',
                                            'data/scores-cmc-5col.txt')
@@ -225,6 +277,23 @@ def test_cmc():
             click.echo(result.output)
         assert result.exit_code == 0, (result.exit_code, result.output)
 
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.cmc, [
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+
+
 def test_dir():
     dev1 = pkg_resources.resource_filename('bob.bio.base.test',
                                            'data/scores-nonorm-openset-dev')
@@ -239,34 +308,8 @@ def test_dir():
     with runner.isolated_filesystem():
         result = runner.invoke(commands.dir, ['--output', 'test.pdf',
                                               '--legends', 'A,B', '-S',
+                                              '--min-far-value', '1e-6',
                                               dev1, test1, dev1, test1])
         if result.output:
             click.echo(result.output)
         assert result.exit_code == 0, (result.exit_code, result.output)
-
-def test_evaluate():
-    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
-                                           'data/dev-4col.txt')
-    dev2 = pkg_resources.resource_filename('bob.bio.base.test',
-                                           'data/dev-5col.txt')
-
-    test1 = pkg_resources.resource_filename('bob.bio.base.test',
-                                            'data/test-4col.txt')
-    test2 = pkg_resources.resource_filename('bob.bio.base.test',
-                                            'data/test-5col.txt')
-    runner = CliRunner()
-    with runner.isolated_filesystem():
-        result = runner.invoke(commands.evaluate, ['-l', 'tmp', '-f', 0.03,
-                                                   '--no-evaluation', dev1, dev2])
-        assert result.exit_code == 0, (result.exit_code, result.output)
-        result = runner.invoke(commands.evaluate, ['--no-evaluation', '-f', 0.02,
-                                                   dev1, dev2])
-        assert result.exit_code == 0, (result.exit_code, result.output)
-
-        result = runner.invoke(commands.evaluate, ['-l', 'tmp', '-f', 0.04,
-                                                   dev1, test1, dev2, test2])
-        assert result.exit_code == 0, (result.exit_code, result.output)
-        result = runner.invoke(commands.evaluate, ['-f', 0.01,
-                                                   dev1, test1, dev2, test2])
-        assert result.exit_code == 0, (result.exit_code, result.output)
-
diff --git a/bob/bio/base/test/test_scripts.py b/bob/bio/base/test/test_scripts.py
index 912dd325..582739bf 100644
--- a/bob/bio/base/test/test_scripts.py
+++ b/bob/bio/base/test/test_scripts.py
@@ -491,67 +491,6 @@ def test_fusion():
 
 
 
-def test_evaluate_closedset():
-  # tests our 'evaluate' script using the reference files
-  test_dir = tempfile.mkdtemp(prefix='bobtest_')
-  reference_files = ('scores-nonorm-dev', 'scores-ztnorm-dev')
-  plots = [os.path.join(test_dir, '%s.pdf')%f for f in ['roc', 'cmc', 'det', 'epc']]
-  parameters = [
-    '--dev-files', reference_files[0], reference_files[1],
-    '--eval-files', reference_files[0], reference_files[1],
-    '--directory', data_dir,  # will not be ignored since reference files are relative
-    '--legends', 'no norm', 'ZT norm',
-    '--criterion', 'HTER',
-    '--roc', plots[0],
-    '--cmc', plots[1],
-    '--det', plots[2],
-    '--epc', plots[3],
-    '--rr',
-    '--thresholds', '5000', '0',
-    '--min-far-value', '1e-6',
-    '--far-line-at', '1e-5',
-    '-v',
-  ]
-
-  # execute the script
-  from bob.bio.base.script.evaluate import main
-  try:
-    main(parameters)
-    for i in range(4):
-      assert os.path.exists(plots[i])
-      os.remove(plots[i])
-  finally:
-    if os.path.exists(test_dir):
-      shutil.rmtree(test_dir)
-
-def test_evaluate_openset():
-  # tests our 'evaluate' script using the reference files
-  test_dir = tempfile.mkdtemp(prefix='bobtest_')
-  reference_file = os.path.join(data_dir, 'scores-nonorm-openset-dev')
-  plot = os.path.join(test_dir, 'dir.pdf')
-  parameters = [
-    '--dev-files', reference_file,
-    '--eval-files', reference_file,
-    '--directory', "/non/existing/directory", # will be ignored since reference_file is absolute
-    '--legends', 'Test',
-    '--dir', plot,
-    '--min-far-value', '1e-6',
-    '-v',
-  ]
-
-  # execute the script
-  from bob.bio.base.script.evaluate import main
-  try:
-    main(parameters)
-    assert os.path.exists(plot)
-    os.remove(plot)
-  finally:
-    if os.path.exists(test_dir):
-      shutil.rmtree(test_dir)
-
-
-
-
 def test_resources():
   # simply test that the resorces script works
   from bob.bio.base.script.resources import resources, databases
-- 
GitLab