diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f26a01e948cdc392cfffaa8447e4eeb8aac6ff48..3c382ceb429faf36f4ca20c84c6386c95519597d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,10 +33,13 @@ variables: variables: &build_variables BOB_DOCUMENTATION_SERVER: "http://www.idiap.ch/software/bob/docs/latest/bob/%s/master/" script: - - ./bin/buildout + - ./bin/buildout -c develop.cfg - if [ -x ./bin/bob_dbmanage.py ]; then ./bin/bob_dbmanage.py all download --force; fi - ./bin/sphinx-build doc sphinx - ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG} + - cd ./src/bob.bio.base + - ../../bin/python setup.py bdist_wheel --dist-dir ../../dist --python-tag ${WHEEL_TAG} + - cd ../../ after_script: - rm -rf ${CONDA_PREFIX} artifacts: @@ -76,7 +79,7 @@ variables: before_script: - ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX} - source ${CONDA_FOLDER}/bin/activate ${CONDA_PREFIX} - - pip install --use-wheel --no-index --pre dist/*.whl + - pip install --use-wheel --upgrade --no-index --pre dist/*.whl script: - cd ${CONDA_PREFIX} - python -c "from ${CI_PROJECT_NAME} import get_config; print(get_config())" diff --git a/bob/bio/vein/configurations/database/__init__.py b/bob/bio/vein/configurations/database/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/bob/bio/vein/configurations/database/biowave_test.py b/bob/bio/vein/configurations/database/biowave_test.py new file mode 100644 index 0000000000000000000000000000000000000000..0fd6d9b23a1d2d3e751afc7ce8dc5c075642d316 --- /dev/null +++ b/bob/bio/vein/configurations/database/biowave_test.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from bob.bio.vein.database import BiowaveTestBioDatabase + +biowave_test_image_directory = "[YOUR_BIOWAVE_TEST_IMAGE_DIRECTORY]" + +database = BiowaveTestBioDatabase( + original_directory=biowave_test_image_directory, + original_extension='.png', + protocol='all' +) diff --git a/bob/bio/vein/configurations/database/utfvp.py b/bob/bio/vein/configurations/database/utfvp.py new file mode 100644 index 0000000000000000000000000000000000000000..87e5b246f1b7fdc9f7c6d89264b22e819e63fc7e --- /dev/null +++ b/bob/bio/vein/configurations/database/utfvp.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from bob.bio.vein.database import UtfvpBioDatabase + +utfvp_directory = "[YOUR_UTFVP_DIRECTORY]" + +database = UtfvpBioDatabase( + original_directory = utfvp_directory, + extension = ".png", + ) + diff --git a/bob/bio/vein/configurations/database/verafinger.py b/bob/bio/vein/configurations/database/verafinger.py new file mode 100644 index 0000000000000000000000000000000000000000..4c5228b47d0bbf99d335e7bf44daa5f77d21ea86 --- /dev/null +++ b/bob/bio/vein/configurations/database/verafinger.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from bob.bio.vein.database import VerafingerBioDatabase + +vera_finger_directory = "[YOUR_VERAFINGER_DIRECTORY]" + +database = VerafingerBioDatabase( + original_directory = vera_finger_directory, + original_extension = '.png', + ) + diff --git a/bob/bio/vein/database/__init__.py b/bob/bio/vein/database/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e648729a12665612bedd501f52e0433613ae271f --- /dev/null +++ b/bob/bio/vein/database/__init__.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : + + +from .biowave_test import BiowaveTestBioDatabase +from .verafinger import VerafingerBioDatabase +from .utfvp import UtfvpBioDatabase + +# gets sphinx autodoc done right - don't remove it +__all__ = [_ for _ in dir() if not _.startswith('_')] diff --git a/bob/bio/vein/database/biowave_test.py b/bob/bio/vein/database/biowave_test.py new file mode 100644 index 0000000000000000000000000000000000000000..1d37f08fac12d8cbfaae4a398391ad3b4b87bbc1 --- /dev/null +++ b/bob/bio/vein/database/biowave_test.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Teodors Eglitis <teodors.eglitis@idiap.ch> +# Wed 20 Jul + +""" + BIOWAVE_TEST database implementation of bob.bio.db.BioDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to BIOWAVE_TEST database for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import VeinBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class BiowaveTestBioDatabase(BioDatabase): + """ + Implements verification API for querying BIOWAVE_TEST database. + """ + + def __init__( + self, + **kwargs + ): + # before it was also "name" in the init. + # + # the BioDatabase class is defined in: + # bob.bio.db/bob/bio/db/database.py + # + # In this -- the high level implementation we call base class constructors to + # open a session to the database. We use **kwargs so that we could pass + # the arguments later, e.g. from the default database configuration. + + super(BiowaveTestBioDatabase, self).__init__(name='biowave_test', **kwargs) + + from bob.db.biowave_test.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def client_id_from_model_id(self, model_id, group='dev'): + """Required as ``model_id != client_id`` on this database""" + return self.__db.client_id_from_model_id(model_id) + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(protocol=protocol, groups=groups) + + def objects(self, protocol=None, groups=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(protocol=protocol, groups=groups, purposes=purposes, model_ids=model_ids) + return [VeinBioFile(f) for f in retval] + + # the methodes are derived from: + # bob.bio.db/bob/bio/db/database.py + # this means that methodes defined there need to have certain arguments, e.g.: + # model_ids_with_protocol: + # groups; + # protocol; + # objects: + # groups; + # protocol; + # purposes; + # model_ids; + # If you have some other arguments to pass, use **kwargs, if your methods doesn't have some + # arguments, just don't pass them (e.g. see the model_ids). diff --git a/bob/bio/vein/database/database.py b/bob/bio/vein/database/database.py new file mode 100644 index 0000000000000000000000000000000000000000..b20eaab924d86305f07f43eeaf9fea8e015bb24f --- /dev/null +++ b/bob/bio/vein/database/database.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Wed 20 July 14:43:22 CEST 2016 + +""" + Verification API for bob.db.voxforge +""" + +from bob.bio.base.database.file import BioFile + + +class VeinBioFile(BioFile): + def __init__(self, f): + """ + Initializes this File object with an File equivalent for + VoxForge database. + """ + super(VeinBioFile, self).__init__(client_id=f.client_id, path=f.path, file_id=f.id) + + self.__f = f + + diff --git a/bob/bio/vein/database/utfvp.py b/bob/bio/vein/database/utfvp.py new file mode 100644 index 0000000000000000000000000000000000000000..548aea122919337b7a214cf1d90d67348a896d9f --- /dev/null +++ b/bob/bio/vein/database/utfvp.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : + +from .database import VeinBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class UtfvpBioDatabase(BioDatabase): + """ + Implements verification API for querying UTFVP Fingervein database. + """ + + def __init__(self, **kwargs): + + super(UtfvpBioDatabase, self).__init__(name='utfvp', + **kwargs) + from bob.db.utfvp.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + protocol = protocol if protocol is not None else self.protocol + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, + model_ids=None, **kwargs): + + retval = self.__db.objects(groups=groups, protocol=protocol, + purposes=purposes, model_ids=model_ids, **kwargs) + return [VeinBioFile(f) for f in retval] diff --git a/bob/bio/vein/database/verafinger.py b/bob/bio/vein/database/verafinger.py new file mode 100644 index 0000000000000000000000000000000000000000..c4906bbf950f2e45467eadbbc4d9cb49089b15c2 --- /dev/null +++ b/bob/bio/vein/database/verafinger.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : + + +from .database import VeinBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class VerafingerBioDatabase(BioDatabase): + """ + Implements verification API for querying Vera Fingervein database. + """ + + def __init__(self, **kwargs): + + super(VerafingerBioDatabase, self).__init__(name='verafinger', + **kwargs) + from bob.db.verafinger.query import Database as 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): + + 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) + + def objects(self, groups=None, protocol=None, purposes=None, + 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, + purposes=purposes, model_ids=model_ids, **kwargs) + return [VeinBioFile(f) for f in retval] diff --git a/develop.cfg b/develop.cfg index 789100ef8c376b9fec1bcff976ba79679d22bd9e..19551f8afa0d6f274403d1d092acb35e71bf088f 100644 --- a/develop.cfg +++ b/develop.cfg @@ -1,5 +1,6 @@ ; vim: set fileencoding=utf-8 : -; Fri 19 Aug 2016 13:14:15 CEST +; Manuel Guenther <manuel.guenther@idiap.ch> +; Thu Oct 9 16:51:06 CEST 2014 [buildout] parts = scripts @@ -12,7 +13,6 @@ eggs = bob.bio.vein extensions = bob.buildout mr.developer - auto-checkout = * develop = src/bob.extension src/bob.blitz @@ -28,10 +28,10 @@ develop = src/bob.extension src/bob.db.verafinger src/bob.db.utfvp src/bob.db.putvein + src/bob.db.biowave_test src/bob.learn.activation src/bob.learn.linear src/bob.learn.em - src/bob.bio.db src/bob.bio.base . @@ -55,11 +55,13 @@ bob.db.base = git git@gitlab.idiap.ch:bob/bob.db.base bob.db.verafinger = git git@gitlab.idiap.ch:bob/bob.db.verafinger bob.db.utfvp = git git@gitlab.idiap.ch:bob/bob.db.utfvp bob.db.putvein = git git@gitlab.idiap.ch:bob/bob.db.putvein +bob.db.biowave_test = git git@gitlab.idiap.ch:bob/bob.db.biowave_test bob.learn.activation = git git@gitlab.idiap.ch:bob/bob.learn.activation bob.learn.linear = git git@gitlab.idiap.ch:bob/bob.learn.linear bob.learn.em = git git@gitlab.idiap.ch:bob/bob.learn.em -bob.bio.db = git git@gitlab.idiap.ch:bob/bob.bio.db -bob.bio.base = git git@gitlab.idiap.ch:bob/bob.bio.base +bob.bio.base = git git@gitlab.idiap.ch:bob/bob.bio.base branch=issue-8-remove-database-configuration + [scripts] recipe = bob.buildout:scripts +dependent-scripts = true diff --git a/requirements.txt b/requirements.txt index 28095bc1f293b9a84737b63301ca2f8707656944..5b4ee81863853e897b7413582460194e3e55677b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ bob.io.matlab bob.io.image bob.ip.base bob.bio.base -bob.bio.db bob.db.utfvp bob.db.verafinger bob.db.putvein +bob.db.biowave_test \ No newline at end of file diff --git a/setup.py b/setup.py index 21803e5338beb550fb412499f6f411d94534569d..f875c43ef6a6ad91850ea461cb0bbc8ce88aeaf7 100644 --- a/setup.py +++ b/setup.py @@ -32,8 +32,8 @@ setup( entry_points={ 'bob.bio.database': [ - 'verafinger = bob.bio.db.default_configs.verafinger:database', - 'utfvp = bob.bio.db.default_configs.utfvp:database', + 'verafinger = bob.bio.base.configurations.database.verafinger:database', + 'utfvp = bob.bio.base.configurations.database.utfvp:database', ], 'bob.bio.preprocessor': [