From ebc2f6969043077a98a3fb359054fcd551fad5d4 Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.anjos@idiap.ch>
Date: Fri, 8 Jul 2016 16:08:17 +0200
Subject: [PATCH] [many] First package re-structuring to comply with new
 bob.bio system

---
 README.rst                                    | 106 +++++++------
 bob/__init__.py                               |   5 +-
 bob/bio/__init__.py                           |   3 +
 bob/{fingervein => bio/vein}/__init__.py      |   0
 .../vein/algorithms}/HammingDistance.py       |   0
 .../vein/algorithms}/MiuraMatch.py            |   0
 .../tools => bio/vein/algorithms}/__init__.py |   0
 .../vein}/configurations/__init__.py          |   0
 .../vein/configurations/algorithms.py}        |   0
 .../configurations/databases/__init__.py      |   0
 .../vein}/configurations/databases/utfvp.py   |   0
 .../vein}/configurations/databases/vera.py    |   0
 .../configurations/extractors}/__init__.py    |   0
 .../vein/configurations/extractors}/lbp.py    |   0
 .../extractors}/maximum_curvature.py          |   0
 .../extractors}/normalised_crosscorr.py       |   0
 .../extractors}/repeated_line_tracking.py     |   0
 .../extractors}/wide_line_detector.py         |   0
 .../vein}/configurations/grid/__init__.py     |   0
 .../vein}/configurations/grid/demanding.py    |   0
 .../vein}/configurations/grid/gbu.py          |   0
 .../vein}/configurations/grid/gpu.py          |   0
 .../vein}/configurations/grid/gpu2.py         |   0
 .../vein}/configurations/grid/gpu3.py         |   0
 .../vein}/configurations/grid/grid.py         |   0
 .../vein}/configurations/grid/large.py        |   0
 .../vein}/configurations/grid/local.py        |   0
 .../vein}/configurations/grid/small.py        |   0
 .../configurations/grid/very_demanding.py     |   0
 .../configurations/preprocessors}/__init__.py |   0
 .../finger_crop_None_CircGabor.py             |   0
 .../preprocessors}/finger_crop_None_HE.py     |   0
 .../preprocessors}/finger_crop_None_HFE.py    |   0
 .../preprocessors}/finger_crop_None_None.py   |   0
 .../vein/extractors}/LocalBinaryPatterns.py   |   0
 .../vein/extractors}/MaximumCurvature.py      |   0
 .../extractors}/NormalisedCrossCorrelation.py |   0
 .../vein/extractors}/PrincipalCurvature.py    |   0
 .../vein/extractors}/RepeatedLineTracking.py  |   0
 .../vein/extractors}/WideLineDetector.py      |   0
 .../vein/extractors}/__init__.py              |   0
 bob/{fingervein => bio/vein}/img_test/Vt.mat  | Bin
 bob/{fingervein => bio/vein}/img_test/bla.mat | Bin
 .../vein}/img_test/bla3.mat                   | Bin
 .../vein}/img_test/fvr255.mat                 | Bin
 .../vein}/img_test/fvr_huang.mat              | Bin
 .../vein}/img_test/fvr_mask.mat               | Bin
 .../vein}/img_test/fvr_matlab.mat             | Bin
 .../img_test/fvr_matlab_double_align.mat      | Bin
 .../fvr_matlab_double_align_reduced.mat       | Bin
 .../vein}/img_test/image.mat                  | Bin
 bob/{fingervein => bio/vein}/img_test/img.mat | Bin
 .../vein}/img_test/imgUTFVP.mat               | Bin
 .../vein}/img_test/imgUTFVPdouble.mat         | Bin
 .../vein}/img_test/img_001_L_1.mat            | Bin
 .../vein}/img_test/img_001_L_2.mat            | Bin
 .../vein}/img_test/img_huang.mat              | Bin
 .../vein}/img_test/img_matlab.mat             | Bin
 .../img_test/img_matlab_double_align.mat      | Bin
 .../img_matlab_double_align_reduced.mat       | Bin
 .../vein}/img_test/img_matlab_uint8.mat       | Bin
 .../vein}/img_test/img_o.mat                  | Bin
 .../vein}/img_test/img_ouint8.mat             | Bin
 bob/{fingervein => bio/vein}/img_test/k.mat   | Bin
 bob/{fingervein => bio/vein}/img_test/k1.mat  | Bin
 bob/{fingervein => bio/vein}/img_test/k2.mat  | Bin
 .../vein}/img_test/mask_001_L_1.mat           | Bin
 .../vein}/img_test/mask_001_L_2.mat           | Bin
 .../vein}/img_test/template_001_L_1.mat       | Bin
 .../vein}/img_test/template_001_L_2.mat       | Bin
 .../vein}/img_test/test_fvr.mat               | Bin
 .../vein}/img_test/test_img.mat               | Bin
 .../vein}/img_test/veins.mat                  | Bin
 bob/{fingervein => bio/vein}/img_test/xs.mat  | Bin
 bob/{fingervein => bio/vein}/img_test/ys.mat  | Bin
 .../vein/preprocessors}/FingerCrop.py         |   0
 .../vein/preprocessors}/__init__.py           |   0
 .../vein}/script/__init__.py                  |   0
 .../vein}/script/fingerveinverify.py          |   0
 .../vein}/script/scores2spoofingfile.py       |   0
 .../vein}/tests/__init__.py                   |   0
 .../tests/features/huangwl_input_fvr.mat      | Bin
 .../tests/features/huangwl_input_img.mat      | Bin
 .../vein}/tests/features/huangwl_output.mat   | Bin
 .../tests/features/miuramax_input_fvr.mat     | Bin
 .../tests/features/miuramax_input_img.mat     | Bin
 .../vein}/tests/features/miuramax_output.mat  | Bin
 .../tests/features/miurarlt_input_fvr.mat     | Bin
 .../tests/features/miurarlt_input_img.mat     | Bin
 .../vein}/tests/features/miurarlt_output.mat  | Bin
 .../tests/matching/0001_2_1_120509-135338.mat | Bin
 .../tests/matching/0001_2_2_120509-135558.mat | Bin
 .../tests/matching/0003_2_1_120509-141255.mat | Bin
 .../vein}/tests/matching/001_L_1.mat          | Bin
 .../vein}/tests/matching/001_L_1_h4w40.mat    | Bin
 .../preprocessing/0019_3_1_120509-160517.png  | Bin
 .../0019_3_1_120509-160517_fvr_lee_huang.mat  | Bin
 .../0019_3_1_120509-160517_img_lee.mat        | Bin
 .../0019_3_1_120509-160517_img_lee_huang.mat  | Bin
 bob/{fingervein => bio/vein}/tests/test.py    |   0
 bob/{fingervein => bio/vein}/utils.py         |   0
 buildout.cfg                                  |  41 +----
 doc/conf.py                                   |   8 +-
 requirements.txt                              |  13 ++
 setup.py                                      | 149 +++++++-----------
 105 files changed, 142 insertions(+), 183 deletions(-)
 create mode 100644 bob/bio/__init__.py
 rename bob/{fingervein => bio/vein}/__init__.py (100%)
 rename bob/{fingervein/tools => bio/vein/algorithms}/HammingDistance.py (100%)
 rename bob/{fingervein/tools => bio/vein/algorithms}/MiuraMatch.py (100%)
 rename bob/{fingervein/tools => bio/vein/algorithms}/__init__.py (100%)
 rename bob/{fingervein => bio/vein}/configurations/__init__.py (100%)
 rename bob/{fingervein/configurations/tools.py => bio/vein/configurations/algorithms.py} (100%)
 rename bob/{fingervein => bio/vein}/configurations/databases/__init__.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/databases/utfvp.py (100%)
 rename bob/{fingervein => bio/vein}/configurations/databases/vera.py (100%)
 rename bob/{fingervein/configurations/features => bio/vein/configurations/extractors}/__init__.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein/configurations/features => bio/vein/configurations/extractors}/lbp.py (100%)
 rename bob/{fingervein/configurations/features => bio/vein/configurations/extractors}/maximum_curvature.py (100%)
 rename bob/{fingervein/configurations/features => bio/vein/configurations/extractors}/normalised_crosscorr.py (100%)
 rename bob/{fingervein/configurations/features => bio/vein/configurations/extractors}/repeated_line_tracking.py (100%)
 rename bob/{fingervein/configurations/features => bio/vein/configurations/extractors}/wide_line_detector.py (100%)
 rename bob/{fingervein => bio/vein}/configurations/grid/__init__.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/grid/demanding.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/grid/gbu.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/grid/gpu.py (100%)
 rename bob/{fingervein => bio/vein}/configurations/grid/gpu2.py (100%)
 rename bob/{fingervein => bio/vein}/configurations/grid/gpu3.py (100%)
 rename bob/{fingervein => bio/vein}/configurations/grid/grid.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/grid/large.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/grid/local.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/grid/small.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/configurations/grid/very_demanding.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein/configurations/preprocessing => bio/vein/configurations/preprocessors}/__init__.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein/configurations/preprocessing => bio/vein/configurations/preprocessors}/finger_crop_None_CircGabor.py (100%)
 rename bob/{fingervein/configurations/preprocessing => bio/vein/configurations/preprocessors}/finger_crop_None_HE.py (100%)
 rename bob/{fingervein/configurations/preprocessing => bio/vein/configurations/preprocessors}/finger_crop_None_HFE.py (100%)
 rename bob/{fingervein/configurations/preprocessing => bio/vein/configurations/preprocessors}/finger_crop_None_None.py (100%)
 rename bob/{fingervein/features => bio/vein/extractors}/LocalBinaryPatterns.py (100%)
 rename bob/{fingervein/features => bio/vein/extractors}/MaximumCurvature.py (100%)
 rename bob/{fingervein/features => bio/vein/extractors}/NormalisedCrossCorrelation.py (100%)
 rename bob/{fingervein/features => bio/vein/extractors}/PrincipalCurvature.py (100%)
 rename bob/{fingervein/features => bio/vein/extractors}/RepeatedLineTracking.py (100%)
 rename bob/{fingervein/features => bio/vein/extractors}/WideLineDetector.py (100%)
 rename bob/{fingervein/features => bio/vein/extractors}/__init__.py (100%)
 rename bob/{fingervein => bio/vein}/img_test/Vt.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/bla.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/bla3.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/fvr255.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/fvr_huang.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/fvr_mask.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/fvr_matlab.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/fvr_matlab_double_align.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/fvr_matlab_double_align_reduced.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/image.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/imgUTFVP.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/imgUTFVPdouble.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_001_L_1.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_001_L_2.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_huang.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_matlab.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_matlab_double_align.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_matlab_double_align_reduced.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_matlab_uint8.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_o.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/img_ouint8.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/k.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/k1.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/k2.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/mask_001_L_1.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/mask_001_L_2.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/template_001_L_1.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/template_001_L_2.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/test_fvr.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/test_img.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/veins.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/xs.mat (100%)
 rename bob/{fingervein => bio/vein}/img_test/ys.mat (100%)
 rename bob/{fingervein/preprocessing => bio/vein/preprocessors}/FingerCrop.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein/preprocessing => bio/vein/preprocessors}/__init__.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/script/__init__.py (100%)
 rename bob/{fingervein => bio/vein}/script/fingerveinverify.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/script/scores2spoofingfile.py (100%)
 mode change 100755 => 100644
 rename bob/{fingervein => bio/vein}/tests/__init__.py (100%)
 rename bob/{fingervein => bio/vein}/tests/features/huangwl_input_fvr.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/huangwl_input_img.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/huangwl_output.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/miuramax_input_fvr.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/miuramax_input_img.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/miuramax_output.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/miurarlt_input_fvr.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/miurarlt_input_img.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/features/miurarlt_output.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/matching/0001_2_1_120509-135338.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/matching/0001_2_2_120509-135558.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/matching/0003_2_1_120509-141255.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/matching/001_L_1.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/matching/001_L_1_h4w40.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/preprocessing/0019_3_1_120509-160517.png (100%)
 rename bob/{fingervein => bio/vein}/tests/preprocessing/0019_3_1_120509-160517_fvr_lee_huang.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/preprocessing/0019_3_1_120509-160517_img_lee.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/preprocessing/0019_3_1_120509-160517_img_lee_huang.mat (100%)
 rename bob/{fingervein => bio/vein}/tests/test.py (100%)
 rename bob/{fingervein => bio/vein}/utils.py (100%)
 create mode 100644 requirements.txt

diff --git a/README.rst b/README.rst
index b0b5e49..36fcf86 100644
--- a/README.rst
+++ b/README.rst
@@ -1,6 +1,6 @@
 .. vim: set fileencoding=utf-8 :
-.. Pedro Tome <pedro.tome@idiap.ch>
-.. Thu Jan 15 12:51:09 CEST 2015
+.. Andre Anjos <andre.anjos@idiap.ch>
+.. Fri 08 Jul 2016 15:38:56 CEST
 
 .. image:: http://img.shields.io/badge/docs-stable-yellow.png
    :target: http://pythonhosted.org/bob.fingervein/index.html
@@ -18,54 +18,69 @@
    :target: https://pypi.python.org/pypi/bob.fingervein
 
 
-===================================
- The Fingervein Recognition Library
-===================================
+=========================================
+ The Biometrics Vein Recognition Library
+=========================================
 
-Welcome to the Finger vein Recognition Library based on Bob.
-This library is designed to perform a fair comparison of finger vein recognition algorithms.
-It contains scripts to execute various kinds of finger vein recognition experiments on a variety of finger vein image databases, and running the help is as easy as going to the command line and typing::
+Welcome to the Finger vein Recognition Library based on Bob. This library is
+designed to perform a fair comparison of finger vein recognition algorithms.
+It contains scripts to execute various kinds of finger vein recognition
+experiments on a variety of finger vein image databases, and running the help
+is as easy as going to the command line and typing::
 
-  $ bin/fingerveinverify.py --help
+  $ bin/veinverify.py --help
 
 
 About
 -----
 
-This library is developed at the `Biometrics group <http://www.idiap.ch/scientific-research/research-groups/biometric-person-recognition>`_ at the `Idiap Research Institute <http://www.idiap.ch>`_.
-The FingerVeinRecLib is designed to run finger vein recognition experiments in a comparable and reproducible manner.
+This library is developed at the `Biometrics group
+<http://www.idiap.ch/scientific-research/research-groups/biometric-person-recognition>`_
+at the `Idiap Research Institute <http://www.idiap.ch>`_.  The vein recognition
+library is designed to run vein recognition experiments in a comparable and
+reproducible manner.
 
-.. note::
-  When you are working at Idiap_, you might get a version of the FingerVeinRecLib, where all paths are set up such that you can directly start running experiments.
-  Outside Idiap_, you need to set up the paths to point to your databases, please check `Read Further`_ on how to do that.
 
 Databases
