Source code for ibeis.tests.test_ibs_getters

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
"""
python ibeis/tests/test_ibs_getters.py

"""
# TODO: ADD COPYRIGHT TAG
from __future__ import absolute_import, division, print_function
# Python
import multiprocessing
# Tools
import utool
#IBEIS
import numpy as np
print, print_, printDBG, rrr, profile = utool.inject(
    __name__, '[TEST_IBS_GETTERS]')


[docs]def TEST_IBS_GETTERS(ibs=None): """ >>> import ibeis >>> main_locals = ibeis.main(defaultdb='testdb0', gui=False) >>> ibs = main_locals['ibs'] # IBEIS Control >>> test_locals = utool.run_test(TEST_IBS_GETTERS, ibs) """ if ibs is None: print('ibs is none') gid_list = ibs.get_valid_gids() aid_list = ibs.get_valid_aids() # Ensure we grab an even number of aids aid_list = aid_list[0:(len(aid_list) // 2) * 2] aid_scalar = aid_list[0] aid_numpy = np.array(aid_list).reshape((len(aid_list) / 2, 2)) # tests that scalar, list, and numpy getters are working correctly bboxes_list = ibs.get_annot_bboxes(aid_list) bboxes_scalar = ibs.get_annot_bboxes(aid_scalar) bboxes_numpy = ibs.get_annot_bboxes(aid_numpy) kpts_list = ibs.get_annot_kpts(aid_list) kpts_scalar = ibs.get_annot_kpts(aid_scalar) kpts_numpy = ibs.get_annot_kpts(aid_numpy) # Test lazy (noneager eval) fid_list = ibs.get_annot_feat_rowids(aid_list, eager=True) assert isinstance(fid_list, list), 'should be a list' utool.DEBUG2 = True fid_gen = ibs.get_annot_feat_rowids(aid_list, eager=False) utool.DEBUG2 = False import types assert isinstance(fid_gen, types.GeneratorType) fid_list_ = list(fid_gen) assert len(list(fid_gen)) == 0, 'generator should be used up' assert fid_list == fid_list_, 'sql generators not working' #from ibeis.constants import FEATURE_TABLE #eager = False #colnames = ('feature_sifts',) #tblname = FEATURE_TABLE #id_iter = fid_list #id_colname = 'rowid' #desc_list = ibs.dbcache.get(FEATURE_TABLE, ('feature_sifts',), fid_list, nInput=len(fid_list), eager=eager) #""" #%timeit list(ibs.dbcache.get(FEATURE_TABLE, ('feature_sifts',), fid_list, nInput=len(fid_list), eager=False)) #%timeit ibs.dbcache.get(FEATURE_TABLE, ('feature_sifts',), fid_list, nInput=len(fid_list), eager=True) #""" #utool.embed() def assert_getter_output(list_, scalar, numpy_, lbl=''): item1 = list_[0] item2 = scalar item3 = numpy_[0, 0] assert np.all(np.array(item1) == np.array(item2)), 'getters are broken' assert np.all(np.array(item2) == np.array(item3)), 'getters are broken' print(lbl + ' passed') assert_getter_output(bboxes_list, bboxes_scalar, bboxes_numpy, lbl='bboxes') assert_getter_output(kpts_list, kpts_scalar, kpts_numpy, lbl='kpts') return locals()
if __name__ == '__main__': multiprocessing.freeze_support() # For win32 import ibeis main_locals = ibeis.main(defaultdb='testdb0', gui=False) ibs = main_locals['ibs'] # IBEIS Control test_locals = utool.run_test(TEST_IBS_GETTERS, ibs) execstr = utool.execstr_dict(test_locals, 'test_locals') exec(execstr)