diff --git a/bob/bio/base/algorithm/Distance.py b/bob/bio/base/algorithm/Distance.py index a3d91aa37ef0b80f94d88f7753bcfba544555456..efde5502b15a6f60701c477a7b03bb92d743f6d0 100644 --- a/bob/bio/base/algorithm/Distance.py +++ b/bob/bio/base/algorithm/Distance.py @@ -89,7 +89,7 @@ class Distance (Algorithm): probe : object The probe. """ - return utils.load(feature_file) + return utils.load(probe_file) def score(self, model, probe): diff --git a/bob/bio/base/test/test_algorithms.py b/bob/bio/base/test/test_algorithms.py index 66fd58817e4c482459035687c55b556d183b4720..f479f737d799bd56c2b9131003abd24d2acfa671 100644 --- a/bob/bio/base/test/test_algorithms.py +++ b/bob/bio/base/test/test_algorithms.py @@ -216,6 +216,37 @@ def test_lda(): + +def test_distance(): + + import scipy.spatial + + # assure that the configurations are loadable + distance = bob.bio.base.load_resource("distance-cosine", "algorithm", preferred_package = 'bob.bio.base') + assert isinstance(distance, bob.bio.base.algorithm.Distance) + assert isinstance(distance, bob.bio.base.algorithm.Algorithm) + + assert distance.performs_projection==False + assert distance.requires_projector_training==False + assert distance.use_projected_features_for_enrollment == False + assert distance.split_training_features_by_client == False + assert distance.requires_enroller_training == False + + distance = bob.bio.base.algorithm.Distance( + distance_function = scipy.spatial.distance.cosine, + is_distance_function = True + ) + + # compare model with probe + enroll = utils.random_training_set(5, 5, 0., 255., seed=21); + model = numpy.mean(distance.enroll(enroll),axis=0) + probe = distance.read_probe(pkg_resources.resource_filename('bob.bio.base.test', 'data/lda_projected.hdf5')) + + reference_score = -0.1873371 + assert abs(distance.score(model, probe) - reference_score) < 1e-5, "The scores differ: %3.8f, %3.8f" % (distance.score(model, probe), reference_score) + + + def test_bic(): temp_file = bob.io.base.test_utils.temporary_filename() # assure that the configurations are loadable