Commit 62bcdc10 authored by Amir MOHAMMADI's avatar Amir MOHAMMADI

Merge branch 'standarization' into 'master'

Standarization

I know that it still doesn't build on GitLab CI -- due to a wrong version of  ``Pillow`` (see #1). Anyways, I think it is time to merge this branch and go on pushing a new version of ``bob.bio.csu`` to PyPI.

I know that this is not sufficient, but I have installed that package locally on my machine, and I was able to build and execute it. Nose tests are passing; I haven't checked the documentation, though.

See merge request !1
parents bbaadf7b 33a9b513
Pipeline #4712 failed with stages
in 7 minutes and 20 seconds
...@@ -29,11 +29,17 @@ variables: ...@@ -29,11 +29,17 @@ variables:
- git clean -ffdx - git clean -ffdx
- curl --silent https://gitlab.idiap.ch/bob/bob/snippets/7/raw | tr -d '\r' > bootstrap-conda.sh - curl --silent https://gitlab.idiap.ch/bob/bob/snippets/7/raw | tr -d '\r' > bootstrap-conda.sh
- chmod 755 ./bootstrap-conda.sh - chmod 755 ./bootstrap-conda.sh
- sed 1d -i requirements.txt # GAMBIT to remove pillow<3
- ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX} - ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX}
variables: &build_variables variables: &build_variables
BOB_DOCUMENTATION_SERVER: "http://www.idiap.ch/software/bob/docs/latest/bob/%s/master/" BOB_DOCUMENTATION_SERVER: "http://www.idiap.ch/software/bob/docs/latest/bob/%s/master/"
script: script:
- ./bin/buildout - ./bin/buildout -c buildout-before-patch.cfg
- wget https://www.idiap.ch/software/bob/databases/latest/PythonFaceEvaluation.tar.bz2
- mkdir PythonFaceEvaluation
- tar -xjf PythonFaceEvaluation.tar.bz2 -C PythonFaceEvaluation
- ./bin/patch_CSU.py PythonFaceEvaluation
- ./bin/buildout buildout:csu-dir=./PythonFaceEvaluation
- if [ -x ./bin/bob_dbmanage.py ]; then ./bin/bob_dbmanage.py all download --force; fi - if [ -x ./bin/bob_dbmanage.py ]; then ./bin/bob_dbmanage.py all download --force; fi
- ./bin/sphinx-build doc sphinx - ./bin/sphinx-build doc sphinx
- ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG} - ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG}
...@@ -45,6 +51,7 @@ variables: ...@@ -45,6 +51,7 @@ variables:
- bootstrap-conda.sh - bootstrap-conda.sh
- dist/ - dist/
- sphinx/ - sphinx/
- PythonFaceEvaluation/
# Template for building on a Linux machine # Template for building on a Linux machine
...@@ -74,11 +81,14 @@ variables: ...@@ -74,11 +81,14 @@ variables:
.test_template: &test_job .test_template: &test_job
stage: test stage: test
before_script: before_script:
- sed 1d -i requirements.txt # GAMBIT to remove pillow<3
- ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX} - ./bootstrap-conda.sh ${CONDA_FOLDER} ${PYTHON_VER} ${CONDA_PREFIX}
- source ${CONDA_FOLDER}/bin/activate ${CONDA_PREFIX} - source ${CONDA_FOLDER}/bin/activate ${CONDA_PREFIX}
- pip install --use-wheel --no-index --pre dist/*.whl - conda install --yes -c conda-forge -p ${CONDA_PREFIX} jpeg==9b opencv==2.4.12
- pip install --use-wheel --no-index --pre dist/*.whl
script: script:
- cd ${CONDA_PREFIX} - cd ${CONDA_PREFIX}
- export PYTHONPATH="../PythonFaceEvaluation/src:$PYTHONPATH"
- python -c "from ${CI_PROJECT_NAME} import get_config; print(get_config())" - 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 run --source=${CI_PROJECT_NAME} ./bin/nosetests -sv ${CI_PROJECT_NAME}
- coverage report - coverage report
...@@ -137,118 +147,17 @@ test_linux_27: ...@@ -137,118 +147,17 @@ test_linux_27:
tags: tags:
- conda-linux - conda-linux
wheels_linux_27: docs_linux_27:
<<: *wheels_job <<: *docs_job
dependencies: dependencies:
- build_linux_27 - build_linux_27
tags: tags:
- conda-linux - conda-linux
wheels_linux_27:
# 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 <<: *wheels_job
dependencies: dependencies:
- build_linux_35 - build_linux_27
tags:
- conda-linux
docs_linux_35:
<<: *docs_job
dependencies:
- build_linux_35
tags: tags:
- conda-linux - 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
...@@ -7,7 +7,7 @@ import bob.bio.base ...@@ -7,7 +7,7 @@ import bob.bio.base
from .. import utils from .. import utils
class LDAIR (bob.bio.base.algorithm.Algorithm): class LDAIR (bob.bio.base.algorithm.Algorithm):
"""This class defines a wrapper for the :py:class:`facerec2010.baseline.lda.LRLDA` class to be used as an image :py:class:`bob.bio.base.algorithm.Algorithm`. """This class defines a wrapper for the `facerec2010.baseline.lda.LRLDA` class to be used as an image :py:class:`bob.bio.base.algorithm.Algorithm`.
**Parameters:** **Parameters:**
...@@ -66,12 +66,12 @@ class LDAIR (bob.bio.base.algorithm.Algorithm): ...@@ -66,12 +66,12 @@ class LDAIR (bob.bio.base.algorithm.Algorithm):
**Parameters:** **Parameters:**
enroll_features : [:py:class:`facerec2010.baseline.common.FaceRecord`] enroll_features : [`facerec2010.baseline.common.FaceRecord`]
The features used to enroll the model. The features used to enroll the model.
**Returns:** **Returns:**
model : [:py:class:`facerec2010.baseline.common.FaceRecord`] model : [`facerec2010.baseline.common.FaceRecord`]
The model, which is identical to the ``enroll_features``. The model, which is identical to the ``enroll_features``.
""" """
[self._check_feature(f) for f in enroll_features] [self._check_feature(f) for f in enroll_features]
...@@ -85,7 +85,7 @@ class LDAIR (bob.bio.base.algorithm.Algorithm): ...@@ -85,7 +85,7 @@ class LDAIR (bob.bio.base.algorithm.Algorithm):
**Parameters:** **Parameters:**
model : [:py:class:`facerec2010.baseline.common.FaceRecord`] model : [`facerec2010.baseline.common.FaceRecord`]
The model to be written. The model to be written.
model_file : str model_file : str
...@@ -107,7 +107,7 @@ class LDAIR (bob.bio.base.algorithm.Algorithm): ...@@ -107,7 +107,7 @@ class LDAIR (bob.bio.base.algorithm.Algorithm):
**Returns:** **Returns:**
model : [:py:class:`facerec2010.baseline.common.FaceRecord`] model : [`facerec2010.baseline.common.FaceRecord`]
The model read from file. The model read from file.
""" """
# just read the model from .pkl file # just read the model from .pkl file
...@@ -123,10 +123,10 @@ class LDAIR (bob.bio.base.algorithm.Algorithm): ...@@ -123,10 +123,10 @@ class LDAIR (bob.bio.base.algorithm.Algorithm):
**Parameters:** **Parameters:**
model : [:py:class:`facerec2010.baseline.common.FaceRecord`] model : [`facerec2010.baseline.common.FaceRecord`]
The model to compare, which is actually a list of extracted features. The model to compare, which is actually a list of extracted features.
probe : :py:class:`facerec2010.baseline.common.FaceRecord` probe : `facerec2010.baseline.common.FaceRecord`
The probe to compare. The probe to compare.
**Returns**: **Returns**:
......
...@@ -9,7 +9,7 @@ from .. import utils ...@@ -9,7 +9,7 @@ from .. import utils
class LRPCA (bob.bio.base.algorithm.Algorithm): class LRPCA (bob.bio.base.algorithm.Algorithm):
"""This class defines a wrapper for the :py:class:`facerec2010.baseline.lda.LRPCA` class to be used as an image :py:class:`bob.bio.base.algorithm.Algorithm`. """This class defines a wrapper for the `facerec2010.baseline.lda.LRPCA` class to be used as an image :py:class:`bob.bio.base.algorithm.Algorithm`.
**Parameters:** **Parameters:**
...@@ -58,7 +58,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm): ...@@ -58,7 +58,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm):
**Returns:** **Returns:**
model : [:py:class:`facerec2010.baseline.pca.FaceRecord`] model : [`facerec2010.baseline.pca.FaceRecord`]
The model, which a collection of face records, storing the given ``enroll_features``. The model, which a collection of face records, storing the given ``enroll_features``.
""" """
# no rule to enroll features in the LRPCA setup, so we just store all features # no rule to enroll features in the LRPCA setup, so we just store all features
...@@ -76,7 +76,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm): ...@@ -76,7 +76,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm):
**Parameters:** **Parameters:**
model : [:py:class:`facerec2010.baseline.pca.FaceRecord`] model : [`facerec2010.baseline.pca.FaceRecord`]
The model to be written. The model to be written.
model_file : str model_file : str
...@@ -98,7 +98,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm): ...@@ -98,7 +98,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm):
**Returns:** **Returns:**
model : [:py:class:`facerec2010.baseline.pca.FaceRecord`] model : [`facerec2010.baseline.pca.FaceRecord`]
The model read from file. The model read from file.
""" """
# just read the model from .pkl file # just read the model from .pkl file
...@@ -112,7 +112,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm): ...@@ -112,7 +112,7 @@ class LRPCA (bob.bio.base.algorithm.Algorithm):
**Parameters:** **Parameters:**
model : [:py:class:`facerec2010.baseline.pca.FaceRecord`] model : [`facerec2010.baseline.pca.FaceRecord`]
The model to compare, which is actually a list of extracted features. The model to compare, which is actually a list of extracted features.
probe : :py:class:`numpy.ndarray` probe : :py:class:`numpy.ndarray`
......
...@@ -13,7 +13,7 @@ logger = logging.getLogger("bob.bio.csu") ...@@ -13,7 +13,7 @@ logger = logging.getLogger("bob.bio.csu")
from .. import utils from .. import utils
class LDAIR (bob.bio.base.extractor.Extractor): class LDAIR (bob.bio.base.extractor.Extractor):
"""This class defines a wrapper for the :py:class:`facerec2010.baseline.lda.LRLDA` class to be used as an image :py:class:`bob.bio.base.extractor.Extractor`. """This class defines a wrapper for the `facerec2010.baseline.lda.LRLDA` class to be used as an image :py:class:`bob.bio.base.extractor.Extractor`.
**Parameters:** **Parameters:**
...@@ -127,7 +127,7 @@ class LDAIR (bob.bio.base.extractor.Extractor): ...@@ -127,7 +127,7 @@ class LDAIR (bob.bio.base.extractor.Extractor):
**Returns:** **Returns:**
extracted : :py:class:`facerec2010.baseline.common.FaceRecord` extracted : `facerec2010.baseline.common.FaceRecord`
The extracted image feature. The extracted image feature.
""" """
self._check_image(image) self._check_image(image)
...@@ -144,7 +144,7 @@ class LDAIR (bob.bio.base.extractor.Extractor): ...@@ -144,7 +144,7 @@ class LDAIR (bob.bio.base.extractor.Extractor):
**Parameters:** **Parameters:**
feature : :py:class:`facerec2010.baseline.common.FaceRecord` feature : `facerec2010.baseline.common.FaceRecord`
The extracted feature to be written. The extracted feature to be written.
feature_file : str or :py:class:`bob.io.base.HDF5File` feature_file : str or :py:class:`bob.io.base.HDF5File`
...@@ -167,7 +167,7 @@ class LDAIR (bob.bio.base.extractor.Extractor): ...@@ -167,7 +167,7 @@ class LDAIR (bob.bio.base.extractor.Extractor):
**Returns:** **Returns:**
feature : :py:class:`facerec2010.baseline.common.FaceRecord` feature : `facerec2010.baseline.common.FaceRecord`
The read feature. The read feature.
""" """
# read the feature from .pkl file # read the feature from .pkl file
......
...@@ -13,7 +13,7 @@ import logging ...@@ -13,7 +13,7 @@ import logging
logger = logging.getLogger("bob.bio.csu") logger = logging.getLogger("bob.bio.csu")
class LRPCA (bob.bio.base.extractor.Extractor): class LRPCA (bob.bio.base.extractor.Extractor):
"""This class defines a wrapper for the :py:class:`facerec2010.baseline.lda.LRPCA` class to be used as an image :py:class:`bob.bio.base.extractor.Extractor`. """This class defines a wrapper for the `facerec2010.baseline.lda.LRPCA` class to be used as an image :py:class:`bob.bio.base.extractor.Extractor`.
**Parameters:** **Parameters:**
......
...@@ -6,9 +6,10 @@ import pyvision ...@@ -6,9 +6,10 @@ import pyvision
import numpy import numpy
import bob.bio.base import bob.bio.base
import bob.bio.face import bob.bio.face
from .. import utils
class LDAIR (bob.bio.face.preprocessor.FaceCrop): class LDAIR (bob.bio.face.preprocessor.FaceCrop):
"""This class defines a wrapper for the :py:class:`facerec2010.baseline.lda.LRLDA` class to be used as an image :py:class:`bob.bio.base.preprocessor.Preprocessor`. """This class defines a wrapper for the `facerec2010.baseline.lda.LRLDA` class to be used as an image :py:class:`bob.bio.base.preprocessor.Preprocessor`.
**Parameters:** **Parameters:**
...@@ -24,11 +25,18 @@ class LDAIR (bob.bio.face.preprocessor.FaceCrop): ...@@ -24,11 +25,18 @@ class LDAIR (bob.bio.face.preprocessor.FaceCrop):
""" """
def __init__(self, REGION_ARGS = facerec2010.baseline.lda.CohortLDA_REGIONS, REGION_KEYWORDS = facerec2010.baseline.lda.CohortLDA_KEYWORDS, face_detector = None): def __init__(self, REGION_ARGS = facerec2010.baseline.lda.CohortLDA_REGIONS, REGION_KEYWORDS = facerec2010.baseline.lda.CohortLDA_KEYWORDS, face_detector = None):
bob.bio.base.preprocessor.Preprocessor.__init__(self, REGION_ARGS=str(REGION_ARGS), REGION_KEYWORDS=str(REGION_KEYWORDS), face_detector=str(face_detector)) bob.bio.base.preprocessor.Preprocessor.__init__(
self,
read_original_data=utils.read_pyvision_image,
face_detector=str(face_detector),
REGION_ARGS=str(REGION_ARGS),
REGION_KEYWORDS=str(REGION_KEYWORDS),
)
self.ldair = facerec2010.baseline.lda.LRLDA(REGION_ARGS, **REGION_KEYWORDS) self.ldair = facerec2010.baseline.lda.LRLDA(REGION_ARGS, **REGION_KEYWORDS)
self.layers = len(REGION_ARGS) self.layers = len(REGION_ARGS)
self.face_detector = bob.bio.face.preprocessor.utils.load_cropper(face_detector) self.face_detector = bob.bio.face.preprocessor.utils.load_cropper(face_detector)
if self.face_detector is not None: if self.face_detector is not None:
assert isinstance(self.face_detector, bob.bio.face.preprocessor.FaceDetect) assert isinstance(self.face_detector, bob.bio.face.preprocessor.FaceDetect)
# asign ourself to be the face cropper that should be used after face detection # asign ourself to be the face cropper that should be used after face detection
...@@ -116,29 +124,7 @@ class LDAIR (bob.bio.face.preprocessor.FaceCrop): ...@@ -116,29 +124,7 @@ class LDAIR (bob.bio.face.preprocessor.FaceCrop):
if isinstance(image, pyvision.Image): if isinstance(image, pyvision.Image):
# the face detector requires numpy arrays # the face detector requires numpy arrays
image = self._numpy_image(image) image = self._numpy_image(image)
import bob.io.base
import bob.io.image
bob.io.base.save(image.astype(numpy.uint8), "test.png")
# call face detector with the (tansformed) image # call face detector with the (tansformed) image
return self.face_detector.crop_face(image, annotations) return self.face_detector.crop_face(image, annotations)
return self.crop_face(image, annotations) return self.crop_face(image, annotations)
def read_original_data(self, image_file):
"""read_original_data(image_file) -> image
Reads the original images using functionality from pyvision.
**Parameters:**
image_file : str
The image file to be read, can contain a gray level or a color image.
**Returns:**
image : :py:class:`pyvision.Image`
The image read from file.
"""
# we use pyvision to read the images. Hence, we don't have to struggle with conversion here
return pyvision.Image(str(image_file))
...@@ -7,6 +7,8 @@ import PIL ...@@ -7,6 +7,8 @@ import PIL
import numpy import numpy
import bob.bio.base import bob.bio.base
import bob.bio.face import bob.bio.face
from .. import utils
class LRPCA (bob.bio.face.preprocessor.FaceCrop): class LRPCA (bob.bio.face.preprocessor.FaceCrop):
"""This class defines a wrapper for the :py:class:`facerec2010.baseline.lda.LRPCA` class to be used as an image :py:class:`bob.bio.base.preprocessor.Preprocessor`. """This class defines a wrapper for the :py:class:`facerec2010.baseline.lda.LRPCA` class to be used as an image :py:class:`bob.bio.base.preprocessor.Preprocessor`.
...@@ -22,7 +24,12 @@ class LRPCA (bob.bio.face.preprocessor.FaceCrop): ...@@ -22,7 +24,12 @@ class LRPCA (bob.bio.face.preprocessor.FaceCrop):
""" """
def __init__(self, TUNING = facerec2010.baseline.lrpca.GBU_TUNING, face_detector = None): def __init__(self, TUNING = facerec2010.baseline.lrpca.GBU_TUNING, face_detector = None):
bob.bio.base.preprocessor.Preprocessor.__init__(self, TUNING=str(TUNING), face_detector=str(face_detector)) bob.bio.base.preprocessor.Preprocessor.__init__(
self,
read_original_data=utils.read_pyvision_image,
face_detector=str(face_detector),
TUNING=str(TUNING)
)
self.lrpca = facerec2010.baseline.lrpca.LRPCA(**TUNING) self.lrpca = facerec2010.baseline.lrpca.LRPCA(**TUNING)
self.face_detector = bob.bio.face.preprocessor.utils.load_cropper(face_detector) self.face_detector = bob.bio.face.preprocessor.utils.load_cropper(face_detector)
...@@ -111,23 +118,3 @@ class LRPCA (bob.bio.face.preprocessor.FaceCrop): ...@@ -111,23 +118,3 @@ class LRPCA (bob.bio.face.preprocessor.FaceCrop):
return self.face_detector.crop_face(image, annotations) return self.face_detector.crop_face(image, annotations)
return self.crop_face(image, annotations) return self.crop_face(image, annotations)
def read_original_data(self, image_file):
"""read_original_data(image_file) -> image
Reads the original images using functionality from pyvision.
**Parameters:**
image_file : str
The image file to be read, can contain a gray level or a color image.
**Returns:**
image : :py:class:`pyvision.Image`
The image read from file.
"""
# we use pyvision to read the images. Hence, we don't have to struggle with conversion here
return pyvision.Image(str(image_file))
...@@ -15,11 +15,22 @@ regenerate_refs = False ...@@ -15,11 +15,22 @@ regenerate_refs = False
import bob.bio.base import bob.bio.base
import bob.bio.face import bob.bio.face
from bob.bio.face.test.test_preprocessors import _annotation, _compare from bob.bio.face.test.test_preprocessors import _annotation
def _compare(data, reference, write_function = bob.bio.base.save, read_function = bob.bio.base.load, atol = 1e-5, rtol = 1e-8):
# write reference?
if regenerate_refs:
write_function(data, reference)
# compare reference
reference = read_function(reference)
assert numpy.allclose(data, reference, atol=atol, rtol=rtol)
return reference
def _image(preprocessor): def _image(preprocessor):
return preprocessor.read_original_data(pkg_resources.resource_filename('bob.bio.face.test', 'data/testimage.jpg')) f = bob.bio.base.database.BioFile(1, 'data/testimage', 2)
return preprocessor.read_original_data(f, pkg_resources.resource_filename('bob.bio.face', 'test'), ".jpg")
def test_lrpca(): def test_lrpca():
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
import pickle import pickle
import bob.io.base import bob.io.base
import pyvision
def load_pickle(file_like): def load_pickle(file_like):
"""load_pickle(file_like) -> data """load_pickle(file_like) -> data
...@@ -42,3 +43,28 @@ def save_pickle(data, file_like): ...@@ -42,3 +43,28 @@ def save_pickle(data, file_like):
hdf5 = file_like if isinstance(file_like, bob.io.base.HDF5File) else bob.io.base.HDF5File(file_like, 'w') hdf5 = file_like if isinstance(file_like, bob.io.base.HDF5File) else bob.io.base.HDF5File(file_like, 'w')
hdf5.set("Data", pickle.dumps(data)) hdf5.set("Data", pickle.dumps(data))
def read_pyvision_image(biofile, directory, extension):
"""read_pyvision_image(biofile, directory, extension) -> image
Reads the original images using functionality from pyvision.
**Parameters:**
``biofile`` : :py:class:`bob.bio.base.database.BioFile` or one of its derivatives
The file to read the original data.
``directory`` : str
The base directory of the database.
``extension`` : str or ``None``
The extension of the original data.
Might be ``None`` if the ``biofile`` itself has the extension stored.
**Returns:**
image : :py:class:`pyvision.Image`
The image read from file.
"""
return pyvision.Image(biofile.make_path(directory, extension))
#!/usr/bin/env bash
# Wed 21 Sep 2016 13:08:05 CEST
source $(dirname ${0})/functions.sh
run_cmd ./bin/buildout -c buildout-before-patch.cfg
run_cmd wget https://www.idiap.ch/software/bob/databases/latest/PythonFaceEvaluation.tar.bz2
run_cmd mkdir PythonFaceEvaluation
run_cmd tar -xjf PythonFaceEvaluation.tar.bz2 -C PythonFaceEvaluation
run_cmd ./bin/patch_CSU.py PythonFaceEvaluation
run_cmd ./bin/buildout buildout:csu-dir=./PythonFaceEvaluation
export PYTHONPATH="PythonFaceEvaluation:$PYTHONPATH"
if [ -x ./bin/bob_dbmanage.py ]; then
run_cmd ./bin/bob_dbmanage.py all download --force;
fi
if [ -d ./doc ]; then
run_cmd ./bin/sphinx-build -n doc sphinx
fi
if [ -z "${WHEEL_TAG}" ]; then
# C/C++ extensions
run_cmd ./bin/python setup.py bdist_wheel
else
# Python-only packages
run_cmd ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG}
fi
...@@ -4,11 +4,17 @@ ...@@ -4,11 +4,17 @@
[buildout] [buildout]
parts = scripts parts = scripts
develop = . develop = .
${buildout:csu-dir}
eggs = bob.bio.csu eggs = bob.bio.csu
PythonFaceEvaluation
extensions = bob.buildout extensions = bob.buildout
newest = false newest = false
verbose = true verbose = true
csu-dir = [PATH_TO_YOUR_CSU_COPY]
[scripts] [scripts]
recipe = bob.buildout:scripts recipe = bob.buildout:scripts
dependent-scripts = true dependent-scripts = true
\ No newline at end of file
...@@ -30,7 +30,6 @@ develop = src/bob.extension ...@@ -30,7 +30,6 @@ develop = src/bob.extension
src/bob.learn.em src/bob.learn.em
src/bob.measure src/bob.measure
src/bob.db.base src/bob.db.base
src/bob.bio.db
src/bob.db.atnt src/bob.db.atnt
src/bob.bio.base src/bob.bio.base
src/bob.learn.boosting src/bob.learn.boosting
...@@ -64,7 +63,6 @@ bob.learn.linear = git https://gitlab.idiap.ch/bob/bob.learn.linear ...@@ -64,7 +63,6 @@ bob.learn.linear = git https://gitlab.idiap.ch/bob/bob.learn.linear
bob.learn.em = git https://gitlab.idiap.ch/bob/bob.learn.em bob.learn.em = git https://gitlab.idiap.ch/bob/bob.learn.em
bob.measure = git https://gitlab.idiap.ch/bob/bob.measure bob.measure = git https://gitlab.idiap.ch/bob/bob.measure
bob.db.base = git https://gitlab.idiap.ch/bob/bob.db.base bob.db.base = git https://gitlab.idiap.ch/bob/bob.db.base
bob.bio.db = git https://gitlab.idiap.ch/bob/bob.bio.db
bob.db.atnt = git https://gitlab.idiap.ch/bob/bob.db.atnt bob.db.atnt = git https://gitlab.idiap.ch/bob/bob.db.atnt
bob.bio.base = git https://gitlab.idiap.ch/bob/bob.bio.base bob.bio.base = git https://gitlab.idiap.ch/bob/bob.bio.base
bob.learn.boosting = git https://gitlab.idiap.ch/bob/bob.learn.boosting bob.learn.boosting = git https://gitlab.idiap.ch/bob/bob.learn.boosting
......
...@@ -37,7 +37,7 @@ If you haven't patched it yet, please follow the set of instructions: ...@@ -37,7 +37,7 @@ If you haven't patched it yet, please follow the set of instructions:
$ ./bin/patch_CSU.py [PATH_TO_YOUR_CSU_COPY] $ ./bin/patch_CSU.py [PATH_TO_YOUR_CSU_COPY]
If you get any error message, the sources of the CSU might have changed (the latest test was done in December 2012). If you get any error message, the sources of the CSU might have changed (the latest test was done in December 2012).
Please file a bug report in `our GitHub page <http://www.github.com/bioidiap/xfacereclib.extension.CSU>`_ to inform us so that we can provide a new patch. Please file a bug report in `our google groups page <https://groups.google.com/forum/#!forum/bob-devel>`_ to inform us so that we can provide a new patch.
4. Update the CSU toolkit path in the *buildout.cfg* file by setting the ``csu-dir`` variable via replacing the ``[PATH_TO_YOUR_CSU_COPY]`` with your actual directory: 4. Update the CSU toolkit path in the *buildout.cfg* file by setting the ``csu-dir`` variable via replacing the ``[PATH_TO_YOUR_CSU_COPY]`` with your actual directory:
......