diff --git a/bob/db/fargo/test.py b/bob/db/fargo/test.py new file mode 100644 index 0000000000000000000000000000000000000000..17349194ec9ae867908c9b9021b88eff4e455878 --- /dev/null +++ b/bob/db/fargo/test.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python +# encoding: utf-8 +# Guillaume HEUSCH <guillaume.heusch@idiap.ch> +# Fri 23 Dec 09:49:48 CET 2016 + + +"""A few checks on the protocols of the FARGO public database +""" + +import bob.db.fargo + +def test_query_public_MC_RGB(): + """ + Test some queries for the public MC RGB protocol + """ + db = bob.db.fargo.Database() + + assert len(db.client_ids(protocol='public_MC_RGB')) == 75 # 75 client ids for world, dev and eval + assert len(db.client_ids(protocol='public_MC_RGB', groups='world')) == 25 # 25 client ids for world + assert len(db.client_ids(protocol='public_MC_RGB', groups='dev')) == 25 # 25 client ids for dev + assert len(db.client_ids(protocol='public_MC_RGB', groups='eval')) == 25 # 25 client ids for eval + + assert len(db.model_ids(protocol='public_MC_RGB')) == 75 # 75 model ids for world, dev and eval + assert len(db.model_ids(protocol='public_MC_RGB', groups='world')) == 25 # 25 model ids for world + assert len(db.model_ids(protocol='public_MC_RGB', groups='dev')) == 25 # 10 model ids for dev + assert len(db.model_ids(protocol='public_MC_RGB', groups='eval')) == 25 # 10 model ids for eval + + assert len(db.objects(protocol='public_MC_RGB', groups='world')) == 1000 # 1000 samples in the world set + + assert len(db.objects(protocol='public_MC_RGB', groups='dev', purposes='enroll')) == 500 # 500 samples for enrollment in the dev set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_MC_RGB', groups='dev', purposes='enroll', model_ids='026')) == 20 # 20 samples to enroll model '026' in the dev set + assert len(db.objects(protocol='public_MC_RGB', groups='dev', purposes='enroll', model_ids='071')) == 0 # 0 samples to enroll model '071' (it is an eval model) + assert len(db.objects(protocol='public_MC_RGB', groups='dev', purposes='probe')) == 500 # 500 samples as probes in the dev set (25 clients * 10 images * 2 recordings) + + assert len(db.objects(protocol='public_MC_RGB', groups='eval', purposes='enroll')) == 500 # 500 samples for enrollment in the eval set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_MC_RGB', groups='eval', purposes='enroll', model_ids='058')) == 20 # 20 samples to enroll model '058' in the eval set + assert len(db.objects(protocol='public_MC_RGB', groups='eval', purposes='enroll', model_ids='001')) == 0 # 0 samples to enroll model '001' (it is a world model) + assert len(db.objects(protocol='public_MC_RGB', groups='eval', purposes='probe')) == 500 # 500 samples as probes in the eval set (25 clients * 10 images * 2 recordings) + +def test_query_public_UD_RGB(): + """ + Test some queries for the public UD RGB protocol + """ + db = bob.db.fargo.Database() + + assert len(db.client_ids(protocol='public_UD_RGB')) == 75 # 75 client ids for world, dev and eval + assert len(db.client_ids(protocol='public_UD_RGB', groups='world')) == 25 # 25 client ids for world + assert len(db.client_ids(protocol='public_UD_RGB', groups='dev')) == 25 # 25 client ids for dev + assert len(db.client_ids(protocol='public_UD_RGB', groups='eval')) == 25 # 25 client ids for eval + + assert len(db.model_ids(protocol='public_UD_RGB')) == 75 # 75 model ids for world, dev and eval + assert len(db.model_ids(protocol='public_UD_RGB', groups='world')) == 25 # 25 model ids for world + assert len(db.model_ids(protocol='public_UD_RGB', groups='dev')) == 25 # 10 model ids for dev + assert len(db.model_ids(protocol='public_UD_RGB', groups='eval')) == 25 # 10 model ids for eval + + assert len(db.objects(protocol='public_UD_RGB', groups='world')) == 1000 # 1000 samples in the world set + + assert len(db.objects(protocol='public_UD_RGB', groups='dev', purposes='enroll')) == 500 # 500 samples for enrollment in the dev set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UD_RGB', groups='dev', purposes='enroll', model_ids='026')) == 20 # 20 samples to enroll model '026' in the dev set + assert len(db.objects(protocol='public_UD_RGB', groups='dev', purposes='enroll', model_ids='071')) == 0 # 0 samples to enroll model '071' (it is an eval model) + assert len(db.objects(protocol='public_UD_RGB', groups='dev', purposes='probe')) == 1000 # 1000 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + + assert len(db.objects(protocol='public_UD_RGB', groups='eval', purposes='enroll')) == 500 # 500 samples for enrollment in the eval set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UD_RGB', groups='eval', purposes='enroll', model_ids='058')) == 20 # 20 samples to enroll model '058' in the eval set + assert len(db.objects(protocol='public_UD_RGB', groups='eval', purposes='enroll', model_ids='001')) == 0 # 0 samples to enroll model '001' (it is a world model) + assert len(db.objects(protocol='public_UD_RGB', groups='eval', purposes='probe')) == 1000 # 500 samples as probes in the eval set (25 clients * 10 images * 4 recordings) + +def test_query_public_UO_RGB(): + """ + Test some queries for the public UO RGB protocol + """ + db = bob.db.fargo.Database() + + assert len(db.client_ids(protocol='public_UO_RGB')) == 75 # 75 client ids for world, dev and eval + assert len(db.client_ids(protocol='public_UO_RGB', groups='world')) == 25 # 25 client ids for world + assert len(db.client_ids(protocol='public_UO_RGB', groups='dev')) == 25 # 25 client ids for dev + assert len(db.client_ids(protocol='public_UO_RGB', groups='eval')) == 25 # 25 client ids for eval + + assert len(db.model_ids(protocol='public_UO_RGB')) == 75 # 75 model ids for world, dev and eval + assert len(db.model_ids(protocol='public_UO_RGB', groups='world')) == 25 # 25 model ids for world + assert len(db.model_ids(protocol='public_UO_RGB', groups='dev')) == 25 # 10 model ids for dev + assert len(db.model_ids(protocol='public_UO_RGB', groups='eval')) == 25 # 10 model ids for eval + + assert len(db.objects(protocol='public_UO_RGB', groups='world')) == 1000 # 1000 samples in the world set + + assert len(db.objects(protocol='public_UO_RGB', groups='dev', purposes='enroll')) == 500 # 500 samples for enrollment in the dev set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UO_RGB', groups='dev', purposes='enroll', model_ids='026')) == 20 # 20 samples to enroll model '026' in the dev set + assert len(db.objects(protocol='public_UO_RGB', groups='dev', purposes='enroll', model_ids='071')) == 0 # 0 samples to enroll model '071' (it is an eval model) + assert len(db.objects(protocol='public_UO_RGB', groups='dev', purposes='probe')) == 1000 # 1000 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + + assert len(db.objects(protocol='public_UO_RGB', groups='eval', purposes='enroll')) == 500 # 500 samples for enrollment in the eval set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UO_RGB', groups='eval', purposes='enroll', model_ids='058')) == 20 # 20 samples to enroll model '058' in the eval set + assert len(db.objects(protocol='public_UO_RGB', groups='eval', purposes='enroll', model_ids='001')) == 0 # 0 samples to enroll model '001' (it is a world model) + assert len(db.objects(protocol='public_UO_RGB', groups='eval', purposes='probe')) == 1000 # 500 samples as probes in the eval set (25 clients * 10 images * 4 recordings) + +def test_query_public_NIR(): + """ + Test some queries for the public NIR protocols + """ + db = bob.db.fargo.Database() + + assert len(db.client_ids(protocol='public_MC_NIR')) == 75 # 75 client ids for world, dev and eval + assert len(db.client_ids(protocol='public_MC_NIR', groups='dev')) == 25 # 25 client ids for dev + assert len(db.model_ids(protocol='public_UD_NIR', groups='eval')) == 25 # 10 model ids for eval + assert len(db.objects(protocol='public_UO_NIR', groups='world')) == 1000 # 1000 samples in the world set + + assert len(db.objects(protocol='public_UO_NIR', groups='dev', purposes='enroll')) == 500 # 500 samples for enrollment in the dev set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UD_NIR', groups='dev', purposes='enroll', model_ids='034')) == 20 # 20 samples to enroll model '034' in the dev set + assert len(db.objects(protocol='public_UO_NIR', groups='dev', purposes='enroll', model_ids='062')) == 0 # 0 samples to enroll model '062' (it is an eval model) + assert len(db.objects(protocol='public_MC_NIR', groups='dev', purposes='probe')) == 500 # MC Protocol -> 500 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + print len(db.objects(protocol='public_UD_NIR', groups='dev', purposes='probe')) + assert len(db.objects(protocol='public_UD_NIR', groups='dev', purposes='probe')) == 1000 # UO protocol -> 1000 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + + assert len(db.objects(protocol='public_UO_NIR', groups='eval', purposes='enroll')) == 500 # 500 samples for enrollment in the eval set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UD_NIR', groups='eval', purposes='enroll', model_ids='058')) == 20 # 20 samples to enroll model '058' in the eval set + assert len(db.objects(protocol='public_UO_NIR', groups='eval', purposes='enroll', model_ids='001')) == 0 # 0 samples to enroll model '001' (it is a world model) + assert len(db.objects(protocol='public_MC_NIR', groups='eval', purposes='probe')) == 500 # MC Protocol -> 500 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + assert len(db.objects(protocol='public_UD_NIR', groups='eval', purposes='probe')) == 1000 # 500 samples as probes in the eval set (25 clients * 10 images * 4 recordings) + +def test_query_public_depth(): + """ + Test some queries for the public depth protocols + """ + db = bob.db.fargo.Database() + + assert len(db.client_ids(protocol='public_MC_depth')) == 75 # 75 client ids for world, dev and eval + assert len(db.client_ids(protocol='public_MC_depth', groups='dev')) == 25 # 25 client ids for dev + assert len(db.model_ids(protocol='public_UD_depth', groups='eval')) == 25 # 10 model ids for eval + assert len(db.objects(protocol='public_UO_depth', groups='world')) == 1000 # 1000 samples in the world set + + assert len(db.objects(protocol='public_UO_depth', groups='dev', purposes='enroll')) == 500 # 500 samples for enrollment in the dev set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UD_depth', groups='dev', purposes='enroll', model_ids='034')) == 20 # 20 samples to enroll model '034' in the dev set + assert len(db.objects(protocol='public_UO_depth', groups='dev', purposes='enroll', model_ids='062')) == 0 # 0 samples to enroll model '062' (it is an eval model) + assert len(db.objects(protocol='public_MC_depth', groups='dev', purposes='probe')) == 500 # MC Protocol -> 500 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + assert len(db.objects(protocol='public_UD_depth', groups='dev', purposes='probe')) == 1000 # UO protocol -> 1000 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + + assert len(db.objects(protocol='public_UO_depth', groups='eval', purposes='enroll')) == 500 # 500 samples for enrollment in the eval set (25 clients * 10 images * 2 recordings) + assert len(db.objects(protocol='public_UD_depth', groups='eval', purposes='enroll', model_ids='058')) == 20 # 20 samples to enroll model '058' in the eval set + assert len(db.objects(protocol='public_UO_depth', groups='eval', purposes='enroll', model_ids='001')) == 0 # 0 samples to enroll model '001' (it is a world model) + assert len(db.objects(protocol='public_MC_depth', groups='eval', purposes='probe')) == 500 # MC Protocol -> 500 samples as probes in the dev set (25 clients * 10 images * 4 recordings) + assert len(db.objects(protocol='public_UD_depth', groups='eval', purposes='probe')) == 1000 # 500 samples as probes in the eval set (25 clients * 10 images * 4 recordings)