From 005d0a1a47985651a9bccc14185f49217b2d5918 Mon Sep 17 00:00:00 2001
From: Amir MOHAMMADI <amir.mohammadi@idiap.ch>
Date: Tue, 14 Jun 2022 16:12:23 +0200
Subject: [PATCH] streamline name of databases and fix tests

---
 .../config/{casiafasd.py => casia_fasd.py}    |  0
 bob/pad/face/config/casia_surf.py             | 10 ++++
 bob/pad/face/config/casiasurf.py              |  3 --
 bob/pad/face/config/deep_pix_bis.py           |  2 +-
 .../config/{maskattack.py => mask_attack.py}  |  2 +-
 .../face/config/{oulunpu.py => oulu_npu.py}   |  6 +--
 bob/pad/face/config/replay_attack.py          |  2 +-
 bob/pad/face/config/replay_mobile.py          |  2 +-
 bob/pad/face/database/__init__.py             | 13 ++---
 .../database/{casiafasd.py => casia_fasd.py}  |  0
 .../database/{casiasurf.py => casia_surf.py}  |  4 +-
 .../{maskattack.py => mask_attack.py}         |  7 ++-
 .../face/database/{oulunpu.py => oulu_npu.py} |  4 +-
 bob/pad/face/database/replay_attack.py        |  2 +-
 bob/pad/face/database/replay_mobile.py        |  2 +-
 bob/pad/face/deep_pix_bis.py                  | 30 +++++------
 bob/pad/face/test/test_databases.py           | 52 ++++++++++---------
 doc/baselines.rst                             | 12 ++---
 doc/resources.rst                             |  6 +--
 setup.py                                      | 17 +++---
 20 files changed, 92 insertions(+), 84 deletions(-)
 rename bob/pad/face/config/{casiafasd.py => casia_fasd.py} (100%)
 create mode 100644 bob/pad/face/config/casia_surf.py
 delete mode 100644 bob/pad/face/config/casiasurf.py
 rename bob/pad/face/config/{maskattack.py => mask_attack.py} (91%)
 rename bob/pad/face/config/{oulunpu.py => oulu_npu.py} (83%)
 rename bob/pad/face/database/{casiafasd.py => casia_fasd.py} (100%)
 rename bob/pad/face/database/{casiasurf.py => casia_surf.py} (95%)
 rename bob/pad/face/database/{maskattack.py => mask_attack.py} (93%)
 rename bob/pad/face/database/{oulunpu.py => oulu_npu.py} (94%)

diff --git a/bob/pad/face/config/casiafasd.py b/bob/pad/face/config/casia_fasd.py
similarity index 100%
rename from bob/pad/face/config/casiafasd.py
rename to bob/pad/face/config/casia_fasd.py
diff --git a/bob/pad/face/config/casia_surf.py b/bob/pad/face/config/casia_surf.py
new file mode 100644
index 00000000..28c3e06d
--- /dev/null
+++ b/bob/pad/face/config/casia_surf.py
@@ -0,0 +1,10 @@
+"""The `CASIA-SURF`_ database for face anti-spoofing
+
+After downloading, you can tell the bob library where the files are located
+using::
+
+    $ bob config set bob.db.casia_surf.directory /path/to/database/CASIA-SURF/
+"""
+from bob.pad.face.database import CasiaSurfPadDatabase
+
+database = CasiaSurfPadDatabase()
diff --git a/bob/pad/face/config/casiasurf.py b/bob/pad/face/config/casiasurf.py
deleted file mode 100644
index 05f6dd81..00000000
--- a/bob/pad/face/config/casiasurf.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from bob.pad.face.database import CasiaSurfPadDatabase
-
-database = CasiaSurfPadDatabase()
diff --git a/bob/pad/face/config/deep_pix_bis.py b/bob/pad/face/config/deep_pix_bis.py
index 61e2fa19..907db63e 100644
--- a/bob/pad/face/config/deep_pix_bis.py
+++ b/bob/pad/face/config/deep_pix_bis.py
@@ -54,7 +54,7 @@ preprocessor = mario.wrap(
 )
 
 # Classifier #
-classifier = DeepPixBisClassifier(model_file="oulunpu-p1")
+classifier = DeepPixBisClassifier(model_file="oulu-npu-p1")
 classifier = mario.wrap(["sample"], classifier)
 # change the decision_function
 decision_function = "predict_proba"
diff --git a/bob/pad/face/config/maskattack.py b/bob/pad/face/config/mask_attack.py
similarity index 91%
rename from bob/pad/face/config/maskattack.py
rename to bob/pad/face/config/mask_attack.py
index 7cb0915a..d6d56e54 100644
--- a/bob/pad/face/config/maskattack.py
+++ b/bob/pad/face/config/mask_attack.py
@@ -17,7 +17,7 @@ your references:
 After downloading, you can tell the bob library where the files are located
 using::
 
-    $ bob config set bob.db.maskattack.directory /path/to/database/3dmad/Data/
+    $ bob config set bob.db.mask_attack.directory /path/to/database/3dmad/Data/
 """
 from bob.pad.face.database import MaskAttackPadDatabase
 
diff --git a/bob/pad/face/config/oulunpu.py b/bob/pad/face/config/oulu_npu.py
similarity index 83%
rename from bob/pad/face/config/oulunpu.py
rename to bob/pad/face/config/oulu_npu.py
index 241e6477..3e3713c8 100644
--- a/bob/pad/face/config/oulunpu.py
+++ b/bob/pad/face/config/oulu_npu.py
@@ -3,7 +3,7 @@ A mobile face presentation attack database with real-world variations database.
 
 To configure the location of the database on your computer, run::
 
-    bob config set bob.db.oulunpu.directory /path/to/database/oulu-npu
+    bob config set bob.db.oulu_npu.directory /path/to/database/oulu-npu
 
 
 If you use this database, please cite the following publication::
@@ -17,6 +17,6 @@ If you use this database, please cite the following publication::
                year = {2017},
     }
 """
-from bob.pad.face.database import OulunpuPadDatabase
+from bob.pad.face.database import OuluNpuPadDatabase
 
-database = OulunpuPadDatabase()
+database = OuluNpuPadDatabase()
diff --git a/bob/pad/face/config/replay_attack.py b/bob/pad/face/config/replay_attack.py
index 013c0ef8..3fc4afbc 100644
--- a/bob/pad/face/config/replay_attack.py
+++ b/bob/pad/face/config/replay_attack.py
@@ -9,7 +9,7 @@ You can download the raw data of the `Replay-Attack`_ database by following the
 link. After downloading, you can tell the bob library where the files are
 located using::
 
-    $ bob config set bob.db.replayattack.directory /path/to/database/replay/protocols/replayattack-database/
+    $ bob config set bob.db.replay_attack.directory /path/to/database/replay/protocols/replayattack-database/
 """
 from bob.pad.face.database import ReplayAttackPadDatabase
 
diff --git a/bob/pad/face/config/replay_mobile.py b/bob/pad/face/config/replay_mobile.py
index fb498870..3aa83116 100644
--- a/bob/pad/face/config/replay_mobile.py
+++ b/bob/pad/face/config/replay_mobile.py
@@ -11,7 +11,7 @@ You can download the raw data of the `Replay-Mobile`_ database by following
 the link. After downloading, you can tell the bob library where the files are
 located using::
 
-    $ bob config set bob.db.replaymobile.directory /path/to/database/replay-mobile/database/
+    $ bob config set bob.db.replay_mobile.directory /path/to/database/replay-mobile/database/
 """
 from bob.pad.face.database import ReplayMobilePadDatabase
 
diff --git a/bob/pad/face/database/__init__.py b/bob/pad/face/database/__init__.py
index 38b5ef75..ca9b5c21 100644
--- a/bob/pad/face/database/__init__.py
+++ b/bob/pad/face/database/__init__.py
@@ -1,12 +1,12 @@
 # isort: skip_file
