Commit 8a3dbb59 authored by André Anjos's avatar André Anjos 💬

Update utfvp interface

parent ee9bb4ee
Pipeline #16954 failed with stage
in 107 minutes and 12 seconds
#!/usr/bin/env python #!/usr/bin/env python
# vim: set fileencoding=utf-8 : # vim: set fileencoding=utf-8 :
# Fri 04 Nov 2016 14:46:53 CET # Tue 27 Sep 2016 16:48:57 CEST
from bob.bio.base.database import BioFile, BioDatabase from bob.bio.base.database import BioFile, BioDatabase
from . import AnnotatedArray
from ..preprocessor.utils import poly_to_mask
class File(BioFile): class File(BioFile):
""" """
Implements extra properties of vein files for the UTFVP Fingervein database Implements extra properties of vein files for the UTFVP database
Parameters: Parameters:
f (object): Low-level file (or sample) object that is kept inside f (object): Low-level file (or sample) object that is kept inside
""" """
def __init__(self, f): def __init__(self, f):
super(File, self).__init__(client_id=f.client_id, path=f.path, super(File, self).__init__(client_id=f.unique_finger_name, path=f.path,
file_id=f.id) file_id=f.id)
self.__f = f self.__f = f
def load(self, *args, **kwargs):
"""(Overrides base method) Loads both image and mask"""
image = super(File, self).load(*args, **kwargs)
roi = self.__f.roi()
return AnnotatedArray(image, metadata=dict(roi=roi))
class Database(BioDatabase): class Database(BioDatabase):
""" """
Implements verification API for querying UTFVP Fingervein database. Implements verification API for querying UTFVP database.
""" """
def __init__(self, **kwargs): def __init__(self, **kwargs):
...@@ -34,22 +46,38 @@ class Database(BioDatabase): ...@@ -34,22 +46,38 @@ class Database(BioDatabase):
from bob.db.utfvp.query import Database as LowLevelDatabase from bob.db.utfvp.query import Database as LowLevelDatabase
self._db = LowLevelDatabase() self._db = LowLevelDatabase()
self.low_level_group_names = ('train', 'dev')
self.high_level_group_names = ('world', 'dev')
def groups(self):
return self.convert_names_to_highlevel(self._db.groups(),
self.low_level_group_names, self.high_level_group_names)
def client_id_from_model_id(self, model_id, group='dev'):
"""Required as ``model_id != client_id`` on this database"""
return self._db.finger_name_from_model_id(model_id)
def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs):
protocol = protocol if protocol is not None else self.protocol
groups = self.convert_names_to_lowlevel(groups,
self.low_level_group_names, self.high_level_group_names)
return self._db.model_ids(groups=groups, protocol=protocol) return self._db.model_ids(groups=groups, protocol=protocol)
def objects(self, groups=None, protocol=None, purposes=None, def objects(self, groups=None, protocol=None, purposes=None,
model_ids=None, **kwargs): model_ids=None, **kwargs):
groups = self.convert_names_to_lowlevel(groups,
self.low_level_group_names, self.high_level_group_names)
retval = self._db.objects(groups=groups, protocol=protocol, retval = self._db.objects(groups=groups, protocol=protocol,
purposes=purposes, model_ids=model_ids, **kwargs) purposes=purposes, model_ids=model_ids,
**kwargs)
return [File(f) for f in retval] return [File(f) for f in retval]
def annotations(self, file): def annotations(self, file):
return None return None
def client_id_from_model_id(self, model_id, group='dev'):
"""Required as ``model_id != client_id`` on this database"""
return self._db.get_client_id_from_model_id(model_id)
...@@ -14,8 +14,8 @@ def test_utfvp(): ...@@ -14,8 +14,8 @@ def test_utfvp():
module = bob.bio.base.load_resource('utfvp', 'config', module = bob.bio.base.load_resource('utfvp', 'config',
preferred_package='bob.bio.vein') preferred_package='bob.bio.vein')
try: try:
check_database(module.database, protocol=module.protocol, check_database(module.database, protocol='nomLeftIndex', groups=('dev',
groups=('dev', 'eval')) 'eval'))
except IOError as e: except IOError as e:
raise SkipTest( raise SkipTest(
"The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e) "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e)
...@@ -52,4 +52,4 @@ def test_putvein(): ...@@ -52,4 +52,4 @@ def test_putvein():
check_database(module.database, protocol='wrist-LR_1', groups=('dev',)) check_database(module.database, protocol='wrist-LR_1', groups=('dev',))
except IOError as e: except IOError as e:
raise SkipTest( raise SkipTest(
"The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e) "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e)
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment