Commit 7a57a862 authored by André Anjos's avatar André Anjos

Standardise

parent bb2eb74d
py27-conda-idiap:
script:
- source /idiap/group/torch5spro/conda/bin/activate bob-2.3.4-py27_0
# This build file is defined in two parts: 1) a generic set of instructions you
# probably **don't** need to change and 2) a part you may have to tune to your
# project. It heavily uses template features from YAML to help you in only
# changing a minimal part of it and avoid code duplication to a maximum while
# still providing a nice pipeline display on your package.
# 1) Generic instructions (only change if you know what you're doing)
# -------------------------------------------------------------------
# Definition of our build pipeline
stages:
- build
- test
- docs
- wheels
# Global variables
variables:
CONDA_PREFIX: env
# Template for the build stage
# Needs to run on all supported architectures, platforms and python versions
.build_template: &build_job
stage: build
before_script:
- git clean -ffdx
- export TMPDIR=/var/tmp
- python bootstrap-buildout.py
- curl --silent https://gitlab.idiap.ch/bob/bob/snippets/7/raw | tr -d '\r' > bootstrap-conda.sh
- chmod 755 ./bootstrap-conda.sh
- ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX}
variables: &build_variables
BOB_DOCUMENTATION_SERVER: "http://www.idiap.ch/software/bob/docs/latest/bob/%s/master/"
script:
- ./bin/buildout
- unset TMPDIR
- ./bin/python --version
- export NOSE_WITH_COVERAGE=1
- export NOSE_COVER_PACKAGE=bob.bio.vein
- ./bin/bob_dbmanage.py vera download
- ./bin/nosetests -sv bob.bio.vein
- ./bin/sphinx-build doc html
- ./bin/resources.py -d --packages=bob.bio.vein
tags:
- lidiap2015
- 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}
after_script:
- rm -rf ${CONDA_PREFIX}
artifacts:
expire_in: 1 day
paths:
- bootstrap-conda.sh
- dist/
- sphinx/
# Template for building on a Linux machine
.build_linux_template: &linux_build_job
<<: *build_job
variables: &linux_build_variables
<<: *build_variables
CONDA_FOLDER: "/local/conda"
CFLAGS: "-D_GLIBCXX_USE_CXX11_ABI=0 -coverage"
CXXFLAGS: "-D_GLIBCXX_USE_CXX11_ABI=0 -coverage"
# Template for building on a Mac OSX machine
.build_mac_template: &macosx_build_job
<<: *build_job
variables: &macosx_build_variables
<<: *build_variables
CONDA_FOLDER: "/opt/conda"
MACOSX_DEPLOYMENT_TARGET: "10.9"
CFLAGS: "-pthread -coverage"
CXXFLAGS: "-pthread -coverage"
LDFLAGS: "-lpthread"
# Template for the test stage - re-install from uploaded wheels
# Needs to run on all supported architectures, platforms and python versions
.test_template: &test_job
stage: test
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
script:
- cd ${CONDA_PREFIX}
- python -c "from ${CI_PROJECT_NAME} import get_config; print(get_config())"
- coverage run --source=${CI_PROJECT_NAME} ./bin/nosetests -sv ${CI_PROJECT_NAME}
- coverage report
- sphinx-build -b doctest ../doc ../sphinx
after_script:
- rm -rf ${CONDA_PREFIX}
# Template for the wheel uploading stage
# Needs to run against one combination of python 2.x and 3.x if it is a python
# only package, otherwise, needs to run in both pythons to all supported
# architectures (Linux and Mac OSX 64-bit)
.wheels_template: &wheels_job
stage: wheels
only:
- master
- tags
before_script:
- curl --silent https://gitlab.idiap.ch/bob/bob/snippets/8/raw | tr -d '\r' > upload-wheel.sh
- chmod 755 upload-wheel.sh
script:
- ./upload-wheel.sh
# Template for (latest) documentation upload stage
# Only one real job needs to do this
.docs_template: &docs_job
stage: docs
only:
- master
before_script:
- curl --silent https://gitlab.idiap.ch/bob/bob/snippets/9/raw | tr -d '\r' > upload-sphinx.sh
- chmod 755 upload-sphinx.sh
script:
- ./upload-sphinx.sh
# 2) Package specific instructions (you may tune this if needed)
# --------------------------------------------------------------
# Linux + Python 2.7: Builds, tests, uploads wheel
build_linux_27:
<<: *linux_build_job
variables: &linux_27_build_variables
<<: *linux_build_variables
PYTHON_VER: "2.7"
WHEEL_TAG: "py27"
tags:
- conda-linux
test_linux_27:
<<: *test_job
variables: *linux_27_build_variables
dependencies:
- build_linux_27
tags:
- conda-linux
wheels_linux_27:
<<: *wheels_job
dependencies:
- build_linux_27
tags:
- conda-linux
# Linux + Python 3.4: Builds and tests
build_linux_34:
<<: *linux_build_job
variables: &linux_34_build_variables
<<: *linux_build_variables
PYTHON_VER: "3.4"
WHEEL_TAG: "py3"
tags:
- conda-linux
test_linux_34:
<<: *test_job
variables: *linux_34_build_variables
dependencies:
- build_linux_34
tags:
- conda-linux
# Linux + Python 3.5: Builds, tests, uploads wheel
build_linux_35:
<<: *linux_build_job
variables: &linux_35_build_variables
<<: *linux_build_variables
PYTHON_VER: "3.5"
WHEEL_TAG: "py3"
tags:
- conda-linux
test_linux_35:
<<: *test_job
variables: *linux_35_build_variables
dependencies:
- build_linux_35
tags:
- conda-linux
wheels_linux_35:
<<: *wheels_job
dependencies:
- build_linux_35
tags:
- conda-linux
docs_linux_35:
<<: *docs_job
dependencies:
- build_linux_35
tags:
- conda-linux
# Mac OSX + Python 2.7: Builds and tests
build_macosx_27:
<<: *macosx_build_job
variables: &macosx_27_build_variables
<<: *macosx_build_variables
PYTHON_VER: "2.7"
WHEEL_TAG: "py27"
tags:
- conda-macosx
test_macosx_27:
<<: *test_job
variables: *macosx_27_build_variables
dependencies:
- build_macosx_27
tags:
- conda-macosx
# Mac OSX + Python 3.4: Builds and tests
build_macosx_34:
<<: *macosx_build_job
variables: &macosx_34_build_variables
<<: *macosx_build_variables
PYTHON_VER: "3.4"
WHEEL_TAG: "py3"
tags:
- conda-macosx
test_macosx_34:
<<: *test_job
variables: *macosx_34_build_variables
dependencies:
- build_macosx_34
tags:
- conda-macosx
# Mac OSX + Python 3.5: Builds and tests
build_macosx_35:
<<: *macosx_build_job
variables: &macosx_35_build_variables
<<: *macosx_build_variables
PYTHON_VER: "3.5"
WHEEL_TAG: "py3"
tags:
- conda-macosx
test_macosx_35:
<<: *test_job
variables: *macosx_35_build_variables
dependencies:
- build_macosx_35
tags:
- conda-macosx
\ No newline at end of file
.. vim: set fileencoding=utf-8 :
.. Fri 08 Jul 2016 15:38:56 CEST
.. Fri 19 Aug 2016 13:32:51 CEST
.. image:: http://img.shields.io/badge/docs-stable-yellow.png
:target: http://pythonhosted.org/bob.bio.vein/index.html
.. image:: http://img.shields.io/badge/docs-latest-orange.png
:target: https://www.idiap.ch/software/bob/docs/latest/bioidiap/bob.bio.vein/master/index.html
.. image:: https://travis-ci.org/bioidiap/bob.bio.vein.svg?branch=master
:target: https://travis-ci.org/bioidiap/bob.bio.vein
.. image:: https://coveralls.io/repos/bioidiap/bob.bio.vein/badge.png
:target: https://coveralls.io/r/bioidiap/bob.bio.vein
.. image:: https://img.shields.io/badge/github-master-0000c0.png
:target: https://github.com/bioidiap/bob.bio.vein/tree/master
:target: https://www.idiap.ch/software/bob/docs/latest/bob/bob.bio.vein/master/index.html
.. image:: https://gitlab.idiap.ch/bob/bob.bio.vein/badges/master/build.svg
:target: https://gitlab.idiap.ch/bob/bob.bio.vein/commits/master
.. image:: https://img.shields.io/badge/gitlab-project-0000c0.svg
:target: https://gitlab.idiap.ch/bob/bob.bio.vein
.. image:: http://img.shields.io/pypi/v/bob.bio.vein.png
:target: https://pypi.python.org/pypi/bob.bio.vein
.. image:: http://img.shields.io/pypi/dm/bob.bio.vein.png
:target: https://pypi.python.org/pypi/bob.bio.vein
=========================================
The Biometrics Vein Recognition Library
=========================================
==========================
Vein Recognition Library
==========================
Welcome to this Vein Recognition Library based on Bob. This library is designed
to perform a fair comparison of vein recognition algorithms. It contains
scripts to execute various of vein recognition experiments on a variety
of vein image databases, and running the help is as easy as going to the
command line and typing::
$ bin/verify.py --help
About
-----
This library is currently 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.
Databases
---------
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://www.sas.ewi.utwente.nl/]
- VERA - Finger vein Database [http://www.idiap.ch/scientific-research/resources]
- PUT - The PUT biometric vein (palm and wrist) recognition dataset [http://biometrics.put.poznan.pl/vein-dataset/]
Algorithms
----------
Together with that, implementations of a variety of traditional and
state-of-the-art vein recognition algorithms are provided:
* Maximum Curvature [MNM05]_
* Repeated Line Tracking [MNM04]_
* Wide Line Detector [HDLTL10]_
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.
Extensions
----------
On top of these already pre-coded algorithms, the vein recognition library
provides an easy Python interface for implementing new image preprocessors,
feature types, vein recognition algorithms or database interfaces, which
directly integrate into the vein recognition experiment. Hence, after a short
period of coding, researchers can compare new ideas directly with already
existing algorithms in a fair manner.
References
----------
.. [MNM05] *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.
.. [MNM04] *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.
.. [HDLTL10] *B. Huang, Y. Dai, R. Li, D. Tang and W. Li*. **Finger-vein authentication based on wide line detector and pattern normalization**. Proceedings of the 20th International Conference on Pattern Recognition (ICPR), 2010.
This package is part of the signal-processing and machine learning toolbox
Bob_. It contains resources for finger, palm and wrist vein recognition as
`bob.bio.base`_ plugins.
Installation
------------
The latest version of the vein recognition library can be installed with our
`Conda-based builds`_. Once you have installed Bob_, just go on and install
this package using the same installation mechanism.
Development
-----------
In order to develop the latest version of this package, install Bob_ as
indicated above. Once that is done, do this::
Follow our `installation`_ instructions. Then, using the Python interpreter
provided by the distribution, bootstrap and buildout this package::
$ git clone https://gitlab.idiap.ch/biometrc/bob.bio.vein.git
$ cd bob.bio.vein
$ python bootstrap-buildout.py
$ ./bin/buildout
After those steps, you should have a functional **development** environment to
test the package. The python interpreter and base environment on line 3 above
should be pre-installed with all dependencies required for Bob_ to operate
correctly. For example, you may start from our `conda-based builds`_ and then
use the Python interpreter in there to bootstrap your local development
environment.
Running tests
-------------
To verify that your installation worked as expected, you might want to run our
unit tests with::
$ ./bin/nosetests -sv
Cite our paper
--------------
If you use this library in any of your experiments, please cite the following
paper::
Contact
-------
@inproceedings{Tome_IEEEBIOSIG2014,
author = {Tome, Pedro and Vanoni, Matthias and Marcel, S{\'{e}}bastien},
keywords = {Biometrics, Finger vein, Spoofing Attacks},
projects = {Idiap, BEAT},
month = sep,
title = {On the Vulnerability of Finger Vein Recognition to Spoofing},
booktitle = {IEEE International Conference of the Biometrics Special Interest Group (BIOSIG)},
volume = {230},
year = {2014},
ocation = {Darmstadt, Germay},
pdf = {http://publications.idiap.ch/downloads/papers/2014/Tome_IEEEBIOSIG2014.pdf}
}
For questions or reporting issues to this software package, contact our
development `mailing list`_.
.. _bob: http://www.idiap.ch/software/bob
.. _idiap: http://www.idiap.ch
.. _conda-based builds: https://github.com/idiap/bob/wiki/Binary-Installation
.. Place your references here:
.. _bob: https://www.idiap.ch/software/bob
.. _installation: https://gitlab.idiap.ch/bob/bob/wikis/Installation
.. _mailing list: https://groups.google.com/forum/?fromgroups#!forum/bob-devel
.. _bob.bio.base: https://pythonhosted.org/bob.bio.base/
......@@ -49,8 +49,8 @@ parser.add_option("--version",
parser.add_option("-t", "--accept-buildout-test-releases",
dest='accept_buildout_test_releases',
action="store_true", default=False,
help=("Normally, if you do not specify a --buildout-version, "
"the bootstrap script and buildout gets the newest "
help=("Normally, if you do not specify a --version, the "
"bootstrap script and buildout gets the newest "
"*final* versions of zc.buildout and its recipes and "
"extensions for you. If you use this flag, "
"bootstrap and buildout will get the newest releases "
......
; vim: set fileencoding=utf-8 :
; Fri 19 Aug 2016 13:22:13 CEST
[buildout]
parts = scripts
eggs = bob.bio.vein
bob.bio.base
bob.measure
bob.extension
gridtk
extensions = bob.buildout
mr.developer
eggs = bob.bio.vein
bob.bio.base
bob.db.base
bob.measure
bob.extension
gridtk
develop = src/bob.db.vera
src/bob.db.putvein
.
auto-checkout = *
newest = false
develop = .
[sources]
bob.db.vera = git git@github.com:bioidiap/bob.db.vera
bob.db.putvein = git git@gitlab.idiap.ch:biometric/bob.db.putvein
newest = false
verbose = true
[scripts]
recipe = bob.buildout:scripts
; vim: set fileencoding=utf-8 :
; Fri 19 Aug 2016 13:14:15 CEST
[buildout]
parts = scripts
eggs = bob.bio.vein
bob.bio.base
bob.measure
bob.extension
gridtk
extensions = bob.buildout
mr.developer
auto-checkout = *
develop = src/bob.extension
src/bob.blitz
src/bob.core
src/bob.math
src/bob.measure
src/bob.io.base
src/bob.io.image
src/bob.io.matlab
src/bob.ip.base
src/bob.db.base
src/bob.db.verafinger
src/bob.db.utfvp
src/bob.db.putvein
src/bob.bio.db
src/bob.bio.base
.
; options for bob.buildout
debug = true
verbose = true
newest = false
[sources]
bob.extension = git git@gitlab.idiap.ch:bob/bob.extension
bob.blitz = git git@gitlab.idiap.ch:bob/bob.blitz
bob.core = git git@gitlab.idiap.ch:bob/bob.core
bob.math = git git@gitlab.idiap.ch:bob/bob.math
bob.measure = git git@gitlab.idiap.ch:bob/bob.measure
bob.io.base = git git@gitlab.idiap.ch:bob/bob.io.base
bob.io.image = git git@gitlab.idiap.ch:bob/bob.io.image
bob.io.matlab = git git@gitlab.idiap.ch:bob/bob.io.matlab
bob.ip.base = git git@gitlab.idiap.ch:bob/bob.ip.base
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.db.putvein
bob.bio.db = git git@gitlab.idiap.ch:bob/bob.bio.db
bob.bio.base = git git@gitlab.idiap.ch:bob/bob.bio.base
[scripts]
recipe = bob.buildout:scripts
......@@ -7,11 +7,6 @@ import glob
import pkg_resources
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
......@@ -20,26 +15,33 @@ needs_sphinx = '1.3'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.pngmath',
'sphinx.ext.ifconfig',
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.graphviz',
'sphinx.ext.intersphinx',
'sphinx.ext.napoleon',
'sphinx.ext.viewcode',
]
import sphinx
if sphinx.__version__ >= "1.4.1":
extensions.append('sphinx.ext.imgmath')
else:
extensions.append('sphinx.ext.pngmath')
# Always includes todos
todo_include_todos = True
# Generates auto-summary automatically
autosummary_generate = True
# Create numbers on figures with captions
numfig = True
# If we are on OSX, the 'dvipng' path maybe different
dvipng_osx = '/opt/local/libexec/texlive/binaries/dvipng'
if os.path.exists(dvipng_osx): pngmath_dvipng = dvipng_osx
......@@ -57,12 +59,12 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
project = u'Vein Biometrics Recognition Library (bob.bio.vein)'
project = u'bob.bio.vein'
import time
copyright = u'%s, Idiap Research Institute' % time.strftime('%Y')
# Grab the setup entry
distribution = pkg_resources.require('bob.bio.vein')[0]
distribution = pkg_resources.require(project)[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
......@@ -107,8 +109,10 @@ pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# Included after all input documents
rst_epilog = ''
# Some variables which are useful for generated material
project_variable = project.replace('.', '_')
short_description = u'Vein Recognition Library'
owner = [u'Idiap Research Institute']
# -- Options for HTML output ---------------------------------------------------
......@@ -131,7 +135,7 @@ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
#html_short_title = project_variable
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
......@@ -145,7 +149,7 @@ html_favicon = 'img/favicon.ico'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static']
#html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
......@@ -189,70 +193,48 @@ html_favicon = 'img/favicon.ico'
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'bobbiovein_doc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
latex_paper_size = 'a4'
# The font size ('10pt', '11pt' or '12pt').
latex_font_size = '10pt'
htmlhelp_basename = project_variable + u'_doc'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
(
'index',
'bobbiovein.tex',
u'Vein Biometrics Recognition Library (bob.bio.vein)',
u'Biometrics Group, Idiap Research Institute', 'manual',
),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# -- Post configuration --------------------------------------------------------
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'bobbiovein', u'Vein Biometrics Recognition Library', [u'Idiap Research Institute'], 1)
]
# Included after all input documents
rst_epilog = """
.. |project| replace:: Bob
.. |version| replace:: %s
.. |current-year| date:: %%Y
""" % (version,)
# Default processing flags for sphinx
autoclass_content = 'both'
autoclass_content = 'class'
autodoc_member_order = 'bysource'
autodoc_default_flags = ['members', 'undoc-members', 'inherited-members', 'show-inheritance']
autodoc_default_flags = [
'members',
'undoc-members',
'inherited-members',
'show-inheritance',
]
# For inter-documentation mapping:
from bob.extension.utils import link_documentation
intersphinx_mapping = link_documentation([
'python',
'numpy',
'scipy',
])
intersphinx_mapping = link_documentation()
# We want to remove all private (i.e. _. or __.__) members
# that are not in the list of accepted functions
accepted_private_functions = ['__array__']
def member_function_test(app, what, name, obj, skip, options):
# test if we have a private function
if len(name) > 1 and name[0] == '_':
# test if this private function should be allowed
if name not in accepted_private_functions:
# omit privat functions that are not in the list of accepted private functions
return skip
else:
# test if the method is documented
if not hasattr(obj, '__doc__') or not obj.__doc__:
return skip
return False
def setup(app):
pass
app.connect('autodoc-skip-member', member_function_test)
doc/img/logo.png

11 KB | W: | H:

doc/img/logo.png

6.12 KB | W: | H:

doc/img/logo.png
doc/img/logo.png
doc/img/logo.png
doc/img/logo.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -11,9 +11,9 @@ setup(
name='bob.bio.vein',
version=open("version.txt").read().rstrip(),
description='Vein biometrics recognition based on Bob and the bob.bio framework',
description='Vein Recognition Library',
url='https://gitlab.idiap.ch/biometric/bob.bio.vein',
url='https://gitlab.idiap.ch/bob/bob.bio.vein',
license='GPLv3',