From 7b54bbaa07623868233be6c5bfaba146f5393a99 Mon Sep 17 00:00:00 2001 From: Amir MOHAMMADI <amir.mohammadi@idiap.ch> Date: Wed, 27 Apr 2016 16:39:19 +0200 Subject: [PATCH] Generate documentation --- bob/fusion/base/fusion.py | 138 ----------------------- bob/fusion/base/tools/command_line.py | 4 +- doc/bob.fusion.base.algorithm.rst | 62 ++++++++++ doc/bob.fusion.base.config.algorithm.rst | 54 +++++++++ doc/bob.fusion.base.config.rst | 17 +++ doc/bob.fusion.base.rst | 20 ++++ doc/bob.fusion.base.script.rst | 30 +++++ doc/bob.fusion.base.tools.rst | 30 +++++ doc/bob.fusion.rst | 17 +++ doc/bob.rst | 17 +++ doc/{fusion.rst => guide.rst} | 12 +- doc/index.rst | 15 +-- doc/modules.rst | 7 ++ doc/py_api.rst | 10 -- 14 files changed, 264 insertions(+), 169 deletions(-) delete mode 100644 bob/fusion/base/fusion.py create mode 100644 doc/bob.fusion.base.algorithm.rst create mode 100644 doc/bob.fusion.base.config.algorithm.rst create mode 100644 doc/bob.fusion.base.config.rst create mode 100644 doc/bob.fusion.base.rst create mode 100644 doc/bob.fusion.base.script.rst create mode 100644 doc/bob.fusion.base.tools.rst create mode 100644 doc/bob.fusion.rst create mode 100644 doc/bob.rst rename doc/{fusion.rst => guide.rst} (65%) create mode 100644 doc/modules.rst delete mode 100644 doc/py_api.rst diff --git a/bob/fusion/base/fusion.py b/bob/fusion/base/fusion.py deleted file mode 100644 index 62c9372..0000000 --- a/bob/fusion/base/fusion.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python - -import os -import numpy -import matplotlib.pyplot as plt -from bob.measure.load import load_score, get_all_scores,\ - get_negatives_positives_all -from bob.fusion.base.algorithm import LLR, Weighted_Sum, MLP -from bob.fusion.base.normalizer import ZNorm - - -def main(): - ''' -/home/amir/idiap/remote/user/mobio-male/baselines/gmm/male/nonorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/baselines/gmm/male/nonorm/scores-eval -/home/amir/idiap/remote/user/mobio-male/baselines/gmm/male/ztnorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/baselines/gmm/male/ztnorm/scores-eval - -/home/amir/idiap/remote/user/mobio-male/baselines/gabor-graph/male/nonorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/baselines/gabor-graph/male/nonorm/scores-eval -/home/amir/idiap/remote/user/mobio-male/baselines/gabor-graph/male/ztnorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/baselines/gabor-graph/male/ztnorm/scores-eval - - -/home/amir/idiap/remote/user/mobio-male/voice/gmm/male/nonorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/voice/gmm/male/nonorm/scores-eval -/home/amir/idiap/remote/user/mobio-male/voice/gmm/male/ztnorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/voice/gmm/male/ztnorm/scores-eval - -/home/amir/idiap/remote/user/mobio-male/voice/isv/male/nonorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/voice/isv/male/nonorm/scores-eval -/home/amir/idiap/remote/user/mobio-male/voice/isv/male/ztnorm/scores-dev -/home/amir/idiap/remote/user/mobio-male/voice/isv/male/ztnorm/scores-eval - # = ['/home/amir/idiap/remote/scores-dev_gmm', - # '/home/amir/idiap/remote/scores-dev_isv'] - # s_eval_paths = ['/home/amir/idiap/remote/scores-eval_gmm', - # '/home/amir/idiap/remote/scores-eval_isv'] - - - - ''' - score_path_mask = '/home/amir/idiap/remote/user/mobio-male/{}/male/{}/scores-{}' - fusion_lists = [ - (('baselines/gmm', 'voice/isv'), 'face-voice/F-gmm-S-isv{}'), - (('baselines/gmm', 'baselines/gabor-graph'), 'baselines/gmm-gabor-graph{}'), - (('voice/gmm', 'voice/isv'), 'voice/gmm-isv{}'), - # (('baselines/gmm', 'baselines/gabor-graph', 'voice/gmm', 'voice/isv'), 'face-voice/F-gmm-gabor-graph-S-gmm-isv{}'), - ] - for norm in ['ztnorm']: - for scores_paths_param, save_path_param in fusion_lists: - save_path_dev = score_path_mask.format(save_path_param, norm, 'dev') - save_path_eval = score_path_mask.format(save_path_param, norm, 'eval') - # for path in [save_path_dev, save_path_eval]: - # for tag in [ - # '_Weighted_Sum', - # '_LLR', - # '_MLP' - # ]: - # try: - # os.makedirs(os.path.split(path.format(tag))[0]) - # except Exception: - # pass - s_dev_paths = [ - score_path_mask.format(a, norm, 'dev') for a in scores_paths_param] - s_eval_paths = [ - score_path_mask.format(a, norm, 'eval') for a in scores_paths_param] - - score_lines_list = [load_score(path) for path in s_dev_paths] - scores = get_all_scores(score_lines_list) - trainer_scores = get_negatives_positives_all(score_lines_list) - score_lines_list_eval = [load_score(path) for path in s_eval_paths] - scores_eval = get_all_scores(score_lines_list_eval) - plt.figure() - for i, (fuse, tag) in enumerate([ - (Weighted_Sum(normalizer=ZNorm(), scores=numpy.array(scores), trainer_scores=trainer_scores), '_Weighted_Sum'), - (LLR(normalizer=ZNorm(), scores=numpy.array(scores), trainer_scores=trainer_scores), '_LLR'), - (MLP(normalizer=ZNorm(), scores=numpy.array(scores), trainer_scores=trainer_scores, verbose=True, - mlp_shape=(2, 3, 1), batch_size=1, seed=0), '_MLP'), - ]): - plt.subplot(2,2,i+1) - fuse.train() - # import ipdb; ipdb.set_trace() - fused_scores_dev = fuse() - score_lines = numpy.array(score_lines_list[0]) - score_lines['score'] = fused_scores_dev - # import ipdb - # ipdb.set_trace() - # numpy.savetxt(save_path_dev.format(tag), score_lines, fmt='%s %s %s %.6f') - - fuse.scores = numpy.array(scores_eval) - fused_scores_eval = fuse() - fuse.scores = numpy.array(scores_eval) - - score_lines = numpy.array(score_lines_list_eval[0]) - score_lines['score'] = fused_scores_eval - # numpy.savetxt(save_path_eval.format(tag), score_lines, fmt='%s %s %s %.6f') - - # plot the decision boundary - from bob.measure import eer_threshold, min_hter_threshold - from bob.measure.load import get_negatives_positives - - score_labels = score_lines['claimed_id'] == score_lines['real_id'] - threshold = eer_threshold(*get_negatives_positives(score_lines)) - thres_system1 = min_hter_threshold( - *get_negatives_positives(score_lines_list[0])) - thres_system2 = min_hter_threshold( - *get_negatives_positives(score_lines_list[1])) - fuse.plot_boundary_decision( - score_labels, threshold, - scores_paths_param[0], scores_paths_param[1], - thres_system1, thres_system2, - True, - seed=0 - ) - plt.title(tag[1:]) - # print(thres_system1, thres_system2) - # thres_system1, thres_system2 = (3.51670052, 3.19892205) - # plt.axvline(thres_system1, color='red') - # plt.axhline(thres_system2, color='red') - # plt.show() - plt.savefig('scatter_{}_{}.pdf'.format(norm, '_'.join([a.replace('/','-') for a in scores_paths_param]))) - plt.close() - # return - - # fuse = LLR(scores=scores, trainer_scores=trainer_scores) - # fuse.train() - # print('LLR', fuse()[:10]) - # fuse = Weighted_Sum(scores=scores) - # print('Weighted_Sum', fuse()[:10]) - # fuse = MEAN(scores=scores) - # print('MEAN', fuse()[:10]) - # fuse = MLP(scores=scores, trainer_scores=trainer_scores, - # verbose=True, max_iter=0, batch_size=1) - # fuse.train() - # print('MLP', fuse()[:10]) - -if __name__ == '__main__': - main() diff --git a/bob/fusion/base/tools/command_line.py b/bob/fusion/base/tools/command_line.py index a72a12b..f9662df 100644 --- a/bob/fusion/base/tools/command_line.py +++ b/bob/fusion/base/tools/command_line.py @@ -119,7 +119,7 @@ def write_info(args, command_line_parameters): command_line_parameters : [str] or ``None`` The command line parameters that have been interpreted. If ``None``, the parameters specified by the user on command line - are considered. + are considered. executable : str The name of the executable (such as ``'./bin/verify.py'``) that is used @@ -161,7 +161,7 @@ def load_resource(resource, keyword, imports=['bob.fusion.base'], 1. a resource as defined in the setup.py 2. a configuration file 3. a string defining the construction of an object. If imports are required - for the construction of this object, they can be given as list of strings. + for the construction of this object, they can be given as list of strings. **Parameters:** diff --git a/doc/bob.fusion.base.algorithm.rst b/doc/bob.fusion.base.algorithm.rst new file mode 100644 index 0000000..bd1c60c --- /dev/null +++ b/doc/bob.fusion.base.algorithm.rst @@ -0,0 +1,62 @@ +bob.fusion.base.algorithm package +================================= + +Submodules +---------- + +bob.fusion.base.algorithm.Algorithm module +------------------------------------------ + +.. automodule:: bob.fusion.base.algorithm.Algorithm + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.algorithm.AlgorithmBob module +--------------------------------------------- + +.. automodule:: bob.fusion.base.algorithm.AlgorithmBob + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.algorithm.LLR module +------------------------------------ + +.. automodule:: bob.fusion.base.algorithm.LLR + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.algorithm.MLP module +------------------------------------ + +.. automodule:: bob.fusion.base.algorithm.MLP + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.algorithm.Weighted_Sum module +--------------------------------------------- + +.. automodule:: bob.fusion.base.algorithm.Weighted_Sum + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.algorithm.mlp_train_helper module +------------------------------------------------- + +.. automodule:: bob.fusion.base.algorithm.mlp_train_helper + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: bob.fusion.base.algorithm + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/bob.fusion.base.config.algorithm.rst b/doc/bob.fusion.base.config.algorithm.rst new file mode 100644 index 0000000..696ffe5 --- /dev/null +++ b/doc/bob.fusion.base.config.algorithm.rst @@ -0,0 +1,54 @@ +bob.fusion.base.config.algorithm package +======================================== + +Submodules +---------- + +bob.fusion.base.config.algorithm.llr module +------------------------------------------- + +.. automodule:: bob.fusion.base.config.algorithm.llr + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.config.algorithm.llr_skl module +----------------------------------------------- + +.. automodule:: bob.fusion.base.config.algorithm.llr_skl + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.config.algorithm.mean module +-------------------------------------------- + +.. automodule:: bob.fusion.base.config.algorithm.mean + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.config.algorithm.mlp module +------------------------------------------- + +.. automodule:: bob.fusion.base.config.algorithm.mlp + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.config.algorithm.plr_2 module +--------------------------------------------- + +.. automodule:: bob.fusion.base.config.algorithm.plr_2 + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: bob.fusion.base.config.algorithm + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/bob.fusion.base.config.rst b/doc/bob.fusion.base.config.rst new file mode 100644 index 0000000..7a31f5d --- /dev/null +++ b/doc/bob.fusion.base.config.rst @@ -0,0 +1,17 @@ +bob.fusion.base.config package +============================== + +Subpackages +----------- + +.. toctree:: + + bob.fusion.base.config.algorithm + +Module contents +--------------- + +.. automodule:: bob.fusion.base.config + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/bob.fusion.base.rst b/doc/bob.fusion.base.rst new file mode 100644 index 0000000..d0812d8 --- /dev/null +++ b/doc/bob.fusion.base.rst @@ -0,0 +1,20 @@ +bob.fusion.base package +======================= + +Subpackages +----------- + +.. toctree:: + + bob.fusion.base.algorithm + bob.fusion.base.config + bob.fusion.base.script + bob.fusion.base.tools + +Module contents +--------------- + +.. automodule:: bob.fusion.base + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/bob.fusion.base.script.rst b/doc/bob.fusion.base.script.rst new file mode 100644 index 0000000..638fb52 --- /dev/null +++ b/doc/bob.fusion.base.script.rst @@ -0,0 +1,30 @@ +bob.fusion.base.script package +============================== + +Submodules +---------- + +bob.fusion.base.script.bob_fuse module +-------------------------------------- + +.. automodule:: bob.fusion.base.script.bob_fuse + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.script.plot_fusion_decision_boundary module +----------------------------------------------------------- + +.. automodule:: bob.fusion.base.script.plot_fusion_decision_boundary + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: bob.fusion.base.script + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/bob.fusion.base.tools.rst b/doc/bob.fusion.base.tools.rst new file mode 100644 index 0000000..31e5409 --- /dev/null +++ b/doc/bob.fusion.base.tools.rst @@ -0,0 +1,30 @@ +bob.fusion.base.tools package +============================= + +Submodules +---------- + +bob.fusion.base.tools.command_line module +----------------------------------------- + +.. automodule:: bob.fusion.base.tools.command_line + :members: + :undoc-members: + :show-inheritance: + +bob.fusion.base.tools.plotting module +------------------------------------- + +.. automodule:: bob.fusion.base.tools.plotting + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: bob.fusion.base.tools + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/bob.fusion.rst b/doc/bob.fusion.rst new file mode 100644 index 0000000..ad8d408 --- /dev/null +++ b/doc/bob.fusion.rst @@ -0,0 +1,17 @@ +bob.fusion package +================== + +Subpackages +----------- + +.. toctree:: + + bob.fusion.base + +Module contents +--------------- + +.. automodule:: bob.fusion + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/bob.rst b/doc/bob.rst new file mode 100644 index 0000000..86625e7 --- /dev/null +++ b/doc/bob.rst @@ -0,0 +1,17 @@ +bob package +=========== + +Subpackages +----------- + +.. toctree:: + + bob.fusion + +Module contents +--------------- + +.. automodule:: bob + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/fusion.rst b/doc/guide.rst similarity index 65% rename from doc/fusion.rst rename to doc/guide.rst index a3c2b76..8074927 100644 --- a/doc/fusion.rst +++ b/doc/guide.rst @@ -8,18 +8,18 @@ Running Score Fusion in Biometric Recognition Experiments ========================================================== -There are two scripts available in the package as of now and they work for verification scenarios. -Spoofing and Anti-spoofing scenarios are not considered yet in the scripts however the Python API allows for easy extension. - Each score fusion experiment requires at least a classifier. -The ``bob.fusion.base`` package itself implements two such classifiers: ``MLP`` and ``WeightedSum``. +The ``bob.fusion.base`` package itself implements three such classifiers: ``MLP``, ``LLR`` and ``WeightedSum``. You can also use any class as a classifier that implements a ``fit(X[, y])`` and a ``decision_function(X)`` method. An example is `sklearn.linear_model.LogisticRegression <http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html>`_. You can also use pre-processors to pre-process your data. The pre-processor class should implement a ``fit_transform(X[, y])`` and a ``transform(X[, y, copy])`` methods. An example is `sklearn.preprocessing.StandardScaler <http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html>`_. -Using ``sklearn`` classifiers and pre-processors you can different fusion algorithms. Please take a look at some examples in ``bob.fusion.base.config.algorithm`` to see how it is done. +Using ``sklearn`` classifiers and pre-processors you can implement different fusion algorithms. Please take a look at some examples in ``bob.fusion.base.config.algorithm`` to see how it is done. + +There are two scripts available in the package as of now and they work for verification scenarios. +Spoofing and Anti-spoofing scenarios are not considered yet **in the scripts** however the Python API allows for easy extension. -Also take a look at the scripts ``fuse.py`` and ``plot_fusion_decision_boundary.py`` and use them for your actual fusion experiments. +Also take a look at the scripts ``bob_fuse.py`` and ``plot_fusion_decision_boundary.py`` and use them for your actual fusion experiments. .. include:: links.rst diff --git a/doc/index.rst b/doc/index.rst index 2d22471..85f9bba 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -19,7 +19,7 @@ Users Guide .. toctree:: :maxdepth: 2 - fusion + guide ================ Reference Manual @@ -28,7 +28,7 @@ Reference Manual .. toctree:: :maxdepth: 2 - py_api +* :ref:`modindex` ========== @@ -36,22 +36,11 @@ References ========== -========= -ToDo-List -========= - -This documentation is still under development. -Here is a list of things that needs to be done: - -.. todolist:: - testing - ================== Indices and tables ================== * :ref:`genindex` -* :ref:`modindex` * :ref:`search` .. include:: links.rst diff --git a/doc/modules.rst b/doc/modules.rst new file mode 100644 index 0000000..8dc34ff --- /dev/null +++ b/doc/modules.rst @@ -0,0 +1,7 @@ +bob.fusion.base +=============== + +.. toctree:: + :maxdepth: 4 + + bob diff --git a/doc/py_api.rst b/doc/py_api.rst deleted file mode 100644 index 951e069..0000000 --- a/doc/py_api.rst +++ /dev/null @@ -1,10 +0,0 @@ - -=========================== -Python API for bob.fusion.base -=========================== - - -Details -------- - -.. include:: links.rst -- GitLab