Bob is a free signal-processing and machine learning toolbox originally developed by the Biometrics group at Idiap Research Institute, Switzerland.
The toolbox is written in a mix of Python and C++ and is designed to be both efficient and reduce development time. It is composed of a reasonably large number of packages that implement tools for image, audio & video processing, machine learning and pattern recognition.
This package is only a place-holder for Bob's Wiki and Bug tracker.
If just want to use Bob's functionalities on your experiments, you are not supposed to install this package on your machine, but rather create your own personalised work environment depending on your needs, by collecting individual subpackages based on your requirements.
If you are developing Bob packages which are supposed to built along side our nightly build system, please read on.
As per-usual, make sure all external dependencies are installed on your host before trying to compile the whole of Bob. Once all dependencies are satisified, you should be able to:
$ python bootstrap.py $ ./bin/buildout
You may tweak the options in buildout.cfg
to disable/enable verbosity and
debug builds, before you run ./bin/buildout
.
You can generate the documentation for all packages in this container, after installation, using Sphinx:
$ ./bin/sphinx-build . sphinx
This shall place in the directory sphinx
, the current version for the
documentation of the package.
You can run a set of tests using the nose test runner:
$ ./bin/nosetests -sv
You can run our documentation tests using sphinx itself:
$ ./bin/sphinx-build -b doctest . sphinx
Warning
Before adding a package to this prototype, please ensure that the package:
- contains a README clearly indicating how to install the package (including external dependencies required). Also, please add package badges for the build status and coverage as shown in other packages (even if your package is not yet integrated to Travis or Coveralls).
- Has unit tests.
- Is integrated with Travis-CI, and correctly tests on that platform (i.e. it builds, it tests fine and a documentation can be constructed and tested w/o errors)
- Is integrated with Coveralls for reporting test coverage
If you don't know how to do this, ask for information on the bob-devel mailing list.
Packages must be added using a git submodule:
$ git submodule add https://github.com/bioidiap/bob.foo.bar.git layers/2/bob.foo.bar
Then, update the following files:
Add your package to the build:
$ vim layer2.cfg
Add your package to the overall documentation:
$ vim index.rst
Add your package to be "deploy-tested":
$ vim requirements2.txt
Add a row for your package in our Packages list
Git submodules work by registering a precise commit hash identifier from each submodule along with their repository locations. If you update the submodule, you have to tell the main module that it now needs to use a new commit identifier. If you don't do so, the main module will continue to checkout the old version of the submodule.
In case a submodule is updated, this packagee will not automatically update its reference to such database. You need to explicetly do it. To update a submodule, first initialize this package:
$ git submodule init $ git submodule update
Change to the directory where the submodule you want to update lives:
$ cd layers/2/bob.foo.bar
The submodule repositories added by git submodule update
are headless. This
means they don't have a branch. So, you must first checkout the branch with the
new revision you want to update:
$ git checkout master $ git pull
Switch back to the root of the package and re-add the submodule:
$ cd ../.. $ git commit -m "Updated bob.foo.bar" layers/2/bob.foo.bar $ git push