diff --git a/tests/test_algorithms.py b/tests/test_algorithms.py index 7545f2f79bdebf5b7257ca63fcae43aa0f88f43e..17324d833406c4fc9b1e88be12ad843361ef1257 100644 --- a/tests/test_algorithms.py +++ b/tests/test_algorithms.py @@ -3,14 +3,17 @@ # @author: Manuel Guenther <Manuel.Guenther@idiap.ch> # @date: Thu May 24 10:41:42 CEST 2012 +from pathlib import Path + import numpy as np -import pkg_resources import bob.bio.base import bob.io.base from . import utils +TEST_DATA_DIR = Path(__file__).parent / "data" + def test_distance_algorithm(): # test the two registered distance functions @@ -37,9 +40,7 @@ def test_distance_algorithm(): # compare model with probe enroll = utils.random_training_set(5, 5, 0.0, 255.0, seed=21) - probe = bob.io.base.load( - pkg_resources.resource_filename(__name__, "data/lda_projected.hdf5") - ) + probe = bob.io.base.load(str(TEST_DATA_DIR / "lda_projected.hdf5")) models = cosine.create_templates([enroll], enroll=True) probes = cosine.create_templates([probe], enroll=False) score = cosine.compare(models, probes)[0, 0] diff --git a/tests/test_commands.py b/tests/test_commands.py index 79cb153f80eb8ffec333a55b0363f32b5e7d703b..10190778d171ac6eac6f61f3e05a0b5a31fcf07e 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -2,9 +2,10 @@ import shutil +from pathlib import Path + import click import numpy -import pkg_resources from click.testing import CliRunner @@ -12,18 +13,20 @@ from bob.bio.base.score import scores from bob.bio.base.script import commands, compare_samples, sort, vuln_commands from bob.io.base.testing_utils import assert_click_runner_result +DATA_DIR_PATH = Path(__file__).parent / "data" + def test_metrics(): - dev1 = pkg_resources.resource_filename(__name__, "data/dev-4col.txt") + dev1 = str(DATA_DIR_PATH / "dev-4col.txt") runner = CliRunner() result = runner.invoke(commands.metrics, [dev1]) with runner.isolated_filesystem(): with open("tmp", "w") as f: f.write(result.output) assert_click_runner_result(result) - dev2 = pkg_resources.resource_filename(__name__, "data/dev-5col.txt") - test1 = pkg_resources.resource_filename(__name__, "data/test-4col.txt") - test2 = pkg_resources.resource_filename(__name__, "data/test-5col.txt") + dev2 = str(DATA_DIR_PATH / "dev-5col.txt") + test1 = str(DATA_DIR_PATH / "test-4col.txt") + test2 = str(DATA_DIR_PATH / "test-5col.txt") with runner.isolated_filesystem(): result = runner.invoke( commands.metrics, ["-e", dev1, test1, dev2, test2] @@ -99,25 +102,21 @@ def test_metrics(): def test_roc(): """ - dev1 = pkg_resources.resource_filename('bob.bio.base.test', - 'data/dev-4col.txt') + dev1 = str(DATA_DIR_PATH / "dev-4col.txt") runner = CliRunner() with runner.isolated_filesystem(): - result = runner.invoke(commands.roc, ['--output', - 'test.pdf',dev1]) + result = runner.invoke(commands.roc, ["--output", + "test.pdf",dev1]) if result.output: click.echo(result.output) assert_click_runner_result(result) - 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') + dev2 = str(DATA_DIR_PATH / "dev-5col.txt") + test1 = str(DATA_DIR_PATH / "test-4col.txt") + test2 = str(DATA_DIR_PATH / "test-5col.txt") with runner.isolated_filesystem(): - result = runner.invoke(commands.roc, ['--split', '--output', - 'test.pdf', '-S', '-ll', - 'lower-left', '-e', + result = runner.invoke(commands.roc, ["--split", "--output", + "test.pdf", "-S", "-ll", + "lower-left", "-e", dev1, test1, dev2, test2]) if result.output: click.echo(result.output) @@ -125,23 +124,21 @@ def test_roc(): with runner.isolated_filesystem(): - result = runner.invoke(commands.roc, ['--output', - 'test.pdf', - '-e', '--legends', 'A,B', + result = runner.invoke(commands.roc, ["--output", + "test.pdf", + "-e", "--legends", "A,B", dev1, test1, dev2, test2]) if result.output: click.echo(result.output) assert_click_runner_result(result) - 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') + dev_nonorm = str(DATA_DIR_PATH / "scores-nonorm-dev") + dev_ztnorm = str(DATA_DIR_PATH / "scores-ztnorm-dev") with runner.isolated_filesystem(): result = runner.invoke(commands.roc, [ - '--min-far-value', '1e-6', - '--lines-at', '1e-5', - '-v', '--legends', 'A', '-e', + "--min-far-value", "1e-6", + "--lines-at", "1e-5", + "-v", "--legends", "A", "-e", dev_nonorm, dev_ztnorm ]) if result.output: @@ -152,16 +149,16 @@ def test_roc(): def test_det(): - dev1 = pkg_resources.resource_filename(__name__, "data/dev-4col.txt") + dev1 = str(DATA_DIR_PATH / "dev-4col.txt") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke(commands.det, [dev1, "-S"]) if result.output: click.echo(result.output) assert_click_runner_result(result) - dev2 = pkg_resources.resource_filename(__name__, "data/dev-5col.txt") - test1 = pkg_resources.resource_filename(__name__, "data/test-4col.txt") - test2 = pkg_resources.resource_filename(__name__, "data/test-5col.txt") + dev2 = str(DATA_DIR_PATH / "dev-5col.txt") + test1 = str(DATA_DIR_PATH / "test-4col.txt") + test2 = str(DATA_DIR_PATH / "test-5col.txt") with runner.isolated_filesystem(): result = runner.invoke( commands.det, @@ -190,12 +187,8 @@ def test_det(): click.echo(result.output) assert_click_runner_result(result) - dev_nonorm = pkg_resources.resource_filename( - __name__, "data/scores-nonorm-dev" - ) - dev_ztnorm = pkg_resources.resource_filename( - __name__, "data/scores-ztnorm-dev" - ) + dev_nonorm = str(DATA_DIR_PATH / "scores-nonorm-dev") + dev_ztnorm = str(DATA_DIR_PATH / "scores-ztnorm-dev") with runner.isolated_filesystem(): result = runner.invoke( commands.det, @@ -218,16 +211,16 @@ def test_det(): def test_epc(): - dev1 = pkg_resources.resource_filename(__name__, "data/dev-4col.txt") - test1 = pkg_resources.resource_filename(__name__, "data/test-4col.txt") + dev1 = str(DATA_DIR_PATH / "dev-4col.txt") + test1 = str(DATA_DIR_PATH / "test-4col.txt") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke(commands.epc, [dev1, test1]) if result.output: click.echo(result.output) assert_click_runner_result(result) - dev2 = pkg_resources.resource_filename(__name__, "data/dev-4col.tar.gz") - test2 = pkg_resources.resource_filename(__name__, "data/test-5col.txt") + dev2 = str(DATA_DIR_PATH / "dev-4col.tar.gz") + test2 = str(DATA_DIR_PATH / "test-5col.txt") with runner.isolated_filesystem(): result = runner.invoke( commands.epc, @@ -247,12 +240,8 @@ def test_epc(): click.echo(result.output) assert_click_runner_result(result) - dev_nonorm = pkg_resources.resource_filename( - __name__, "data/scores-nonorm-dev" - ) - dev_ztnorm = pkg_resources.resource_filename( - __name__, "data/scores-ztnorm-dev" - ) + dev_nonorm = str(DATA_DIR_PATH / "scores-nonorm-dev") + dev_ztnorm = str(DATA_DIR_PATH / "scores-ztnorm-dev") with runner.isolated_filesystem(): result = runner.invoke( @@ -264,10 +253,10 @@ def test_epc(): def test_hist(): - dev1 = pkg_resources.resource_filename(__name__, "data/dev-4col.txt") - dev2 = pkg_resources.resource_filename(__name__, "data/dev-5col.txt") - test1 = pkg_resources.resource_filename(__name__, "data/test-4col.txt") - test2 = pkg_resources.resource_filename(__name__, "data/test-5col.txt") + dev1 = str(DATA_DIR_PATH / "dev-4col.txt") + dev2 = str(DATA_DIR_PATH / "dev-5col.txt") + test1 = str(DATA_DIR_PATH / "test-4col.txt") + test2 = str(DATA_DIR_PATH / "test-5col.txt") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke(commands.hist, [dev1]) @@ -318,16 +307,14 @@ def test_hist(): def test_cmc(): - dev1 = pkg_resources.resource_filename(__name__, "data/scores-cmc-5col.txt") + dev1 = str(DATA_DIR_PATH / "scores-cmc-5col.txt") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke(commands.cmc, [dev1]) if result.output: click.echo(result.output) assert_click_runner_result(result) - test1 = pkg_resources.resource_filename( - __name__, "data/scores-cmc-4col.txt" - ) + test1 = str(DATA_DIR_PATH / "scores-cmc-4col.txt") with runner.isolated_filesystem(): result = runner.invoke( commands.cmc, @@ -350,12 +337,8 @@ def test_cmc(): click.echo(result.output) assert_click_runner_result(result) - dev_nonorm = pkg_resources.resource_filename( - __name__, "data/scores-nonorm-dev" - ) - dev_ztnorm = pkg_resources.resource_filename( - __name__, "data/scores-ztnorm-dev" - ) + dev_nonorm = str(DATA_DIR_PATH / "scores-nonorm-dev") + dev_ztnorm = str(DATA_DIR_PATH / "scores-ztnorm-dev") with runner.isolated_filesystem(): result = runner.invoke( @@ -367,18 +350,14 @@ def test_cmc(): def test_dir(): - dev1 = pkg_resources.resource_filename( - __name__, "data/scores-nonorm-openset-dev" - ) + dev1 = str(DATA_DIR_PATH / "scores-nonorm-openset-dev") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke(commands.dir, [dev1, "--rank", 2]) if result.output: click.echo(result.output) assert_click_runner_result(result) - test1 = pkg_resources.resource_filename( - __name__, "data/scores-nonorm-openset-dev" - ) + test1 = str(DATA_DIR_PATH / "scores-nonorm-openset-dev") with runner.isolated_filesystem(): result = runner.invoke( commands.dir, @@ -413,7 +392,7 @@ def test_sort(): lines = [lines[i] for i in sort_idx] return lines - dev1 = pkg_resources.resource_filename(__name__, "data/scores-nonorm-dev") + dev1 = str(DATA_DIR_PATH / "scores-nonorm-dev") runner = CliRunner() with runner.isolated_filesystem(): # create a temporary sort file and sort it and check if it is sorted! @@ -432,22 +411,16 @@ def test_sort(): def test_metrics_vuln(): - dev1 = pkg_resources.resource_filename(__name__, "data/vuln/scores-dev.csv") + dev1 = str(DATA_DIR_PATH / "vuln/scores-dev.csv") runner = CliRunner() result = runner.invoke(vuln_commands.metrics, [dev1]) with runner.isolated_filesystem(): with open("tmp", "w") as f: f.write(result.output) assert_click_runner_result(result) - dev2 = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev-med.csv" - ) - test1 = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) - test2 = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval-med.csv" - ) + dev2 = str(DATA_DIR_PATH / "vuln/scores-dev-med.csv") + test1 = str(DATA_DIR_PATH / "vuln/scores-eval.csv") + test2 = str(DATA_DIR_PATH / "vuln/scores-eval-med.csv") with runner.isolated_filesystem(): result = runner.invoke( vuln_commands.metrics, ["-e", dev1, test1, dev2, test2] @@ -470,12 +443,8 @@ def test_metrics_vuln(): def test_det_vuln(): - dev_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) - eval_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) + dev_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") + eval_file = str(DATA_DIR_PATH / "vuln/scores-eval.csv") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke( @@ -486,12 +455,8 @@ def test_det_vuln(): def test_fmr_iapmr_vuln(): - dev_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) - eval_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) + dev_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") + eval_file = str(DATA_DIR_PATH / "vuln/scores-eval.csv") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke( @@ -521,12 +486,8 @@ def test_fmr_iapmr_vuln(): def test_hist_vuln(): - dev_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) - eval_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) + dev_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") + eval_file = str(DATA_DIR_PATH / "vuln/scores-eval.csv") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke( @@ -565,12 +526,8 @@ def test_hist_vuln(): def test_epc_vuln(): - dev_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) - eval_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) + dev_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") + eval_file = str(DATA_DIR_PATH / "vuln/scores-eval.csv") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke( @@ -598,12 +555,8 @@ def test_epc_vuln(): def test_epsc_vuln(): - dev_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) - eval_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) + dev_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") + eval_file = str(DATA_DIR_PATH / "vuln/scores-eval.csv") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke( @@ -633,12 +586,8 @@ def test_epsc_vuln(): def test_epsc_3D_vuln(): - dev_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) - eval_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) + dev_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") + eval_file = str(DATA_DIR_PATH / "vuln/scores-eval.csv") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke( @@ -669,12 +618,8 @@ def test_epsc_3D_vuln(): def test_evaluate_vuln(): - dev_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) - eval_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-eval.csv" - ) + dev_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") + eval_file = str(DATA_DIR_PATH / "vuln/scores-eval.csv") runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke( @@ -691,12 +636,8 @@ def test_evaluate_vuln(): def test_compare_samples(): - sample_1_path = pkg_resources.resource_filename( - __name__, "data/dummy_samples_1.hdf5" - ) - sample_2_path = pkg_resources.resource_filename( - __name__, "data/dummy_samples_2.hdf5" - ) + sample_1_path = str(DATA_DIR_PATH / "dummy_samples_1.hdf5") + sample_2_path = str(DATA_DIR_PATH / "dummy_samples_2.hdf5") runner = CliRunner() from bob.bio.base.config.dummy.pipeline import pipeline diff --git a/tests/test_io.py b/tests/test_io.py index 36db189867bf1846e395a80359d3ffd40771e458..81b25a0b63c73440179b4fe0bee993fb98f7f777 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -9,11 +9,14 @@ import tempfile +from pathlib import Path + import numpy -import pkg_resources from bob.bio.base import score +DATA_DIR_PATH = Path(__file__).parent / "data" + def test_load_scores(): # This function tests the IO functionality of loading score files in @@ -23,18 +26,14 @@ def test_load_scores(): cols = {"4col": 4, "5col": 5} for variant in cols: - normal_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.txt" % variant - ) + normal_score_file = str(DATA_DIR_PATH / f"dev-{variant}.txt") normal_scores = list(load_functions[variant](normal_score_file)) assert len(normal_scores) == 910 assert all(len(s) == cols[variant] for s in normal_scores) # read the compressed score file - compressed_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.tar.gz" % variant - ) + compressed_score_file = str(DATA_DIR_PATH / f"dev-{variant}.tar.gz") compressed_scores = list(load_functions[variant](compressed_score_file)) assert len(compressed_scores) == len(normal_scores) @@ -66,9 +65,7 @@ def test_load_scores(): def test_split_vuln_scores(): """Tests that vulnerability score files are loaded correctly""" - score_file = pkg_resources.resource_filename( - __name__, "data/vuln/scores-dev.csv" - ) + score_file = str(DATA_DIR_PATH / "vuln/scores-dev.csv") split_scores = score.split_csv_vuln(score_file) assert all( key in split_scores for key in ("licit_neg", "licit_pos", "spoof") @@ -91,18 +88,14 @@ def test_split_scores(): for variant in cols: # read score file in normal way - normal_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.txt" % variant - ) + normal_score_file = str(DATA_DIR_PATH / f"dev-{variant}.txt") negatives, positives = split_functions[variant](normal_score_file) assert len(negatives) == 520, len(negatives) assert len(positives) == 390, len(positives) # read the compressed score file - compressed_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.tar.gz" % variant - ) + compressed_score_file = str(DATA_DIR_PATH / f"dev-{variant}.tar.gz") negatives, positives = split_functions[variant](compressed_score_file) assert len(negatives) == 520, len(negatives) @@ -129,21 +122,15 @@ def test_load_score(): cols = {"4col": 4, "5col": 5} for variant in cols: - compressed_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.tar.gz" % variant - ) - normal_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.txt" % variant - ) + compressed_score_file = str(DATA_DIR_PATH / f"dev-{variant}.tar.gz") + normal_score_file = str(DATA_DIR_PATH / f"dev-{variant}.txt") normal_scores = score.load_score(normal_score_file, cols[variant]) assert len(normal_scores) == 910 assert len(normal_scores.dtype) == cols[variant] # read the compressed score file - compressed_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.tar.gz" % variant - ) + compressed_score_file = str(DATA_DIR_PATH / f"dev-{variant}.tar.gz") compressed_scores = score.load_score( compressed_score_file, cols[variant] ) @@ -167,9 +154,7 @@ def test_dump_score(): for variant in cols: # read score file - normal_score_file = pkg_resources.resource_filename( - __name__, "data/dev-%s.txt" % variant - ) + normal_score_file = str(DATA_DIR_PATH / f"dev-{variant}.txt") normal_scores = score.load_score(normal_score_file, cols[variant]) with tempfile.TemporaryFile() as f: