Source code for bob.db.atnt.models
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
# @author: Manuel Guenther <Manuel.Guenther@idiap.ch>
# @date: Wed Oct 17 15:59:25 CEST 2012
#
# Copyright (C) 2011-2012 Idiap Research Institute, Martigny, Switzerland
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
This file defines simple Client and File interfaces that should be comparable
with other bob.db databases.
"""
import os
import bob
import bob.db.base
[docs]class Client:
"""The clients of this database contain ONLY client ids. Nothing special."""
m_valid_client_ids = set(range(1, 41))
def __init__(self, client_id):
assert client_id in self.m_valid_client_ids
self.id = client_id
[docs]class File (bob.db.base.File):
"""Files of this database are composed from the client id and a file id."""
m_valid_file_ids = set(range(1, 11))
def __init__(self, client_id, client_file_id):
assert client_file_id in self.m_valid_file_ids
# compute the file id on the fly
file_id = (client_id - 1) * len(self.m_valid_file_ids) + client_file_id
# generate path on the fly
path = os.path.join("s" + str(client_id), str(client_file_id))
# call base class constructor
bob.db.base.File.__init__(self, file_id=file_id, path=path)
self.client_id = client_id
@staticmethod
[docs] def from_file_id(file_id):
"""Returns the File object for a given file_id"""
client_id = int((file_id - 1) / len(File.m_valid_file_ids) + 1)
client_file_id = (file_id - 1) % len(File.m_valid_file_ids) + 1
return File(client_id, client_file_id)
@staticmethod
[docs] def from_path(path):
"""Returns the File object for a given path"""
# get the last two paths
paths = os.path.split(path)
file_name = os.path.splitext(paths[1])[0]
paths = os.path.split(paths[0])
assert paths[1][0] == 's'
return File(int(paths[1][1:]), int(file_name))