def make_qt_dialog(cfg, parent=None, title='Edit Config', msg='Confim'): import guitool as gt gt.ensure_qapp() # must be ensured before any embeding dlg = gt.ConfigConfirmWidget.as_dialog( title=title, msg=msg, config=cfg) dlg.resize(700, 500) dlg.show() return dlg
def simple_thumbnail_widget(): r""" Very simple example to test thumbnails CommandLine: python -m guitool.api_item_model --test-simple_thumbnail_widget --show Example: >>> # ENABLE_DOCTEST >>> import guitool >>> from guitool.api_item_model import * # NOQA >>> guitool.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_thumbnail_widget() >>> ut.quit_if_noshow() >>> wgt.show() >>> guitool.qtapp_loop(wgt, frequency=100, init_signals=True) """ import guitool guitool.ensure_qapp() col_name_list = ['rowid', 'image_name', 'thumb'] col_types_dict = { 'thumb': 'PIXMAP', } def thumb_getter(id_, thumbsize=128): """ Thumb getters must conform to thumbtup structure """ #print(id_) return ut.grab_test_imgpath(id_) #return None col_getter_dict = { 'rowid': [1, 2, 3], 'image_name': ['lena.png', 'carl.jpg', 'patsy.jpg'], 'thumb': thumb_getter } col_ider_dict = { 'thumb': 'image_name', } col_setter_dict = {} editable_colnames = [] sortby = 'rowid' def get_thumb_size(): return 128 col_width_dict = {} col_bgrole_dict = {} api = guitool.CustomAPI( col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict) headers = api.make_headers(tblnice='Simple Example') wgt = guitool.APIItemWidget() wgt.change_headers(headers) #guitool.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) return wgt
def qt_edge_reviewer(infr, edge=None): import guitool as gt gt.ensure_qapp() from ibeis.viz import viz_graph2 infr.manual_wgt = viz_graph2.AnnotPairDialog( edge=edge, infr=infr, standalone=False, cfgdict=infr.verifier_params) if edge is not None: # infr.emit_manual_review(edge, priority=None) infr.manual_wgt.seek(0) # infr.manual_wgt.show() return infr.manual_wgt
def qt_inspect_gui(qres, ibs, ranks_lt=6, qreq_=None, name_scoring=False): print('[qres] qt_inspect_gui') from ibeis.gui import inspect_gui import guitool guitool.ensure_qapp() qaid2_qres = {qres.qaid: qres} print('[inspect_matches] make_qres_widget') qres_wgt = inspect_gui.QueryResultsWidget(ibs, qaid2_qres, ranks_lt=ranks_lt, name_scoring=name_scoring, qreq_=qreq_) print('[inspect_matches] show') qres_wgt.show() print('[inspect_matches] raise') qres_wgt.raise_() return qres_wgt
def launch_review_matches_interface(ibs, cm_list, dodraw=False, filter_reviewed=False): """ TODO: move to a more general function """ from ibeis.gui import inspect_gui gt.ensure_qapp() #backend_callback = back.front.update_tables backend_callback = None review_cfg = dict(filter_reviewed=filter_reviewed) qres_wgt = inspect_gui.QueryResultsWidget(ibs, cm_list, callback=backend_callback, review_cfg=review_cfg) if dodraw: qres_wgt.show() qres_wgt.raise_() return qres_wgt
def simple_api_item_widget(): r""" Very simple example of basic APIItemWidget widget with CustomAPI CommandLine: python -m guitool.api_item_widget --test-simple_api_item_widget python -m guitool.api_item_widget --test-simple_api_item_widget --show Example: >>> # ENABLE_DOCTEST >>> from guitool.api_item_widget import * # NOQA >>> import guitool >>> guitool.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_api_item_widget() >>> ut.quit_if_noshow() >>> wgt.show() >>> guitool.qtapp_loop(wgt, frequency=100) """ import guitool guitool.ensure_qapp() col_name_list = ['col1', 'col2'] col_types_dict = {} col_getter_dict = { 'col1': [1, 2, 3], 'col2': ['a', 'b', 'c'], } col_ider_dict = {} col_setter_dict = {} editable_colnames = [] sortby = 'col1' get_thumb_size = lambda: 128 # HACK col_width_dict = {} col_bgrole_dict = {} api = guitool.CustomAPI( col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict) headers = api.make_headers(tblnice='Simple Example') wgt = guitool.APIItemWidget() wgt.change_headers(headers) #guitool.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) return wgt
def simple_api_item_widget(): r""" Very simple example of basic APIItemWidget widget with CustomAPI CommandLine: python -m guitool.api_item_widget --test-simple_api_item_widget python -m guitool.api_item_widget --test-simple_api_item_widget --show Example: >>> # ENABLE_DOCTEST >>> from guitool.api_item_widget import * # NOQA >>> import guitool >>> guitool.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_api_item_widget() >>> ut.quit_if_noshow() >>> wgt.show() >>> guitool.qtapp_loop(wgt, frequency=100) """ import guitool guitool.ensure_qapp() col_name_list = ['col1', 'col2'] col_types_dict = {} col_getter_dict = { 'col1': [1, 2, 3], 'col2': ['a', 'b', 'c'], } col_ider_dict = {} col_setter_dict = {} editable_colnames = [] sortby = 'col1' get_thumb_size = lambda: 128 # HACK col_width_dict = {} col_bgrole_dict = {} api = guitool.CustomAPI(col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict) headers = api.make_headers(tblnice='Simple Example') wgt = guitool.APIItemWidget() wgt.change_headers(headers) #guitool.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) return wgt
def make_test_result_custom_api(ibs, testres): import guitool guitool.ensure_qapp() cfgx = 0 cfgres_info = testres.cfgx2_cfgresinfo[cfgx] qaids = testres.qaids gt_aids = cfgres_info['qx2_gt_aid'] gf_aids = cfgres_info['qx2_gf_aid'] qx2_gt_timedelta = ibs.get_annot_pair_timdelta(qaids, gt_aids) qx2_gf_timedelta = ibs.get_annot_pair_timdelta(qaids, gf_aids) col_name_list = [ 'qaids', 'qx2_gt_aid', 'qx2_gf_aid', 'qx2_gt_timedelta', 'qx2_gf_timedelta', ] col_types_dict = {} col_getter_dict = {} col_getter_dict.update(**cfgres_info) col_getter_dict['qaids'] = testres.qaids col_getter_dict['qx2_gt_timedelta'] = qx2_gt_timedelta col_getter_dict['qx2_gf_timedelta'] = qx2_gf_timedelta col_bgrole_dict = {} col_ider_dict = {} col_setter_dict = {} editable_colnames = [] sortby = 'qaids' def get_thumb_size(): return 128 col_width_dict = {} custom_api = guitool.CustomAPI(col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict) #headers = custom_api.make_headers(tblnice='results') #print(ut.dict_str(headers)) wgt = guitool.APIItemWidget() wgt.connect_api(custom_api) return wgt
def make_test_result_custom_api(ibs, testres): import guitool guitool.ensure_qapp() cfgx = 0 cfgres_info = testres.cfgx2_cfgresinfo[cfgx] qaids = testres.qaids gt_aids = cfgres_info['qx2_gt_aid'] gf_aids = cfgres_info['qx2_gf_aid'] qx2_gt_timedelta = ibs.get_annot_pair_timdelta(qaids, gt_aids) qx2_gf_timedelta = ibs.get_annot_pair_timdelta(qaids, gf_aids) col_name_list = [ 'qaids', 'qx2_gt_aid', 'qx2_gf_aid', 'qx2_gt_timedelta', 'qx2_gf_timedelta', ] col_types_dict = {} col_getter_dict = {} col_getter_dict.update(**cfgres_info) col_getter_dict['qaids'] = testres.qaids col_getter_dict['qx2_gt_timedelta'] = qx2_gt_timedelta col_getter_dict['qx2_gf_timedelta'] = qx2_gf_timedelta col_bgrole_dict = {} col_ider_dict = {} col_setter_dict = {} editable_colnames = [] sortby = 'qaids' def get_thumb_size(): return 128 col_width_dict = {} custom_api = guitool.CustomAPI( col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict) #headers = custom_api.make_headers(tblnice='results') #print(ut.dict_str(headers)) wgt = guitool.APIItemWidget() wgt.connect_api(custom_api) return wgt
def setup_dummy_menus(): r""" CommandLine: python -m ibeis.gui.guimenus --test-setup_dummy_menus Example: >>> # DISABLE_DOCTEST >>> from ibeis.gui.guimenus import * # NOQA >>> result = setup_dummy_menus() >>> print(result) """ #import unittest import guitool as gt gt.ensure_qapp() # must be ensured before any embeding mainwin = gt.QtWidgets.QMainWindow() back = DummyBack() import mock mainwin.expand_names_tree = mock.Mock setup_menus(mainwin, back) mainwin.show() mainwin.resize(600, 100) #ut.embed() gt.qtapp_loop(mainwin, frequency=100)
def setup_dummy_menus(): r""" CommandLine: python -m ibeis.gui.guimenus --test-setup_dummy_menus Example: >>> # DISABLE_DOCTEST >>> from ibeis.gui.guimenus import * # NOQA >>> result = setup_dummy_menus() >>> print(result) """ #import unittest import guitool guitool.ensure_qapp() # must be ensured before any embeding mainwin = guitool.QtGui.QMainWindow() back = DummyBack() import mock mainwin.expand_names_tree = mock.Mock setup_menus(mainwin, back) mainwin.show() mainwin.resize(600, 100) #ut.embed() guitool.qtapp_loop(mainwin, frequency=100)
def make_metadata_custom_api(metadata): r""" CommandLine: python -m ibeis.expt.experiment_drawing --test-make_metadata_custom_api --show Example: >>> # DISABLE_DOCTEST >>> from ibeis.expt.experiment_drawing import * # NOQA >>> import guitool >>> guitool.ensure_qapp() >>> metadata_fpath = '/media/raid/work/Elephants_drop1_ears/_ibsdb/figures/result_metadata.shelf' >>> metadata = ResultMetadata(metadata_fpath, autoconnect=True) >>> wgt = make_metadata_custom_api(metadata) >>> ut.quit_if_noshow() >>> wgt.show() >>> wgt.raise_() >>> guitool.qtapp_loop(wgt, frequency=100) """ import guitool from guitool.__PYQT__ import QtCore class MetadataViewer(guitool.APIItemWidget): def __init__(wgt, parent=None, tblnice='Result Metadata Viewer', **kwargs): guitool.APIItemWidget.__init__(wgt, parent=parent, tblnice=tblnice, **kwargs) wgt.connect_signals_and_slots() @guitool.slot_(QtCore.QModelIndex) def _on_doubleclick(wgt, qtindex): print('[wgt] _on_doubleclick: ') col = qtindex.column() if wgt.api.col_edit_list[col]: print('do nothing special for editable columns') return model = qtindex.model() colname = model.get_header_name(col) if colname.endswith('fpath'): print('showing fpath') fpath = model.get_header_data(colname, qtindex) ut.startfile(fpath) def connect_signals_and_slots(wgt): #wgt.view.clicked.connect(wgt._on_click) wgt.view.doubleClicked.connect(wgt._on_doubleclick) #wgt.view.pressed.connect(wgt._on_pressed) #wgt.view.activated.connect(wgt._on_activated) guitool.ensure_qapp() #cfgstr_list = metadata col_name_list, column_list = metadata.get_square_data() # Priority of column names colname_priority = [ 'qaids', 'qx2_gt_rank', 'qx2_gt_timedelta', 'qx2_gf_timedelta', 'analysis_fpath', 'qx2_gt_raw_score', 'qx2_gf_raw_score' ] colname_priority += sorted( ut.setdiff_ordered(col_name_list, colname_priority)) sortx = ut.priority_argsort(col_name_list, colname_priority) col_name_list = ut.take(col_name_list, sortx) column_list = ut.take(column_list, sortx) col_lens = list(map(len, column_list)) print('col_name_list = %r' % (col_name_list, )) print('col_lens = %r' % (col_lens, )) assert len(col_lens) > 0, 'no columns' assert col_lens[0] > 0, 'no rows' assert all([len_ == col_lens[0] for len_ in col_lens]), 'inconsistant data' col_types_dict = {} col_getter_dict = dict(zip(col_name_list, column_list)) col_bgrole_dict = {} col_ider_dict = {} col_setter_dict = {} col_nice_dict = {name: name.replace('qx2_', '') for name in col_name_list} col_nice_dict.update({ 'qx2_gt_timedelta': 'GT TimeDelta', 'qx2_gf_timedelta': 'GF TimeDelta', 'qx2_gt_rank': 'GT Rank', }) editable_colnames = [] sortby = 'qaids' def get_thumb_size(): return 128 col_width_dict = {} custom_api = guitool.CustomAPI(col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, sort_reverse=True, col_width_dict=col_width_dict, col_nice_dict=col_nice_dict) #headers = custom_api.make_headers(tblnice='results') #print(ut.dict_str(headers)) wgt = MetadataViewer() wgt.connect_api(custom_api) return wgt
def demo_classes(pblm): r""" CommandLine: python -m ibeis.algo.verif.vsone demo_classes --saveparts --save=classes.png --clipwhite python -m ibeis.algo.verif.vsone demo_classes --saveparts --save=figures/classes.png --clipwhite --dpath=~/latex/crall-iccv-2017 Example: >>> # DISABLE_DOCTEST >>> from ibeis.algo.verif.vsone import * # NOQA >>> pblm = OneVsOneProblem.from_empty(defaultdb='PZ_PB_RF_TRAIN') >>> pblm.load_features() >>> pblm.load_samples() >>> pblm.build_feature_subsets() >>> pblm.demo_classes() >>> ut.show_if_requested() """ task_key = 'match_state' labels = pblm.samples.subtasks[task_key] pb_labels = pblm.samples.subtasks['photobomb_state'] classname_offset = { POSTV: 0, NEGTV: 0, INCMP: 0, } class_name = POSTV class_name = NEGTV class_name = INCMP feats = pblm.samples.X_dict['learn(sum,glob)'] offset = 0 class_to_edge = {} for class_name in labels.class_names: print('Find example of %r' % (class_name, )) # Find an example of each class (that is not a photobomb) pbflags = pb_labels.indicator_df['notpb'] flags = labels.indicator_df[class_name] assert np.all(pbflags.index == flags.index) flags = flags & pbflags ratio = feats['sum(ratio)'] if class_name == INCMP: # flags &= feats['global(delta_yaw)'] > 3 flags &= feats['global(delta_view)'] > 2 # flags &= feats['sum(ratio)'] > 0 if class_name == NEGTV: low = ratio[flags].max() flags &= feats['sum(ratio)'] >= low if class_name == POSTV: low = ratio[flags].median() / 2 high = ratio[flags].median() flags &= feats['sum(ratio)'] < high flags &= feats['sum(ratio)'] > low # flags &= pblm.samples.simple_scores[flags]['score_lnbnn_1vM'] > 0 idxs = np.where(flags)[0] print('Found %d candidates' % (len(idxs))) offset = classname_offset[class_name] idx = idxs[offset] series = labels.indicator_df.iloc[idx] assert series[class_name] edge = series.name class_to_edge[class_name] = edge import plottool as pt import guitool as gt gt.ensure_qapp() pt.qtensure() fnum = 1 pt.figure(fnum=fnum, pnum=(1, 3, 1)) pnum_ = pt.make_pnum_nextgen(1, 3) # classname_alias = { # POSTV: 'positive', # NEGTV: 'negative', # INCMP: 'incomparable', # } ibs = pblm.infr.ibs for class_name in class_to_edge.keys(): edge = class_to_edge[class_name] aid1, aid2 = edge # alias = classname_alias[class_name] print('class_name = %r' % (class_name, )) annot1 = ibs.annots([aid1])[0]._make_lazy_dict() annot2 = ibs.annots([aid2])[0]._make_lazy_dict() vt.matching.ensure_metadata_normxy(annot1) vt.matching.ensure_metadata_normxy(annot2) match = vt.PairwiseMatch(annot1, annot2) cfgdict = pblm.hyper_params.vsone_match.asdict() match.apply_all(cfgdict) pt.figure(fnum=fnum, pnum=pnum_()) match.show(show_ell=False, show_ori=False)
def make_metadata_custom_api(metadata): r""" CommandLine: python -m ibeis.expt.experiment_drawing --test-make_metadata_custom_api --show Example: >>> # DISABLE_DOCTEST >>> from ibeis.expt.experiment_drawing import * # NOQA >>> import guitool >>> guitool.ensure_qapp() >>> metadata_fpath = '/media/raid/work/Elephants_drop1_ears/_ibsdb/figures/result_metadata.shelf' >>> metadata = test_result.ResultMetadata(metadata_fpath, autoconnect=True) >>> wgt = make_metadata_custom_api(metadata) >>> ut.quit_if_noshow() >>> wgt.show() >>> wgt.raise_() >>> guitool.qtapp_loop(wgt, frequency=100) """ import guitool from guitool.__PYQT__ import QtCore class MetadataViewer(guitool.APIItemWidget): def __init__(wgt, parent=None, tblnice='Result Metadata Viewer', **kwargs): guitool.APIItemWidget.__init__(wgt, parent=parent, tblnice=tblnice, **kwargs) wgt.connect_signals_and_slots() @guitool.slot_(QtCore.QModelIndex) def _on_doubleclick(wgt, qtindex): print('[wgt] _on_doubleclick: ') col = qtindex.column() if wgt.api.col_edit_list[col]: print('do nothing special for editable columns') return model = qtindex.model() colname = model.get_header_name(col) if colname.endswith('fpath'): print('showing fpath') fpath = model.get_header_data(colname, qtindex) ut.startfile(fpath) def connect_signals_and_slots(wgt): #wgt.view.clicked.connect(wgt._on_click) wgt.view.doubleClicked.connect(wgt._on_doubleclick) #wgt.view.pressed.connect(wgt._on_pressed) #wgt.view.activated.connect(wgt._on_activated) guitool.ensure_qapp() #cfgstr_list = metadata col_name_list, column_list = metadata.get_square_data() # Priority of column names colname_priority = ['qaids', 'qx2_gt_rank', 'qx2_gt_timedelta', 'qx2_gf_timedelta', 'analysis_fpath', 'qx2_gt_raw_score', 'qx2_gf_raw_score'] colname_priority += sorted(ut.setdiff_ordered(col_name_list, colname_priority)) sortx = ut.priority_argsort(col_name_list, colname_priority) col_name_list = ut.take(col_name_list, sortx) column_list = ut.take(column_list, sortx) col_lens = list(map(len, column_list)) print('col_name_list = %r' % (col_name_list,)) print('col_lens = %r' % (col_lens,)) assert len(col_lens) > 0, 'no columns' assert col_lens[0] > 0, 'no rows' assert all([len_ == col_lens[0] for len_ in col_lens]), 'inconsistant data' col_types_dict = {} col_getter_dict = dict(zip(col_name_list, column_list)) col_bgrole_dict = {} col_ider_dict = {} col_setter_dict = {} col_nice_dict = {name: name.replace('qx2_', '') for name in col_name_list} col_nice_dict.update({ 'qx2_gt_timedelta': 'GT TimeDelta', 'qx2_gf_timedelta': 'GF TimeDelta', 'qx2_gt_rank': 'GT Rank', }) editable_colnames = [] sortby = 'qaids' def get_thumb_size(): return 128 col_width_dict = {} custom_api = guitool.CustomAPI( col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, sort_reverse=True, col_width_dict=col_width_dict, col_nice_dict=col_nice_dict ) #headers = custom_api.make_headers(tblnice='results') #print(ut.dict_str(headers)) wgt = MetadataViewer() wgt.connect_api(custom_api) return wgt
def simple_thumbnail_widget(): r""" Very simple example to test thumbnails CommandLine: python -m guitool.api_thumb_delegate --test-simple_thumbnail_widget --show python -m guitool.api_thumb_delegate --test-simple_thumbnail_widget --show --tb Example: >>> # GUI_DOCTEST >>> from guitool.api_thumb_delegate import * # NOQA >>> import guitool >>> guitool.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_thumbnail_widget() >>> ut.quit_if_noshow() >>> wgt.show() >>> guitool.qtapp_loop(wgt, frequency=100) """ import guitool guitool.ensure_qapp() col_name_list = ['rowid', 'image_name', 'thumb'] col_types_dict = { 'thumb': 'PIXMAP', } guitool_test_thumbdir = ut.ensure_app_resource_dir('guitool', 'thumbs') ut.delete(guitool_test_thumbdir) ut.ensuredir(guitool_test_thumbdir) import vtool as vt from os.path import join def thumb_getter(id_, thumbsize=128): """ Thumb getters must conform to thumbtup structure """ #print(id_) if id_ == 'doesnotexist.jpg': return None img_path = None img_size = (100, 100) else: img_path = ut.grab_test_imgpath(id_, verbose=False) img_size = vt.open_image_size(img_path) thumb_path = join(guitool_test_thumbdir, ut.hashstr(str(img_path)) + '.jpg') if id_ == 'carl.jpg': bbox_list = [(10, 10, 200, 200)] theta_list = [0] elif id_ == 'lena.png': #bbox_list = [(10, 10, 200, 200)] bbox_list = [None] theta_list = [None] else: bbox_list = [] theta_list = [] thumbtup = (thumb_path, img_path, img_size, bbox_list, theta_list) #print('thumbtup = %r' % (thumbtup,)) return thumbtup #return None #imgname_list = sorted(ut.TESTIMG_URL_DICT.keys()) imgname_list = ['carl.jpg', 'lena.png', 'patsy.jpg'] imgname_list += ['doesnotexist.jpg'] col_getter_dict = { 'rowid': list(range(len(imgname_list))), 'image_name': imgname_list, 'thumb': thumb_getter } col_ider_dict = { 'thumb': 'image_name', } col_setter_dict = {} editable_colnames = [] sortby = 'rowid' get_thumb_size = lambda: 128 # NOQA col_width_dict = {} col_bgrole_dict = {} api = guitool.CustomAPI( col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict) headers = api.make_headers(tblnice='Utool Test Images') wgt = guitool.APIItemWidget() wgt.change_headers(headers) wgt.resize(600, 400) #guitool.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) return wgt
def draw_results(ibs, testres): r""" Draws results from an experiment harness run. Rows store different qaids (query annotation ids) Cols store different configurations (algorithm parameters) Args: testres (TestResult): CommandLine: python dev.py -t custom:rrvsone_on=True,constrained_coeff=0 custom --qaid 12 --db PZ_MTEST --show --va python dev.py -t custom:rrvsone_on=True,constrained_coeff=.3 custom --qaid 12 --db PZ_MTEST --show --va --noqcache python dev.py -t custom:rrvsone_on=True custom --qaid 4 --db PZ_MTEST --show --va --noqcache python dev.py -t custom:rrvsone_on=True,grid_scale_factor=1 custom --qaid 12 --db PZ_MTEST --show --va --noqcache python dev.py -t custom:rrvsone_on=True,grid_scale_factor=1,grid_steps=1 custom --qaid 12 --db PZ_MTEST --show --va --noqcache CommandLine: python dev.py -t best --db seals2 --allgt --vz --fig-dname query_analysis_easy --show python dev.py -t best --db seals2 --allgt --vh --fig-dname query_analysis_hard --show python dev.py -t pyrscale --db PZ_MTEST --allgt --vn --fig-dname query_analysis_interesting --show python dev.py -t pyrscale --db testdb3 --allgt --vn --fig-dname query_analysis_interesting --vf python dev.py -t pyrscale --db testdb3 --allgt --vn --fig-dname query_analysis_interesting --vf --quality python -m ibeis.expt.experiment_drawing --test-draw_results --show --vn python -m ibeis.expt.experiment_drawing --test-draw_results --show --vn --db PZ_MTEST python -m ibeis.expt.old_storage --test-draw_results --show --db PZ_MTEST --gv Example: >>> # DISABLE_DOCTEST >>> from ibeis.expt.old_storage import * # NOQA >>> from ibeis.init import main_helpers >>> ibs, testres = main_helpers.testdata_expts('PZ_MTEST') >>> result = draw_results(ibs, testres) >>> # verify results >>> print(result) """ print(' --- DRAW RESULTS ---') # It is very inefficient to turn off caching when view_all is true figdir = ibs.get_fig_dir() ut.ensuredir(figdir) if ut.get_argflag(('--view-fig-directory', '--vf')): ut.view_directory(figdir) figdir_suffix = ut.get_argval('--fig-dname', type_=str, default=None) from os.path import join if figdir_suffix is not None: figdir = join(figdir, figdir_suffix) ut.ensuredir(figdir) #gx2_gt_timedelta # cfgres_info['qx2_gf_timedelta'] = qx2_gf_timedelta metadata_fpath = join(figdir, 'result_metadata.shelf') metadata = ResultMetadata(metadata_fpath) #metadata.rrr() metadata.connect() metadata.sync_test_results(testres) #cfgstr = qreq_.get_cfgstr() #cfg_metadata = ensure_item(metadata, cfgstr, {}) #avuuids = ibs.get_annot_visual_uuids(qaids) #avuuid2_ax = ensure_item(cfg_metadata, 'avuuid2_ax', {}) #cfg_columns = ensure_item(cfg_metadata, 'columns', {}) #import guitool # ut.argv_flag_dec(draw_rank_cdf)(ibs, testres) # VIZ_INDIVIDUAL_RESULTS = True # if VIZ_INDIVIDUAL_RESULTS: # draw_match_cases(ibs, testres, metadata=metadata) metadata.write() if ut.get_argflag(('--guiview', '--gv')): import guitool guitool.ensure_qapp() #wgt = make_test_result_custom_api(ibs, testres) wgt = make_metadata_custom_api(metadata) wgt.show() wgt.raise_() guitool.qtapp_loop(wgt, frequency=100) metadata.close() if ut.NOT_QUIET: print('[DRAW_RESULT] EXIT EXPERIMENT HARNESS')