diff --git a/README.rst b/README.rst index a90209139b9382bbd282d83380994ebf0bf99e28..68cfdb2e5c5957b2e51905c51aa15d7a6418ac9d 100644 --- a/README.rst +++ b/README.rst @@ -14,9 +14,9 @@ To add a new package: * Make sure the package is **public** first. Do not add private packages here. * Make sure the package is in https://gitlab.idiap.ch/bob/bob first. * The list of packages here should be in sync with `bob/bob`. -* **Remove** packages which are here but no longer are in `bob/bob`. +* Remove packages which are here but no longer are in `bob/bob`. * Add it in ``conda/meta.yaml`` and ``packages.txt``. -* Add it in ``doc/index.rst`` (you need to add it in several places in this file). +* Add it in ``doc/packages.rst`` (you need to add it in several places in this file). * Add it in ``doc/readme_index.rst``. * If it plots something using matplotlib during its documentation generation, make sure you add a symlink for it in the docs folder. diff --git a/conda/meta.yaml b/conda/meta.yaml index 1df25fb58d438e7618bc0a952c3c6825d9e70309..e695f659e79ada7be1b6a4e784a4bb5dad5ae9b0 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -13,8 +13,7 @@ requirements: - python - setuptools # This list should be the same as packages.txt. - # This list should also be the same as in bob/bob conda recipe + bob and bob.devtools - - bob + # This list should also be the same as in bob/bob conda recipe + bob.devtools - bob.ap - bob.bio.base - bob.bio.face diff --git a/doc/envs/v262py27.yaml b/doc/envs/v262py27.yaml new file mode 100644 index 0000000000000000000000000000000000000000..57330559d3c5a572b61a8ccacdaa6210647257e3 --- /dev/null +++ b/doc/envs/v262py27.yaml @@ -0,0 +1,293 @@ +name: v262py27 +channels: + - https://www.idiap.ch/software/bob/conda/label/archive + - defaults + - https://www.idiap.ch/software/bob/conda +dependencies: + - _license=1.1=py27_1 + - alabaster=0.7.9=py27_0 + - anaconda=4.3.0=np111py27_0 + - anaconda-client=1.6.0=py27_0 + - anaconda-navigator=1.4.3=py27_0 + - argcomplete=1.0.0=py27_1 + - astroid=1.4.9=py27_0 + - astropy=1.3=np111py27_0 + - babel=2.3.4=py27_0 + - backports=1.0=py27_0 + - backports_abc=0.5=py27_0 + - beautifulsoup4=4.5.3=py27_0 + - bitarray=0.8.1=py27_0 + - blaze=0.10.1=py27_0 + - bokeh=0.12.4=py27_0 + - boost=1.61.0=py27_0 + - boto=2.45.0=py27_0 + - bottleneck=1.2.0=np111py27_0 + - bzip2=1.0.6=3 + - caffe=1.0.0rc3=np111py27_nomkl_0 + - cairo=1.14.8=0 + - cdecimal=2.3=py27_2 + - cffi=1.9.1=py27_0 + - chardet=2.3.0=py27_0 + - chest=0.2.3=py27_0 + - click=6.7=py27_0 + - cloog=0.18.0=0 + - cloudpickle=0.2.2=py27_0 + - clyent=1.2.2=py27_0 + - cmake=3.6.3=0 + - colorama=0.3.7=py27_0 + - configobj=5.0.6=py27_0 + - configparser=3.5.0=py27_0 + - contextlib2=0.5.4=py27_0 + - coverage=4.2=py27_0 + - cryptography=1.7.1=py27_0 + - curl=7.52.1=0 + - cycler=0.10.0=py27_0 + - cython=0.25.2=py27_0 + - cytoolz=0.8.2=py27_0 + - dask=0.13.0=py27_0 + - datashape=0.5.4=py27_0 + - dbus=1.10.10=0 + - decorator=4.0.11=py27_0 + - dill=0.2.5=py27_0 + - docopt=0.6.2=py27_0 + - docutils=0.13.1=py27_0 + - entrypoints=0.2.2=py27_0 + - enum34=1.1.6=py27_0 + - et_xmlfile=1.0.1=py27_0 + - expat=2.1.0=0 + - fastcache=1.0.2=py27_1 + - flask=0.12=py27_0 + - flask-cors=3.0.2=py27_0 + - fontconfig=2.12.1=2 + - freetype=2.5.5=2 + - funcsigs=1.0.2=py27_0 + - functools32=3.2.3.2=py27_0 + - futures=3.0.5=py27_0 + - gcc=4.8.5=7 + - get_terminal_size=1.0.0=py27_0 + - gevent=1.2.1=py27_0 + - gflags=2.1.2=0 + - glib=2.50.2=1 + - glog=0.3.4=0 + - gmp=6.1.0=0 + - greenlet=0.4.11=py27_0 + - grin=1.2.1=py27_3 + - gst-plugins-base=1.8.0=0 + - gstreamer=1.8.0=0 + - h5py=2.6.0=np111py27_2 + - harfbuzz=0.9.39=2 + - hdf5=1.8.17=1 + - heapdict=1.0.0=py27_1 + - icu=54.1=0 + - idna=2.2=py27_0 + - imagesize=0.7.1=py27_0 + - ipaddress=1.0.18=py27_0 + - ipykernel=4.5.2=py27_0 + - ipython=5.1.0=py27_0 + - ipython_genutils=0.1.0=py27_0 + - ipywidgets=5.2.2=py27_1 + - isl=0.12.2=0 + - isort=4.2.5=py27_0 + - itsdangerous=0.24=py27_0 + - jbig=2.1=0 + - jdcal=1.3=py27_0 + - jedi=0.9.0=py27_1 + - jinja2=2.9.4=py27_0 + - jpeg=9b=0 + - jsonschema=2.5.1=py27_0 + - jupyter=1.0.0=py27_3 + - jupyter_client=4.4.0=py27_0 + - jupyter_console=5.0.0=py27_0 + - jupyter_core=4.2.1=py27_0 + - lazy-object-proxy=1.2.2=py27_0 + - leveldb=1.19=0 + - libffi=3.2.1=1 + - libgcc=4.8.5=2 + - libgfortran=3.0.0=1 + - libiconv=1.14=0 + - libpng=1.6.27=0 + - libprotobuf=3.0.0=0 + - libsodium=1.0.10=0 + - libtiff=4.0.6=3 + - libxcb=1.12=1 + - libxml2=2.9.4=0 + - libxslt=1.1.29=0 + - llvmlite=0.15.0=py27_0 + - lmdb=0.9.18=0 + - locket=0.2.0=py27_1 + - lxml=3.7.2=py27_0 + - markupsafe=0.23=py27_2 + - matplotlib=2.0.0=np111py27_0 + - mistune=0.7.3=py27_0 + - mkl=2017.0.1=0 + - mkl-service=1.1.2=py27_3 + - mock=2.0.0=py27_0 + - mpc=1.0.3=0 + - mpfr=3.1.5=0 + - mpmath=0.19=py27_1 + - multipledispatch=0.4.9=py27_0 + - nbconvert=4.2.0=py27_0 + - nbformat=4.2.0=py27_0 + - ncurses=5.9=10 + - networkx=1.11=py27_0 + - nltk=3.2.2=py27_0 + - nomkl=1.0=0 + - nose=1.3.7=py27_1 + - notebook=4.3.1=py27_0 + - numba=0.30.1=np111py27_0 + - numexpr=2.6.1=np111py27_2 + - numpy=1.11.3=py27_0 + - numpydoc=0.6.0=py27_0 + - odo=0.5.0=py27_1 + - openblas=0.2.19=0 + - openpyxl=2.4.1=py27_0 + - openssl=1.0.2k=0 + - pandas=0.19.2=np111py27_1 + - partd=0.3.7=py27_0 + - path.py=10.0=py27_0 + - pathlib2=2.2.0=py27_0 + - patsy=0.4.1=py27_0 + - pbr=1.10.0=py27_0 + - pcre=8.39=1 + - pep8=1.7.0=py27_0 + - pexpect=4.2.1=py27_0 + - pickleshare=0.7.4=py27_0 + - pillow=4.0.0=py27_0 + - pip=9.0.1=py27_1 + - pixman=0.34.0=0 + - pkg-config=0.28=1 + - ply=3.9=py27_0 + - prompt_toolkit=1.0.9=py27_0 + - protobuf=3.0.0=py27_1 + - psutil=5.0.1=py27_0 + - ptyprocess=0.5.1=py27_0 + - py=1.4.32=py27_0 + - pyasn1=0.1.9=py27_0 + - pycairo=1.10.0=py27_0 + - pycosat=0.6.1=py27_1 + - pycparser=2.17=py27_0 + - pycrypto=2.6.1=py27_4 + - pycurl=7.43.0=py27_2 + - pyflakes=1.5.0=py27_0 + - pygments=2.1.3=py27_0 + - pylint=1.6.4=py27_1 + - pyopenssl=16.2.0=py27_0 + - pyparsing=2.1.4=py27_0 + - pyqt=5.6.0=py27_2 + - pytables=3.3.0=np111py27_0 + - pytest=3.0.5=py27_0 + - python=2.7.13=0 + - python-dateutil=2.6.0=py27_0 + - python-gflags=2.0=py27_0 + - python-leveldb=0.194=py27_0 + - pytz=2016.10=py27_0 + - pyyaml=3.12=py27_0 + - pyzmq=16.0.2=py27_0 + - qt=5.6.2=3 + - qtawesome=0.4.3=py27_0 + - qtconsole=4.2.1=py27_1 + - qtpy=1.2.1=py27_0 + - readline=6.2=2 + - redis=3.2.0=0 + - redis-py=2.10.5=py27_0 + - requests=2.12.4=py27_0 + - rope=0.9.4=py27_1 + - scandir=1.4=py27_0 + - scikit-image=0.12.3=np111py27_1 + - scikit-learn=0.18.1=np111py27_1 + - scipy=0.18.1=np111py27_1 + - seaborn=0.7.1=py27_0 + - setuptools=27.2.0=py27_0 + - simplegeneric=0.8.1=py27_1 + - singledispatch=3.4.0.3=py27_0 + - sip=4.18=py27_0 + - six=1.10.0=py27_0 + - snappy=1.1.3=0 + - snowballstemmer=1.2.1=py27_0 + - sockjs-tornado=1.0.3=py27_0 + - sphinx=1.5.1=py27_0 + - sphinx_rtd_theme=0.1.9=py27_1 + - spyder=3.1.2=py27_0 + - sqlalchemy=1.1.5=py27_0 + - sqlite=3.13.0=0 + - ssl_match_hostname=3.4.0.2=py27_1 + - statsmodels=0.6.1=np111py27_1 + - subprocess32=3.2.7=py27_0 + - sympy=1.0=py27_0 + - tensorflow=0.10.0rc0=np111py27_0 + - terminado=0.6=py27_0 + - tk=8.5.18=0 + - toolz=0.8.2=py27_0 + - tornado=4.4.2=py27_0 + - traitlets=4.3.1=py27_0 + - unicodecsv=0.14.1=py27_0 + - wcwidth=0.1.7=py27_0 + - werkzeug=0.11.15=py27_0 + - wheel=0.29.0=py27_0 + - widgetsnbextension=1.2.6=py27_0 + - wrapt=1.10.8=py27_0 + - xlrd=1.0.0=py27_0 + - xlsxwriter=0.9.6=py27_0 + - xlwt=1.2.0=py27_0 + - xz=5.2.2=1 + - yaml=0.1.6=0 + - zeromq=4.1.5=0 + - zlib=1.2.8=3 + - bob=2.6.2=py27_0 + - bob.ap=2.1.2=py27_0 + - bob.blitz=2.0.12=np111py27_0 + - bob.core=2.1.7=py27_0 + - bob.db.atnt=2.0.8=py27_0 + - bob.db.base=2.2.0=py27_0 + - bob.db.iris=2.0.8=py27_0 + - bob.db.mnist=2.0.7=py27_0 + - bob.db.wine=2.0.7=py27_0 + - bob.extension=2.3.9=py27_0 + - bob.io.audio=2.0.4=py27_0 + - bob.io.base=2.0.13=py27_0 + - bob.io.image=2.2.1=py27_0 + - bob.io.matlab=2.0.8=py27_0 + - bob.io.video=2.0.14=py27_0 + - bob.ip.base=2.0.14=py27_0 + - bob.ip.color=2.0.8=py27_0 + - bob.ip.draw=2.0.7=py27_0 + - bob.ip.facedetect=2.1.2=py27_0 + - bob.ip.flandmark=2.1.4=py27_0 + - bob.ip.gabor=2.0.9=py27_0 + - bob.ip.optflow.hornschunck=2.0.11=py27_0 + - bob.ip.optflow.liu=2.0.10=py27_0 + - bob.learn.activation=2.0.8=py27_0 + - bob.learn.boosting=2.0.11=py27_0 + - bob.learn.em=2.0.12=py27_0 + - bob.learn.libsvm=2.0.10=py27_0 + - bob.learn.linear=2.1.0=py27_0 + - bob.learn.mlp=2.1.4=py27_0 + - bob.math=2.1.0=np111py27_0 + - bob.measure=2.3.0=py27_0 + - bob.sp=2.0.8=py27_0 + - cyvlfeat=0.4.5=np111py27_2 + - dlib=19.0=np111py27_1 + - ffmpeg=2.8.10=4 + - giflib=5.1.4=3 + - ipdb=0.10.2=py27_0 + - kaldi=r7271.1a4dbf6=0 + - libblitz=0.10=3 + - libmatio=1.5.6=3 + - libogg=1.3.2=0 + - libsvm=3.21=3 + - menpo=0.7.7=np111py27_4 + - menpofit=0.4.1=py27_1 + - menpowidgets=0.2.1p3=py27_0 + - mne=0.13.1=np111py27_0 + - opencv=3.1.0=np111py27_4 + - openfst=1.6.1=0 + - pathlib=1.0=py27_0 + - pkgtools=0.7.3=py27_0 + - pyedflib=0.1.6=np111py27_2 + - schema=0.6.5=py27_0 + - sox=14.4.2=5 + - speex=1.2.0=0 + - toolchain=2.3.2=0 + - vlfeat=0.9.20=3 + - x264=20131217=3 + - zc.buildout=2.9.2=py27_0 diff --git a/doc/envs/v262py35.yaml b/doc/envs/v262py35.yaml new file mode 100644 index 0000000000000000000000000000000000000000..701deb7930aa6bf0cb0d6a788229d9cb9866b8d4 --- /dev/null +++ b/doc/envs/v262py35.yaml @@ -0,0 +1,266 @@ +name: v262py35 +channels: + - https://www.idiap.ch/software/bob/conda/label/archive + - defaults + - https://www.idiap.ch/software/bob/conda +dependencies: + - _license=1.1=py35_1 + - alabaster=0.7.9=py35_0 + - anaconda=4.3.0=np111py35_0 + - anaconda-client=1.6.0=py35_0 + - anaconda-navigator=1.4.3=py35_0 + - argcomplete=1.0.0=py35_1 + - astroid=1.4.9=py35_0 + - astropy=1.3=np111py35_0 + - babel=2.3.4=py35_0 + - backports=1.0=py35_0 + - beautifulsoup4=4.5.3=py35_0 + - bitarray=0.8.1=py35_0 + - blaze=0.10.1=py35_0 + - bokeh=0.12.4=py35_0 + - boost=1.61.0=py35_0 + - boto=2.45.0=py35_0 + - bottleneck=1.2.0=np111py35_0 + - bzip2=1.0.6=3 + - cairo=1.14.8=0 + - cffi=1.9.1=py35_0 + - chardet=2.3.0=py35_0 + - chest=0.2.3=py35_0 + - click=6.7=py35_0 + - cloog=0.18.0=0 + - cloudpickle=0.2.2=py35_0 + - clyent=1.2.2=py35_0 + - cmake=3.6.3=0 + - colorama=0.3.7=py35_0 + - configobj=5.0.6=py35_0 + - contextlib2=0.5.4=py35_0 + - coverage=4.2=py35_0 + - cryptography=1.7.1=py35_0 + - curl=7.52.1=0 + - cycler=0.10.0=py35_0 + - cython=0.25.2=py35_0 + - cytoolz=0.8.2=py35_0 + - dask=0.13.0=py35_0 + - datashape=0.5.4=py35_0 + - dbus=1.10.10=0 + - decorator=4.0.11=py35_0 + - dill=0.2.5=py35_0 + - docopt=0.6.2=py35_0 + - docutils=0.13.1=py35_0 + - entrypoints=0.2.2=py35_0 + - et_xmlfile=1.0.1=py35_0 + - expat=2.1.0=0 + - fastcache=1.0.2=py35_1 + - flask=0.12=py35_0 + - flask-cors=3.0.2=py35_0 + - fontconfig=2.12.1=2 + - freetype=2.5.5=2 + - gcc=4.8.5=7 + - get_terminal_size=1.0.0=py35_0 + - gevent=1.2.1=py35_0 + - glib=2.50.2=1 + - gmp=6.1.0=0 + - greenlet=0.4.11=py35_0 + - gst-plugins-base=1.8.0=0 + - gstreamer=1.8.0=0 + - h5py=2.6.0=np111py35_2 + - harfbuzz=0.9.39=2 + - hdf5=1.8.17=1 + - heapdict=1.0.0=py35_1 + - icu=54.1=0 + - idna=2.2=py35_0 + - imagesize=0.7.1=py35_0 + - ipykernel=4.5.2=py35_0 + - ipython=5.1.0=py35_0 + - ipython_genutils=0.1.0=py35_0 + - ipywidgets=5.2.2=py35_1 + - isl=0.12.2=0 + - isort=4.2.5=py35_0 + - itsdangerous=0.24=py35_0 + - jbig=2.1=0 + - jdcal=1.3=py35_0 + - jedi=0.9.0=py35_1 + - jinja2=2.9.4=py35_0 + - jpeg=9b=0 + - jsonschema=2.5.1=py35_0 + - jupyter=1.0.0=py35_3 + - jupyter_client=4.4.0=py35_0 + - jupyter_console=5.0.0=py35_0 + - jupyter_core=4.2.1=py35_0 + - lazy-object-proxy=1.2.2=py35_0 + - libffi=3.2.1=1 + - libgcc=4.8.5=2 + - libgfortran=3.0.0=1 + - libiconv=1.14=0 + - libpng=1.6.27=0 + - libprotobuf=3.0.0=0 + - libsodium=1.0.10=0 + - libtiff=4.0.6=3 + - libxcb=1.12=1 + - libxml2=2.9.4=0 + - libxslt=1.1.29=0 + - llvmlite=0.15.0=py35_0 + - locket=0.2.0=py35_1 + - lxml=3.7.2=py35_0 + - markupsafe=0.23=py35_2 + - matplotlib=2.0.0=np111py35_0 + - mistune=0.7.3=py35_0 + - mkl=2017.0.1=0 + - mkl-service=1.1.2=py35_3 + - mock=2.0.0=py35_0 + - mpc=1.0.3=0 + - mpfr=3.1.5=0 + - mpmath=0.19=py35_1 + - multipledispatch=0.4.9=py35_0 + - nbconvert=4.2.0=py35_0 + - nbformat=4.2.0=py35_0 + - ncurses=5.9=10 + - networkx=1.11=py35_0 + - nltk=3.2.2=py35_0 + - nose=1.3.7=py35_1 + - notebook=4.3.1=py35_0 + - numba=0.30.1=np111py35_0 + - numexpr=2.6.1=np111py35_2 + - numpy=1.11.3=py35_0 + - numpydoc=0.6.0=py35_0 + - odo=0.5.0=py35_1 + - openblas=0.2.19=0 + - openpyxl=2.4.1=py35_0 + - openssl=1.0.2k=0 + - pandas=0.19.2=np111py35_1 + - partd=0.3.7=py35_0 + - path.py=10.0=py35_0 + - pathlib2=2.2.0=py35_0 + - patsy=0.4.1=py35_0 + - pbr=1.10.0=py35_0 + - pcre=8.39=1 + - pep8=1.7.0=py35_0 + - pexpect=4.2.1=py35_0 + - pickleshare=0.7.4=py35_0 + - pillow=4.0.0=py35_0 + - pip=9.0.1=py35_1 + - pixman=0.34.0=0 + - pkg-config=0.28=1 + - ply=3.9=py35_0 + - prompt_toolkit=1.0.9=py35_0 + - protobuf=3.0.0=py35_1 + - psutil=5.0.1=py35_0 + - ptyprocess=0.5.1=py35_0 + - py=1.4.32=py35_0 + - pyasn1=0.1.9=py35_0 + - pycosat=0.6.1=py35_1 + - pycparser=2.17=py35_0 + - pycrypto=2.6.1=py35_4 + - pycurl=7.43.0=py35_2 + - pyflakes=1.5.0=py35_0 + - pygments=2.1.3=py35_0 + - pylint=1.6.4=py35_1 + - pyopenssl=16.2.0=py35_0 + - pyparsing=2.1.4=py35_0 + - pyqt=5.6.0=py35_2 + - pytables=3.3.0=np111py35_0 + - pytest=3.0.5=py35_0 + - python=3.5.2=0 + - python-dateutil=2.6.0=py35_0 + - pytz=2016.10=py35_0 + - pyyaml=3.12=py35_0 + - pyzmq=16.0.2=py35_0 + - qt=5.6.2=3 + - qtawesome=0.4.3=py35_0 + - qtconsole=4.2.1=py35_1 + - qtpy=1.2.1=py35_0 + - readline=6.2=2 + - redis=3.2.0=0 + - redis-py=2.10.5=py35_0 + - requests=2.12.4=py35_0 + - rope=0.9.4=py35_1 + - scikit-image=0.12.3=np111py35_1 + - scikit-learn=0.18.1=np111py35_1 + - scipy=0.18.1=np111py35_1 + - seaborn=0.7.1=py35_0 + - setuptools=27.2.0=py35_0 + - simplegeneric=0.8.1=py35_1 + - singledispatch=3.4.0.3=py35_0 + - sip=4.18=py35_0 + - six=1.10.0=py35_0 + - snowballstemmer=1.2.1=py35_0 + - sockjs-tornado=1.0.3=py35_0 + - sphinx=1.5.1=py35_0 + - sphinx_rtd_theme=0.1.9=py35_1 + - spyder=3.1.2=py35_0 + - sqlalchemy=1.1.5=py35_0 + - sqlite=3.13.0=0 + - statsmodels=0.6.1=np111py35_1 + - sympy=1.0=py35_0 + - tensorflow=0.10.0rc0=np111py35_0 + - terminado=0.6=py35_0 + - tk=8.5.18=0 + - toolz=0.8.2=py35_0 + - tornado=4.4.2=py35_0 + - traitlets=4.3.1=py35_0 + - unicodecsv=0.14.1=py35_0 + - wcwidth=0.1.7=py35_0 + - werkzeug=0.11.15=py35_0 + - wheel=0.29.0=py35_0 + - widgetsnbextension=1.2.6=py35_0 + - wrapt=1.10.8=py35_0 + - xlrd=1.0.0=py35_0 + - xlsxwriter=0.9.6=py35_0 + - xlwt=1.2.0=py35_0 + - xz=5.2.2=1 + - yaml=0.1.6=0 + - zeromq=4.1.5=0 + - zlib=1.2.8=3 + - bob=2.6.2=py35_0 + - bob.ap=2.1.2=py35_0 + - bob.blitz=2.0.12=np111py35_0 + - bob.core=2.1.7=py35_0 + - bob.db.atnt=2.0.8=py35_0 + - bob.db.base=2.2.0=py35_0 + - bob.db.iris=2.0.8=py35_0 + - bob.db.mnist=2.0.7=py35_0 + - bob.db.wine=2.0.7=py35_0 + - bob.extension=2.3.9=py35_0 + - bob.io.audio=2.0.4=py35_0 + - bob.io.base=2.0.13=py35_0 + - bob.io.image=2.2.1=py35_0 + - bob.io.matlab=2.0.8=py35_0 + - bob.io.video=2.0.14=py35_0 + - bob.ip.base=2.0.14=py35_0 + - bob.ip.color=2.0.8=py35_0 + - bob.ip.draw=2.0.7=py35_0 + - bob.ip.facedetect=2.1.2=py35_0 + - bob.ip.flandmark=2.1.4=py35_0 + - bob.ip.gabor=2.0.9=py35_0 + - bob.ip.optflow.hornschunck=2.0.11=py35_0 + - bob.ip.optflow.liu=2.0.10=py35_0 + - bob.learn.activation=2.0.8=py35_0 + - bob.learn.boosting=2.0.11=py35_0 + - bob.learn.em=2.0.12=py35_0 + - bob.learn.libsvm=2.0.10=py35_0 + - bob.learn.linear=2.1.0=py35_0 + - bob.learn.mlp=2.1.4=py35_0 + - bob.math=2.1.0=np111py35_0 + - bob.measure=2.3.0=py35_0 + - bob.sp=2.0.8=py35_0 + - cyvlfeat=0.4.5=np111py35_2 + - dlib=19.0=np111py35_1 + - ffmpeg=2.8.10=4 + - giflib=5.1.4=3 + - ipdb=0.10.2=py35_0 + - libblitz=0.10=3 + - libmatio=1.5.6=3 + - libsvm=3.21=3 + - menpo=0.7.7=np111py35_4 + - menpofit=0.4.1=py35_1 + - menpowidgets=0.2.1p3=py35_0 + - mne=0.13.1=np111py35_0 + - opencv=3.1.0=np111py35_4 + - pkgtools=0.7.3=py35_0 + - pyedflib=0.1.6=np111py35_2 + - schema=0.6.5=py35_0 + - sox=14.4.2=5 + - toolchain=2.3.2=0 + - vlfeat=0.9.20=3 + - x264=20131217=3 + - zc.buildout=2.9.2=py35_0 diff --git a/doc/envs/v270py27.yaml b/doc/envs/v270py27.yaml new file mode 100644 index 0000000000000000000000000000000000000000..36e90f911f42312a80682b781af2a347d9b43560 --- /dev/null +++ b/doc/envs/v270py27.yaml @@ -0,0 +1,281 @@ +name: v270py27 +channels: + - https://www.idiap.ch/software/bob/conda/label/archive + - defaults + - https://www.idiap.ch/software/bob/conda +dependencies: + - alabaster=0.7.10=py27_0 + - anaconda=custom=py27_0 + - astroid=1.4.9=py27_0 + - babel=2.4.0=py27_0 + - backports=1.0=py27_0 + - backports_abc=0.5=py27_0 + - bleach=1.5.0=py27_0 + - bokeh=0.12.5=py27_1 + - boost=1.61.0=py27_0 + - bzip2=1.0.6=3 + - caffe=1.0.0rc5=np112py27_0 + - cairo=1.14.8=0 + - certifi=2017.7.27.1=py27h9ceb091_0 + - chardet=3.0.3=py27_0 + - chest=0.2.3=py27_0 + - cloog=0.18.0=0 + - cloudpickle=0.2.2=py27_0 + - cmake=3.6.3=0 + - configparser=3.5.0=py27_0 + - coverage=4.3.4=py27_0 + - curl=7.52.1=0 + - cycler=0.10.0=py27_0 + - cython=0.25.2=py27_0 + - cytoolz=0.8.2=py27_0 + - dask=0.13.0=py27_0 + - dbus=1.10.10=0 + - decorator=4.0.11=py27_0 + - docopt=0.6.2=py27_0 + - docutils=0.13.1=py27_0 + - entrypoints=0.2.2=py27_1 + - enum34=1.1.6=py27_0 + - expat=2.1.0=0 + - fontconfig=2.12.1=3 + - freetype=2.5.5=2 + - funcsigs=1.0.2=py27_0 + - functools32=3.2.3.2=py27_0 + - futures=3.1.1=py27_0 + - gcc=4.8.5=7 + - get_terminal_size=1.0.0=py27_0 + - gflags=2.1.2=0 + - glib=2.50.2=1 + - glog=0.3.4=0 + - gmp=6.1.0=0 + - gst-plugins-base=1.8.0=0 + - gstreamer=1.8.0=0 + - h5py=2.7.0=np112py27_0 + - hdf5=1.8.17=1 + - heapdict=1.0.0=py27_1 + - html5lib=0.999=py27_0 + - icu=54.1=0 + - imagesize=0.7.1=py27_0 + - ipykernel=4.6.1=py27_0 + - ipython=5.1.0=py27_0 + - ipython_genutils=0.2.0=py27_0 + - ipywidgets=5.2.2=py27_1 + - isl=0.12.2=0 + - isort=4.2.14=py27_0 + - jbig=2.1=0 + - jedi=0.10.2=py27_2 + - jinja2=2.9.6=py27_0 + - jpeg=9b=0 + - jsonschema=2.6.0=py27_0 + - jupyter=1.0.0=py27_3 + - jupyter_client=5.0.1=py27_0 + - jupyter_console=5.1.0=py27_0 + - jupyter_core=4.3.0=py27_0 + - lazy-object-proxy=1.2.2=py27_0 + - leveldb=1.19=1 + - libffi=3.2.1=1 + - libgcc=4.8.5=2 + - libgfortran=3.0.0=1 + - libiconv=1.14=0 + - libpng=1.6.27=0 + - libprotobuf=3.2.0=0 + - libsodium=1.0.10=0 + - libtiff=4.0.6=3 + - libxcb=1.12=1 + - libxml2=2.9.4=0 + - llvmlite=0.17.0=py27_0 + - lmdb=0.9.18=0 + - locket=0.2.0=py27_1 + - markupsafe=0.23=py27_2 + - matplotlib=2.0.0=np112py27_0 + - mistune=0.7.4=py27_0 + - mkl=2017.0.1=0 + - mock=2.0.0=py27_0 + - mpc=1.0.3=0 + - mpfr=3.1.5=0 + - nbconvert=5.1.1=py27_0 + - nbformat=4.3.0=py27_0 + - ncurses=5.9=10 + - networkx=1.11=py27_0 + - nose=1.3.7=py27_1 + - notebook=5.0.0=py27_0 + - numba=0.32.0=np112py27_0 + - numexpr=2.6.1=np112py27_2 + - numpy=1.12.1=py27_0 + - numpydoc=0.6.0=py27_0 + - olefile=0.44=py27_0 + - openblas=0.2.19=0 + - openssl=1.0.2l=0 + - pandas=0.19.2=np112py27_1 + - pandocfilters=1.4.1=py27_0 + - partd=0.3.8=py27_0 + - path.py=10.3.1=py27_0 + - pathlib2=2.2.1=py27_0 + - pbr=1.10.0=py27_0 + - pcre=8.39=1 + - pep8=1.7.0=py27_0 + - pexpect=4.2.1=py27_0 + - pickleshare=0.7.4=py27_0 + - pillow=4.0.0=py27_1 + - pip=9.0.1=py27_1 + - pixman=0.34.0=0 + - pkg-config=0.28=1 + - prompt_toolkit=1.0.14=py27_0 + - protobuf=3.2.0=py27_0 + - psutil=5.2.2=py27_0 + - ptyprocess=0.5.1=py27_0 + - pycairo=1.10.0=py27_0 + - pyflakes=1.5.0=py27_0 + - pygments=2.2.0=py27_0 + - pylint=1.6.4=py27_1 + - pyparsing=2.1.4=py27_0 + - pyqt=5.6.0=py27_2 + - python=2.7.13=0 + - python-dateutil=2.6.0=py27_0 + - python-gflags=2.0=py27_0 + - python-leveldb=0.194=py27_1 + - pytz=2017.2=py27_0 + - pyyaml=3.12=py27_0 + - pyzmq=16.0.2=py27_0 + - qt=5.6.2=4 + - qtawesome=0.4.4=py27_0 + - qtconsole=4.3.0=py27_0 + - qtpy=1.2.1=py27_0 + - readline=6.2=2 + - requests=2.14.2=py27_0 + - rope=0.9.4=py27_1 + - scandir=1.5=py27_0 + - scikit-image=0.12.3=np112py27_1 + - scikit-learn=0.18.1=np112py27_1 + - scipy=0.18.1=np112py27_1 + - setuptools=36.4.0=py27_1 + - simplegeneric=0.8.1=py27_1 + - singledispatch=3.4.0.3=py27_0 + - sip=4.18=py27_0 + - six=1.10.0=py27_0 + - snappy=1.1.4=0 + - snowballstemmer=1.2.1=py27_0 + - sphinx=1.5.1=py27_0 + - sphinx_rtd_theme=0.2.4=py27_0 + - spyder=3.1.4=py27_0 + - sqlalchemy=1.1.5=py27_0 + - sqlite=3.13.0=0 + - ssl_match_hostname=3.4.0.2=py27_1 + - subprocess32=3.2.7=py27_0 + - tensorflow=1.0.1=np112py27_0 + - terminado=0.6=py27_0 + - testpath=0.3=py27_0 + - tk=8.5.18=0 + - toolz=0.8.2=py27_0 + - tornado=4.5.1=py27_0 + - traitlets=4.3.2=py27_0 + - wcwidth=0.1.7=py27_0 + - wheel=0.29.0=py27_0 + - widgetsnbextension=2.0.0=py27_0 + - wrapt=1.10.10=py27_0 + - xz=5.2.2=1 + - yaml=0.1.6=0 + - zeromq=4.1.5=0 + - zlib=1.2.8=3 + - bob=2.7.0=py27_0 + - bob-extras=2017.06.06=0 + - bob.ap=2.1.4=np112py27_0 + - bob.bio.base=3.1.2=py_0 + - bob.bio.face=3.2.0=py_0 + - bob.bio.gmm=3.0.2=py_0 + - bob.bio.spear=3.1.0=py_0 + - bob.bio.video=3.2.0=py_0 + - bob.blitz=2.0.13=np112py27_0 + - bob.core=2.1.8=np112py27_0 + - bob.db.arface=2.1.3=py_0 + - bob.db.asvspoof=1.1.6=py_0 + - bob.db.asvspoof2017=1.0.2=py_0 + - bob.db.atnt=2.0.9=py27_0 + - bob.db.atvskeystroke=2.1.4=py_0 + - bob.db.avspoof=2.2.7=py_0 + - bob.db.banca=2.1.4=py_0 + - bob.db.base=2.3.1=py27_0 + - bob.db.biosecure=2.1.4=py_0 + - bob.db.biosecurid.face=2.1.7=py_0 + - bob.db.casme2=2.1.4=py_0 + - bob.db.caspeal=2.1.4=py_0 + - bob.db.cohface=1.0.3=py_0 + - bob.db.cuhk_cufs=2.1.3=py_0 + - bob.db.frgc=2.1.2=py_0 + - bob.db.gbu=2.1.3=py_0 + - bob.db.hci_tagging=1.0.3=py_0 + - bob.db.ijba=2.0.2=py_0 + - bob.db.iris=2.1.0=py27_0 + - bob.db.kboc16=2.0.10=py_0 + - bob.db.lfw=2.1.4=py_0 + - bob.db.livdet2013=2.0.5=py_0 + - bob.db.mnist=2.1.0=py27_0 + - bob.db.mobio=2.1.4=py_0 + - bob.db.msu_mfsd_mod=2.2.1=py_0 + - bob.db.multipie=2.1.3=py_0 + - bob.db.nist_sre12=3.0.2=py_0 + - bob.db.pericrosseye=1.0.1=py_0 + - bob.db.putvein=1.1.3=py_0 + - bob.db.replay=3.0.2=py_0 + - bob.db.replaymobile=1.1.2=py_0 + - bob.db.scface=2.1.3=py_0 + - bob.db.utfvp=2.3.6=py_0 + - bob.db.voicepa=1.0.1=py_0 + - bob.db.voxforge=2.1.3=py_0 + - bob.db.wine=2.0.8=py27_0 + - bob.db.xm2vts=2.1.3=py_0 + - bob.db.youtube=2.1.3=py_0 + - bob.extension=2.4.0=py27_0 + - bob.io.audio=2.0.5=np112py27_0 + - bob.io.base=2.1.0=py27_0 + - bob.io.image=2.2.2=py27_0 + - bob.io.matlab=2.0.9=py27_0 + - bob.io.video=2.0.15=py27_0 + - bob.ip.base=2.0.15=np112py27_0 + - bob.ip.color=2.0.9=py27_0 + - bob.ip.draw=2.0.8=py27_0 + - bob.ip.facedetect=2.1.3=np112py27_0 + - bob.ip.facelandmarks=1.0.4=py_0 + - bob.ip.flandmark=2.1.5=np112py27_0 + - bob.ip.gabor=2.0.10=np112py27_0 + - bob.ip.optflow.hornschunck=2.0.12=np112py27_0 + - bob.ip.optflow.liu=2.0.11=py27_0 + - bob.ip.skincolorfilter=0.0.3=py_0 + - bob.kaldi=1.0.4=py_0 + - bob.learn.activation=2.0.9=py27_0 + - bob.learn.boosting=2.0.12=py27_0 + - bob.learn.em=2.0.13=np112py27_0 + - bob.learn.libsvm=2.0.12=py27_0 + - bob.learn.linear=2.1.1=np112py27_0 + - bob.learn.mlp=2.1.5=np112py27_0 + - bob.math=2.1.1=np112py27_0 + - bob.measure=2.4.0=py27_0 + - bob.pad.base=1.0.8=py_0 + - bob.pad.voice=1.0.4=py_0 + - bob.sp=2.0.9=np112py27_0 + - cyvlfeat=0.4.5=np112py27_2 + - dlib=19.0=np112py27_1 + - ffmpeg=2.8.10=4 + - giflib=5.1.4=3 + - gridtk=1.4.3=py_0 + - ipdb=0.10.2=py27_0 + - kaldi=r7271.1a4dbf6=0 + - libblitz=0.10=3 + - libmatio=1.5.6=3 + - libogg=1.3.2=0 + - libsvm=3.21=3 + - menpo=0.7.7=np112py27_4 + - menpofit=0.4.1=py27_1 + - menpowidgets=0.2.1p3=py27_0 + - mne=0.13.1=np112py27_0 + - opencv=3.1.0=np112py27_4 + - openfst=1.6.1=0 + - pathlib=1.0=py27_0 + - pkgtools=0.7.3=py27_0 + - pyedflib=0.1.6=np112py27_2 + - schema=0.6.5=py27_0 + - sox=14.4.2=5 + - speex=1.2.0=0 + - toolchain=2.3.2=0 + - vlfeat=0.9.20=3 + - x264=20131217=3 + - zc.buildout=2.9.5=py27_0 diff --git a/doc/envs/v270py35.yaml b/doc/envs/v270py35.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e6567cc38ec038fb3f7460f7c2624a65fb6c382b --- /dev/null +++ b/doc/envs/v270py35.yaml @@ -0,0 +1,262 @@ +name: v270py35 +channels: + - https://www.idiap.ch/software/bob/conda/label/archive + - defaults + - https://www.idiap.ch/software/bob/conda +dependencies: + - alabaster=0.7.10=py35_0 + - anaconda=custom=py35_0 + - astroid=1.4.9=py35_0 + - babel=2.4.0=py35_0 + - bleach=1.5.0=py35_0 + - bokeh=0.12.5=py35_1 + - boost=1.61.0=py35_0 + - bzip2=1.0.6=3 + - caffe=1.0.0rc5=np112py35_0 + - certifi=2017.7.27.1=py35h19f42a1_0 + - chardet=3.0.3=py35_0 + - chest=0.2.3=py35_0 + - cloog=0.18.0=0 + - cloudpickle=0.2.2=py35_0 + - cmake=3.6.3=0 + - coverage=4.3.4=py35_0 + - curl=7.52.1=0 + - cycler=0.10.0=py35_0 + - cython=0.25.2=py35_0 + - cytoolz=0.8.2=py35_0 + - dask=0.13.0=py35_0 + - dbus=1.10.10=0 + - decorator=4.0.11=py35_0 + - docopt=0.6.2=py35_0 + - docutils=0.13.1=py35_0 + - entrypoints=0.2.2=py35_1 + - expat=2.1.0=0 + - fontconfig=2.12.1=3 + - freetype=2.5.5=2 + - gcc=4.8.5=7 + - gflags=2.1.2=0 + - glib=2.50.2=1 + - glog=0.3.4=0 + - gmp=6.1.0=0 + - gst-plugins-base=1.8.0=0 + - gstreamer=1.8.0=0 + - h5py=2.7.0=np112py35_0 + - hdf5=1.8.17=1 + - heapdict=1.0.0=py35_1 + - html5lib=0.999=py35_0 + - icu=54.1=0 + - imagesize=0.7.1=py35_0 + - ipykernel=4.6.1=py35_0 + - ipython=5.1.0=py35_0 + - ipython_genutils=0.2.0=py35_0 + - ipywidgets=5.2.2=py35_1 + - isl=0.12.2=0 + - isort=4.2.14=py35_0 + - jbig=2.1=0 + - jedi=0.10.2=py35_2 + - jinja2=2.9.6=py35_0 + - jpeg=9b=0 + - jsonschema=2.6.0=py35_0 + - jupyter=1.0.0=py35_3 + - jupyter_client=5.0.1=py35_0 + - jupyter_console=5.1.0=py35_0 + - jupyter_core=4.3.0=py35_0 + - lazy-object-proxy=1.2.2=py35_0 + - leveldb=1.19=1 + - libffi=3.2.1=1 + - libgcc=4.8.5=2 + - libgfortran=3.0.0=1 + - libiconv=1.14=0 + - libpng=1.6.27=0 + - libprotobuf=3.2.0=0 + - libsodium=1.0.10=0 + - libtiff=4.0.6=3 + - libxcb=1.12=1 + - libxml2=2.9.4=0 + - llvmlite=0.17.0=py35_0 + - lmdb=0.9.18=0 + - locket=0.2.0=py35_1 + - markupsafe=0.23=py35_2 + - matplotlib=2.0.0=np112py35_0 + - mistune=0.7.4=py35_0 + - mkl=2017.0.1=0 + - mpc=1.0.3=0 + - mpfr=3.1.5=0 + - nbconvert=5.1.1=py35_0 + - nbformat=4.3.0=py35_0 + - ncurses=5.9=10 + - networkx=1.11=py35_0 + - nose=1.3.7=py35_1 + - notebook=5.0.0=py35_0 + - numba=0.32.0=np112py35_0 + - numexpr=2.6.1=np112py35_2 + - numpy=1.12.1=py35_0 + - numpydoc=0.6.0=py35_0 + - olefile=0.44=py35_0 + - openblas=0.2.19=0 + - openssl=1.0.2l=0 + - pandas=0.19.2=np112py35_1 + - pandocfilters=1.4.1=py35_0 + - partd=0.3.8=py35_0 + - path.py=10.3.1=py35_0 + - pcre=8.39=1 + - pep8=1.7.0=py35_0 + - pexpect=4.2.1=py35_0 + - pickleshare=0.7.4=py35_0 + - pillow=4.0.0=py35_1 + - pip=9.0.1=py35_1 + - pkg-config=0.28=1 + - prompt_toolkit=1.0.14=py35_0 + - protobuf=3.2.0=py35_0 + - psutil=5.2.2=py35_0 + - ptyprocess=0.5.1=py35_0 + - pyflakes=1.5.0=py35_0 + - pygments=2.2.0=py35_0 + - pylint=1.6.4=py35_1 + - pyparsing=2.1.4=py35_0 + - pyqt=5.6.0=py35_2 + - python=3.5.3=1 + - python-dateutil=2.6.0=py35_0 + - python-gflags=2.0=py35_0 + - python-leveldb=0.194=py35_1 + - pytz=2017.2=py35_0 + - pyyaml=3.12=py35_0 + - pyzmq=16.0.2=py35_0 + - qt=5.6.2=4 + - qtawesome=0.4.4=py35_0 + - qtconsole=4.3.0=py35_0 + - qtpy=1.2.1=py35_0 + - readline=6.2=2 + - requests=2.14.2=py35_0 + - rope=0.9.4=py35_1 + - scikit-image=0.12.3=np112py35_1 + - scikit-learn=0.18.1=np112py35_1 + - scipy=0.18.1=np112py35_1 + - setuptools=36.4.0=py35_1 + - simplegeneric=0.8.1=py35_1 + - sip=4.18=py35_0 + - six=1.10.0=py35_0 + - snappy=1.1.4=0 + - snowballstemmer=1.2.1=py35_0 + - sphinx=1.5.1=py35_0 + - sphinx_rtd_theme=0.2.4=py35_0 + - spyder=3.1.4=py35_0 + - sqlalchemy=1.1.5=py35_0 + - sqlite=3.13.0=0 + - tensorflow=1.0.1=np112py35_0 + - terminado=0.6=py35_0 + - testpath=0.3=py35_0 + - tk=8.5.18=0 + - toolz=0.8.2=py35_0 + - tornado=4.5.1=py35_0 + - traitlets=4.3.2=py35_0 + - wcwidth=0.1.7=py35_0 + - wheel=0.29.0=py35_0 + - widgetsnbextension=2.0.0=py35_0 + - wrapt=1.10.10=py35_0 + - xz=5.2.2=1 + - yaml=0.1.6=0 + - zeromq=4.1.5=0 + - zlib=1.2.8=3 + - bob=2.7.0=py35_0 + - bob-extras=2017.06.06=0 + - bob.ap=2.1.4=np112py35_0 + - bob.bio.base=3.1.2=py_0 + - bob.bio.face=3.2.0=py_0 + - bob.bio.gmm=3.0.2=py_0 + - bob.bio.spear=3.1.0=py_0 + - bob.bio.video=3.2.0=py_0 + - bob.blitz=2.0.13=np112py35_0 + - bob.core=2.1.8=np112py35_0 + - bob.db.arface=2.1.3=py_0 + - bob.db.asvspoof=1.1.6=py_0 + - bob.db.asvspoof2017=1.0.2=py_0 + - bob.db.atnt=2.0.9=py35_0 + - bob.db.atvskeystroke=2.1.4=py_0 + - bob.db.avspoof=2.2.7=py_0 + - bob.db.banca=2.1.4=py_0 + - bob.db.base=2.3.1=py35_0 + - bob.db.biosecure=2.1.4=py_0 + - bob.db.biosecurid.face=2.1.7=py_0 + - bob.db.casme2=2.1.4=py_0 + - bob.db.caspeal=2.1.4=py_0 + - bob.db.cohface=1.0.3=py_0 + - bob.db.cuhk_cufs=2.1.3=py_0 + - bob.db.frgc=2.1.2=py_0 + - bob.db.gbu=2.1.3=py_0 + - bob.db.hci_tagging=1.0.3=py_0 + - bob.db.ijba=2.0.2=py_0 + - bob.db.iris=2.1.0=py35_0 + - bob.db.kboc16=2.0.10=py_0 + - bob.db.lfw=2.1.4=py_0 + - bob.db.livdet2013=2.0.5=py_0 + - bob.db.mnist=2.1.0=py35_0 + - bob.db.mobio=2.1.4=py_0 + - bob.db.msu_mfsd_mod=2.2.1=py_0 + - bob.db.multipie=2.1.3=py_0 + - bob.db.nist_sre12=3.0.2=py_0 + - bob.db.pericrosseye=1.0.1=py_0 + - bob.db.putvein=1.1.3=py_0 + - bob.db.replay=3.0.2=py_0 + - bob.db.replaymobile=1.1.2=py_0 + - bob.db.scface=2.1.3=py_0 + - bob.db.utfvp=2.3.6=py_0 + - bob.db.voicepa=1.0.1=py_0 + - bob.db.voxforge=2.1.3=py_0 + - bob.db.wine=2.0.8=py35_0 + - bob.db.xm2vts=2.1.3=py_0 + - bob.db.youtube=2.1.3=py_0 + - bob.extension=2.4.0=py35_0 + - bob.io.audio=2.0.5=np112py35_0 + - bob.io.base=2.1.0=py35_0 + - bob.io.image=2.2.2=py35_0 + - bob.io.matlab=2.0.9=py35_0 + - bob.io.video=2.0.15=py35_0 + - bob.ip.base=2.0.15=np112py35_0 + - bob.ip.color=2.0.9=py35_0 + - bob.ip.draw=2.0.8=py35_0 + - bob.ip.facedetect=2.1.3=np112py35_0 + - bob.ip.facelandmarks=1.0.4=py_0 + - bob.ip.flandmark=2.1.5=np112py35_0 + - bob.ip.gabor=2.0.10=np112py35_0 + - bob.ip.optflow.hornschunck=2.0.12=np112py35_0 + - bob.ip.optflow.liu=2.0.11=py35_0 + - bob.ip.skincolorfilter=0.0.3=py_0 + - bob.kaldi=1.0.4=py_0 + - bob.learn.activation=2.0.9=py35_0 + - bob.learn.boosting=2.0.12=py35_0 + - bob.learn.em=2.0.13=np112py35_0 + - bob.learn.libsvm=2.0.12=py35_0 + - bob.learn.linear=2.1.1=np112py35_0 + - bob.learn.mlp=2.1.5=np112py35_0 + - bob.math=2.1.1=np112py35_0 + - bob.measure=2.4.0=py35_0 + - bob.pad.base=1.0.8=py_0 + - bob.pad.voice=1.0.4=py_0 + - bob.sp=2.0.9=np112py35_0 + - cyvlfeat=0.4.5=np112py35_2 + - dlib=19.0=np112py35_1 + - ffmpeg=2.8.10=4 + - giflib=5.1.4=3 + - gridtk=1.4.3=py_0 + - ipdb=0.10.2=py35_0 + - kaldi=r7271.1a4dbf6=0 + - libblitz=0.10=3 + - libmatio=1.5.6=3 + - libogg=1.3.2=0 + - libsvm=3.21=3 + - menpo=0.7.7=np112py35_4 + - menpofit=0.4.1=py35_1 + - menpowidgets=0.2.1p3=py35_0 + - mne=0.13.1=np112py35_0 + - opencv=3.1.0=np112py35_4 + - openfst=1.6.1=0 + - pkgtools=0.7.3=py35_0 + - pyedflib=0.1.6=np112py35_2 + - schema=0.6.5=py35_0 + - sox=14.4.2=5 + - speex=1.2.0=0 + - toolchain=2.3.2=0 + - vlfeat=0.9.20=3 + - x264=20131217=3 + - zc.buildout=2.9.5=py35_0 diff --git a/doc/envs/v300py27.yaml b/doc/envs/v300py27.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f4f47a378a3af90ead2be42adafa5c2578874c18 --- /dev/null +++ b/doc/envs/v300py27.yaml @@ -0,0 +1,279 @@ +name: v300py27 +channels: + - https://www.idiap.ch/software/bob/conda/label/archive + - defaults + - https://www.idiap.ch/software/bob/conda +dependencies: + - alabaster=0.7.10=py27_0 + - babel=2.5.0=py27_0 + - backports=1.0=py27_0 + - backports.weakref=1.0rc1=py27_0 + - backports_abc=0.5=py27_0 + - bkcharts=0.2=py27_0 + - bleach=1.5.0=py27_0 + - bokeh=0.12.7=py27_0 + - boost=1.61.0=py27_0 + - bzip2=1.0.6=3 + - caffe=1.0.0rc5=np112py27_0 + - cairo=1.14.8=0 + - certifi=2016.2.28=py27_0 + - cloog=0.18.0=0 + - cloudpickle=0.4.0=py27_0 + - cmake=3.6.3=0 + - configparser=3.5.0=py27_0 + - coverage=4.3.4=py27_0 + - curl=7.52.1=0 + - cycler=0.10.0=py27_0 + - cython=0.25.2=py27_0 + - cytoolz=0.8.2=py27_0 + - dask=0.14.3=py27_1 + - dbus=1.10.20=0 + - decorator=4.1.2=py27_0 + - docopt=0.6.2=py27_0 + - docutils=0.14=py27_0 + - entrypoints=0.2.3=py27_0 + - enum34=1.1.6=py27_0 + - expat=2.1.0=0 + - fontconfig=2.12.1=3 + - freetype=2.5.5=2 + - funcsigs=1.0.2=py27_0 + - functools32=3.2.3.2=py27_0 + - futures=3.1.1=py27_0 + - gcc=4.8.5=7 + - get_terminal_size=1.0.0=py27_0 + - gflags=2.2.0=1 + - glib=2.50.2=1 + - glog=0.3.5=0 + - gmp=6.1.0=0 + - gst-plugins-base=1.8.0=0 + - gstreamer=1.8.0=0 + - h5py=2.7.0=np112py27_0 + - hdf5=1.8.17=2 + - html5lib=0.9999999=py27_0 + - icu=54.1=0 + - imagesize=0.7.1=py27_0 + - ipykernel=4.6.1=py27_0 + - ipython=5.3.0=py27_0 + - ipython_genutils=0.2.0=py27_0 + - ipywidgets=6.0.0=py27_0 + - isl=0.12.2=0 + - jbig=2.1=0 + - jinja2=2.9.6=py27_0 + - jpeg=9b=0 + - jsonschema=2.6.0=py27_0 + - jupyter=1.0.0=py27_3 + - jupyter_client=5.1.0=py27_0 + - jupyter_console=5.2.0=py27_0 + - jupyter_core=4.3.0=py27_0 + - leveldb=1.20=0 + - libffi=3.2.1=1 + - libgcc=4.8.5=2 + - libgfortran=3.0.0=1 + - libiconv=1.14=0 + - libpng=1.6.27=0 + - libprotobuf=3.2.0=0 + - libsodium=1.0.10=0 + - libtiff=4.0.6=3 + - libxcb=1.12=1 + - libxml2=2.9.4=0 + - llvmlite=0.18.0=py27_0 + - lmdb=0.9.21=0 + - locket=0.2.0=py27_1 + - markdown=2.6.9=py27_0 + - markupsafe=1.0=py27_0 + - matplotlib=2.0.2=np112py27_0 + - mistune=0.7.4=py27_0 + - mkl=2017.0.1=0 + - mock=2.0.0=py27_0 + - mpc=1.0.3=0 + - mpfr=3.1.5=0 + - nbconvert=5.2.1=py27_0 + - nbformat=4.4.0=py27_0 + - ncurses=5.9=10 + - networkx=1.11=py27_0 + - nose=1.3.7=py27_1 + - notebook=5.0.0=py27_0 + - numba=0.33.0=np112py27_0 + - numexpr=2.6.2=np112py27_0 + - numpy=1.12.1=py27_0 + - olefile=0.44=py27_0 + - openblas=0.2.19=0 + - openssl=1.0.2l=0 + - pandas=0.20.1=np112py27_0 + - pandocfilters=1.4.2=py27_0 + - partd=0.3.8=py27_0 + - path.py=10.3.1=py27_0 + - pathlib2=2.3.0=py27_0 + - pbr=1.10.0=py27_0 + - pcre=8.39=1 + - pexpect=4.2.1=py27_0 + - pickleshare=0.7.4=py27_0 + - pillow=4.1.1=py27_0 + - pip=9.0.1=py27_1 + - pixman=0.34.0=0 + - pkg-config=0.28=1 + - prompt_toolkit=1.0.15=py27_0 + - protobuf=3.2.0=py27_0 + - ptyprocess=0.5.2=py27_0 + - pycairo=1.10.0=py27_0 + - pygments=2.2.0=py27_0 + - pyparsing=2.2.0=py27_0 + - pyqt=5.6.0=py27_2 + - python=2.7.13=0 + - python-dateutil=2.6.1=py27_0 + - python-gflags=3.1.1=py27_0 + - python-leveldb=0.194=py27_1 + - pytz=2017.2=py27_0 + - pywavelets=0.5.2=np112py27_0 + - pyyaml=3.12=py27_0 + - pyzmq=16.0.2=py27_0 + - qt=5.6.2=5 + - qtconsole=4.3.1=py27_0 + - readline=6.2=2 + - requests=2.14.2=py27_0 + - scandir=1.5=py27_0 + - scikit-image=0.13.0=np112py27_0 + - scikit-learn=0.18.1=np112py27_1 + - scipy=0.19.0=np112py27_0 + - setuptools=36.4.0=py27_1 + - simplegeneric=0.8.1=py27_1 + - singledispatch=3.4.0.3=py27_0 + - sip=4.18=py27_0 + - six=1.10.0=py27_0 + - snappy=1.1.6=0 + - snowballstemmer=1.2.1=py27_0 + - sphinx=1.5.6=py27_0 + - sphinx_rtd_theme=0.2.4=py27_0 + - sqlalchemy=1.1.9=py27_0 + - sqlite=3.13.0=0 + - ssl_match_hostname=3.5.0.1=py27_0 + - subprocess32=3.2.7=py27_0 + - tensorflow=1.2.1=py27_0 + - terminado=0.6=py27_0 + - testpath=0.3.1=py27_0 + - tk=8.5.18=0 + - toolz=0.8.2=py27_0 + - tornado=4.5.2=py27_0 + - traitlets=4.3.2=py27_0 + - virtualenv=15.1.0=py27_0 + - wcwidth=0.1.7=py27_0 + - werkzeug=0.12.2=py27_0 + - wheel=0.29.0=py27_0 + - widgetsnbextension=3.0.2=py27_0 + - xz=5.2.3=0 + - yaml=0.1.6=0 + - zeromq=4.1.5=0 + - zlib=1.2.11=0 + - bob=3.0.0=np112py27_0 + - bob-devel=2017.10.30=np112py27_2 + - bob-extras=2017.10.22=0 + - bob.ap=2.1.5=np112py27_0 + - bob.bio.base=3.2.1=py_0 + - bob.bio.caffe_face=1.1.0=py_0 + - bob.bio.face=3.3.0=py_0 + - bob.bio.gmm=3.1.0=py_0 + - bob.bio.spear=3.1.1=py_0 + - bob.bio.vein=1.0.1=py27_0 + - bob.bio.video=3.3.0=py_0 + - bob.blitz=2.0.14=np112py27_0 + - bob.core=2.1.9=np112py27_0 + - bob.db.arface=2.1.4=py_0 + - bob.db.asvspoof=1.1.7=py_0 + - bob.db.asvspoof2017=1.0.3=py_0 + - bob.db.atnt=2.0.10=py27_0 + - bob.db.atvskeystroke=2.1.5=py_0 + - bob.db.avspoof=2.2.8=py_0 + - bob.db.banca=2.1.5=py_0 + - bob.db.base=2.3.2=py27_0 + - bob.db.biosecure=2.1.5=py_0 + - bob.db.biosecurid.face=2.1.8=py_0 + - bob.db.casme2=2.1.5=py_0 + - bob.db.caspeal=2.1.5=py_0 + - bob.db.cohface=1.0.4=py_0 + - bob.db.cuhk_cufs=2.1.3=py_0 + - bob.db.frgc=2.1.3=py_0 + - bob.db.fv3d=1.0.0=py_0 + - bob.db.gbu=2.1.4=py_0 + - bob.db.hci_tagging=1.0.4=py_0 + - bob.db.ijba=2.0.3=py_0 + - bob.db.iris=2.1.1=py27_0 + - bob.db.kboc16=2.0.11=py_0 + - bob.db.lfw=2.1.5=py_0 + - bob.db.livdet2013=2.0.6=py_0 + - bob.db.mnist=2.1.1=py27_0 + - bob.db.mobio=2.1.5=py_0 + - bob.db.msu_mfsd_mod=2.2.3=py_0 + - bob.db.multipie=2.1.4=py_0 + - bob.db.nist_sre12=3.0.3=py_0 + - bob.db.pericrosseye=1.0.1=py_0 + - bob.db.putvein=1.2.1=py_0 + - bob.db.replay=3.0.3=py_0 + - bob.db.replaymobile=1.1.3=py_0 + - bob.db.scface=2.1.5=py_0 + - bob.db.utfvp=2.4.1=py_0 + - bob.db.verafinger=1.0.0=py_0 + - bob.db.voicepa=1.0.2=py_0 + - bob.db.voxforge=2.2.0=py_0 + - bob.db.wine=2.0.9=py27_0 + - bob.db.xm2vts=2.1.4=py_0 + - bob.db.youtube=2.1.4=py_0 + - bob.extension=2.4.5=py27_0 + - bob.io.audio=2.0.6=np112py27_0 + - bob.io.base=3.0.2=np112py27_0 + - bob.io.image=2.3.0=np112py27_0 + - bob.io.matlab=2.0.10=np112py27_0 + - bob.io.video=2.0.19=np112py27_0 + - bob.ip.base=2.1.0=np112py27_0 + - bob.ip.caffe_extractor=1.1.1=py_0 + - bob.ip.color=2.0.10=np112py27_0 + - bob.ip.dlib=1.0.1=py27_0 + - bob.ip.draw=2.0.9=np112py27_0 + - bob.ip.facedetect=2.1.4=np112py27_0 + - bob.ip.facelandmarks=1.0.4=py_0 + - bob.ip.flandmark=2.1.6=np112py27_0 + - bob.ip.gabor=2.0.11=np112py27_0 + - bob.ip.optflow.hornschunck=2.0.13=np112py27_0 + - bob.ip.optflow.liu=2.0.12=np112py27_0 + - bob.ip.qualitymeasure=1.0.5=np112py27_0 + - bob.ip.skincolorfilter=0.0.3=py_0 + - bob.kaldi=1.1.0=py_0 + - bob.learn.activation=2.0.10=np112py27_0 + - bob.learn.boosting=2.0.13=np112py27_0 + - bob.learn.em=2.1.0=np112py27_0 + - bob.learn.libsvm=2.0.13=np112py27_0 + - bob.learn.linear=2.1.2=np112py27_0 + - bob.learn.mlp=2.1.6=np112py27_0 + - bob.math=3.0.0=np112py27_1 + - bob.measure=2.4.1=np112py27_0 + - bob.pad.base=1.0.8=py_0 + - bob.pad.voice=1.0.4=py_0 + - bob.sp=2.0.10=np112py27_0 + - cyvlfeat=0.4.5=np112py27_2 + - dlib=19.0=np112py27_1 + - ffmpeg=2.8.10=4 + - giflib=5.1.4=3 + - gridtk=1.4.4=py_0 + - ipdb=0.10.2=py27_0 + - kaldi=r7271.1a4dbf6=0 + - keras=2.0.8=py27_1 + - libblitz=0.10=3 + - libmatio=1.5.6=3 + - libogg=1.3.2=0 + - libsvm=3.21=3 + - madmom=0.15.1=py27_0 + - menpo=0.8.1=np112py27_0 + - menpofit=0.5.0=py27_0 + - menpowidgets=0.3.0p6=py27_0 + - mne=0.14.1=np112py27_0 + - opencv=3.1.0=np112py27_4 + - openfst=1.6.1=0 + - pathlib=1.0=py27_0 + - pkgtools=0.7.3=py27_0 + - pyedflib=0.1.9=np112py27_0 + - schema=0.6.5=py27_0 + - sox=14.4.2=5 + - speex=1.2.0=0 + - toolchain=2.3.2=0 + - vlfeat=0.9.20=3 + - x264=20131217=3 + - zc.buildout=2.9.5=py27_0 diff --git a/doc/envs/v300py36.yaml b/doc/envs/v300py36.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9c1d94f1dba3fe43de27b9a64ba46aa6983715c7 --- /dev/null +++ b/doc/envs/v300py36.yaml @@ -0,0 +1,261 @@ +name: v300py36 +channels: + - https://www.idiap.ch/software/bob/conda/label/archive + - defaults + - https://www.idiap.ch/software/bob/conda +dependencies: + - alabaster=0.7.10=py36_0 + - babel=2.5.0=py36_0 + - backports=1.0=py36_0 + - backports.weakref=1.0rc1=py36_0 + - bkcharts=0.2=py36_0 + - bleach=1.5.0=py36_0 + - bokeh=0.12.7=py36_0 + - boost=1.61.0=py36_0 + - bzip2=1.0.6=3 + - caffe=1.0.0rc5=np112py36_0 + - certifi=2016.2.28=py36_0 + - cloog=0.18.0=0 + - cloudpickle=0.4.0=py36_0 + - cmake=3.6.3=0 + - coverage=4.3.4=py36_0 + - curl=7.52.1=0 + - cycler=0.10.0=py36_0 + - cython=0.25.2=py36_0 + - cytoolz=0.8.2=py36_0 + - dask=0.14.3=py36_1 + - dbus=1.10.20=0 + - decorator=4.1.2=py36_0 + - docopt=0.6.2=py36_0 + - docutils=0.14=py36_0 + - entrypoints=0.2.3=py36_0 + - expat=2.1.0=0 + - fontconfig=2.12.1=3 + - freetype=2.5.5=2 + - gcc=4.8.5=7 + - gflags=2.2.0=1 + - glib=2.50.2=1 + - glog=0.3.5=0 + - gmp=6.1.0=0 + - gst-plugins-base=1.8.0=0 + - gstreamer=1.8.0=0 + - h5py=2.7.0=np112py36_0 + - hdf5=1.8.17=2 + - html5lib=0.9999999=py36_0 + - icu=54.1=0 + - imagesize=0.7.1=py36_0 + - ipykernel=4.6.1=py36_0 + - ipython=5.3.0=py36_0 + - ipython_genutils=0.2.0=py36_0 + - ipywidgets=6.0.0=py36_0 + - isl=0.12.2=0 + - jbig=2.1=0 + - jinja2=2.9.6=py36_0 + - jpeg=9b=0 + - jsonschema=2.6.0=py36_0 + - jupyter=1.0.0=py36_3 + - jupyter_client=5.1.0=py36_0 + - jupyter_console=5.2.0=py36_0 + - jupyter_core=4.3.0=py36_0 + - leveldb=1.20=0 + - libffi=3.2.1=1 + - libgcc=4.8.5=2 + - libgfortran=3.0.0=1 + - libiconv=1.14=0 + - libpng=1.6.27=0 + - libprotobuf=3.2.0=0 + - libsodium=1.0.10=0 + - libtiff=4.0.6=3 + - libxcb=1.12=1 + - libxml2=2.9.4=0 + - llvmlite=0.18.0=py36_0 + - lmdb=0.9.21=0 + - locket=0.2.0=py36_1 + - markdown=2.6.9=py36_0 + - markupsafe=1.0=py36_0 + - matplotlib=2.0.2=np112py36_0 + - mistune=0.7.4=py36_0 + - mkl=2017.0.1=0 + - mpc=1.0.3=0 + - mpfr=3.1.5=0 + - nbconvert=5.2.1=py36_0 + - nbformat=4.4.0=py36_0 + - ncurses=5.9=10 + - networkx=1.11=py36_0 + - nose=1.3.7=py36_1 + - notebook=5.0.0=py36_0 + - numba=0.33.0=np112py36_0 + - numexpr=2.6.2=np112py36_0 + - numpy=1.12.1=py36_0 + - olefile=0.44=py36_0 + - openblas=0.2.19=0 + - openssl=1.0.2l=0 + - pandas=0.20.1=np112py36_0 + - pandocfilters=1.4.2=py36_0 + - partd=0.3.8=py36_0 + - path.py=10.3.1=py36_0 + - pcre=8.39=1 + - pexpect=4.2.1=py36_0 + - pickleshare=0.7.4=py36_0 + - pillow=4.1.1=py36_0 + - pip=9.0.1=py36_1 + - pkg-config=0.28=1 + - prompt_toolkit=1.0.15=py36_0 + - protobuf=3.2.0=py36_0 + - ptyprocess=0.5.2=py36_0 + - pygments=2.2.0=py36_0 + - pyparsing=2.2.0=py36_0 + - pyqt=5.6.0=py36_2 + - python=3.6.2=0 + - python-dateutil=2.6.1=py36_0 + - python-gflags=3.1.1=py36_0 + - python-leveldb=0.194=py36_1 + - pytz=2017.2=py36_0 + - pywavelets=0.5.2=np112py36_0 + - pyyaml=3.12=py36_0 + - pyzmq=16.0.2=py36_0 + - qt=5.6.2=5 + - qtconsole=4.3.1=py36_0 + - readline=6.2=2 + - requests=2.14.2=py36_0 + - scikit-image=0.13.0=np112py36_0 + - scikit-learn=0.18.1=np112py36_1 + - scipy=0.19.0=np112py36_0 + - setuptools=36.4.0=py36_1 + - simplegeneric=0.8.1=py36_1 + - sip=4.18=py36_0 + - six=1.10.0=py36_0 + - snappy=1.1.6=0 + - snowballstemmer=1.2.1=py36_0 + - sphinx=1.5.6=py36_0 + - sphinx_rtd_theme=0.2.4=py36_0 + - sqlalchemy=1.1.9=py36_0 + - sqlite=3.13.0=0 + - tensorflow=1.2.1=py36_0 + - terminado=0.6=py36_0 + - testpath=0.3.1=py36_0 + - tk=8.5.18=0 + - toolz=0.8.2=py36_0 + - tornado=4.5.2=py36_0 + - traitlets=4.3.2=py36_0 + - virtualenv=15.1.0=py36_0 + - wcwidth=0.1.7=py36_0 + - werkzeug=0.12.2=py36_0 + - wheel=0.29.0=py36_0 + - widgetsnbextension=3.0.2=py36_0 + - xz=5.2.3=0 + - yaml=0.1.6=0 + - zeromq=4.1.5=0 + - zlib=1.2.11=0 + - bob=3.0.0=np112py36_0 + - bob-devel=2017.10.30=np112py36_2 + - bob-extras=2017.10.22=0 + - bob.ap=2.1.5=np112py36_0 + - bob.bio.base=3.2.1=py_0 + - bob.bio.caffe_face=1.1.0=py_0 + - bob.bio.face=3.3.0=py_0 + - bob.bio.gmm=3.1.0=py_0 + - bob.bio.spear=3.1.1=py_0 + - bob.bio.vein=1.0.1=py36_0 + - bob.bio.video=3.3.0=py_0 + - bob.blitz=2.0.14=np112py36_0 + - bob.core=2.1.9=np112py36_0 + - bob.db.arface=2.1.4=py_0 + - bob.db.asvspoof=1.1.7=py_0 + - bob.db.asvspoof2017=1.0.3=py_0 + - bob.db.atnt=2.0.10=py36_0 + - bob.db.atvskeystroke=2.1.5=py_0 + - bob.db.avspoof=2.2.8=py_0 + - bob.db.banca=2.1.5=py_0 + - bob.db.base=2.3.2=py36_0 + - bob.db.biosecure=2.1.5=py_0 + - bob.db.biosecurid.face=2.1.8=py_0 + - bob.db.casme2=2.1.5=py_0 + - bob.db.caspeal=2.1.5=py_0 + - bob.db.cohface=1.0.4=py_0 + - bob.db.cuhk_cufs=2.1.3=py_0 + - bob.db.frgc=2.1.3=py_0 + - bob.db.fv3d=1.0.0=py_0 + - bob.db.gbu=2.1.4=py_0 + - bob.db.hci_tagging=1.0.4=py_0 + - bob.db.ijba=2.0.3=py_0 + - bob.db.iris=2.1.1=py36_0 + - bob.db.kboc16=2.0.11=py_0 + - bob.db.lfw=2.1.5=py_0 + - bob.db.livdet2013=2.0.6=py_0 + - bob.db.mnist=2.1.1=py36_0 + - bob.db.mobio=2.1.5=py_0 + - bob.db.msu_mfsd_mod=2.2.3=py_0 + - bob.db.multipie=2.1.4=py_0 + - bob.db.nist_sre12=3.0.3=py_0 + - bob.db.pericrosseye=1.0.1=py_0 + - bob.db.putvein=1.2.1=py_0 + - bob.db.replay=3.0.3=py_0 + - bob.db.replaymobile=1.1.3=py_0 + - bob.db.scface=2.1.5=py_0 + - bob.db.utfvp=2.4.1=py_0 + - bob.db.verafinger=1.0.0=py_0 + - bob.db.voicepa=1.0.2=py_0 + - bob.db.voxforge=2.2.0=py_0 + - bob.db.wine=2.0.9=py36_0 + - bob.db.xm2vts=2.1.4=py_0 + - bob.db.youtube=2.1.4=py_0 + - bob.extension=2.4.5=py36_0 + - bob.io.audio=2.0.6=np112py36_0 + - bob.io.base=3.0.2=np112py36_0 + - bob.io.image=2.3.0=np112py36_0 + - bob.io.matlab=2.0.10=np112py36_0 + - bob.io.video=2.0.19=np112py36_0 + - bob.ip.base=2.1.0=np112py36_0 + - bob.ip.caffe_extractor=1.1.1=py_0 + - bob.ip.color=2.0.10=np112py36_0 + - bob.ip.dlib=1.0.1=py36_0 + - bob.ip.draw=2.0.9=np112py36_0 + - bob.ip.facedetect=2.1.4=np112py36_0 + - bob.ip.facelandmarks=1.0.4=py_0 + - bob.ip.flandmark=2.1.6=np112py36_0 + - bob.ip.gabor=2.0.11=np112py36_0 + - bob.ip.optflow.hornschunck=2.0.13=np112py36_0 + - bob.ip.optflow.liu=2.0.12=np112py36_0 + - bob.ip.qualitymeasure=1.0.5=np112py36_0 + - bob.ip.skincolorfilter=0.0.3=py_0 + - bob.kaldi=1.1.0=py_0 + - bob.learn.activation=2.0.10=np112py36_0 + - bob.learn.boosting=2.0.13=np112py36_0 + - bob.learn.em=2.1.0=np112py36_0 + - bob.learn.libsvm=2.0.13=np112py36_0 + - bob.learn.linear=2.1.2=np112py36_0 + - bob.learn.mlp=2.1.6=np112py36_0 + - bob.math=3.0.0=np112py36_1 + - bob.measure=2.4.1=np112py36_0 + - bob.pad.base=1.0.8=py_0 + - bob.pad.voice=1.0.4=py_0 + - bob.sp=2.0.10=np112py36_0 + - cyvlfeat=0.4.5=np112py36_2 + - dlib=19.0=np112py36_1 + - ffmpeg=2.8.10=4 + - giflib=5.1.4=3 + - gridtk=1.4.4=py_0 + - ipdb=0.10.2=py36_0 + - kaldi=r7271.1a4dbf6=0 + - keras=2.0.8=py36_1 + - libblitz=0.10=3 + - libmatio=1.5.6=3 + - libogg=1.3.2=0 + - libsvm=3.21=3 + - madmom=0.15.1=py36_0 + - menpo=0.8.1=np112py36_0 + - menpofit=0.5.0=py36_0 + - menpowidgets=0.3.0p6=py36_0 + - mne=0.14.1=np112py36_0 + - opencv=3.1.0=np112py36_4 + - openfst=1.6.1=0 + - pkgtools=0.7.3=py36_0 + - pyedflib=0.1.9=np112py36_0 + - schema=0.6.5=py36_0 + - sox=14.4.2=5 + - speex=1.2.0=0 + - toolchain=2.3.2=0 + - vlfeat=0.9.20=3 + - x264=20131217=3 + - zc.buildout=2.9.5=py36_0 diff --git a/doc/example.rst b/doc/example.rst new file mode 100644 index 0000000000000000000000000000000000000000..9dfe886768463c093ce35a21d74d4c6072bb5aeb --- /dev/null +++ b/doc/example.rst @@ -0,0 +1,160 @@ +.. vim: set fileencoding=utf-8 : + +.. _bob.iris_example: + +=============================================== + Tutorial: Analysis of the Fisher Iris Dataset +=============================================== + +In this tutorial, we collect bits and pieces of the previous tutorials and build a +complete example that discriminates Iris species based on Bob. + +The `Iris flower data set <http://en.wikipedia.org/wiki/Iris_flower_data_set>`_ or +Fisher's Iris data set is a multivariate data set introduced by Sir Ronald Aylmer Fisher +(1936) as an example of discriminant analysis. It is sometimes called Anderson's Iris +data set because Edgar Anderson collected the data to quantify the morphologic variation +of Iris flowers of three related species. The dataset consists of 50 samples from each +of three species of Iris flowers (Iris setosa, Iris virginica and Iris versicolor). Four +features were measured from each sample, they are the length and the width of sepal and +petal, in centimeters. Based on the combination of the four features, Fisher developed a +linear discriminant model to distinguish the species from each other. + + +.. note:: + + This example will consider all 3 classes for the LDA training. + This is **not** what Fisher did in his paper [Fisher1936]_ . + In that work Fisher did the *right* thing only for the first 2-class problem (setosa *versus* versicolor). + You can reproduce the 2-class LDA using bob's LDA training system without problems. + When inserting the virginica class, Fisher decides for a different metric (:math:`4vi + ve - 5se`) and solves for the matrices in the last row of Table VIII. + + This is OK, but does not generalize the method proposed in the beginning of his paper. + Results achieved by the generalized LDA method [Duda1973]_ will not match Fisher's result on that last table, be aware. + That being said, the final histogram presented on that paper looks quite similar to the one produced by this script, showing that Fisher's solution was a good approximation for the generalized LDA implementation available in Bob. + +.. [Fisher1936] **R. A. FISHER**, *The Use of Multiple Measurements in Taxonomic Problems*, Annals of Eugenics, pp. 179-188, 1936 +.. [Duda1973] **R.O. Duda and P.E. Hart**, *Pattern Classification and Scene Analysis*, (Q327.D83) John Wiley & Sons. ISBN 0-471-22361-1. 1973 (See page 218). + + +.. testsetup:: iris + + import bob + import numpy + import matplotlib + if not hasattr(matplotlib, 'backends'): + matplotlib.use('pdf') #non-interactive avoids exception on display + + +Training a :py:class:`bob.learn.linear.Machine` with LDA +--------------------------------------------------------- + +Creating a :py:class:`bob.learn.linear.Machine` to perform Linear Discriminant Analysis on the Iris dataset involves using the :py:class:`bob.learn.linear.FisherLDATrainer`: + +.. doctest:: iris + + >>> import bob.db.iris + >>> import bob.learn.linear + >>> trainer = bob.learn.linear.FisherLDATrainer() + >>> data = bob.db.iris.data() + >>> machine, unused_eigen_values = trainer.train(data.values()) + >>> machine.shape + (4, 2) + +That is it! The returned :py:class:`bob.learn.linear.Machine` is now setup to perform LDA on the Iris data set. +A few things should be noted: + +1. The returned :py:class:`bob.learn.linear.Machine` represents the linear projection of the input features to a new 3D space which maximizes the between-class scatter and minimizes the within-class scatter. + In other words, the internal matrix :math:`\mathbf{W}` is 4-by-2. + The projections are calculated internally using `Singular Value Decomposition <http://en.wikipedia.org/wiki/Singular_value_decomposition>`_ (SVD). + The first projection (first row of :math:`\mathbf{W}` corresponds to the highest eigenvalue resulting from the decomposition, the second, the second highest, and so on; + +2. The trainer also returns the eigenvalues generated after the SVD for our LDA implementation, in case you would like to use them. + For this example, we just discard this information. + +Looking at the first LDA component +---------------------------------- + +To reproduce Fisher's results, we must pass the data through the created machine: + +.. doctest:: iris + + >>> output = {} + >>> for key in data: + ... output[key] = machine.forward(data[key]) + +At this point the variable ``output`` contains the LDA-projected information as 2D :py:class:`numpy.ndarray` objects. +The only step missing is the visualization of the results. +Fisher proposed the use of a histogram showing the separation achieved by looking at the first only. +Let's reproduce it. + +.. doctest:: iris + + >>> from matplotlib import pyplot + >>> pyplot.hist(output['setosa'][:,0], bins=8, color='green', label='Setosa', alpha=0.5) # doctest: +SKIP + >>> pyplot.hist(output['versicolor'][:,0], bins=8, color='blue', label='Versicolor', alpha=0.5) # doctest: +SKIP + >>> pyplot.hist(output['virginica'][:,0], bins=8, color='red', label='Virginica', alpha=0.5) # doctest: +SKIP + +We can certainly throw in more decoration: + +.. doctest:: iris + + >>> pyplot.legend() # doctest: +SKIP + >>> pyplot.grid(True) # doctest: +SKIP + >>> pyplot.axis([-3,+3,0,20]) # doctest: +SKIP + >>> pyplot.title("Iris Plants / 1st. LDA component") # doctest: +SKIP + >>> pyplot.xlabel("LDA[0]") # doctest: +SKIP + >>> pyplot.ylabel("Count") # doctest: +SKIP + +Finally, to display the plot, do: + +.. code-block:: python + + >>> pyplot.show() + +You should see an image like this: + +.. plot:: plot/iris_lda.py + + +Measuring performance +--------------------- + +You can measure the performance of the system on classifying, say, *Iris Virginica* as compared to the other two variants. +We can use the functions in :ref:`bob.measure <bob.measure>` for that purpose. +Let's first find a threshold that separates this variant from the others. +We choose to find the threshold at the point where the relative error rate considering both *Versicolor* and *Setosa* variants is the same as for the *Virginica* one. + +.. doctest:: iris + + >>> import bob.measure + >>> negatives = numpy.vstack([output['setosa'], output['versicolor']])[:,0] + >>> positives = output['virginica'][:,0] + >>> threshold= bob.measure.eer_threshold(negatives, positives) + +With the threshold at hand, we can estimate the number of correctly classified *negatives* (or true-rejections) and *positives* (or true-accepts). +Let's translate that: plants from the *Versicolor* and *Setosa* variants that have the first LDA component smaller than the threshold (so called *negatives* at this point) and plants from the *Virginica* variant that have the first LDA component greater than the threshold defined (the *positives*). +To calculate the rates, we just use :ref:`bob.measure <bob.measure>` again: + +.. doctest:: iris + + >>> true_rejects = bob.measure.correctly_classified_negatives(negatives, threshold) + >>> true_accepts = bob.measure.correctly_classified_positives(positives, threshold) + +From that you can calculate, for example, the number of misses at the defined ``threshold``: + +.. doctest:: iris + + >>> sum(true_rejects) + 98 + >>> sum(true_accepts) + 49 + +You can also plot an ROC curve. +Here is the full code that will lead you to the following plot: + +.. plot:: plot/iris_lda_roc.py + :include-source: True + +.. include:: links.rst + + diff --git a/doc/help.rst b/doc/help.rst new file mode 100644 index 0000000000000000000000000000000000000000..404bad264549914cb61b405d2b143c85f8c7f39a --- /dev/null +++ b/doc/help.rst @@ -0,0 +1,59 @@ +.. _bob.help: + +================================ + How to Get Help and Contribute +================================ + +Example usages of Bob +===================== + +Bob paper packages can serve as good examples of how to use Bob. Search for +``bob.paper`` in our Gitlab: https://gitlab.idiap.ch/bob?filter=bob.paper +**AND** in PyPI: https://pypi.org/search/?q=bob.paper&c=Framework+::+Bob for +paper packages. Please note that the older a ``bob.paper`` package is, it is +more likely that it uses some deprecated practices. + +For example, you can look at: + +* https://gitlab.idiap.ch/bob/bob.paper.icml2017 on how to evaluate a new + CNN-based face recognition algorithm on face recognition databases. (Note that + the ``evaluate.py`` command is replaced by ``bob bio evaluate`` in recent + versions of Bob.) +* https://gitlab.idiap.ch/bob/bob.paper.btas2018_siliconemask/tree/master/bob/paper/btas2018_siliconemask/database + and https://gitlab.idiap.ch/bob/bob.db.oulunpu/ for good examples of how to + create new database interfaces for the ``bob.bio`` and ``bob.pad`` frameworks. + + +How to Get Help +=============== + +There are several ways to get help if you are facing a problem. + +First, you should search for possible existing answers in: + +* https://stackoverflow.com/questions/tagged/python-bob +* https://www.idiap.ch/software/bob/discuss +* https://www.idiap.ch/software/bob/wiki + +or you may just want to search on the Internet for possible answers. + +Second, feel free to ask us. We encourage you to do so. The preferred way of asking is +by using public channels. Here is a list of places that you can ask questions: + +* Ask on https://stackoverflow.com and tag your questions with ``python-bob``. + This is the preferred way. +* Ask on our mailing list: https://www.idiap.ch/software/bob/discuss + + +How to Contribute +================= + +Bob is open source and we welcome contributions. +If you find a bug, please let use know through our mailing list: +https://www.idiap.ch/software/bob/discuss. +If you want to contribute, please also get in touch with us through our mailing list +first. +We maintain a mirror of Bob packages on https://github.com/bioidiap/ which should allow +you to open pull requests on Bob packages. + +.. include:: links.rst diff --git a/doc/index.rst b/doc/index.rst index 3f997c23edb4934e1edb21408093424a2155d350..cbd376ad9fb5287de03c294da421feb55fff1fb0 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,335 +1,29 @@ .. vim: set fileencoding=utf-8 : -=================================== - Documentation of all Bob packages -=================================== +.. _bob_main_page: -Start here ----------- +======================= + Bob +======================= -* :ref:`bob_main_page` +Bob_ is a free signal-processing and machine learning toolbox originally developed by +the Biometrics Security and Privacy Group, the Biosignal Processing Group, and the +Research and Development Engineers at `Idiap`_ Research Institute, Switzerland. -.. note:: - Bob paper packages can serve as good examples of how to use Bob. Search for - ``bob.paper`` in our Gitlab: https://gitlab.idiap.ch/bob?filter=bob.paper **AND** in - PyPI: https://pypi.org/search/?q=bob.paper&c=Framework+::+Bob for paper packages. - Please note that the older a ``bob.paper`` package is, it is more likely that it uses - some deprecated practices. +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 +:ref:`independent packages <bob.packages>` that implement tools for image, audio & +video processing, machine learning & pattern recognition, and a lot more task specific +packages. - For example, you can look at: - - * https://gitlab.idiap.ch/bob/bob.paper.icml2017 on how to evaluate a new CNN-based - face recognition algorithm on face recognition databases. (Note that the - ``evaluate.py`` command is replaced by ``bob bio evaluate`` in recent versions of - Bob.) - * https://gitlab.idiap.ch/bob/bob.paper.btas2018_siliconemask/tree/master/bob/paper/btas2018_siliconemask/database - and https://gitlab.idiap.ch/bob/bob.db.oulunpu/ for good examples of how to create - new database interfaces for the ``bob.bio`` and ``bob.pad`` frameworks. - -.. note:: - Use :ref:`bob.devtools <bob.devtools>` if you want to develop Bob packages or create - a new package. **DO NOT** modify (including adding extra files) the source code of - Bob packages in your Conda environments. Typically, Bob packages can be extended - without modifying the original package. So you may want to put your new code in a new - package instead of modifying the original package. Also, Conda uses hard links to - create new environments from a cache folder. Editing a file in one of the - environments will edit that file in **ALL** of your environments. The only safe way - to recover from this is to delete your Conda installation completely and installing - everything again from scratch. - -Please find the documentation of all Bob packages below. - -Basic Functionality -------------------- - -* :ref:`bob.core` -* :ref:`bob.math` - -Data Input and Output ---------------------- - -* :ref:`bob.io.base` -* :ref:`bob.io.image` -* :ref:`bob.io.video` -* :ref:`bob.io.audio` -* :ref:`bob.io.matlab` - -Signal, Audio, Image and Video Processing ------------------------------------------ - -* :ref:`bob.sp` -* :ref:`bob.ap` -* :ref:`bob.ip.base` -* :ref:`bob.ip.color` -* :ref:`bob.ip.draw` -* :ref:`bob.ip.gabor` -* :ref:`bob.ip.facedetect` -* :ref:`bob.ip.facelandmarks` -* :ref:`bob.ip.optflow.liu` -* :ref:`bob.ip.optflow.hornschunck` -* :ref:`bob.ip.flandmark` -* :ref:`bob.ip.dlib` -* :ref:`bob.ip.qualitymeasure` -* :ref:`bob.ip.skincolorfilter` -* :ref:`bob.ip.tensorflow_extractor` -* :ref:`bob.ip.binseg` - - -Machine Learning ----------------- - -* :ref:`bob.measure` -* :ref:`bob.learn.linear` -* :ref:`bob.learn.mlp` -* :ref:`bob.learn.activation` -* :ref:`bob.learn.libsvm` -* :ref:`bob.learn.em` -* :ref:`bob.learn.boosting` -* :ref:`bob.learn.tensorflow` -* :ref:`bob.learn.pytorch` - -Modules for Developers ----------------------- - -* :ref:`bob.devtools` -* :ref:`bob.extension` -* :ref:`bob.blitz` -* :ref:`bob.buildout` - -Parallel Execution ------------------- - -* :ref:`gridtk` - -Biometric Recognition ---------------------- - -* :ref:`bob.bio.base` -* :ref:`bob.bio.face` -* :ref:`bob.bio.spear` -* :ref:`bob.bio.vein` -* :ref:`bob.bio.video` -* :ref:`bob.bio.gmm` -* :ref:`bob.bio.face_ongoing` -* :ref:`bob.bio.htface` -* :ref:`bob.ip.tensorflow_extractor` -* :ref:`bob.fusion.base` - - -Presentation Attack Detection (anti-spoofing) ---------------------------------------------- - -* :ref:`bob.pad.base` -* :ref:`bob.pad.face` -* :ref:`bob.pad.vein` -* :ref:`bob.pad.voice` -* :ref:`bob.fusion.base` - - -Remote Heart Rate Measurement ------------------------------ - -* :ref:`bob.rppg.base` - - -Database Interfaces -------------------- - -Base Database Packages -^^^^^^^^^^^^^^^^^^^^^^ - -* :ref:`bob.db.base` -* :ref:`bob.bio.base` -* :ref:`bob.pad.base` - -Interfaces -^^^^^^^^^^ - -* :ref:`bob.db.arface` -* :ref:`bob.db.asvspoof2017` -* :ref:`bob.db.asvspoof` -* :ref:`bob.db.atnt` -* :ref:`bob.db.atvskeystroke` -* :ref:`bob.db.avspoof` -* :ref:`bob.db.banca` -* :ref:`bob.db.biosecure` -* :ref:`bob.db.biosecurid.face` -* :ref:`bob.db.casia_fasd` -* :ref:`bob.db.casiasurf` -* :ref:`bob.db.casme2` -* :ref:`bob.db.caspeal` -* :ref:`bob.db.cbsr_nir_vis_2` -* :ref:`bob.db.chasedb1` -* :ref:`bob.db.cohface` -* :ref:`bob.db.cuhk_cufs` -* :ref:`bob.db.cuhk_cufsf` -* :ref:`bob.db.drionsdb` -* :ref:`bob.db.drishtigs1` -* :ref:`bob.db.drive` -* :ref:`bob.db.fargo` -* :ref:`bob.db.frgc` -* :ref:`bob.db.fv3d` -* :ref:`bob.db.gbu` -* :ref:`bob.db.hci_tagging` -* :ref:`bob.db.hrf` -* :ref:`bob.db.ijba` -* :ref:`bob.db.ijbc` -* :ref:`bob.db.iostar` -* :ref:`bob.db.iris` -* :ref:`bob.db.kboc16` -* :ref:`bob.db.ldhf` -* :ref:`bob.db.lfw` -* :ref:`bob.db.livdet2013` -* :ref:`bob.db.maskattack` -* :ref:`bob.db.mnist` -* :ref:`bob.db.mobio` -* :ref:`bob.db.msu_mfsd_mod` -* :ref:`bob.db.multipie` -* :ref:`bob.db.nist_sre12` -* :ref:`bob.db.nivl` -* :ref:`bob.db.oulunpu` -* :ref:`bob.db.pericrosseye` -* :ref:`bob.db.pola_thermal` -* :ref:`bob.db.putvein` -* :ref:`bob.db.refuge` -* :ref:`bob.db.replay` -* :ref:`bob.db.replaymobile` -* :ref:`bob.db.rimoner3` -* :ref:`bob.db.scface` -* :ref:`bob.db.siw` -* :ref:`bob.db.stare` -* :ref:`bob.db.swan` -* :ref:`bob.db.utfvp` -* :ref:`bob.db.uvad` -* :ref:`bob.db.verafinger` -* :ref:`bob.db.voicepa` -* :ref:`bob.db.voxforge` -* :ref:`bob.db.wine` -* :ref:`bob.db.xm2vts` -* :ref:`bob.db.youtube` - - - -Index of all Packages -===================== .. toctree:: - :maxdepth: 1 - :titlesonly: + :maxdepth: 2 + + tutorial + example + install + help + packages - bob <bob/bob/doc/index.rst> - bob.ap <bob/bob.ap/doc/index.rst> - bob.bio.base <bob/bob.bio.base/doc/index.rst> - bob.bio.face <bob/bob.bio.face/doc/index.rst> - bob.bio.face_ongoing <bob/bob.bio.face_ongoing/doc/index.rst> - bob.bio.gmm <bob/bob.bio.gmm/doc/index.rst> - bob.bio.htface <bob/bob.bio.htface/doc/index.rst> - bob.bio.spear <bob/bob.bio.spear/doc/index.rst> - bob.bio.vein <bob/bob.bio.vein/doc/index.rst> - bob.bio.video <bob/bob.bio.video/doc/index.rst> - bob.blitz <bob/bob.blitz/doc/index.rst> - bob.buildout <bob/bob.buildout/doc/index.rst> - bob.core <bob/bob.core/doc/index.rst> - bob.db.arface <bob/bob.db.arface/doc/index.rst> - bob.db.asvspoof <bob/bob.db.asvspoof/doc/index.rst> - bob.db.asvspoof2017 <bob/bob.db.asvspoof2017/doc/index.rst> - bob.db.atnt <bob/bob.db.atnt/doc/index.rst> - bob.db.atvskeystroke <bob/bob.db.atvskeystroke/doc/index.rst> - bob.db.avspoof <bob/bob.db.avspoof/doc/index.rst> - bob.db.banca <bob/bob.db.banca/doc/index.rst> - bob.db.base <bob/bob.db.base/doc/index.rst> - bob.db.biosecure <bob/bob.db.biosecure/doc/index.rst> - bob.db.biosecurid.face <bob/bob.db.biosecurid.face/doc/index.rst> - bob.db.casia_fasd <bob/bob.db.casia_fasd/doc/index.rst> - bob.db.casiasurf <bob/bob.db.casiasurf/doc/index.rst> - bob.db.casme2 <bob/bob.db.casme2/doc/index.rst> - bob.db.caspeal <bob/bob.db.caspeal/doc/index.rst> - bob.db.cbsr_nir_vis_2 <bob/bob.db.cbsr_nir_vis_2/doc/index.rst> - bob.db.chasedb1 <bob/bob.db.chasedb1/doc/index.rst> - bob.db.cohface <bob/bob.db.cohface/doc/index.rst> - bob.db.cuhk_cufs <bob/bob.db.cuhk_cufs/doc/index.rst> - bob.db.cuhk_cufsf <bob/bob.db.cuhk_cufsf/doc/index.rst> - bob.db.drionsdb <bob/bob.db.drionsdb/doc/index.rst> - bob.db.drishtigs1 <bob/bob.db.drishtigs1/doc/index.rst> - bob.db.drive <bob/bob.db.drive/doc/index.rst> - bob.db.fargo <bob/bob.db.fargo/doc/index.rst> - bob.db.frgc <bob/bob.db.frgc/doc/index.rst> - bob.db.fv3d <bob/bob.db.fv3d/doc/index.rst> - bob.db.gbu <bob/bob.db.gbu/doc/index.rst> - bob.db.hci_tagging <bob/bob.db.hci_tagging/doc/index.rst> - bob.db.hrf <bob/bob.db.hrf/doc/index.rst> - bob.db.ijba <bob/bob.db.ijba/doc/index.rst> - bob.db.ijbc <bob/bob.db.ijbc/doc/index.rst> - bob.db.iostar <bob/bob.db.iostar/doc/index.rst> - bob.db.iris <bob/bob.db.iris/doc/index.rst> - bob.db.kboc16 <bob/bob.db.kboc16/doc/index.rst> - bob.db.ldhf <bob/bob.db.ldhf/doc/index.rst> - bob.db.lfw <bob/bob.db.lfw/doc/index.rst> - bob.db.livdet2013 <bob/bob.db.livdet2013/doc/index.rst> - bob.db.maskattack <bob/bob.db.maskattack/doc/index.rst> - bob.db.mnist <bob/bob.db.mnist/doc/index.rst> - bob.db.mobio <bob/bob.db.mobio/doc/index.rst> - bob.db.msu_mfsd_mod <bob/bob.db.msu_mfsd_mod/doc/index.rst> - bob.db.multipie <bob/bob.db.multipie/doc/index.rst> - bob.db.nist_sre12 <bob/bob.db.nist_sre12/doc/index.rst> - bob.db.nivl <bob/bob.db.nivl/doc/index.rst> - bob.db.oulunpu <bob/bob.db.oulunpu/doc/index.rst> - bob.db.pericrosseye <bob/bob.db.pericrosseye/doc/index.rst> - bob.db.pola_thermal<bob/bob.db.pola_thermal/doc/index.rst> - bob.db.putvein <bob/bob.db.putvein/doc/index.rst> - bob.db.refuge <bob/bob.db.refuge/doc/index.rst> - bob.db.replay <bob/bob.db.replay/doc/index.rst> - bob.db.replaymobile <bob/bob.db.replaymobile/doc/index.rst> - bob.db.rimoner3 <bob/bob.db.rimoner3/doc/index.rst> - bob.db.scface <bob/bob.db.scface/doc/index.rst> - bob.db.siw <bob/bob.db.siw/doc/index.rst> - bob.db.stare <bob/bob.db.stare/doc/index.rst> - bob.db.swan <bob/bob.db.swan/doc/index.rst> - bob.db.utfvp <bob/bob.db.utfvp/doc/index.rst> - bob.db.uvad <bob/bob.db.uvad/doc/index.rst> - bob.db.verafinger <bob/bob.db.verafinger/doc/index.rst> - bob.db.voicepa <bob/bob.db.voicepa/doc/index.rst> - bob.db.voxforge <bob/bob.db.voxforge/doc/index.rst> - bob.db.wine <bob/bob.db.wine/doc/index.rst> - bob.db.xm2vts <bob/bob.db.xm2vts/doc/index.rst> - bob.db.youtube <bob/bob.db.youtube/doc/index.rst> - bob.devtools <bob/bob.devtools/doc/index.rst> - bob.extension <bob/bob.extension/doc/index.rst> - bob.fusion.base <bob/bob.fusion.base/doc/index.rst> - bob.io.audio <bob/bob.io.audio/doc/index.rst> - bob.io.base <bob/bob.io.base/doc/index.rst> - bob.io.image <bob/bob.io.image/doc/index.rst> - bob.io.matlab <bob/bob.io.matlab/doc/index.rst> - bob.io.video <bob/bob.io.video/doc/index.rst> - bob.ip.base <bob/bob.ip.base/doc/index.rst> - bob.ip.binseg <bob/bob.ip.binseg/doc/index.rst> - bob.ip.color <bob/bob.ip.color/doc/index.rst> - bob.ip.dlib <bob/bob.ip.dlib/doc/index.rst> - bob.ip.draw <bob/bob.ip.draw/doc/index.rst> - bob.ip.facedetect <bob/bob.ip.facedetect/doc/index.rst> - bob.ip.facelandmarks <bob/bob.ip.facelandmarks/doc/index.rst> - bob.ip.flandmark <bob/bob.ip.flandmark/doc/index.rst> - bob.ip.gabor <bob/bob.ip.gabor/doc/index.rst> - bob.ip.optflow.hornschunck <bob/bob.ip.optflow.hornschunck/doc/index.rst> - bob.ip.optflow.liu <bob/bob.ip.optflow.liu/doc/index.rst> - bob.ip.qualitymeasure <bob/bob.ip.qualitymeasure/doc/index.rst> - bob.ip.skincolorfilter <bob/bob.ip.skincolorfilter/doc/index.rst> - bob.ip.tensorflow_extractor <bob/bob.ip.tensorflow_extractor/doc/index.rst> - bob.learn.activation <bob/bob.learn.activation/doc/index.rst> - bob.learn.boosting <bob/bob.learn.boosting/doc/index.rst> - bob.learn.em <bob/bob.learn.em/doc/index.rst> - bob.learn.libsvm <bob/bob.learn.libsvm/doc/index.rst> - bob.learn.linear <bob/bob.learn.linear/doc/index.rst> - bob.learn.mlp <bob/bob.learn.mlp/doc/index.rst> - bob.learn.pytorch <bob/bob.learn.pytorch/doc/index.rst> - bob.learn.tensorflow <bob/bob.learn.tensorflow/doc/index.rst> - bob.math <bob/bob.math/doc/index.rst> - bob.measure <bob/bob.measure/doc/index.rst> - bob.pad.base <bob/bob.pad.base/doc/index.rst> - bob.pad.face <bob/bob.pad.face/doc/index.rst> - bob.pad.vein <bob/bob.pad.vein/doc/index.rst> - bob.pad.voice <bob/bob.pad.voice/doc/index.rst> - bob.rppg.base <bob/bob.rppg.base/doc/index.rst> - bob.sp <bob/bob.sp/doc/index.rst> - gridtk <bob/gridtk/doc/index.rst> - readme_index.rst +.. include:: links.rst diff --git a/doc/install.rst b/doc/install.rst new file mode 100644 index 0000000000000000000000000000000000000000..653bc976481d9cb47d7b36163ada3c8fef569dd3 --- /dev/null +++ b/doc/install.rst @@ -0,0 +1,159 @@ +.. _bob.install: + +*************************** + Installation instructions +*************************** + +By now you should know that Bob is made of several :ref:`bob.packages`. There is no single +package that installs all Bob packages because that would just take too much space. +Follow the instruction below to install any Bob package. + +We offer pre-compiled binary installations of Bob using `conda`_ for Linux and +MacOS 64-bit operating systems. Follow the guide below to learn to install any Bob +package. Bob does not work on Windows. + +#. Install `conda`_ (miniconda is preferred) and get familiar with it. +#. Make sure you have an up-to-date `conda`_ installation (conda 4.4 and above + is needed) with the **correct configuration** by running the commands + below: + + .. code:: sh + + $ conda update -n base -c defaults conda + $ conda config --set show_channel_urls True + +#. Create an environment with the specific Bob packages that you need. For example if + you want to install ``bob.io.image`` and ``bob.bio.face``: + + .. code:: sh + + $ conda create --name bob_env1 --override-channels \ + -c https://www.idiap.ch/software/bob/conda -c defaults \ + python=3 bob.io.image bob.bio.face + +#. Then activate the environment and configure its channels to make sure the channel + list is correct in the future as well: + + .. code:: sh + + $ conda activate bob_env1 + $ conda config --env --add channels defaults + $ conda config --env --add channels https://www.idiap.ch/software/bob/conda + +#. If you decide to install more packages in the future, just conda install them: + + .. code:: sh + + $ conda activate bob_env1 + $ conda install bob.io.video bob.bio.video ... + +For a comprehensive list of packages that are either part of |project| or use +|project|, please visit :ref:`bob.packages`. + +.. warning:: + + Be aware that if you use packages from our channel and other user/community + channels (especially ``conda-forge``) in one environment, you may end up + with a broken envrionment. We can only guarantee that the packages in our + channel are compatible with the ``defaults`` channel. + +.. note:: + + Bob does not work on Windows and hence no conda packages are available for + it. It will not work even if you install it from source. If you are an + experienced user and manage to make Bob work on Windows, please let us know + through our `mailing list`_. + +.. note:: + + Bob has been reported to run on arm processors (e.g. Raspberry Pi) but is + not installable with conda. Please see https://stackoverflow.com/questions/50803148 + for installations on how to install Bob from source. + + +.. _bob.source: + +Developing Bob packages +======================= + +Use :ref:`bob.devtools <bob.devtools>` if you want to develop Bob packages or create +a new package. **DO NOT** modify (including adding extra files) the source code of Bob +packages in your Conda environments. Typically, Bob packages can be extended without +modifying the original package. So you may want to put your new code in a new package +instead of modifying the original package. + +.. warning:: + + Conda uses hard links to create new + environments from a cache folder. Editing a file in one of the environments will edit + that file in **ALL** of your environments. The only safe way to recover from this is to + delete your Conda installation completely and installing everything again from scratch. + + +Installing older versions of Bob +================================ + +Since Bob 4, you can easily select the Bob version that you want to install +using conda. For example: + +.. code:: sh + + $ conda install \ + -c https://www.idiap.ch/software/bob/conda \ + -c defaults \ + -c https://www.idiap.ch/software/bob/conda/label/archive \ + bob=4.0.0 bob.io.base + +will install the version of ``bob.io.base`` that was associated with the Bob +4.0.0 release. + +.. note:: + + If you install the ``bob`` conda package, you may need to change your channel list + to: + + .. code:: sh + + $ conda activate <bob-env-name> + $ conda config --env --add channels https://www.idiap.ch/software/bob/conda/label/archive + $ conda config --env --add channels defaults + $ conda config --env --add channels https://www.idiap.ch/software/bob/conda + +Bob packages that were released before Bob 4 are not easily installable. Here, +we provide conda environment files (**Linux 64-bit only**) that will install +all Bob packages associated with an older release of Bob: + +=========== ============================================================== +Bob Version Environment Files +=========== ============================================================== +2.6.2 :download:`envs/v262py27.yaml`, :download:`envs/v262py35.yaml` +2.7.0 :download:`envs/v270py27.yaml`, :download:`envs/v270py35.yaml` +3.0.0 :download:`envs/v300py27.yaml`, :download:`envs/v300py36.yaml` +=========== ============================================================== + +To install them, download one of the files above and run: + +.. code:: sh + + $ conda env create --file v300py36.yaml + + +Details (advanced users) +======================== + +Since Bob 4, the ``bob`` conda package is just a meta package that pins all +packages to a specific version. Installing ``bob`` will not install anything; +it will just impose pinnings in your environment. Normally, installations of +Bob packages should work without installing ``bob`` itself. For example, +running: + +.. code:: sh + + $ conda create --name env_name --override-channels \ + -c https://www.idiap.ch/software/bob/conda -c defaults \ + bob.<package-name> + +should always create a working environment. If it doesn't, please let us know. + + +.. include:: links.rst diff --git a/doc/links.rst b/doc/links.rst new file mode 100644 index 0000000000000000000000000000000000000000..9a37bd3398d8364b505c2cc7eeebd8462e2e7c8d --- /dev/null +++ b/doc/links.rst @@ -0,0 +1,51 @@ +.. _anaconda: https://www.continuum.io/anaconda +.. _Artistic-2.0: http://www.opensource.org/licenses/Artistic-2.0 +.. _Blitz++: https://github.com/blitzpp/blitz +.. _Bob: https://www.idiap.ch/software/bob +.. _Boost: http://www.boost.org +.. _BSD-2-Clause: http://www.opensource.org/licenses/BSD-2-Clause +.. _BSD-3-Clause: http://www.opensource.org/licenses/BSD-3-Clause +.. _BSL-1.0: http://www.opensource.org/licenses/BSL-1.0 +.. _c++: https://isocpp.org/ +.. _CMake: http://www.cmake.org +.. _conda: https://conda.io/ +.. _Dvipng: http://savannah.nongnu.org/projects/dvipng/ +.. _FFMpeg: http://ffmpeg.org +.. _fftw: http://www.fftw.org/ +.. _giflib: http://giflib.sourceforge.net/ +.. _GPL-2.0: http://www.opensource.org/licenses/GPL-2.0 +.. _GPL-3.0: http://www.opensource.org/licenses/GPL-3.0 +.. _HDF5 License: ftp://ftp.hdfgroup.org/HDF5/current/src/unpacked/COPYING +.. _HDF5: http://www.hdfgroup.org/HDF5 +.. _idiap: http://www.idiap.ch +.. _install: https://www.idiap.ch/software/bob/install +.. _IPython: http://ipython.scipy.org +.. _Lapack: http://www.netlib.org/lapack +.. _LaTeX: http://www.latex-project.org/ +.. _LGPL-2.1: http://www.opensource.org/licenses/LGPL-2.1 +.. _libAV: http://libav.org +.. _libjpeg: http://libjpeg.sourceforge.net/ +.. _libpng license: http://www.libpng.org/pub/png/src/libpng-LICENSE.txt +.. _libpng: http://libpng.org/pub/png/libpng.html +.. _LIBSVM: http://www.csie.ntu.edu.tw/~cjlin/libsvm/ +.. _libtiff: http://www.remotesensing.org/libtiff/ +.. _mailing list: https://www.idiap.ch/software/bob/discuss +.. _MatIO: http://matio.sourceforge.net +.. _Matplotlib: http://matplotlib.sourceforge.net +.. _miniconda: http://conda.pydata.org/miniconda.html +.. _MIT: http://www.opensource.org/licenses/MIT +.. _nose: http://nose.readthedocs.org +.. _NumPy Reference: https://docs.scipy.org/doc/numpy/ +.. _NumPy: http://www.numpy.org +.. _packages: https://www.idiap.ch/software/bob/packages +.. _Pillow: http://python-pillow.github.io/ +.. _pkg-config: http://www.freedesktop.org/wiki/Software/pkg-config/ +.. _Python-2.0: http://www.opensource.org/licenses/Python-2.0 +.. _python: http://www.python.org +.. _SciPy: http://www.scipy.org +.. _Setuptools: http://trac.edgewall.org/wiki/setuptools +.. _Sphinx: http://sphinx.pocoo.org +.. _SQLAlchemy: http://www.sqlalchemy.org/ +.. _SQLite: http://www.sqlite.org +.. _VLFeat: http://www.vlfeat.org/ +.. _Wiki: https://www.idiap.ch/software/bob/wiki diff --git a/doc/packages.rst b/doc/packages.rst new file mode 100644 index 0000000000000000000000000000000000000000..c225bff3a716dc40fac5fe37dafabe3075bce10b --- /dev/null +++ b/doc/packages.rst @@ -0,0 +1,311 @@ +.. _bob.packages: + +========== + Packages +========== + +Bob is organized in several independent python packages. + +* You can + `search PyPI <https://pypi.org/search/?o=-created&c=Framework+%3A%3A+Bob>`_ + for a comprehensive list of packages **that either use Bob or are part of + Bob**. + +You can find the documentation of the Bob packages that we maintain below. + + +Basic Functionality +------------------- + +* :ref:`bob.core` +* :ref:`bob.math` + +Data Input and Output +--------------------- + +* :ref:`bob.io.base` +* :ref:`bob.io.image` +* :ref:`bob.io.video` +* :ref:`bob.io.audio` +* :ref:`bob.io.matlab` + +Signal, Audio, Image and Video Processing +----------------------------------------- + +* :ref:`bob.sp` +* :ref:`bob.ap` +* :ref:`bob.ip.base` +* :ref:`bob.ip.color` +* :ref:`bob.ip.draw` +* :ref:`bob.ip.gabor` +* :ref:`bob.ip.facedetect` +* :ref:`bob.ip.facelandmarks` +* :ref:`bob.ip.optflow.liu` +* :ref:`bob.ip.optflow.hornschunck` +* :ref:`bob.ip.flandmark` +* :ref:`bob.ip.dlib` +* :ref:`bob.ip.qualitymeasure` +* :ref:`bob.ip.skincolorfilter` +* :ref:`bob.ip.tensorflow_extractor` +* :ref:`bob.ip.binseg` + + +Machine Learning +---------------- + +* :ref:`bob.measure` +* :ref:`bob.learn.linear` +* :ref:`bob.learn.mlp` +* :ref:`bob.learn.activation` +* :ref:`bob.learn.libsvm` +* :ref:`bob.learn.em` +* :ref:`bob.learn.boosting` +* :ref:`bob.learn.tensorflow` +* :ref:`bob.learn.pytorch` + +Modules for Developers +---------------------- + +* :ref:`bob.devtools` +* :ref:`bob.extension` +* :ref:`bob.blitz` +* :ref:`bob.buildout` + +Parallel Execution +------------------ + +* :ref:`gridtk` + +Biometric Recognition +--------------------- + +* :ref:`bob.bio.base` +* :ref:`bob.bio.face` +* :ref:`bob.bio.spear` +* :ref:`bob.bio.vein` +* :ref:`bob.bio.video` +* :ref:`bob.bio.gmm` +* :ref:`bob.bio.face_ongoing` +* :ref:`bob.bio.htface` +* :ref:`bob.ip.tensorflow_extractor` +* :ref:`bob.fusion.base` + + +Presentation Attack Detection (anti-spoofing) +--------------------------------------------- + +* :ref:`bob.pad.base` +* :ref:`bob.pad.face` +* :ref:`bob.pad.vein` +* :ref:`bob.pad.voice` +* :ref:`bob.fusion.base` + + +Remote Heart Rate Measurement +----------------------------- + +* :ref:`bob.rppg.base` + + +Database Interfaces +------------------- + +Base Database Packages +^^^^^^^^^^^^^^^^^^^^^^ + +* :ref:`bob.db.base` +* :ref:`bob.bio.base` +* :ref:`bob.pad.base` + +Interfaces +^^^^^^^^^^ + +* :ref:`bob.db.arface` +* :ref:`bob.db.asvspoof2017` +* :ref:`bob.db.asvspoof` +* :ref:`bob.db.atnt` +* :ref:`bob.db.atvskeystroke` +* :ref:`bob.db.avspoof` +* :ref:`bob.db.banca` +* :ref:`bob.db.biosecure` +* :ref:`bob.db.biosecurid.face` +* :ref:`bob.db.casia_fasd` +* :ref:`bob.db.casiasurf` +* :ref:`bob.db.casme2` +* :ref:`bob.db.caspeal` +* :ref:`bob.db.cbsr_nir_vis_2` +* :ref:`bob.db.chasedb1` +* :ref:`bob.db.cohface` +* :ref:`bob.db.cuhk_cufs` +* :ref:`bob.db.cuhk_cufsf` +* :ref:`bob.db.drionsdb` +* :ref:`bob.db.drishtigs1` +* :ref:`bob.db.drive` +* :ref:`bob.db.fargo` +* :ref:`bob.db.frgc` +* :ref:`bob.db.fv3d` +* :ref:`bob.db.gbu` +* :ref:`bob.db.hci_tagging` +* :ref:`bob.db.hrf` +* :ref:`bob.db.ijba` +* :ref:`bob.db.ijbc` +* :ref:`bob.db.iostar` +* :ref:`bob.db.iris` +* :ref:`bob.db.kboc16` +* :ref:`bob.db.ldhf` +* :ref:`bob.db.lfw` +* :ref:`bob.db.livdet2013` +* :ref:`bob.db.maskattack` +* :ref:`bob.db.mnist` +* :ref:`bob.db.mobio` +* :ref:`bob.db.msu_mfsd_mod` +* :ref:`bob.db.multipie` +* :ref:`bob.db.nist_sre12` +* :ref:`bob.db.nivl` +* :ref:`bob.db.oulunpu` +* :ref:`bob.db.pericrosseye` +* :ref:`bob.db.pola_thermal` +* :ref:`bob.db.putvein` +* :ref:`bob.db.refuge` +* :ref:`bob.db.replay` +* :ref:`bob.db.replaymobile` +* :ref:`bob.db.rimoner3` +* :ref:`bob.db.scface` +* :ref:`bob.db.siw` +* :ref:`bob.db.stare` +* :ref:`bob.db.swan` +* :ref:`bob.db.utfvp` +* :ref:`bob.db.uvad` +* :ref:`bob.db.verafinger` +* :ref:`bob.db.voicepa` +* :ref:`bob.db.voxforge` +* :ref:`bob.db.wine` +* :ref:`bob.db.xm2vts` +* :ref:`bob.db.youtube` + + + +Index of all Packages +===================== + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + bob.ap <bob/bob.ap/doc/index.rst> + bob.bio.base <bob/bob.bio.base/doc/index.rst> + bob.bio.face <bob/bob.bio.face/doc/index.rst> + bob.bio.face_ongoing <bob/bob.bio.face_ongoing/doc/index.rst> + bob.bio.gmm <bob/bob.bio.gmm/doc/index.rst> + bob.bio.htface <bob/bob.bio.htface/doc/index.rst> + bob.bio.spear <bob/bob.bio.spear/doc/index.rst> + bob.bio.vein <bob/bob.bio.vein/doc/index.rst> + bob.bio.video <bob/bob.bio.video/doc/index.rst> + bob.blitz <bob/bob.blitz/doc/index.rst> + bob.buildout <bob/bob.buildout/doc/index.rst> + bob.core <bob/bob.core/doc/index.rst> + bob.db.arface <bob/bob.db.arface/doc/index.rst> + bob.db.asvspoof <bob/bob.db.asvspoof/doc/index.rst> + bob.db.asvspoof2017 <bob/bob.db.asvspoof2017/doc/index.rst> + bob.db.atnt <bob/bob.db.atnt/doc/index.rst> + bob.db.atvskeystroke <bob/bob.db.atvskeystroke/doc/index.rst> + bob.db.avspoof <bob/bob.db.avspoof/doc/index.rst> + bob.db.banca <bob/bob.db.banca/doc/index.rst> + bob.db.base <bob/bob.db.base/doc/index.rst> + bob.db.biosecure <bob/bob.db.biosecure/doc/index.rst> + bob.db.biosecurid.face <bob/bob.db.biosecurid.face/doc/index.rst> + bob.db.casia_fasd <bob/bob.db.casia_fasd/doc/index.rst> + bob.db.casiasurf <bob/bob.db.casiasurf/doc/index.rst> + bob.db.casme2 <bob/bob.db.casme2/doc/index.rst> + bob.db.caspeal <bob/bob.db.caspeal/doc/index.rst> + bob.db.cbsr_nir_vis_2 <bob/bob.db.cbsr_nir_vis_2/doc/index.rst> + bob.db.chasedb1 <bob/bob.db.chasedb1/doc/index.rst> + bob.db.cohface <bob/bob.db.cohface/doc/index.rst> + bob.db.cuhk_cufs <bob/bob.db.cuhk_cufs/doc/index.rst> + bob.db.cuhk_cufsf <bob/bob.db.cuhk_cufsf/doc/index.rst> + bob.db.drionsdb <bob/bob.db.drionsdb/doc/index.rst> + bob.db.drishtigs1 <bob/bob.db.drishtigs1/doc/index.rst> + bob.db.drive <bob/bob.db.drive/doc/index.rst> + bob.db.fargo <bob/bob.db.fargo/doc/index.rst> + bob.db.frgc <bob/bob.db.frgc/doc/index.rst> + bob.db.fv3d <bob/bob.db.fv3d/doc/index.rst> + bob.db.gbu <bob/bob.db.gbu/doc/index.rst> + bob.db.hci_tagging <bob/bob.db.hci_tagging/doc/index.rst> + bob.db.hrf <bob/bob.db.hrf/doc/index.rst> + bob.db.ijba <bob/bob.db.ijba/doc/index.rst> + bob.db.ijbc <bob/bob.db.ijbc/doc/index.rst> + bob.db.iostar <bob/bob.db.iostar/doc/index.rst> + bob.db.iris <bob/bob.db.iris/doc/index.rst> + bob.db.kboc16 <bob/bob.db.kboc16/doc/index.rst> + bob.db.ldhf <bob/bob.db.ldhf/doc/index.rst> + bob.db.lfw <bob/bob.db.lfw/doc/index.rst> + bob.db.livdet2013 <bob/bob.db.livdet2013/doc/index.rst> + bob.db.maskattack <bob/bob.db.maskattack/doc/index.rst> + bob.db.mnist <bob/bob.db.mnist/doc/index.rst> + bob.db.mobio <bob/bob.db.mobio/doc/index.rst> + bob.db.msu_mfsd_mod <bob/bob.db.msu_mfsd_mod/doc/index.rst> + bob.db.multipie <bob/bob.db.multipie/doc/index.rst> + bob.db.nist_sre12 <bob/bob.db.nist_sre12/doc/index.rst> + bob.db.nivl <bob/bob.db.nivl/doc/index.rst> + bob.db.oulunpu <bob/bob.db.oulunpu/doc/index.rst> + bob.db.pericrosseye <bob/bob.db.pericrosseye/doc/index.rst> + bob.db.pola_thermal<bob/bob.db.pola_thermal/doc/index.rst> + bob.db.putvein <bob/bob.db.putvein/doc/index.rst> + bob.db.refuge <bob/bob.db.refuge/doc/index.rst> + bob.db.replay <bob/bob.db.replay/doc/index.rst> + bob.db.replaymobile <bob/bob.db.replaymobile/doc/index.rst> + bob.db.rimoner3 <bob/bob.db.rimoner3/doc/index.rst> + bob.db.scface <bob/bob.db.scface/doc/index.rst> + bob.db.siw <bob/bob.db.siw/doc/index.rst> + bob.db.stare <bob/bob.db.stare/doc/index.rst> + bob.db.swan <bob/bob.db.swan/doc/index.rst> + bob.db.utfvp <bob/bob.db.utfvp/doc/index.rst> + bob.db.uvad <bob/bob.db.uvad/doc/index.rst> + bob.db.verafinger <bob/bob.db.verafinger/doc/index.rst> + bob.db.voicepa <bob/bob.db.voicepa/doc/index.rst> + bob.db.voxforge <bob/bob.db.voxforge/doc/index.rst> + bob.db.wine <bob/bob.db.wine/doc/index.rst> + bob.db.xm2vts <bob/bob.db.xm2vts/doc/index.rst> + bob.db.youtube <bob/bob.db.youtube/doc/index.rst> + bob.devtools <bob/bob.devtools/doc/index.rst> + bob.extension <bob/bob.extension/doc/index.rst> + bob.fusion.base <bob/bob.fusion.base/doc/index.rst> + bob.io.audio <bob/bob.io.audio/doc/index.rst> + bob.io.base <bob/bob.io.base/doc/index.rst> + bob.io.image <bob/bob.io.image/doc/index.rst> + bob.io.matlab <bob/bob.io.matlab/doc/index.rst> + bob.io.video <bob/bob.io.video/doc/index.rst> + bob.ip.base <bob/bob.ip.base/doc/index.rst> + bob.ip.binseg <bob/bob.ip.binseg/doc/index.rst> + bob.ip.color <bob/bob.ip.color/doc/index.rst> + bob.ip.dlib <bob/bob.ip.dlib/doc/index.rst> + bob.ip.draw <bob/bob.ip.draw/doc/index.rst> + bob.ip.facedetect <bob/bob.ip.facedetect/doc/index.rst> + bob.ip.facelandmarks <bob/bob.ip.facelandmarks/doc/index.rst> + bob.ip.flandmark <bob/bob.ip.flandmark/doc/index.rst> + bob.ip.gabor <bob/bob.ip.gabor/doc/index.rst> + bob.ip.optflow.hornschunck <bob/bob.ip.optflow.hornschunck/doc/index.rst> + bob.ip.optflow.liu <bob/bob.ip.optflow.liu/doc/index.rst> + bob.ip.qualitymeasure <bob/bob.ip.qualitymeasure/doc/index.rst> + bob.ip.skincolorfilter <bob/bob.ip.skincolorfilter/doc/index.rst> + bob.ip.tensorflow_extractor <bob/bob.ip.tensorflow_extractor/doc/index.rst> + bob.learn.activation <bob/bob.learn.activation/doc/index.rst> + bob.learn.boosting <bob/bob.learn.boosting/doc/index.rst> + bob.learn.em <bob/bob.learn.em/doc/index.rst> + bob.learn.libsvm <bob/bob.learn.libsvm/doc/index.rst> + bob.learn.linear <bob/bob.learn.linear/doc/index.rst> + bob.learn.mlp <bob/bob.learn.mlp/doc/index.rst> + bob.learn.pytorch <bob/bob.learn.pytorch/doc/index.rst> + bob.learn.tensorflow <bob/bob.learn.tensorflow/doc/index.rst> + bob.math <bob/bob.math/doc/index.rst> + bob.measure <bob/bob.measure/doc/index.rst> + bob.pad.base <bob/bob.pad.base/doc/index.rst> + bob.pad.face <bob/bob.pad.face/doc/index.rst> + bob.pad.vein <bob/bob.pad.vein/doc/index.rst> + bob.pad.voice <bob/bob.pad.voice/doc/index.rst> + bob.rppg.base <bob/bob.rppg.base/doc/index.rst> + bob.sp <bob/bob.sp/doc/index.rst> + gridtk <bob/gridtk/doc/index.rst> + readme_index.rst + +.. include:: links.rst diff --git a/doc/plot/convolve.py b/doc/plot/convolve.py deleted file mode 120000 index 6fb55a06ebf013e5f8a7f1495a1251e9c9deff4d..0000000000000000000000000000000000000000 --- a/doc/plot/convolve.py +++ /dev/null @@ -1 +0,0 @@ -../bob/bob.ip.caffe_extractor/doc/plot/convolve.py \ No newline at end of file diff --git a/doc/plot/iris_lda.py b/doc/plot/iris_lda.py deleted file mode 120000 index 28cbfda1a8b1af14231d89d2dd28e1db66d0b296..0000000000000000000000000000000000000000 --- a/doc/plot/iris_lda.py +++ /dev/null @@ -1 +0,0 @@ -../bob/bob/doc/plot/iris_lda.py \ No newline at end of file diff --git a/doc/plot/iris_lda.py b/doc/plot/iris_lda.py new file mode 100644 index 0000000000000000000000000000000000000000..9d3d3b152b13150a743d7978c9fb379e8b7c215a --- /dev/null +++ b/doc/plot/iris_lda.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# Andre Anjos <andre.anjos@idiap.ch> +# Sat 24 Mar 2012 18:51:21 CET + +"""The Iris Flower Recognition using Linear Discriminant Analysis and Bob. +""" + +import bob.db.iris +import bob.learn.linear +import bob.measure +import numpy +from matplotlib import pyplot + +# Training is a 3-step thing +data = bob.db.iris.data() +trainer = bob.learn.linear.FisherLDATrainer() +machine, eigen_values = trainer.train(data.values()) + +# A simple way to forward the data +output = {} +for key in data.keys(): output[key] = machine(data[key]) + +# Here starts the plotting +pyplot.hist(output['setosa'][:,0], bins=8, + color='green', label='Setosa', alpha=0.5) +pyplot.hist(output['versicolor'][:,0], bins=8, + color='blue', label='Versicolor', alpha=0.5) +pyplot.hist(output['virginica'][:,0], bins=8, + color='red', label='Virginica', alpha=0.5) + +# This is just some decoration... +pyplot.legend() +pyplot.grid(True) +pyplot.axis([-3,+3,0,20]) +pyplot.title("Iris Plants / 1st. LDA component") +pyplot.xlabel("LDA[0]") +pyplot.ylabel("Count") diff --git a/doc/plot/iris_lda_roc.py b/doc/plot/iris_lda_roc.py deleted file mode 120000 index 09d614eb83c2132f22339be6144da88b7dd39ac5..0000000000000000000000000000000000000000 --- a/doc/plot/iris_lda_roc.py +++ /dev/null @@ -1 +0,0 @@ -../bob/bob/doc/plot/iris_lda_roc.py \ No newline at end of file diff --git a/doc/plot/iris_lda_roc.py b/doc/plot/iris_lda_roc.py new file mode 100644 index 0000000000000000000000000000000000000000..f5aeccea13c6faadcb3407666995d57b9771b017 --- /dev/null +++ b/doc/plot/iris_lda_roc.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# Andre Anjos <andre.anjos@idiap.ch> +# Sat 24 Mar 2012 18:51:21 CET + +"""Computes an ROC curve for the Iris Flower Recognition using Linear Discriminant Analysis and Bob. +""" + +import bob.db.iris +import bob.learn.linear +import bob.measure +import numpy +from matplotlib import pyplot + +# Training is a 3-step thing +data = bob.db.iris.data() +trainer = bob.learn.linear.FisherLDATrainer() +machine, eigen_values = trainer.train(data.values()) + +# A simple way to forward the data +output = {} +for key in data.keys(): output[key] = machine(data[key]) + +# Performance +negatives = numpy.vstack([output['setosa'], output['versicolor']])[:,0] +positives = output['virginica'][:,0] + +# Plot ROC curve +bob.measure.plot.roc(negatives, positives) +pyplot.xlabel("False Virginica Acceptance (%)") +pyplot.ylabel("False Virginica Rejection (%)") +pyplot.title("ROC Curve for Virginica Classification") +pyplot.grid() +pyplot.axis([0, 5, 0, 15]) #xmin, xmax, ymin, ymax diff --git a/doc/readme_index.rst b/doc/readme_index.rst index 4a239ad64a8fee8abae647bddbeeb1828ca2f826..3012ffa38c08c4893e6cf586130dfe270cb87d55 100644 --- a/doc/readme_index.rst +++ b/doc/readme_index.rst @@ -7,7 +7,6 @@ README of all Packages :maxdepth: 1 :titlesonly: - bob <bob/bob/README.rst> bob.ap <bob/bob.ap/README.rst> bob.bio.base <bob/bob.bio.base/README.rst> bob.bio.face <bob/bob.bio.face/README.rst> diff --git a/doc/tutorial.rst b/doc/tutorial.rst new file mode 100644 index 0000000000000000000000000000000000000000..e5d1287a36ae2a4717c4ef93946e7eb54fd3e331 --- /dev/null +++ b/doc/tutorial.rst @@ -0,0 +1,264 @@ +.. _bob.tutorial: + +******************************** + Getting started with |project| +******************************** + +The following tutorial constitutes a suitable starting point to get to +know how to use |project|'s packages and to learn its fundamental concepts. + +They all rely on the lab-like environment which is `Python`_. Using |project| +within a Python environment is convenient because: + +- you can easily glue together all of the components of an experiment + within a single Python script (which does not require to be + compiled), + +- scripts may easily rely on other Python tools like `SciPy`_ as well + as |project|, and + +- Python bindings are used to transparently run the underlying + efficient C++ compiled code for the key features of the library. + + +Multi-dimensional Arrays +======================== + +The fundamental data structure of |project| is a multi-dimensional array. In +signal processing and machine learning, arrays are a suitable representation +for many different types of digital signals such as images, audio data and +extracted features. Python is the working environment selected for this library +and so when using Python we have relied on the existing `NumPy`_ +multi-dimensional arrays :any:`numpy.ndarray`. This provides with greater +flexibility within the Python environment. + +At the C++ level, the `Blitz++`_ library is used to handle arrays. |project| +provides internal conversion routines to transparently and efficiently convert +NumPy ndarrays to/from Blitz++. As they are done implicitly, the user has no +need to care about this aspect and should just use NumPy ndarrays everywhere +while inside Python code. + +For an introduction and tutorials about NumPy ndarrays, just visit the `NumPy +Reference`_ website. For a short tutorial on the bindings from NumPy ndarrays +to Blitz++, you can read the documentation of our :ref:`bob.blitz` package. + +.. note:: + + Many functions in Bob will return multi-dimensional arrays type + :any:`bob.blitz.array`, which are **wrapped** by as a :any:`numpy.ndarray`. While + you can use these arrays in all contexts inside Bob, NumPy and Scipy, some + functionality of the :any:`numpy.ndarray` are **not available**. In + particular, resizing the arrays with :any:`numpy.ndarray.resize` will raise an + exception. In such cases, please make a **copy** of the array using + :any:`numpy.ndarray.copy`. + +Digital signals as multi-dimensional arrays +=========================================== + +For Bob, we have decided to represent digital signals directly as +:any:`numpy.ndarray` rather than having dedicated classes for each type of +signals. This implies that some convention has been defined. + +Vectors and matrices +-------------------- + +A vector is represented as a 1D NumPy array, whereas a matrix is +represented by a 2D array whose first dimension corresponds to the rows, +and second dimension to the columns. + +.. code:: python + + >>> import numpy + >>> A = numpy.array([[1, 2, 3], [4, 5, 6]], dtype='uint8') # A is a matrix 2x3 + >>> print(A) + [[1 2 3] + [4 5 6]] + >>> b = numpy.array([1, 2, 3], dtype='uint8') # b is a vector of length 3 + >>> print(b) + [1 2 3] + +Images +------ + +**Grayscale** images are represented as 2D arrays, the first dimension +being the height (number of rows) and the second dimension being the +width (number of columns). For instance: + +.. code:: python + + >>> img = numpy.ndarray((480,640), dtype='uint8') + +``img`` which is a 2D array can be seen as a gray-scale image of +dimension 640 (width) by 480 (height). In addition, ``img`` can be seen +as a matrix with 480 rows and 640 columns. This is the reason why we +have decided that for images, the first dimension is the height and the +second one the width, such that it matches the matrix convention as +well. + +**Color** images are represented as 3D arrays, the first dimension being +the number of color planes, the second dimension the height and the +third the width. As an image is an array, this is the responsibility of +the user to know in which color space the content is stored. +:ref:`bob.ip.color` provides functions to perform color-space conversion: + +.. code:: python + + >>> import bob.ip.color + >>> colored = numpy.ndarray((3,480,640), dtype='uint8') + >>> gray = bob.ip.color.rgb_to_gray(colored) + >>> print (gray.shape) + [480 640] + +Videos +------ + +A video can be seen as a sequence of images over time. By convention, the first +dimension is for the frame indices (time index), whereas the remaining ones are +related to the corresponding image frame. More information about loading and +handling video sources can be found in :ref:`bob.io.video`. + +Audio signals +------------- + +Audio signals in Bob are represented as 2D arrays: the first dimension being +the number of channels and the second dimension corresponding to the time +index. For instance: + +.. code:: python + + >>> import bob.io.audio + >>> audio = bob.io.audio.reader("test.wav") + >>> audio.rate + 16000.0 + >>> signal = audio.load() + >>> signal.shape + (1, 268197) + +:ref:`bob.io.audio` supports loading a variety of audio files. Please refer to +its documentation for more information. + +.. warning:: + + You can also use ``scipy.io.wavfile`` to load wav files in Python but the + returned data is slightly different compared to ``bob.io.audio``. In Scipy + the first dimension corresponds to the time index rather than the audio + channel. Also in Scipy, the loaded signal maybe an ``int8`` or ``int16`` or + something else depending on the audio but ``bob.io.audio`` always returns + the data as ``float`` arrays. We recommend using ``bob.io.audio`` since it + supports more audio formats and it is more consistent with the rest of Bob + packages. + + +Input and output +================ + +The default way to read and write data from and to files with Bob is +using the binary `HDF5`_ format which has several tools to inspect those +files. Bob's support for HDF5 files is given through the :ref:`bob.io.base` +package. + +On the other hand, loading and writing of different kinds of data is provided +in other :ref:`bob.packages` of Bob using a plug-in strategy. Many image types can be +read using :ref:`bob.io.image`, and many video codecs are supported through +the :ref:`bob.io.video` plug-in. Also, a comprehensive support for +MatLab files is given through the :ref:`bob.io.matlab` interface. + +Additionally, :ref:`bob.io.base` provides two generic functions +:any:`bob.io.base.load` and :any:`bob.io.base.save` to load and save data of +various types, based on the filename extension. For example, to load a +.jpg image, simply call: + +.. code:: python + + >>> import bob.io.base + >>> import bob.io.image #under the hood: loads Bob plug-in for image files + >>> img = bob.io.base.load("myimg.jpg") + +Image processing +================ + +The image processing module is split into several packages, where most +functionality is contained in the :ref:`bob.ip.base` module. For an +introduction in simple affine image transformations such as scaling and +rotating images, as well as for more complex operations like Gaussian or Sobel +filtering, please refer to the :ref:`bob.ip.base`. Also, simple +texture features like LBP's can be extracted using :any:`bob.ip.base.LBP`. + +Gabor wavelet functionality has made it into its own package +:ref:`bob.ip.gabor`. A tutorial on how to perform a Gabor wavelet transform, +extract Gabor jets in grid graphs and compare Gabor jets, please read the +:ref:`bob.ip.gabor`. + +Machine learning +================ + +*Machines* and *Trainers* are one of the core components of Bob. +Machines represent statistical models or other functions defined by +parameters that can be trained or set by using trainers. Two examples of +machines are multi-layer perceptrons (MLPs) and Gaussian mixture models +(GMMs). + +The operation you normally expect from a machine is to be able to feed a +feature vector and extract the machine response or output for that input +vector. It works, in many ways, similarly to signal processing blocks. +Different types of machines will give you a different type of output. +Here, we examine a few of the machines and trainers available in Bob. + +- For a start, you should read the :ref:`bob.learn.linear`, + which is able to perform subspace projections like PCA and LDA. + +- Multi-Layer Perceptron (MLP) Machines and Trainers are provided within the + :ref:`bob.learn.mlp` package. + +- :ref:`bob.learn.libsvm` are provided though a bridge to + `LibSVM`_. + +- Generating strong classifiers by Boosting Strong Classifiers + weak classifiers is provided by :ref:`bob.learn.boosting`. + +- K-Means clustering and Gaussian Mixture Modeling, as well as Joint + Factor Analysis, Inter-Session Variability and Total Variability + modeling and, finally, Probabilistic Linear Discriminant Analysis is + implemented in :ref:`bob.learn.em`. + +Database interfaces +=================== + +Bob provides an API to easily query and interface with well known databases. A +database contains information about the organization of the files, functions to +query information such as the data which might be used for training a model, +but it usually does **not** contain the data itself (except for some toy +examples). Please visit :ref:`bob.db.base` for an excellent guide on Bob's +datbases. + +Bob includes a (growing) list of supported database interfaces. There are some +small toy databases like :ref:`bob.db.iris` and the :ref:`bob.db.mnist` +database can be used to train and evaluate classification experiments. For the +former, a detailed example on how to use Bob's machine learning techniques to +classify the Iris flowers is given in :doc:`example`. + +However, most of the databases contain face images, speech data or videos that +are used for biometric recognition and presentation attack detection +(anti-spoofing). A complete (and growing) list of database packages can be +found in our :ref:`bob.packages`. + +Several databases that can be used for biometric recognition share a common +interface, which is defined in the :any:`bob.bio.base.database.BioDatabase` +package. Generic functionality that is available in all verification database +packages is defined in the :ref:`bob.bio.base <bob.bio.base>`, while a list of +databases that implement this interface can be found in +:ref:`bob.bio.face <bob.bio.face>`, :ref:`bob.bio.video <bob.bio.video>`, +:ref:`bob.bio.spear <bob.bio.spear>`, or any other biometric package depending +on the modality of the database. + +Performance evaluation +====================== + +Methods in the :ref:`bob.measure` module can be used evaluate error for +multi-class or binary classification problems. Several evaluation +techniques such as Root Mean Squared Error, F-score, Recognition Rates, +False Acceptance and False Rejection Rates, and Equal Error Rates can be +computed, but also functionality for plotting CMC, ROC, DET and EPC +curves are described in more detail in the :ref:`bob.measure`. + +.. include:: links.rst diff --git a/packages.txt b/packages.txt index 4030c1c84272b464294fb77bcaa2ad3f27d2b954..6515ea17fa0a67eb23badda6bd75dddbeec08672 100644 --- a/packages.txt +++ b/packages.txt @@ -1,4 +1,3 @@ -bob/bob bob/bob.ap bob/bob.bio.base bob/bob.bio.face