Source code for bob.db.casiasurf.query

#!/usr/bin/env python
# encoding: utf-8

import os
from bob.db.base import utils
from .models import *

from .driver import Interface
INFO = Interface()
SQLITE_FILE = INFO.files()[0]

import bob.db.base

[docs]class Database(bob.db.base.SQLiteDatabase): """ Class representing the database See parent class `:py:class:bob.db.base.SQLiteDatabase` for more details ... Attributes ---------- original_directory: str Path where the database is stored original_extension: str Extension of files in the database annotation_directory: str Path where the annotations are stored annotation_extension: str Extension of anootation files """ def __init__(self, original_directory=None, original_extension=None, annotation_directory=None, annotation_extension=None, protocol='all'): """ Init function Parameters ---------- original_directory: str Path where the database is stored original_extension: str Extension of files in the database annotation_directory: str Path where the annotations are stored annotation_extension: str Extension of annotation files """ super(Database, self).__init__(SQLITE_FILE, ImageFile, original_directory, original_extension) self.annotation_directory = annotation_directory self.annotation_extension = annotation_extension self.protocol = protocol
[docs] def groups(self, protocol=None): """Returns the names of all registered groups Parameters ---------- protocol: str ignored, since the group are the same across protocols. """ return ProtocolPurpose.group_choices
[docs] def purposes(self): """Returns purposes """ return ProtocolPurpose.purpose_choices
[docs] def objects(self, purposes=None, groups=None): """Returns a set of Samples for the specific query by the user. Note that a sample may contain up to 3 modalities (color, infrared and depth) The protocol specifies which modality(ies) should be loaded Parameters ---------- purposes: str or tuple The purposes required to be retrieved ('real', 'attack') or a tuple with several of them. If 'None' is given (this is the default), it is considered the same as a tuple with all possible values. groups: str or tuple One of the groups ('dev', 'eval', 'train') or a tuple with several of them. If 'None' is given (this is the default), it is considered the same as a tuple with all possible values. Returns ------- list: A list of samples which have the given properties. """ from sqlalchemy import and_ purposes = self.check_parameters_for_validity(purposes, "purpose", self.purposes()) groups = self.check_parameters_for_validity(groups, "group", self.groups()) q = self.query(Sample)\ .join((ProtocolPurpose, Sample.protocolPurposes))\ .filter(ProtocolPurpose.group.in_(groups))\ .filter(ProtocolPurpose.purpose.in_(purposes))\ .order_by(Sample.id) retval = list(set(q)) return list(set(retval))