Bob v2 has been published on PyPI

40 views
Skip to first unread message

Manuel Günther

unread,
Dec 11, 2014, 2:05:34 PM12/11/14
to bob-...@googlegroups.com
Dear Bobbers,

I am proud to announce the new version of Bob to be published today.

For the functionality of Bob, not much has been changed. All the functions that were available in Bob v1 are also available in Bob v2.
The main modifications are as follows:


1. No global installation anymore

Most importantly, there is no global monolithic installation of Bob any more. Instead, the source code was split into several concise and self-contained packages, which are separately downloadable from PyPI or GitHub.
These packages contain the pure C++ code including pure C++ libraries, against which other C++ code can be linked, as well as Python bindings and pure Python code that can be used for rapid prototyping.
If you want to use the C++ packages (which is nearly always the case), you should install the C++ dependencies which are listed under https://github.com/idiap/bob/wiki/Dependencies.

An introduction on how to use some or all packages of Bob v2 in a Python package is given under https://github.com/idiap/bob/wiki/Installation, and how to generate a pure Python or a mixed C++/Python extension is explained under https://pythonhosted.org/bob.extension/guide.html.
The complete list of packages can be found under https://github.com/idiap/bob/wiki/Packages, a short overview and tutorial of the packages is given under https://github.com/idiap/bob/wiki/Tutorials.

To port your existing code that uses Bob v1 to Bob v2 should be mostly straightforward.
In most cases, the only thing to change is the import statement.
Instead of having a single import bob in the beginning of the script, you need to import all required packages that you actually use, e.g., import bob.io.base or import bob.learn.linear.
Sometimes, functions and classes are now in different sub-modules. E.g., instead of bob.io.HDF5File, we now have bob.io.base.HDF5File.


2. The same name for all packages

Formerly, we had satellite packages of bob, which we called xbob.... These packages were mainly database packages (e.g. xbob.db.mobio), but also example packages as xbob.example.faceverify.
These packages have now been adopted into the global bob namespace, i.e., the two packages above are now called bob.db.mobio and bob.example.faceverify.


3. Better Python bindings

The second major improvement are the new python bindings, which now rely on the pure Python C-API: https://docs.python.org/2/extending/index.html#extending-index
This allows both a faster loading time of Bob modules, as well as smaller libraries for the bindings.
For most relevant packages, we have added an API that allows to use the C-Python objects from the packages in other bindings. For some of the (high-level) packages, we are still working on that, though.


4. Improved documentation

Also, we (started to) standardize the style of the documentation, both in the developers guides of the packages, and in the Python API documentations.
In our C++ extensions, we use specialized classes (http://pythonhosted.org/bob.extension/extension.html#documenting-your-c-c-python-extension) to assure that the documentation for the functions are generated in a concise way. For the documentation of the Python functions, we might still need to improve a bit here and there.
The documentation of all packages is now online and can be reached from the PyPI pages of the single packages, or globally from the https://github.com/idiap/bob/wiki/Packages list.


5. Machines and Trainers

As part of the encapsulation, we have decided to repeal the former structure of machines and trainers, which were living in two different namespaces bob.machine and bob.trainer.
Now, they are located in the same package under the same namespace. E.g., the former bob.machine.LinearMachine and its according bob.trainer.FisherLDATrainer are now both part of the bob.learn.linear package, as bob.learn.liner.Machine and bob.learn.linear.
FisherLDATrainer.


6. Redesigned Gabor wavelet functionality

The Gabor wavelet transform classes were subjected to a complete make-over. The functionality, which was formerly split over bob.ip and bob.machine can now be found in the bob.ip.gabor namespace/package.


7. Uniform interface for verification database packages

For verification databases, we have implemented a basic interface (see http://pythonhosted.org/bob.db.verification.utils/guide.html). This interface allows to rapidly change the database of your (face or speaker) verification experiments, an example of which can be found in bob.example.faceverify.


@The Bob Developers: Probably I have missed some important notes about Bob v2. Feel free to add information or correct me.



Please note that the packages are open source and -- as such -- free of any warranty. Particularly, random or reproducible failures (an exception, if you are lucky, a Segmentation Fault, in the rare cases that you are not lucky) can occur. In such cases, please send an email to this mailing list, or open a new issue in the issue tracker on the GitHub page of the according Bob v2 package (which are linked in the https://github.com/idiap/bob/wiki/Packages).


Enjoy Research!
Manuel (on behalf of the Bob developers, mainly at the Biometrics group of Idiap http://www.idiap.ch)

Manuel Günther

unread,
Dec 11, 2014, 2:22:30 PM12/11/14
to bob-...@googlegroups.com
Yes, I have forgotten some (maybe not soo important) points:

All Bob packages are now compiled and tested using Travis CI, and the coverage of the testing utilities is provided by Coveralls. Please have a look into the package list (https://github.com/idiap/bob/wiki/Packages) to see the current status of the packages.

The links to the documentation, to the GitHub page and to the Travis CI and Coveralls statuses are now provided by Badges on the PyPI and GitHub front-pages of the packages.
For database interface packages, also a Badge leading to the download page of the original data, e.g.: https://pypi.python.org/pypi/bob.db.atnt

Enjoy even more!
Manuel
Reply all
Reply to author
Forward
0 new messages