-.........
-To achieve this goal, interfaces to many publicly available facial image databases are contained, and default evaluation protocols are defined, e.g.:
+---------
+
+To achieve this goal, interfaces to some publicly available vein image
+databases are contained, and default evaluation protocols are defined, e.g.:
 
 - UTFVP - University of Twente Finger Vein Database [http://website]
 - VERA Finger vein Database [http://www.idiap.ch/scientific-research/resources]
 
+
 Algorithms
-..........
-Together with that, a broad variety of traditional and state-of-the-art finger vein recognition algorithms such as:
+----------
+
+Together with that, implementations of a variety of traditional and
+state-of-the-art vein recognition algorithms are provided:
 
-- Maximum Curvature [MNM+05]_
-- Repeated Line Tracking [MNM+04]_
-- Wide Line Detector [HDLTL+10]_
+* Maximum Curvature [MNM+05]_
+* Repeated Line Tracking [MNM+04]_
+* Wide Line Detector [HDLTL+10]_
+
+Tools to evaluate the results can easily be used to create scientific plots. We
+also provide handles to run experiments using parallel processes or an SGE
+grid.
 
-is provided.
-Furthermore, tools to evaluate the results can easily be used to create scientific plots, and interfaces to run experiments using parallel processes or an SGE grid are provided.
 
 Extensions
-..........
-On top of these already pre-coded algorithms, the FingerVeinRecLib provides an easy Python interface for implementing new image preprocessors, feature types, finger vein recognition algorithms or database interfaces, which directly integrate into the fingervein recognition experiment.
-Hence, after a short period of coding, researchers can compare their new invention directly with already existing algorithms in a fair manner.
+----------
+
+On top of these already pre-coded algorithms, the vein recognition library
+provides an easy Python interface for implementing new image preprocessors,
+feature types, finger vein recognition algorithms or database interfaces, which
+directly integrate into the fingervein recognition experiment. Hence, after a
+short period of coding, researchers can compare their new invention directly
+with already existing algorithms in a fair manner.
+
 
 References
-..........
+----------
 
-.. [MNM+05]  *N. Miura, A. Nagasaka, and T. Miyatake*. **Extraction of Finger-Vein Pattern Using Maximum Curvature Points in Image Profiles**. Proceedings on IAPR conference on machine vision applications, 9, pp. 347--350, 2005. 
+.. [MNM+05]  *N. Miura, A. Nagasaka, and T. Miyatake*. **Extraction of Finger-Vein Pattern Using Maximum Curvature Points in Image Profiles**. Proceedings on IAPR conference on machine vision applications, 9, pp. 347--350, 2005.
 
 .. [MNM+04]  *N. Miura, A. Nagasaka, and T. Miyatake*. **Feature extraction of finger vein patterns based on repeated line tracking and its application to personal identification**. Machine Vision and Applications, Vol. 15, Num. 4, pp. 194--203, 2004.
 
@@ -75,39 +90,36 @@ References
 Installation
 ------------
 
-To download the FingerVeinRecLib, please go to http://pypi.python.org/pypi/fingerveinreclib, click on the **download** button and extract the .zip file to a folder of your choice.
+To download the finger vein library, go to
+http://pypi.python.org/pypi/bob.bio.vein click on the **download** button and
+extract the .zip file to a folder of your choice.
 
-The FingerVeinRecLib is a satellite package of the free signal processing and machine learning library Bob_, and some of its algorithms rely on the `CSU Face Recognition Resources`_.
-These two dependencies have to be downloaded manually, as explained in the following.
-
-Bob
-...
-
-You will need a copy of Bob in version 1.2.0 or newer to run the algorithms.
-Please download Bob_ from its webpage.
-After downloading, you should go to the console and write::
+The FingerVeinRecLib is a satellite package of the free signal processing and
+machine learning library Bob_. We advise you install Bob first and then use
+that installation to bootstrap the installation of this package::
 
   $ python bootstrap.py
   $ bin/buildout
 
-This will download all required packages and install them locally.
-If you don't want all the database packages to be downloaded, please remove the xbob.db.[database] lines from the ``eggs`` section of the file **buildout.cfg** in the main directory before calling the three commands above.
+This will download any further dependencies and install them locally.
+
 
-Test your installation
-......................
+Running tests
+-------------
 
-To verify that your installation worked as expected, you might want to run our test utilities::
+To verify that your installation worked as expected, you might want to run our
+unit tests with::
 
   $ bin/nosetests
 
 Usually, all tests should pass, if you use the latest packages of Bob_.
-With other versions of Bob_, you might find some failing tests, or some errors might occur.
 
 
 Cite our paper
 --------------
 
-If you use the FingerVeinRecLib in any of your experiments, please cite the following paper::
+If you use this library in any of your experiments, please cite the following
+paper::
 
   @inproceedings{Tome_IEEEBIOSIG2014,
       author = {Tome, Pedro and Vanoni, Matthias and Marcel, S{\'{e}}bastien},
@@ -121,11 +133,7 @@ If you use the FingerVeinRecLib in any of your experiments, please cite the foll
       ocation = {Darmstadt, Germay},
       pdf = {http://publications.idiap.ch/downloads/papers/2014/Tome_IEEEBIOSIG2014.pdf}
 }
-       
 
 
 .. _bob: http://www.idiap.ch/software/bob
 .. _idiap: http://www.idiap.ch
-.. _bioidiap at github: http://www.github.com/bioidiap
-
-
diff --git a/bob/__init__.py b/bob/__init__.py
index 60381ea..2ab1e28 100644
--- a/bob/__init__.py
+++ b/bob/__init__.py
@@ -1,2 +1,3 @@
-#see http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
-__import__('pkg_resources').declare_namespace(__name__)
+# see https://docs.python.org/3/library/pkgutil.html
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
diff --git a/bob/bio/__init__.py b/bob/bio/__init__.py
new file mode 100644
index 0000000..2ab1e28
--- /dev/null
+++ b/bob/bio/__init__.py
@@ -0,0 +1,3 @@
+# see https://docs.python.org/3/library/pkgutil.html
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
diff --git a/bob/fingervein/__init__.py b/bob/bio/vein/__init__.py
similarity index 100%
rename from bob/fingervein/__init__.py
rename to bob/bio/vein/__init__.py
diff --git a/bob/fingervein/tools/HammingDistance.py b/bob/bio/vein/algorithms/HammingDistance.py
similarity index 100%
rename from bob/fingervein/tools/HammingDistance.py
rename to bob/bio/vein/algorithms/HammingDistance.py
diff --git a/bob/fingervein/tools/MiuraMatch.py b/bob/bio/vein/algorithms/MiuraMatch.py
similarity index 100%
rename from bob/fingervein/tools/MiuraMatch.py
rename to bob/bio/vein/algorithms/MiuraMatch.py
diff --git a/bob/fingervein/tools/__init__.py b/bob/bio/vein/algorithms/__init__.py
similarity index 100%
rename from bob/fingervein/tools/__init__.py
rename to bob/bio/vein/algorithms/__init__.py
diff --git a/bob/fingervein/configurations/__init__.py b/bob/bio/vein/configurations/__init__.py
similarity index 100%
rename from bob/fingervein/configurations/__init__.py
rename to bob/bio/vein/configurations/__init__.py
diff --git a/bob/fingervein/configurations/tools.py b/bob/bio/vein/configurations/algorithms.py
similarity index 100%
rename from bob/fingervein/configurations/tools.py
rename to bob/bio/vein/configurations/algorithms.py
diff --git a/bob/fingervein/configurations/databases/__init__.py b/bob/bio/vein/configurations/databases/__init__.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/databases/__init__.py
rename to bob/bio/vein/configurations/databases/__init__.py
diff --git a/bob/fingervein/configurations/databases/utfvp.py b/bob/bio/vein/configurations/databases/utfvp.py
similarity index 100%
rename from bob/fingervein/configurations/databases/utfvp.py
rename to bob/bio/vein/configurations/databases/utfvp.py
diff --git a/bob/fingervein/configurations/databases/vera.py b/bob/bio/vein/configurations/databases/vera.py
similarity index 100%
rename from bob/fingervein/configurations/databases/vera.py
rename to bob/bio/vein/configurations/databases/vera.py
diff --git a/bob/fingervein/configurations/features/__init__.py b/bob/bio/vein/configurations/extractors/__init__.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/features/__init__.py
rename to bob/bio/vein/configurations/extractors/__init__.py
diff --git a/bob/fingervein/configurations/features/lbp.py b/bob/bio/vein/configurations/extractors/lbp.py
similarity index 100%
rename from bob/fingervein/configurations/features/lbp.py
rename to bob/bio/vein/configurations/extractors/lbp.py
diff --git a/bob/fingervein/configurations/features/maximum_curvature.py b/bob/bio/vein/configurations/extractors/maximum_curvature.py
similarity index 100%
rename from bob/fingervein/configurations/features/maximum_curvature.py
rename to bob/bio/vein/configurations/extractors/maximum_curvature.py
diff --git a/bob/fingervein/configurations/features/normalised_crosscorr.py b/bob/bio/vein/configurations/extractors/normalised_crosscorr.py
similarity index 100%
rename from bob/fingervein/configurations/features/normalised_crosscorr.py
rename to bob/bio/vein/configurations/extractors/normalised_crosscorr.py
diff --git a/bob/fingervein/configurations/features/repeated_line_tracking.py b/bob/bio/vein/configurations/extractors/repeated_line_tracking.py
similarity index 100%
rename from bob/fingervein/configurations/features/repeated_line_tracking.py
rename to bob/bio/vein/configurations/extractors/repeated_line_tracking.py
diff --git a/bob/fingervein/configurations/features/wide_line_detector.py b/bob/bio/vein/configurations/extractors/wide_line_detector.py
similarity index 100%
rename from bob/fingervein/configurations/features/wide_line_detector.py
rename to bob/bio/vein/configurations/extractors/wide_line_detector.py
diff --git a/bob/fingervein/configurations/grid/__init__.py b/bob/bio/vein/configurations/grid/__init__.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/__init__.py
rename to bob/bio/vein/configurations/grid/__init__.py
diff --git a/bob/fingervein/configurations/grid/demanding.py b/bob/bio/vein/configurations/grid/demanding.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/demanding.py
rename to bob/bio/vein/configurations/grid/demanding.py
diff --git a/bob/fingervein/configurations/grid/gbu.py b/bob/bio/vein/configurations/grid/gbu.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/gbu.py
rename to bob/bio/vein/configurations/grid/gbu.py
diff --git a/bob/fingervein/configurations/grid/gpu.py b/bob/bio/vein/configurations/grid/gpu.py
similarity index 100%
rename from bob/fingervein/configurations/grid/gpu.py
rename to bob/bio/vein/configurations/grid/gpu.py
diff --git a/bob/fingervein/configurations/grid/gpu2.py b/bob/bio/vein/configurations/grid/gpu2.py
similarity index 100%
rename from bob/fingervein/configurations/grid/gpu2.py
rename to bob/bio/vein/configurations/grid/gpu2.py
diff --git a/bob/fingervein/configurations/grid/gpu3.py b/bob/bio/vein/configurations/grid/gpu3.py
similarity index 100%
rename from bob/fingervein/configurations/grid/gpu3.py
rename to bob/bio/vein/configurations/grid/gpu3.py
diff --git a/bob/fingervein/configurations/grid/grid.py b/bob/bio/vein/configurations/grid/grid.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/grid.py
rename to bob/bio/vein/configurations/grid/grid.py
diff --git a/bob/fingervein/configurations/grid/large.py b/bob/bio/vein/configurations/grid/large.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/large.py
rename to bob/bio/vein/configurations/grid/large.py
diff --git a/bob/fingervein/configurations/grid/local.py b/bob/bio/vein/configurations/grid/local.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/local.py
rename to bob/bio/vein/configurations/grid/local.py
diff --git a/bob/fingervein/configurations/grid/small.py b/bob/bio/vein/configurations/grid/small.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/small.py
rename to bob/bio/vein/configurations/grid/small.py
diff --git a/bob/fingervein/configurations/grid/very_demanding.py b/bob/bio/vein/configurations/grid/very_demanding.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/grid/very_demanding.py
rename to bob/bio/vein/configurations/grid/very_demanding.py
diff --git a/bob/fingervein/configurations/preprocessing/__init__.py b/bob/bio/vein/configurations/preprocessors/__init__.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/configurations/preprocessing/__init__.py
rename to bob/bio/vein/configurations/preprocessors/__init__.py
diff --git a/bob/fingervein/configurations/preprocessing/finger_crop_None_CircGabor.py b/bob/bio/vein/configurations/preprocessors/finger_crop_None_CircGabor.py
similarity index 100%
rename from bob/fingervein/configurations/preprocessing/finger_crop_None_CircGabor.py
rename to bob/bio/vein/configurations/preprocessors/finger_crop_None_CircGabor.py
diff --git a/bob/fingervein/configurations/preprocessing/finger_crop_None_HE.py b/bob/bio/vein/configurations/preprocessors/finger_crop_None_HE.py
similarity index 100%
rename from bob/fingervein/configurations/preprocessing/finger_crop_None_HE.py
rename to bob/bio/vein/configurations/preprocessors/finger_crop_None_HE.py
diff --git a/bob/fingervein/configurations/preprocessing/finger_crop_None_HFE.py b/bob/bio/vein/configurations/preprocessors/finger_crop_None_HFE.py
similarity index 100%
rename from bob/fingervein/configurations/preprocessing/finger_crop_None_HFE.py
rename to bob/bio/vein/configurations/preprocessors/finger_crop_None_HFE.py
diff --git a/bob/fingervein/configurations/preprocessing/finger_crop_None_None.py b/bob/bio/vein/configurations/preprocessors/finger_crop_None_None.py
similarity index 100%
rename from bob/fingervein/configurations/preprocessing/finger_crop_None_None.py
rename to bob/bio/vein/configurations/preprocessors/finger_crop_None_None.py
diff --git a/bob/fingervein/features/LocalBinaryPatterns.py b/bob/bio/vein/extractors/LocalBinaryPatterns.py
similarity index 100%
rename from bob/fingervein/features/LocalBinaryPatterns.py
rename to bob/bio/vein/extractors/LocalBinaryPatterns.py
diff --git a/bob/fingervein/features/MaximumCurvature.py b/bob/bio/vein/extractors/MaximumCurvature.py
similarity index 100%
rename from bob/fingervein/features/MaximumCurvature.py
rename to bob/bio/vein/extractors/MaximumCurvature.py
diff --git a/bob/fingervein/features/NormalisedCrossCorrelation.py b/bob/bio/vein/extractors/NormalisedCrossCorrelation.py
similarity index 100%
rename from bob/fingervein/features/NormalisedCrossCorrelation.py
rename to bob/bio/vein/extractors/NormalisedCrossCorrelation.py
diff --git a/bob/fingervein/features/PrincipalCurvature.py b/bob/bio/vein/extractors/PrincipalCurvature.py
similarity index 100%
rename from bob/fingervein/features/PrincipalCurvature.py
rename to bob/bio/vein/extractors/PrincipalCurvature.py
diff --git a/bob/fingervein/features/RepeatedLineTracking.py b/bob/bio/vein/extractors/RepeatedLineTracking.py
similarity index 100%
rename from bob/fingervein/features/RepeatedLineTracking.py
rename to bob/bio/vein/extractors/RepeatedLineTracking.py
diff --git a/bob/fingervein/features/WideLineDetector.py b/bob/bio/vein/extractors/WideLineDetector.py
similarity index 100%
rename from bob/fingervein/features/WideLineDetector.py
rename to bob/bio/vein/extractors/WideLineDetector.py
diff --git a/bob/fingervein/features/__init__.py b/bob/bio/vein/extractors/__init__.py
similarity index 100%
rename from bob/fingervein/features/__init__.py
rename to bob/bio/vein/extractors/__init__.py
diff --git a/bob/fingervein/img_test/Vt.mat b/bob/bio/vein/img_test/Vt.mat
similarity index 100%
rename from bob/fingervein/img_test/Vt.mat
rename to bob/bio/vein/img_test/Vt.mat
diff --git a/bob/fingervein/img_test/bla.mat b/bob/bio/vein/img_test/bla.mat
similarity index 100%
rename from bob/fingervein/img_test/bla.mat
rename to bob/bio/vein/img_test/bla.mat
diff --git a/bob/fingervein/img_test/bla3.mat b/bob/bio/vein/img_test/bla3.mat
similarity index 100%
rename from bob/fingervein/img_test/bla3.mat
rename to bob/bio/vein/img_test/bla3.mat
diff --git a/bob/fingervein/img_test/fvr255.mat b/bob/bio/vein/img_test/fvr255.mat
similarity index 100%
rename from bob/fingervein/img_test/fvr255.mat
rename to bob/bio/vein/img_test/fvr255.mat
diff --git a/bob/fingervein/img_test/fvr_huang.mat b/bob/bio/vein/img_test/fvr_huang.mat
similarity index 100%
rename from bob/fingervein/img_test/fvr_huang.mat
rename to bob/bio/vein/img_test/fvr_huang.mat
diff --git a/bob/fingervein/img_test/fvr_mask.mat b/bob/bio/vein/img_test/fvr_mask.mat
similarity index 100%
rename from bob/fingervein/img_test/fvr_mask.mat
rename to bob/bio/vein/img_test/fvr_mask.mat
diff --git a/bob/fingervein/img_test/fvr_matlab.mat b/bob/bio/vein/img_test/fvr_matlab.mat
similarity index 100%
rename from bob/fingervein/img_test/fvr_matlab.mat
rename to bob/bio/vein/img_test/fvr_matlab.mat
diff --git a/bob/fingervein/img_test/fvr_matlab_double_align.mat b/bob/bio/vein/img_test/fvr_matlab_double_align.mat
similarity index 100%
rename from bob/fingervein/img_test/fvr_matlab_double_align.mat
rename to bob/bio/vein/img_test/fvr_matlab_double_align.mat
diff --git a/bob/fingervein/img_test/fvr_matlab_double_align_reduced.mat b/bob/bio/vein/img_test/fvr_matlab_double_align_reduced.mat
similarity index 100%
rename from bob/fingervein/img_test/fvr_matlab_double_align_reduced.mat
rename to bob/bio/vein/img_test/fvr_matlab_double_align_reduced.mat
diff --git a/bob/fingervein/img_test/image.mat b/bob/bio/vein/img_test/image.mat
similarity index 100%
rename from bob/fingervein/img_test/image.mat
rename to bob/bio/vein/img_test/image.mat
diff --git a/bob/fingervein/img_test/img.mat b/bob/bio/vein/img_test/img.mat
similarity index 100%
rename from bob/fingervein/img_test/img.mat
rename to bob/bio/vein/img_test/img.mat
diff --git a/bob/fingervein/img_test/imgUTFVP.mat b/bob/bio/vein/img_test/imgUTFVP.mat
similarity index 100%
rename from bob/fingervein/img_test/imgUTFVP.mat
rename to bob/bio/vein/img_test/imgUTFVP.mat
diff --git a/bob/fingervein/img_test/imgUTFVPdouble.mat b/bob/bio/vein/img_test/imgUTFVPdouble.mat
similarity index 100%
rename from bob/fingervein/img_test/imgUTFVPdouble.mat
rename to bob/bio/vein/img_test/imgUTFVPdouble.mat
diff --git a/bob/fingervein/img_test/img_001_L_1.mat b/bob/bio/vein/img_test/img_001_L_1.mat
similarity index 100%
rename from bob/fingervein/img_test/img_001_L_1.mat
rename to bob/bio/vein/img_test/img_001_L_1.mat
diff --git a/bob/fingervein/img_test/img_001_L_2.mat b/bob/bio/vein/img_test/img_001_L_2.mat
similarity index 100%
rename from bob/fingervein/img_test/img_001_L_2.mat
rename to bob/bio/vein/img_test/img_001_L_2.mat
diff --git a/bob/fingervein/img_test/img_huang.mat b/bob/bio/vein/img_test/img_huang.mat
similarity index 100%
rename from bob/fingervein/img_test/img_huang.mat
rename to bob/bio/vein/img_test/img_huang.mat
diff --git a/bob/fingervein/img_test/img_matlab.mat b/bob/bio/vein/img_test/img_matlab.mat
similarity index 100%
rename from bob/fingervein/img_test/img_matlab.mat
rename to bob/bio/vein/img_test/img_matlab.mat
diff --git a/bob/fingervein/img_test/img_matlab_double_align.mat b/bob/bio/vein/img_test/img_matlab_double_align.mat
similarity index 100%
rename from bob/fingervein/img_test/img_matlab_double_align.mat
rename to bob/bio/vein/img_test/img_matlab_double_align.mat
diff --git a/bob/fingervein/img_test/img_matlab_double_align_reduced.mat b/bob/bio/vein/img_test/img_matlab_double_align_reduced.mat
similarity index 100%
rename from bob/fingervein/img_test/img_matlab_double_align_reduced.mat
rename to bob/bio/vein/img_test/img_matlab_double_align_reduced.mat
diff --git a/bob/fingervein/img_test/img_matlab_uint8.mat b/bob/bio/vein/img_test/img_matlab_uint8.mat
similarity index 100%
rename from bob/fingervein/img_test/img_matlab_uint8.mat
rename to bob/bio/vein/img_test/img_matlab_uint8.mat
diff --git a/bob/fingervein/img_test/img_o.mat b/bob/bio/vein/img_test/img_o.mat
similarity index 100%
rename from bob/fingervein/img_test/img_o.mat
rename to bob/bio/vein/img_test/img_o.mat
diff --git a/bob/fingervein/img_test/img_ouint8.mat b/bob/bio/vein/img_test/img_ouint8.mat
similarity index 100%
rename from bob/fingervein/img_test/img_ouint8.mat
rename to bob/bio/vein/img_test/img_ouint8.mat
diff --git a/bob/fingervein/img_test/k.mat b/bob/bio/vein/img_test/k.mat
similarity index 100%
rename from bob/fingervein/img_test/k.mat
rename to bob/bio/vein/img_test/k.mat
diff --git a/bob/fingervein/img_test/k1.mat b/bob/bio/vein/img_test/k1.mat
similarity index 100%
rename from bob/fingervein/img_test/k1.mat
rename to bob/bio/vein/img_test/k1.mat
diff --git a/bob/fingervein/img_test/k2.mat b/bob/bio/vein/img_test/k2.mat
similarity index 100%
rename from bob/fingervein/img_test/k2.mat
rename to bob/bio/vein/img_test/k2.mat
diff --git a/bob/fingervein/img_test/mask_001_L_1.mat b/bob/bio/vein/img_test/mask_001_L_1.mat
similarity index 100%
rename from bob/fingervein/img_test/mask_001_L_1.mat
rename to bob/bio/vein/img_test/mask_001_L_1.mat
diff --git a/bob/fingervein/img_test/mask_001_L_2.mat b/bob/bio/vein/img_test/mask_001_L_2.mat
similarity index 100%
rename from bob/fingervein/img_test/mask_001_L_2.mat
rename to bob/bio/vein/img_test/mask_001_L_2.mat
diff --git a/bob/fingervein/img_test/template_001_L_1.mat b/bob/bio/vein/img_test/template_001_L_1.mat
similarity index 100%
rename from bob/fingervein/img_test/template_001_L_1.mat
rename to bob/bio/vein/img_test/template_001_L_1.mat
diff --git a/bob/fingervein/img_test/template_001_L_2.mat b/bob/bio/vein/img_test/template_001_L_2.mat
similarity index 100%
rename from bob/fingervein/img_test/template_001_L_2.mat
rename to bob/bio/vein/img_test/template_001_L_2.mat
diff --git a/bob/fingervein/img_test/test_fvr.mat b/bob/bio/vein/img_test/test_fvr.mat
similarity index 100%
rename from bob/fingervein/img_test/test_fvr.mat
rename to bob/bio/vein/img_test/test_fvr.mat
diff --git a/bob/fingervein/img_test/test_img.mat b/bob/bio/vein/img_test/test_img.mat
similarity index 100%
rename from bob/fingervein/img_test/test_img.mat
rename to bob/bio/vein/img_test/test_img.mat
diff --git a/bob/fingervein/img_test/veins.mat b/bob/bio/vein/img_test/veins.mat
similarity index 100%
rename from bob/fingervein/img_test/veins.mat
rename to bob/bio/vein/img_test/veins.mat
diff --git a/bob/fingervein/img_test/xs.mat b/bob/bio/vein/img_test/xs.mat
similarity index 100%
rename from bob/fingervein/img_test/xs.mat
rename to bob/bio/vein/img_test/xs.mat
diff --git a/bob/fingervein/img_test/ys.mat b/bob/bio/vein/img_test/ys.mat
similarity index 100%
rename from bob/fingervein/img_test/ys.mat
rename to bob/bio/vein/img_test/ys.mat
diff --git a/bob/fingervein/preprocessing/FingerCrop.py b/bob/bio/vein/preprocessors/FingerCrop.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/preprocessing/FingerCrop.py
rename to bob/bio/vein/preprocessors/FingerCrop.py
diff --git a/bob/fingervein/preprocessing/__init__.py b/bob/bio/vein/preprocessors/__init__.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/preprocessing/__init__.py
rename to bob/bio/vein/preprocessors/__init__.py
diff --git a/bob/fingervein/script/__init__.py b/bob/bio/vein/script/__init__.py
similarity index 100%
rename from bob/fingervein/script/__init__.py
rename to bob/bio/vein/script/__init__.py
diff --git a/bob/fingervein/script/fingerveinverify.py b/bob/bio/vein/script/fingerveinverify.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/script/fingerveinverify.py
rename to bob/bio/vein/script/fingerveinverify.py
diff --git a/bob/fingervein/script/scores2spoofingfile.py b/bob/bio/vein/script/scores2spoofingfile.py
old mode 100755
new mode 100644
similarity index 100%
rename from bob/fingervein/script/scores2spoofingfile.py
rename to bob/bio/vein/script/scores2spoofingfile.py
diff --git a/bob/fingervein/tests/__init__.py b/bob/bio/vein/tests/__init__.py
similarity index 100%
rename from bob/fingervein/tests/__init__.py
rename to bob/bio/vein/tests/__init__.py
diff --git a/bob/fingervein/tests/features/huangwl_input_fvr.mat b/bob/bio/vein/tests/features/huangwl_input_fvr.mat
similarity index 100%
rename from bob/fingervein/tests/features/huangwl_input_fvr.mat
rename to bob/bio/vein/tests/features/huangwl_input_fvr.mat
diff --git a/bob/fingervein/tests/features/huangwl_input_img.mat b/bob/bio/vein/tests/features/huangwl_input_img.mat
similarity index 100%
rename from bob/fingervein/tests/features/huangwl_input_img.mat
rename to bob/bio/vein/tests/features/huangwl_input_img.mat
diff --git a/bob/fingervein/tests/features/huangwl_output.mat b/bob/bio/vein/tests/features/huangwl_output.mat
similarity index 100%
rename from bob/fingervein/tests/features/huangwl_output.mat
rename to bob/bio/vein/tests/features/huangwl_output.mat
diff --git a/bob/fingervein/tests/features/miuramax_input_fvr.mat b/bob/bio/vein/tests/features/miuramax_input_fvr.mat
similarity index 100%
rename from bob/fingervein/tests/features/miuramax_input_fvr.mat
rename to bob/bio/vein/tests/features/miuramax_input_fvr.mat
diff --git a/bob/fingervein/tests/features/miuramax_input_img.mat b/bob/bio/vein/tests/features/miuramax_input_img.mat
similarity index 100%
rename from bob/fingervein/tests/features/miuramax_input_img.mat
rename to bob/bio/vein/tests/features/miuramax_input_img.mat
diff --git a/bob/fingervein/tests/features/miuramax_output.mat b/bob/bio/vein/tests/features/miuramax_output.mat
similarity index 100%
rename from bob/fingervein/tests/features/miuramax_output.mat
rename to bob/bio/vein/tests/features/miuramax_output.mat
diff --git a/bob/fingervein/tests/features/miurarlt_input_fvr.mat b/bob/bio/vein/tests/features/miurarlt_input_fvr.mat
similarity index 100%
rename from bob/fingervein/tests/features/miurarlt_input_fvr.mat
rename to bob/bio/vein/tests/features/miurarlt_input_fvr.mat
diff --git a/bob/fingervein/tests/features/miurarlt_input_img.mat b/bob/bio/vein/tests/features/miurarlt_input_img.mat
similarity index 100%
rename from bob/fingervein/tests/features/miurarlt_input_img.mat
rename to bob/bio/vein/tests/features/miurarlt_input_img.mat
diff --git a/bob/fingervein/tests/features/miurarlt_output.mat b/bob/bio/vein/tests/features/miurarlt_output.mat
similarity index 100%
rename from bob/fingervein/tests/features/miurarlt_output.mat
rename to bob/bio/vein/tests/features/miurarlt_output.mat
diff --git a/bob/fingervein/tests/matching/0001_2_1_120509-135338.mat b/bob/bio/vein/tests/matching/0001_2_1_120509-135338.mat
similarity index 100%
rename from bob/fingervein/tests/matching/0001_2_1_120509-135338.mat
rename to bob/bio/vein/tests/matching/0001_2_1_120509-135338.mat
diff --git a/bob/fingervein/tests/matching/0001_2_2_120509-135558.mat b/bob/bio/vein/tests/matching/0001_2_2_120509-135558.mat
similarity index 100%
rename from bob/fingervein/tests/matching/0001_2_2_120509-135558.mat
rename to bob/bio/vein/tests/matching/0001_2_2_120509-135558.mat
diff --git a/bob/fingervein/tests/matching/0003_2_1_120509-141255.mat b/bob/bio/vein/tests/matching/0003_2_1_120509-141255.mat
similarity index 100%
rename from bob/fingervein/tests/matching/0003_2_1_120509-141255.mat
rename to bob/bio/vein/tests/matching/0003_2_1_120509-141255.mat
diff --git a/bob/fingervein/tests/matching/001_L_1.mat b/bob/bio/vein/tests/matching/001_L_1.mat
similarity index 100%
rename from bob/fingervein/tests/matching/001_L_1.mat
rename to bob/bio/vein/tests/matching/001_L_1.mat
diff --git a/bob/fingervein/tests/matching/001_L_1_h4w40.mat b/bob/bio/vein/tests/matching/001_L_1_h4w40.mat
similarity index 100%
rename from bob/fingervein/tests/matching/001_L_1_h4w40.mat
rename to bob/bio/vein/tests/matching/001_L_1_h4w40.mat
diff --git a/bob/fingervein/tests/preprocessing/0019_3_1_120509-160517.png b/bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517.png
similarity index 100%
rename from bob/fingervein/tests/preprocessing/0019_3_1_120509-160517.png
rename to bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517.png
diff --git a/bob/fingervein/tests/preprocessing/0019_3_1_120509-160517_fvr_lee_huang.mat b/bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517_fvr_lee_huang.mat
similarity index 100%
rename from bob/fingervein/tests/preprocessing/0019_3_1_120509-160517_fvr_lee_huang.mat
rename to bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517_fvr_lee_huang.mat
diff --git a/bob/fingervein/tests/preprocessing/0019_3_1_120509-160517_img_lee.mat b/bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517_img_lee.mat
similarity index 100%
rename from bob/fingervein/tests/preprocessing/0019_3_1_120509-160517_img_lee.mat
rename to bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517_img_lee.mat
diff --git a/bob/fingervein/tests/preprocessing/0019_3_1_120509-160517_img_lee_huang.mat b/bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517_img_lee_huang.mat
similarity index 100%
rename from bob/fingervein/tests/preprocessing/0019_3_1_120509-160517_img_lee_huang.mat
rename to bob/bio/vein/tests/preprocessing/0019_3_1_120509-160517_img_lee_huang.mat
diff --git a/bob/fingervein/tests/test.py b/bob/bio/vein/tests/test.py
similarity index 100%
rename from bob/fingervein/tests/test.py
rename to bob/bio/vein/tests/test.py
diff --git a/bob/fingervein/utils.py b/bob/bio/vein/utils.py
similarity index 100%
rename from bob/fingervein/utils.py
rename to bob/bio/vein/utils.py
diff --git a/buildout.cfg b/buildout.cfg
index 6e8c21c..d41c698 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -1,52 +1,19 @@
 ; vim: set fileencoding=utf-8 :
-; Pedro Tome <pedro.tome@idiap.ch>
-; Tue 25 Mar 15:29:18 2014 CEST
-
-; This is the configuration file for buildout.
+; Andre Anjos <andre.anjos@idiap.ch>
+; Fri 08 Jul 2016 16:02:37 CEST
 
 [buildout]
 parts = scripts
-
 extensions = bob.buildout
-		   mr.developer
-auto-checkout = *
-
-develop = src/facereclib
-          src/bob.db.vera
-          src/bob.db.utfvp
-          src/bob.extension
-		src/bob.blitz
-	     src/bob.core
-          src/bob.io.base
-          src/bob.io.image
-          src/bob.ip.base
-          src/bob.sp
-          src/bob.io.matlab
-          .
-
-eggs =  bob.fingervein
+eggs =  bob.bio.vein
         bob.db.vera
         bob.db.utfvp
         gridtk
-        
+
 debug = true
 verbose = true
 newest = false
 
-[sources]
-facereclib = git https://github.com/idiap/facereclib
-bob.db.vera = git https://github.com/bioidiap/bob.db.vera
-bob.db.utfvp = git https://github.com/bioidiap/bob.db.utfvp
-bob.io.matlab = git https://github.com/bioidiap/bob.io.matlab
-bob.extension = git https://github.com/bioidiap/bob.extension
-bob.blitz = git https://github.com/bioidiap/bob.blitz
-bob.core = git https://github.com/bioidiap/bob.core
-bob.io.base = git https://github.com/bioidiap/bob.io.base
-bob.io.image = git https://github.com/bioidiap/bob.io.image
-bob.ip.base = git https://github.com/bioidiap/bob.ip.base
-bob.sp = git https://github.com/bioidiap/bob.sp
-
-					
 [scripts]
 recipe = bob.buildout:scripts
 dependent-scripts = true
diff --git a/doc/conf.py b/doc/conf.py
index 266d246..32a5980 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -64,7 +64,7 @@ import time
 copyright = u'%s, Idiap Research Institute' % time.strftime('%Y')
 
 # Grab the setup entry
-distribution = pkg_resources.require('bob.fingervein')[0]
+distribution = pkg_resources.require('bob.bio.vein')[0]
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -190,7 +190,7 @@ html_favicon = 'img/favicon.ico'
 #html_file_suffix = None
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'fingerveinreclib_doc'
+htmlhelp_basename = 'bobbiovein_doc'
 
 
 # -- Options for LaTeX output --------------------------------------------------
@@ -234,7 +234,7 @@ latex_documents = [
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    ('index', 'fingerveinreclib', u'FingerveinRecLib Documentation', [u'Idiap Research Institute'], 1)
+    ('index', 'bobbiovein', u'FingerveinRecLib Documentation', [u'Idiap Research Institute'], 1)
 ]
 
 # Default processing flags for sphinx
@@ -247,7 +247,7 @@ from bob.extension.utils import link_documentation
 intersphinx_mapping = link_documentation([
   'python', 'numpy', 'scipy', 'gridtk',
   'bob.extension', 'bob.math', 'bob.io.base', 'bob.ip.base', 'bob.ip.gabor', 'bob.learn.linear', 'bob.learn.misc', 'facereclib'
-  'bob.db.verification.utils', 'bob.db.verification.filelist', 
+  'bob.db.verification.utils', 'bob.db.verification.filelist',
   'bob.db.vera', 'bob.db.utfvp'
 ])
 
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..c784670
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,13 @@
+setuptools
+numpy
+scipy
+pillow
+argparse
+bob.extension
+bob.core
+bob.io.base
+bob.ip.base
+bob.io.matlab
+bob.bio.base
+bob.db.utfvp
+bob.db.vera
diff --git a/setup.py b/setup.py
index e23ff00..4caf173 100644
--- a/setup.py
+++ b/setup.py
@@ -33,129 +33,94 @@
 # allows you to test your package with new python dependencies w/o requiring
 # administrative interventions.
 
-from setuptools import setup, find_packages
+from setuptools import setup, dist
+dist.Distribution(dict(setup_requires=['bob.extension']))
 
-# Define package version
-version = open("version.txt").read().rstrip()
+from bob.extension.utils import load_requirements, find_packages
+install_requires = load_requirements()
 
-# The only thing we do in this file is to call the setup() function with all
-# parameters that define our package.
 setup(
 
-    # This is the basic information about your project. Modify all this
-    # information before releasing code publicly.
-    name='bob.fingervein',
-    version=version,
-    description='Fingervein recognition based on Bob and the facereclib',
-
-    url='https://github.com/bioidiap/bob.fingervein',
-    license='LICENSE.txt',
-    
-    author='Pedro Tome',
-    author_email='pedro.tome@idiap.ch',
-        
-    keywords = "Fingervein recognition, fingervein verification, reproducible research, facereclib",
-
-    # If you have a better, long description of your package, place it on the
-    # 'doc' directory and then hook it here
+    name='bob.bio.vein',
+    version=open("version.txt").read().rstrip(),
+    description='Vein recognition based on Bob and the bob.bio framework',
+
+    url='https://gitlab.idiap.ch/biometric/bob.bio.vein',
+    license='GPLv3',
+
+    author='Andre Anjos',
+    author_email='andre.anjos@idiap.ch',
+
+    keywords = "bob, biometric recognition, evaluation, vein",
+
     long_description=open('README.rst').read(),
 
-    # This line is required for any distutils based packaging.
     packages=find_packages(),
     include_package_data=True,
     zip_safe = False,
 
-    
-    install_requires=[
-      'setuptools',
-      'bob.io.base',
-      'bob.io.matlab',
-      'bob.core',
-      'bob.ip.base',
-      'bob.sp',      
-      'facereclib',   
-
-    ],
-
-    namespace_packages = [
-      'bob',
-    ],
+    install_requires=install_requires,
 
     entry_points={
 
       # scripts should be declared using this entry:
       'console_scripts': [
-	      'fingerveinverify.py = bob.fingervein.script.fingerveinverify:main',
-        'scores2spoofingfile.py = bob.fingervein.script.scores2spoofingfile:main',		
-        #'scoresanalysis.py = bob.fingervein.script.scoresanalysis:main',
-        #'scoresfusion.py = bob.fingervein.script.scoresfusion:main',
-        #'plot_scatter_fusion.py = bob.fingervein.script.plot_scatter_fusion:main',
+	      'fingerveinverify.py = bob.bio.vein.script.fingerveinverify:main',
+        'scores2spoofingfile.py = bob.bio.vein.script.scores2spoofingfile:main',
+        #'scoresanalysis.py = bob.bio.vein.script.scoresanalysis:main',
+        #'scoresfusion.py = bob.bio.vein.script.scoresfusion:main',
+        #'plot_scatter_fusion.py = bob.bio.vein.script.plot_scatter_fusion:main',
       ],
-      
+
       # registered database short cuts
-      'facereclib.database': [
-        'utfvp             = bob.fingervein.configurations.databases.utfvp:database',
-        'vera              = bob.fingervein.configurations.databases.vera:database',
+      'bob.bio.database': [
+        'utfvp = bob.bio.vein.configurations.databases.utfvp:database',
+        'vera = bob.bio.vein.configurations.databases.vera:database',
       ],
 
-      # registered preprocessings
-      'facereclib.preprocessor': [
-        'none = bob.fingervein.configurations.preprocessing.finger_crop_None_None:preprocessor',
-        'histeq = bob.fingervein.configurations.preprocessing.finger_crop_None_HE:preprocessor',
-        'highfreq = bob.fingervein.configurations.preprocessing.finger_crop_None_HFE:preprocessor',
-        'circGabor = bob.fingervein.configurations.preprocessing.finger_crop_None_CircGabor:preprocessor',
-        
-      ],
+      # registered preprocessors
+      'bob.bio.preprocessor': [
+        'none = bob.bio.vein.configurations.preprocessors.finger_crop_None_None:preprocessor',
+        'histeq = bob.bio.vein.configurations.preprocessors.finger_crop_None_HE:preprocessor',
+        'highfreq = bob.bio.vein.configurations.preprocessors.finger_crop_None_HFE:preprocessor',
+        'circGabor = bob.bio.vein.configurations.preprocessors.finger_crop_None_CircGabor:preprocessor',
 
+      ],
 
       # registered feature extractors
-      'facereclib.feature_extractor': [
-        'ncc-normalisedcrosscorr    = bob.fingervein.configurations.features.normalised_crosscorr:feature_extractor',
-        'mc-maximumcurvature        = bob.fingervein.configurations.features.maximum_curvature:feature_extractor',
-        'rlt-repeatedlinetracking   = bob.fingervein.configurations.features.repeated_line_tracking:feature_extractor',
-        'wld-widelinedetector       = bob.fingervein.configurations.features.wide_line_detector:feature_extractor',
-        'lbp-localbinarypatterns    = bob.fingervein.configurations.features.lbp:feature_extractor',
-        
+      'bob.bio.extractor': [
+        'ncc-normalisedcrosscorr = bob.bio.vein.configurations.extractors.normalised_crosscorr:feature_extractor',
+        'mc-maximumcurvature = bob.bio.vein.configurations.extractors.maximum_curvature:feature_extractor',
+        'rlt-repeatedlinetracking = bob.bio.vein.configurations.extractors.repeated_line_tracking:feature_extractor',
+        'wld-widelinedetector = bob.bio.vein.configurations.extractors.wide_line_detector:feature_extractor',
+        'lbp-localbinarypatterns = bob.bio.vein.configurations.extractors.lbp:feature_extractor',
       ],
 
       # registered fingervein recognition algorithms
-      'facereclib.tool': [
-        'match-wld      = bob.fingervein.configurations.tools:huangwl_tool',
-        'match-wld-gpu  = bob.fingervein.configurations.tools:huangwl_gpu_tool',
-        'match-mc       = bob.fingervein.configurations.tools:miuramax_tool',
-        'match-mc-gpu   = bob.fingervein.configurations.tools:miuramax_gpu_tool',
-        'match-rlt      = bob.fingervein.configurations.tools:miurarlt_tool',
-        'match-rlt-gpu  = bob.fingervein.configurations.tools:miurarlt_gpu_tool',
-        'match-lbp      = facereclib.configurations.tools.lgbphs:tool',
-       ], 
+      'bob.bio.algorithm': [
+        'match-wld = bob.bio.vein.configurations.algorithms:huangwl_tool',
+        'match-wld-gpu = bob.bio.vein.configurations.algorithms:huangwl_gpu_tool',
+        'match-mc = bob.bio.vein.configurations.algorithms:miuramax_tool',
+        'match-mc-gpu = bob.bio.vein.configurations.algorithms:miuramax_gpu_tool',
+        'match-rlt = bob.bio.vein.configurations.algorithms:miurarlt_tool',
+        'match-rlt-gpu = bob.bio.vein.configurations.algorithms:miurarlt_gpu_tool',
+        #'match-lbp = bob.bio.face.configurations.algorithms.lgbphs:tool',
+       ],
 
       # registered SGE grid configuration files
       'facereclib.grid': [
-        'gpu               = bob.fingervein.configurations.grid.gpu:grid',
-        'gpu2              = bob.fingervein.configurations.grid.gpu2:grid',
-        'gpu3              = bob.fingervein.configurations.grid.gpu3:grid',
-        'grid              = bob.fingervein.configurations.grid.grid:grid',
-        'demanding         = bob.fingervein.configurations.grid.demanding:grid',
-        'very-demanding    = bob.fingervein.configurations.grid.very_demanding:grid',
-        'gbu               = bob.fingervein.configurations.grid.gbu:grid',
-        'small             = bob.fingervein.configurations.grid.small:grid',        
+        'gpu = bob.bio.vein.configurations.grid.gpu:grid',
+        'gpu2 = bob.bio.vein.configurations.grid.gpu2:grid',
+        'gpu3 = bob.bio.vein.configurations.grid.gpu3:grid',
+        'grid = bob.bio.vein.configurations.grid.grid:grid',
+        'demanding = bob.bio.vein.configurations.grid.demanding:grid',
+        'very-demanding = bob.bio.vein.configurations.grid.very_demanding:grid',
+        'gbu = bob.bio.vein.configurations.grid.gbu:grid',
+        'small = bob.bio.vein.configurations.grid.small:grid',
       ],
 
-      # tests that are _exported_ (that can be executed by other packages) can
-      # be signalized like this:
-      'bob.test': [
-        'tests = bob.fingervein.tests.test:FingerveinTests',
-        #'preprocessors       = bob.fingervein.tests.test_preprocessing:PreprocessingTest',
-        #'feature_extractors  = bob.fingervein.tests.test_features:FeatureExtractionTest',
-        #'matching            = bob.fingervein.tests.test_matching:MatchingTest',
-        
-      ],
-   
       },
 
-    # Classifiers are important if you plan to distribute this package through
-    # PyPI. You can find the complete list of classifiers that are valid and
-    # useful here (http://pypi.python.org/pypi?%3Aaction=list_classifiers).
     classifiers = [
       'Framework :: Bob',
       'Development Status :: 4 - Beta',
@@ -163,7 +128,9 @@ setup(
       'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
       'Natural Language :: English',
       'Programming Language :: Python',
+      'Programming Language :: Python :: 3',
       'Topic :: Scientific/Engineering :: Artificial Intelligence',
       'Topic :: Software Development :: Libraries :: Python Modules',
       ],
+
 )
-- 
GitLab