-from .database import VideoPadSample  # noqa: F401
-from .casiafasd import CasiaFasdPadDatabase
-from .casiasurf import CasiaSurfPadDatabase
-from .maskattack import MaskAttackPadDatabase
+from .database import VideoPadSample
+from .casia_fasd import CasiaFasdPadDatabase
+from .casia_surf import CasiaSurfPadDatabase
+from .mask_attack import MaskAttackPadDatabase
 from .replay_attack import ReplayAttackPadDatabase
 from .replay_mobile import ReplayMobilePadDatabase
 from .swan import SwanPadDatabase
-from .oulunpu import OulunpuPadDatabase
+from .oulu_npu import OuluNpuPadDatabase
 
 
 # gets sphinx autodoc done right - don't remove it
@@ -26,13 +26,14 @@ def __appropriate__(*args):
 
 
 __appropriate__(
+    VideoPadSample,
     ReplayAttackPadDatabase,
     ReplayMobilePadDatabase,
     MaskAttackPadDatabase,
     CasiaSurfPadDatabase,
     CasiaFasdPadDatabase,
     SwanPadDatabase,
-    OulunpuPadDatabase,
+    OuluNpuPadDatabase,
 )
 
 __all__ = [_ for _ in dir() if not _.startswith("_")]
diff --git a/bob/pad/face/database/casiafasd.py b/bob/pad/face/database/casia_fasd.py
similarity index 100%
rename from bob/pad/face/database/casiafasd.py
rename to bob/pad/face/database/casia_fasd.py
diff --git a/bob/pad/face/database/casiasurf.py b/bob/pad/face/database/casia_surf.py
similarity index 95%
rename from bob/pad/face/database/casiasurf.py
rename to bob/pad/face/database/casia_surf.py
index 79e82f31..542be95d 100644
--- a/bob/pad/face/database/casiasurf.py
+++ b/bob/pad/face/database/casia_surf.py
@@ -79,10 +79,10 @@ class CasiaSurfPadDatabase(FileListPadDatabase):
         self,
         **kwargs,
     ):
-        original_directory = rc.get("bob.db.casiasurf.directory")
+        original_directory = rc.get("bob.db.casia_surf.directory")
         if original_directory is None or not os.path.isdir(original_directory):
             raise FileNotFoundError(
-                "The original_directory is not set. Please set it in the terminal using `bob config set bob.db.casiasurf.directory /path/to/database/CASIA-SURF/`."
+                "The original_directory is not set. Please set it in the terminal using `bob config set bob.db.casia_surf.directory /path/to/database/CASIA-SURF/`."
             )
         transformer = CasiaSurfMultiStreamSample(
             original_directory=original_directory,
diff --git a/bob/pad/face/database/maskattack.py b/bob/pad/face/database/mask_attack.py
similarity index 93%
rename from bob/pad/face/database/maskattack.py
rename to bob/pad/face/database/mask_attack.py
index 9de3df02..179f733a 100644
--- a/bob/pad/face/database/maskattack.py
+++ b/bob/pad/face/database/mask_attack.py
@@ -128,17 +128,16 @@ def MaskAttackPadDatabase(
     step_size=None,
     **kwargs,
 ):
-    name = "pad-face-mask-attack-211bd751.tar.gz"
+    name = "pad-face-mask-attack-2ab2032c.tar.gz"
     dataset_protocols_path = get_file(
         name,
         [f"http://www.idiap.ch/software/bob/data/bob/bob.pad.face/{name}"],
         cache_subdir="protocols",
-        file_hash="211bd751",
+        file_hash="2ab2032c",
     )
-    dataset_protocols_path = "/idiap/home/amohammadi/bob_data/protocols/pad-face-mask-attack-211bd751/"
 
     transformer = MaskAttackPadSample(
-        original_directory=rc.get("bob.db.maskattack.directory"),
+        original_directory=rc.get("bob.db.mask_attack.directory"),
         selection_style=selection_style,
         max_number_of_frames=max_number_of_frames,
         step_size=step_size,
diff --git a/bob/pad/face/database/oulunpu.py b/bob/pad/face/database/oulu_npu.py
similarity index 94%
rename from bob/pad/face/database/oulunpu.py
rename to bob/pad/face/database/oulu_npu.py
index a1b56a02..5db0ec66 100644
--- a/bob/pad/face/database/oulunpu.py
+++ b/bob/pad/face/database/oulu_npu.py
@@ -8,7 +8,7 @@ from bob.pad.face.database import VideoPadSample
 logger = logging.getLogger(__name__)
 
 
-def OulunpuPadDatabase(
+def OuluNpuPadDatabase(
     protocol="Protocol_1",
     selection_style=None,
     max_number_of_frames=None,
@@ -37,7 +37,7 @@ def OulunpuPadDatabase(
         annotation_type = "eyes-center"
 
     transformer = VideoPadSample(
-        original_directory=rc.get("bob.db.oulunpu.directory"),
+        original_directory=rc.get("bob.db.oulu_npu.directory"),
         annotation_directory=annotation_directory,
         selection_style=selection_style,
         max_number_of_frames=max_number_of_frames,
diff --git a/bob/pad/face/database/replay_attack.py b/bob/pad/face/database/replay_attack.py
index ef9cf197..92ae8e41 100644
--- a/bob/pad/face/database/replay_attack.py
+++ b/bob/pad/face/database/replay_attack.py
@@ -37,7 +37,7 @@ def ReplayAttackPadDatabase(
         annotation_type = "eyes-center"
 
     transformer = VideoPadSample(
-        original_directory=rc.get("bob.db.replayattack.directory"),
+        original_directory=rc.get("bob.db.replay_attack.directory"),
         annotation_directory=annotation_directory,
         selection_style=selection_style,
         max_number_of_frames=max_number_of_frames,
diff --git a/bob/pad/face/database/replay_mobile.py b/bob/pad/face/database/replay_mobile.py
index 3ac0550c..9a72add1 100644
--- a/bob/pad/face/database/replay_mobile.py
+++ b/bob/pad/face/database/replay_mobile.py
@@ -54,7 +54,7 @@ def ReplayMobilePadDatabase(
     transformer = make_pipeline(
         Str_To_Types(fieldtypes=dict(should_flip=str_to_bool)),
         VideoPadSample(
-            original_directory=rc.get("bob.db.replaymobile.directory"),
+            original_directory=rc.get("bob.db.replay_mobile.directory"),
             annotation_directory=annotation_directory,
             selection_style=selection_style,
             max_number_of_frames=max_number_of_frames,
diff --git a/bob/pad/face/deep_pix_bis.py b/bob/pad/face/deep_pix_bis.py
index c6e976c8..efb0d85e 100644
--- a/bob/pad/face/deep_pix_bis.py
+++ b/bob/pad/face/deep_pix_bis.py
@@ -15,49 +15,49 @@ logger = logging.getLogger(__name__)
 
 
 DEEP_PIX_BIS_PRETRAINED_MODELS = {
-    "oulunpu-p1": [
+    "oulu-npu-p1": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_1_model_0_0-24844429.pth"
     ],
-    "oulunpu-p2": [
+    "oulu-npu-p2": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_2_model_0_0-4aae2f3a.pth"
     ],
-    "oulunpu-p3-1": [
+    "oulu-npu-p3-1": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_3_1_model_0_0-f0e70cf3.pth"
     ],
-    "oulunpu-p3-2": [
+    "oulu-npu-p3-2": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_3_2_model_0_0-92594797.pth"
     ],
-    "oulunpu-p3-3": [
+    "oulu-npu-p3-3": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_3_3_model_0_0-71e18149.pth"
     ],
-    "oulunpu-p3-4": [
+    "oulu-npu-p3-4": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_3_4_model_0_0-d7f666e5.pth"
     ],
-    "oulunpu-p3-5": [
+    "oulu-npu-p3-5": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_3_5_model_0_0-fc40ba69.pth"
     ],
-    "oulunpu-p3-6": [
+    "oulu-npu-p3-6": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_3_6_model_0_0-123a6c92.pth"
     ],
-    "oulunpu-p4-1": [
+    "oulu-npu-p4-1": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_4_1_model_0_0-5f8dc7cf.pth"
     ],
-    "oulunpu-p4-2": [
+    "oulu-npu-p4-2": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_4_2_model_0_0-168f2644.pth"
     ],
-    "oulunpu-p4-3": [
+    "oulu-npu-p4-3": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_4_3_model_0_0-db57e3b5.pth"
     ],
-    "oulunpu-p4-4": [
+    "oulu-npu-p4-4": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_4_4_model_0_0-e999b7e8.pth"
     ],
-    "oulunpu-p4-5": [
+    "oulu-npu-p4-5": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_4_5_model_0_0-dcd13b8b.pth"
     ],
-    "oulunpu-p4-6": [
+    "oulu-npu-p4-6": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_OULU_Protocol_4_6_model_0_0-96a1ab92.pth"
     ],
-    "replaymobile": [
+    "replay-mobile": [
         "http://www.idiap.ch/software/bob/data/bob/bob.pad.face/deep_pix_bis_RM_grandtest_model_0_0-6761ca7e.pth"
     ],
 }
diff --git a/bob/pad/face/test/test_databases.py b/bob/pad/face/test/test_databases.py
index 6e2d4738..c2b9c446 100644
--- a/bob/pad/face/test/test_databases.py
+++ b/bob/pad/face/test/test_databases.py
@@ -9,7 +9,7 @@ import numpy as np
 import bob.bio.base
 
 
-def test_replayattack():
+def test_replay_attack():
     database = bob.bio.base.load_resource(
         "replay-attack",
         "database",
@@ -61,7 +61,7 @@ def test_replayattack():
         raise SkipTest(e)
 
 
-def test_replaymobile():
+def test_replay_mobile():
     database = bob.bio.base.load_resource(
         "replay-mobile",
         "database",
@@ -131,10 +131,10 @@ def test_replaymobile():
         raise SkipTest(e)
 
 
-# Test the maskattack database
-def test_maskattack():
-    maskattack = bob.bio.base.load_resource(
-        "maskattack",
+# Test the mask_attack database
+def test_mask_attack():
+    mask_attack = bob.bio.base.load_resource(
+        "mask-attack",
         "database",
         preferred_package="bob.pad.face",
         package_prefix="bob.pad.",
@@ -142,14 +142,16 @@ def test_maskattack():
     # all real sequences: 2 sessions, 5 recordings for 17 individuals
     assert (
         len(
-            maskattack.samples(groups=["train", "dev", "eval"], purposes="real")
+            mask_attack.samples(
+                groups=["train", "dev", "eval"], purposes="real"
+            )
         )
         == 170
     )
     # all attacks: 1 session, 5 recordings for 17 individuals
     assert (
         len(
-            maskattack.samples(
+            mask_attack.samples(
                 groups=["train", "dev", "eval"], purposes="attack"
             )
         )
@@ -157,19 +159,19 @@ def test_maskattack():
     )
 
     # training real: 7 subjects, 2 sessions, 5 recordings
-    assert len(maskattack.samples(groups=["train"], purposes="real")) == 70
+    assert len(mask_attack.samples(groups=["train"], purposes="real")) == 70
     # training real: 7 subjects, 1 session, 5 recordings
-    assert len(maskattack.samples(groups=["train"], purposes="attack")) == 35
+    assert len(mask_attack.samples(groups=["train"], purposes="attack")) == 35
 
     # dev and test contains the same number of sequences:
     # real: 5 subjects, 2 sessions, 5 recordings
     # attack: 5 subjects, 1 sessions, 5 recordings
-    assert len(maskattack.samples(groups=["dev"], purposes="real")) == 50
-    assert len(maskattack.samples(groups=["eval"], purposes="real")) == 50
-    assert len(maskattack.samples(groups=["dev"], purposes="attack")) == 25
-    assert len(maskattack.samples(groups=["eval"], purposes="attack")) == 25
+    assert len(mask_attack.samples(groups=["dev"], purposes="real")) == 50
+    assert len(mask_attack.samples(groups=["eval"], purposes="real")) == 50
+    assert len(mask_attack.samples(groups=["dev"], purposes="attack")) == 25
+    assert len(mask_attack.samples(groups=["eval"], purposes="attack")) == 25
 
-    sample = maskattack.samples()[0]
+    sample = mask_attack.samples()[0]
     try:
         assert sample.data.shape == (20, 3, 480, 640)
         np.testing.assert_equal(sample.data[0][:, 0, 0], [185, 166, 167])
@@ -186,7 +188,7 @@ def test_maskattack():
 
 def test_casia_fasd():
     casia_fasd = bob.bio.base.load_resource(
-        "casiafasd",
+        "casia-fasd",
         "database",
         preferred_package="bob.pad.face",
         package_prefix="bob.pad.",
@@ -208,14 +210,14 @@ def test_casia_fasd():
 
 
 def test_casia_surf():
-    casia_surf = bob.bio.base.load_resource(
-        "casiasurf",
-        "database",
-        preferred_package="bob.pad.face",
-        package_prefix="bob.pad.",
-    )
-
     try:
+        casia_surf = bob.bio.base.load_resource(
+            "casia-surf",
+            "database",
+            preferred_package="bob.pad.face",
+            package_prefix="bob.pad.",
+        )
+
         assert len(casia_surf.samples()) == 96584
         assert len(casia_surf.samples(purposes="real")) == 29394
         assert len(casia_surf.samples(purposes="attack")) == 67190
@@ -281,9 +283,9 @@ def test_swan():
         raise SkipTest(e)
 
 
-def test_oulunpu():
+def test_oulu_npu():
     database = bob.bio.base.load_resource(
-        "oulunpu",
+        "oulu-npu",
         "database",
         preferred_package="bob.pad.face",
         package_prefix="bob.pad.",
diff --git a/doc/baselines.rst b/doc/baselines.rst
index d389047a..b5a6b19f 100644
--- a/doc/baselines.rst
+++ b/doc/baselines.rst
@@ -60,7 +60,7 @@ Documentation for each resource is available on the section
 
    .. code-block:: sh
 
-      $ bob config set bob.db.replaymobile.directory /path/to/replaymobile-database/
+      $ bob config set bob.db.replay_mobile.directory /path/to/replaymobile-database/
 
    Notice it is rather important to correctly configure the database as
    described above, otherwise ``bob.pad.base`` will not be able to correctly
@@ -79,7 +79,7 @@ Baselines on REPLAY-ATTACK database
 This section summarizes the results of baseline face PAD experiments on the
 REPLAY-ATTACK (`replay-attack`_) database. The description of the
 database-related settings, which are used to run face PAD baselines on the
-Replay-Attack is given here :ref:`bob.pad.face.resources.databases.replay`. To
+Replay-Attack is given here :ref:`bob.pad.face.resources.databases.replay_attack`. To
 understand the settings in more detail you can check the corresponding
 configuration file: ``bob/pad/face/config/replay_attack.py``.
 
@@ -176,7 +176,7 @@ which should give you::
    ===================  ==============  ==============
 
 
-.. _bob.pad.face.baselines.oulunpu:
+.. _bob.pad.face.baselines.oulu_npu:
 
 Baselines on OULU-NPU database
 --------------------------------------
@@ -184,9 +184,9 @@ Baselines on OULU-NPU database
 This section summarizes the results of baseline face PAD experiments on the
 `OULU-NPU`_ database. The description of the database-related settings,
 which are used to run face PAD baselines on the OULU-NPU is given here
-:ref:`bob.pad.face.resources.databases.oulunpu`. To understand the
+:ref:`bob.pad.face.resources.databases.oulu_npu`. To understand the
 settings in more detail you can check the corresponding configuration file :
-``bob/pad/face/config/oulunpu.py``.
+``bob/pad/face/config/oulu_npu.py``.
 
 
 Deep-Pix-BiS Baseline
@@ -194,7 +194,7 @@ Deep-Pix-BiS Baseline
 
 .. code-block:: sh
 
-   $ bob pad run-pipeline -vv oulunpu deep-pix-bis --output <OUTPUT> --dask-client <CLIENT>
+   $ bob pad run-pipeline -vv oulu-npu deep-pix-bis --output <OUTPUT> --dask-client <CLIENT>
 
 This baseline reports scores per frame. To obtain scores per video, you can run::
 
diff --git a/doc/resources.rst b/doc/resources.rst
index 32d4bf64..f6c59bb7 100644
--- a/doc/resources.rst
+++ b/doc/resources.rst
@@ -26,7 +26,7 @@ The configuration files contain at least the following arguments of the
     * ``groups``
 
 
-.. _bob.pad.face.resources.databases.replay:
+.. _bob.pad.face.resources.databases.replay_attack:
 
 Replay-Attack Database
 ================================================================================
@@ -45,12 +45,12 @@ Replay-Mobile Database
 
 
 
-.. _bob.pad.face.resources.databases.oulunpu:
+.. _bob.pad.face.resources.databases.oulu_npu:
 
 OULU-NPU Database
 ================================================================================
 
-.. automodule:: bob.pad.face.config.oulunpu
+.. automodule:: bob.pad.face.config.oulu_npu
    :members:
 
 
diff --git a/setup.py b/setup.py
index 71ab6c23..8a9cc734 100644
--- a/setup.py
+++ b/setup.py
@@ -55,14 +55,13 @@ setup(
         "console_scripts": [],
         # registered databases:
         "bob.pad.database": [
+            "casia-fasd = bob.pad.face.config.casia_fasd:database",
+            "casia-surf = bob.pad.face.config.casia_surf:database",
+            "mask-attack = bob.pad.face.config.mask_attack:database",
+            "oulu-npu = bob.pad.face.config.oulu_npu:database",
             "replay-attack = bob.pad.face.config.replay_attack:database",
             "replay-mobile = bob.pad.face.config.replay_mobile:database",
-            "casiafasd = bob.pad.face.config.casiafasd:database",
-            "maskattack = bob.pad.face.config.maskattack:database",
-            "casiasurf-color = bob.pad.face.config.casiasurf_color:database",
-            "casiasurf = bob.pad.face.config.casiasurf:database",
             "swan = bob.pad.face.config.swan:database",
-            "oulunpu = bob.pad.face.config.oulunpu:database",
         ],
         # registered pipelines:
         "bob.pad.pipeline": [
@@ -72,13 +71,13 @@ setup(
         # registered configurations:
         "bob.pad.config": [
             # databases
+            "casia-fasd = bob.pad.face.config.casia_fasd",
+            "casia-surf = bob.pad.face.config.casia_surf",
+            "mask-attack = bob.pad.face.config.mask_attack",
+            "oulu-npu = bob.pad.face.config.oulu_npu",
             "replay-attack = bob.pad.face.config.replay_attack",
             "replay-mobile = bob.pad.face.config.replay_mobile",
-            "casiafasd = bob.pad.face.config.casiafasd",
-            "maskattack = bob.pad.face.config.maskattack",
-            "casiasurf = bob.pad.face.config.casiasurf",
             "swan = bob.pad.face.config.swan",
-            "oulunpu = bob.pad.face.config.oulunpu",
             # pipelines
             "svm-frames = bob.pad.face.config.svm_frames",
             "deep-pix-bis = bob.pad.face.config.deep_pix_bis",
-- 
GitLab