Source code for ibeis.tests.reset_testdbs

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
"""
downloads standard test datasets. can delete them as well
"""
# TODO: ADD COPYRIGHT TAG
from __future__ import absolute_import, division, print_function, unicode_literals
from ibeis.init import sysres
from ibeis.dbio import ingest_database
from os.path import join
import ibeis
import six
from itertools import cycle
import utool as ut

__test__ = False  # This is not a test


[docs]def testdb2_stuff(): """ tar -zcvf testdb2.tar.gz testdb2/ """ import ibeis ibs = ibeis.opendb('testdb2') #ibs.ensure_contributor_rowids() gid_list = ibs.get_valid_gids() # Group gids by species image_species_list = ut.get_list_column( ibs.unflat_map(ibs.get_annot_species_rowids, ibs.get_image_aids(gid_list)), 0) new_contrib_rowid1 = ibs.add_new_temp_contributor(offset=len(ibs.get_valid_contrib_rowids())) new_contrib_rowid2 = ibs.add_new_temp_contributor(offset=len(ibs.get_valid_contrib_rowids())) gids1, gids2 = list(ut.group_items(gid_list, image_species_list).values()) party_rowids = ibs.add_party(['TestCar1', 'TestCar2']) partyid1, partyid2 = party_rowids ibs.set_image_contributor_rowid(gids1, [new_contrib_rowid1] * len(gids1)) ibs.set_image_contributor_rowid(gids2, [new_contrib_rowid2] * len(gids2)) ibs.set_image_party_rowids(gids1, [partyid1] * len(gids1)) ibs.set_image_party_rowids(gids2, [partyid2] * len(gids2)) #image_contrib_rowid_list = ibs.get_image_contributor_rowid(gid_list)
[docs]def get_testdata_dir(ensure=True, key='testdb1'): """ Gets test img directory and downloads it if it doesn't exist """ testdata_map = { 'testdb1': 'https://lev.cs.rpi.edu/public/data/testdata.zip', } zipped_testdata_url = testdata_map[key] testdata_dir = ut.grab_zipped_url(zipped_testdata_url, ensure=ensure) return testdata_dir # Convert stanadardized names to true names
TEST_DBNAMES_MAP = { 'nauts': 'NAUT_test', 'mtest': 'PZ_MTEST', 'testdb0': 'testdb0', 'testdb1': 'testdb1', 'testdb2': 'testdb2', 'testdb_guiall': 'testdb_guiall', 'wds': 'wd_peter2', }
[docs]def delete_dbdir(dbname): ut.delete(join(ibeis.sysres.get_workdir(), dbname), ignore_errors=False)
[docs]def ensure_smaller_testingdbs(): """ Makes the smaller test databases """ def make_testdb0(): """ makes testdb0 """ def get_test_gpaths(ndata=None, names=None, **kwargs): # Read ndata from args or command line """ DEPRICATE """ ndata_arg = ut.get_argval('--ndata', type_=int, default=None, help_='use --ndata to specify bigger data') if ndata_arg is not None: ndata = ndata_arg imgdir = get_testdata_dir(**kwargs) gpath_list = sorted(list(ut.list_images(imgdir, full=True, recursive=True))) # Get only the gpaths of certain names if names is not None: gpath_list = [gpath for gpath in gpath_list if ut.basename_noext(gpath) in names] # Get a some number of test images if ndata is not None: gpath_cycle = cycle(gpath_list) if six.PY2: gpath_list = [gpath_cycle.next() for _ in range(ndata)] else: gpath_list = [next(gpath_cycle) for _ in range(ndata)] return gpath_list workdir = ibeis.sysres.get_workdir() TESTDB0 = join(workdir, 'testdb0') main_locals = ibeis.main(dbdir=TESTDB0, gui=False, allow_newdir=True) ibs = main_locals['ibs'] assert ibs is not None, str(main_locals) gpath_list = list(map(ut.unixpath, get_test_gpaths())) #print('[RESET] gpath_list=%r' % gpath_list) gid_list = ibs.add_images(gpath_list) # NOQA valid_gids = ibs.get_valid_gids() valid_aids = ibs.get_valid_aids() try: assert len(valid_aids) == 0, 'there are more than 0 annotations in an empty database!' except Exception as ex: ut.printex(ex, key_list=['valid_aids']) raise gid_list = valid_gids[0:1] bbox_list = [(0, 0, 100, 100)] aid = ibs.add_annots(gid_list, bbox_list=bbox_list)[0] #print('[RESET] NEW RID=%r' % aid) aids = ibs.get_image_aids(gid_list)[0] try: assert aid in aids, ('bad annotation adder: aid = %r, aids = %r' % (aid, aids)) except Exception as ex: ut.printex(ex, key_list=['aid', 'aids']) raise get_testdata_dir(True) if not ut.checkpath(join(ibeis.sysres.get_workdir(), 'testdb0'), verbose=True): print("\n\nMAKE TESTDB0\n\n") make_testdb0() if not ut.checkpath(join(ibeis.sysres.get_workdir(), 'testdb1'), verbose=True): print("\n\nMAKE TESTDB1\n\n") ingest_database.ingest_standard_database('testdb1')
[docs]def reset_testdbs(**kwargs): # Step 0) Parse Args default_args = {'reset_' + key: False for key in six.iterkeys(TEST_DBNAMES_MAP)} default_args['reset_all'] = False default_args.update(kwargs) argdict = ut.parse_dict_from_argv(default_args) if not any(list(six.itervalues(argdict))): # Default behavior is to reset the small dbs argdict['reset_testdb0'] = True argdict['reset_testdb1'] = True argdict['reset_testdb_guiall'] = True # Step 1) Delete DBs to be Reset for key, dbname in six.iteritems(TEST_DBNAMES_MAP): if argdict.get('reset_' + key, False) or argdict['reset_all']: delete_dbdir(dbname) # Step 3) Ensure DBs that dont exist ensure_smaller_testingdbs() workdir = ibeis.sysres.get_workdir() if not ut.checkpath(join(workdir, 'PZ_MTEST'), verbose=True): ibeis.ensure_pz_mtest() if not ut.checkpath(join(workdir, 'NAUT_test'), verbose=True): ibeis.ensure_nauts() if not ut.checkpath(join(workdir, 'wd_peter2'), verbose=True): ibeis.ensure_wilddogs() if not ut.checkpath(join(workdir, 'testdb2'), verbose=True): ibeis.init.sysres.ensure_testdb2() # Step 4) testdb1 becomes the main database workdir = ibeis.sysres.get_workdir() TESTDB1 = join(workdir, 'testdb1') sysres.set_default_dbdir(TESTDB1)
[docs]def reset_mtest(): r""" CommandLine: python -m ibeis --tf reset_mtest Example: >>> # ENABLE_DOCTEST >>> from ibeis.tests.reset_testdbs import * # NOQA >>> result = reset_mtest() """ # Hack, this function does not have a utool main return reset_testdbs(reset_mtest=True)
if __name__ == '__main__': r""" CommandLine: python -m ibeis.tests.reset_testdbs Example: >>> # ENABLE_DOCTEST >>> from ibeis.tests.reset_testdbs import * # NOQA >>> result = reset_testdbs() >>> # verify results >>> print(result) """ import multiprocessing multiprocessing.freeze_support() # For windows #ibeis._preload() reset_testdbs()