def measure(ChapX, expt_name, dbnames, *args): """ CommandLine: python -m wbia Chap3.measure all --dbs=GZ_Master1 python -m wbia Chap3.measure all --dbs=PZ_Master1 python -m wbia Chap3.measure nsum --dbs=GZ_Master1,PZ_Master1 python -m wbia Chap3.measure foregroundness --dbs=GZ_Master1,PZ_Master1 # Example: # >>> # Script # >>> from wbia.scripts.thesis import * # NOQA # >>> expt_name = ut.get_argval('--expt', type_=str, pos=1) # >>> dbnames = ut.get_argval(('--dbs', '--db'), type_=list, default=[]) # >>> ChapX.measure(expt_name, dbnames) """ logger.info('expt_name = %r' % (expt_name, )) logger.info('dbnames = %r' % (dbnames, )) logger.info('args = %r' % (args, )) dbnames = ut.smart_cast(dbnames, list) for dbname in dbnames: self = ChapX(dbname) if expt_name == 'all': if self.ibs is None: self._setup() # self._precollect() self.measure_all(*args) else: getattr(self, 'measure_' + expt_name)(*args) if len(dbnames) == 1: return self
def qt_set_data(self, qvar): """ Sets backend data using QVariants """ if VERBOSE_CONFIG: print('[Wrapper] Attempting to set data') assert self.is_leaf(), 'must be a leaf' if self.parent is None: raise Exception('[Pref.qtleaf] Cannot set root preference') if self.qt_is_editable(): new_val = '[Pref.qtleaf] BadThingsHappenedInPref' try: type_ = self.type_ new_val = ut.smart_cast(qvar, type_) except Exception as ex: ut.printex(ex, keys=['qvar', 'type_']) raise if VERBOSE_CONFIG: print('[Wrapper] new_val=%r' % new_val) # print('[Wrapper] type(new_val)=%r' % type(new_val)) # print('L____ [config.qt_set_leaf_data]') # TODO Add ability to set a callback function when certain # preferences are changed. self.set_value(new_val) if VERBOSE_CONFIG: print('[Wrapper] Accepted new value.') return True
def cast_from_qt(var, type_=None): """ Casts a QVariant to data """ if SIMPLE_CASTING: if var is None: return None if type_ is not None: reprstr = __STR__(var) return ut.smart_cast(reprstr, type_) return var
def draw(ChapX, expt_name, dbnames, *args): """ CommandLine: python -m wbia Chap3.draw nsum --dbs=GZ_Master1,PZ_Master1 python -m wbia Chap3.draw foregroundness --dbs=GZ_Master1,PZ_Master1 --diskshow python -m wbia Chap3.draw kexpt --dbs=GZ_Master1 --diskshow python -m wbia Chap4.draw importance GZ_Master1 python -m wbia Chap4.draw hard_cases GZ_Master1,PZ_Master1 match_state,photobomb_state --diskshow # Example: # >>> # Script # >>> from wbia.scripts.thesis import * # NOQA # >>> expt_name = ut.get_argval('--expt', type_=str, pos=1) # >>> dbnames = ut.get_argval(('--dbs', '--db'), type_=list, default=[]) # >>> Chap3.draw(expt_name, dbnames) """ logger.info('expt_name = %r' % (expt_name, )) logger.info('dbnames = %r' % (dbnames, )) logger.info('args = %r' % (args, )) dbnames = ut.smart_cast(dbnames, list) if len(dbnames) > 1: # parallelize drawing tasks from concurrent import futures multi_args = [ut.smart_cast(a, list) for a in args] with futures.ProcessPoolExecutor(max_workers=6) as executor: list( futures.as_completed([ executor.submit(ChapX.draw_serial, expt_name, *fsargs) for fsargs in ut.product(dbnames, *multi_args) ])) logger.info('\n\n Completed multiple tasks') else: ChapX.draw_serial(expt_name, dbnames, *args)
def draw_serial(ChapX, expt_name, dbnames, *args): dbnames = ut.smart_cast(dbnames, list) mpl.rcParams.update(TMP_RC) for dbname in dbnames: self = ChapX(dbname) if expt_name == 'all': self.draw_all() else: draw_func = getattr(self, 'draw_' + expt_name, None) if draw_func is None: draw_func = getattr(self, 'write_' + expt_name, None) if draw_func is None: raise ValueError('Cannot find a way to draw ' + expt_name) fpath = draw_func(*args) if ut.get_argflag('--diskshow'): if isinstance(fpath, six.text_type): ut.startfile(fpath) elif fpath is not None: fpath_list = fpath for fpath in fpath_list: ut.startfile(fpath)
def qt_set_data(self, qvar): """ Sets backend data using QVariants """ if VERBOSE_CONFIG: print('[Wrapper] Attempting to set data') if not self.is_leaf(): raise Exception(' must be a leaf') if self.parent is None: raise Exception('[Pref.qtleaf] Cannot set root preference') if self.qt_is_editable(): new_val = '[Pref.qtleaf] BadThingsHappenedInPref' new_val = ut.smart_cast(qvar, self.type_) if VERBOSE_CONFIG: print('[Wrapper] new_val=%r' % new_val) # print('[Wrapper] type(new_val)=%r' % type(new_val)) # print('L____ [config.qt_set_leaf_data]') # TODO Add ability to set a callback function when certain # preferences are changed. self.value = new_val self.parent.config[self.name] = new_val if VERBOSE_CONFIG: print('[Wrapper] Accepted new value.') return True
def rsync_ibsdb_main(): import sys default_user = ut.get_user_name() # default_db = 'MUGU_Master' default_db = None # Get positional commandline arguments cmdline_varags = ut.get_cmdline_varargs() if len(cmdline_varags) > 0 and cmdline_varags[0] == 'rsync': # ignore rsync as first command (b/c we are calling from # ibeis.__main__) cmdline_varags = cmdline_varags[1:] valid_modes = ['push', 'pull', 'list'] if len(cmdline_varags) < 1: print('Usage: ' # 'python -m ibeis.scripts.rsync_ibeisdb' 'python -m ibeis rsync' '%s --db <db=%s> --user <user=%s>' % ( valid_modes, default_db, default_user, )) sys.exit(1) varargs_dict = dict(enumerate(cmdline_varags)) mode = varargs_dict.get(0, None) default_db = varargs_dict.get(1, None) user = ut.get_argval('--user', type_=str, default=default_user) port = ut.get_argval('--port', type_=int, default=22) dbnames = ut.get_argval(('--db', '--dbs', '--dbname'), type_=str, default=default_db) dbnames = ut.smart_cast(dbnames, list) workdir = ut.get_argval(('--workdir'), type_=str, default=None, help_='local work dir override') dry_run = ut.get_argflag(('--dryrun', '--dry-run', '--dry')) assert mode in valid_modes, 'mode=%r must be in %r' % (mode, valid_modes) remote_key = ut.get_argval('--remote', type_=str, default='hyrule') remote_map = { 'hyrule': 'hyrule.cs.rpi.edu', 'pachy': 'pachy.cs.uic.edu', 'lewa': '41.203.223.178', 'lev': 'lev.cs.rpi.edu', } remote_workdir_map = { 'hyrule': '/raid/work', 'pachy': '/home/shared_ibeis/data/work', 'lewa': '/data/ibeis', 'lev': '/media/hdd/work', } if ':' in remote_key: remote_key_, remote_workdir = remote_key.split(':') else: remote_key_ = remote_key if remote_key not in remote_workdir_map: import warnings warnings.warn('Workdir not specified for remote') remote_workdir = remote_workdir_map.get(remote_key, '') remote = remote_map.get(remote_key_, remote_key_) remote_uri = user + '@' + remote + ':' + remote_workdir if mode == 'list': print('remote = %r' % (remote, )) print('need to list') remote_paths = ut.list_remote(remote_uri) print('REMOTE LS -- TODO need to get only ibeis dirs') print('\n'.join(remote_paths)) elif mode in ['push', 'pull']: print('dbnames = {!r}'.format(dbnames)) for dbname in ut.ProgIter(dbnames, label='sync db'): ut.change_term_title('RSYNC IBEISDB %r' % (dbname, )) sync_ibeisdb(remote_uri, dbname, mode, workdir, port, dry_run)