diff --git a/bob/bio/base/script/verify.py b/bob/bio/base/script/verify.py index 23e672f7de4375a9f0a2a46a682cc486f0209a6d..d27c2d35e80928e4d431087ff32a364b0541a28a 100644 --- a/bob/bio/base/script/verify.py +++ b/bob/bio/base/script/verify.py @@ -206,7 +206,7 @@ def add_jobs(args, submitter): dependencies = score_deps[group]) concat_deps[group].extend([job_ids['score-%s-B'%group], job_ids['score-%s-C'%group], job_ids['score-%s-D'%group], job_ids['score-%s-Z'%group]]) else: - concat_deps[group] = [] + concat_deps[group] = deps[:] # concatenate results if not args.skip_concatenation: @@ -309,48 +309,26 @@ def execute(args): # enroll the models elif args.sub_task == 'enroll': - if args.model_type == 'N': - tools.enroll( - args.algorithm, - args.extractor, - args.zt_norm, - indices = tools.indices(fs.model_ids(args.group), None if args.grid is None else args.grid.number_of_enrollment_jobs), - groups = [args.group], - types = ['N'], - allow_missing_files = args.allow_missing_files, - force = args.force) - - else: - tools.enroll( - args.algorithm, - args.extractor, - args.zt_norm, - indices = tools.indices(fs.t_model_ids(args.group), None if args.grid is None else args.grid.number_of_enrollment_jobs), - groups = [args.group], - types = ['T'], - allow_missing_files = args.allow_missing_files, - force = args.force) + model_ids = fs.model_ids(args.group) if args.model_type == 'N' else fs.t_model_ids(args.group) + tools.enroll( + args.algorithm, + args.extractor, + args.zt_norm, + indices = tools.indices(model_ids, None if args.grid is None else args.grid.number_of_enrollment_jobs), + groups = [args.group], + types = [args.model_type], + allow_missing_files = args.allow_missing_files, + force = args.force) # compute scores elif args.sub_task == 'compute-scores': - if args.score_type in ['A', 'B']: - tools.compute_scores( - args.algorithm, - args.extractor, - args.zt_norm, - indices = tools.indices(fs.model_ids(args.group), None if args.grid is None else args.grid.number_of_scoring_jobs), - groups = [args.group], - types = [args.score_type], - force = args.force, - allow_missing_files = args.allow_missing_files, - write_compressed = args.write_compressed_score_files) - - elif args.score_type in ['C', 'D']: + if args.score_type != 'Z': + model_ids = fs.model_ids(args.group) if args.score_type in ('A', 'B') else fs.t_model_ids(args.group) tools.compute_scores( args.algorithm, args.extractor, args.zt_norm, - indices = tools.indices(fs.t_model_ids(args.group), None if args.grid is None else args.grid.number_of_scoring_jobs), + indices = tools.indices(model_ids, None if args.grid is None else args.grid.number_of_scoring_jobs), groups = [args.group], types = [args.score_type], force = args.force, diff --git a/bob/bio/base/tools/scoring.py b/bob/bio/base/tools/scoring.py index 5c249ad09d63acd66cf7d2113bb2ae5da71e1758..faf09422340c54b4dd14bfd1dc8788024427c046 100644 --- a/bob/bio/base/tools/scoring.py +++ b/bob/bio/base/tools/scoring.py @@ -13,11 +13,13 @@ from .FileSelector import FileSelector from .extractor import read_features from .. import utils -def _scores(algorithm, reader, model, probes, allow_missing_files): +def _scores(algorithm, reader, model, probe_objects, allow_missing_files): """Compute scores for the given model and a list of probes. """ # the file selector object fs = FileSelector.instance() + # get probe files + probes = fs.get_paths(probe_objects, 'projected' if algorithm.performs_projection else 'extracted') # the scores to be computed; initialized with NaN scores = numpy.ones((1,len(probes)), numpy.float64) * numpy.nan @@ -135,10 +137,8 @@ def _scores_a(algorithm, reader, model_ids, group, compute_zt_norm, force, write model = None else: model = algorithm.read_model(model_file) - # get the probe files - current_probe_files = fs.get_paths(current_probe_objects, 'projected' if algorithm.performs_projection else 'extracted') # compute scores - a = _scores(algorithm, reader, model, current_probe_files, allow_missing_files) + a = _scores(algorithm, reader, model, current_probe_objects, allow_missing_files) if compute_zt_norm: # write A matrix only when you want to compute zt norm afterwards @@ -155,7 +155,6 @@ def _scores_b(algorithm, reader, model_ids, group, force, allow_missing_files): # probe files: z_probe_objects = fs.z_probe_objects(group) - z_probe_files = fs.get_paths(z_probe_objects, 'projected' if algorithm.performs_projection else 'extracted') logger.info("- Scoring: computing score matrix B for group '%s'", group) @@ -171,7 +170,7 @@ def _scores_b(algorithm, reader, model_ids, group, force, allow_missing_files): model = None else: model = algorithm.read_model(model_file) - b = _scores(algorithm, reader, model, z_probe_files, allow_missing_files) + b = _scores(algorithm, reader, model, z_probe_objects, allow_missing_files) bob.io.base.save(b, score_file, True) def _scores_c(algorithm, reader, t_model_ids, group, force, allow_missing_files): @@ -181,7 +180,6 @@ def _scores_c(algorithm, reader, t_model_ids, group, force, allow_missing_files) # probe files: probe_objects = fs.probe_objects(group) - probe_files = fs.get_paths(probe_objects, 'projected' if algorithm.performs_projection else 'extracted') logger.info("- Scoring: computing score matrix C for group '%s'", group) @@ -197,7 +195,7 @@ def _scores_c(algorithm, reader, t_model_ids, group, force, allow_missing_files) t_model = None else: t_model = algorithm.read_model(t_model_file) - c = _scores(algorithm, reader, t_model, probe_files, allow_missing_files) + c = _scores(algorithm, reader, t_model, probe_objects, allow_missing_files) bob.io.base.save(c, score_file, True) def _scores_d(algorithm, reader, t_model_ids, group, force, allow_missing_files): @@ -207,7 +205,6 @@ def _scores_d(algorithm, reader, t_model_ids, group, force, allow_missing_files) # probe files: z_probe_objects = fs.z_probe_objects(group) - z_probe_files = fs.get_paths(z_probe_objects, 'projected' if algorithm.performs_projection else 'extracted') logger.info("- Scoring: computing score matrix D for group '%s'", group) @@ -227,7 +224,7 @@ def _scores_d(algorithm, reader, t_model_ids, group, force, allow_missing_files) t_model = None else: t_model = algorithm.read_model(t_model_file) - d = _scores(algorithm, reader, t_model, z_probe_files, allow_missing_files) + d = _scores(algorithm, reader, t_model, z_probe_objects, allow_missing_files) bob.io.base.save(d, score_file, True) t_client_id = [fs.client_id(t_model_id, group, True)]