# -*- coding: utf-8 -*-
"""
development module storing my "development state"
TODO:
* figure out what packages I use have lisencing issues.
- Reimplement them or work around them.
Excplitict Negative Matches between chips
"""
from __future__ import absolute_import, division, print_function
from ibeis.algo.hots import hstypes
from uuid import UUID
import utool as ut
import copy
import six # NOQA
import numpy as np # NOQA
print, print_, printDBG, rrr, profile = ut.inject(__name__, '[devcases]')
[docs]def fix_pz_master():
r"""
CommandLine:
python -m ibeis.algo.hots.devcases --test-fix_pz_master --show
Example:
>>> # DISABLE_DOCTEST
>>> from ibeis.algo.hots.devcases import * # NOQA
>>> # build test data
>>> # execute function
>>> result = fix_pz_master()
>>> # verify results
>>> print(result)
"""
# ReROI aid4513+name
"""
82 97 117 118 157 213 299 336 351 368 392 415 430 434 441 629 664 679 682
685 695 835 1309 1317 1327 1382 1455 1816 3550 4067 4125 4131 4141 4191 4239
4242 4256 4257 4258 4439 4489 4625 4797 4800 4809 4812 4813 4819 4829 4831
4864 4865 4871 4877 4879 4885 4886 4891 4897 4899 4902 4904 4909 4912 4931
4933 4934 4935 4936 4952 5053 5073 5248 5249 5367 5776 5999 6150 6699 6882
7197 7225 7231 7237 7247 7254 7263 7280 7298 7357 7373 7385 7412 7424 7426
7464 7470 7472 7473 7479 7480 7507 7533 7535 7537 7578 7589 7629 7666 7669
7672 7720 7722 7734 7740 7754 7778 7792 7796 7798 7807 7812 7813 7829 7840
7846 7875 7876 7888 7889 7896 7899 7900 7901 7908 7909 7911 7915 7916 7917
7925 7931 7936 7938 7944 7947 7951 7954 7961 7965 7966 7978 7979 7981 7988
7992 7998 8019 8044 8045 8047 8051 8052 8059 8062 8063 8064 8066 8069 8074
8075 8083 8088 8093 8094 8095 8100 8102 8103 8105 8113 8116 8118 8119 8120
8123 8126 8128 8139 8144 8151 8152 8153 8154 8155 8157 8165 8170 8178 8180
8186 8188 8189 8195 8197 8198 8201 8202 8206 8213 8216 8226 8228 8231 8238
8245 8258 8265 8269 8276 8281 8285 8287 8297 8301 8305 8306 8308 8312 8318
8319 8321 8329 8332 8345 8349 8357 8361 8365 8367 8372 8373 8381 8386 8389
8392 8398 8399 8400 8402 8403 8406 8407 8412 8423 8424 8426 8427 8428 8429
8431 8439 8444 8446 8447 8450 8456 8457 8461 8463 8464 8466 8471 8472 8477
8481 8486 8489 8490 8494 8497 8499 8500 8501 8503 8506 8508 8535 8536 8537
8538 8539 8540 8541 8544 8545 8550 8552 8554 8555 8557 8558 8559 8564 8567
8568 8574 8575 8582 8584 8587 8589 8591 8592 8593 8596 8597 8601 8602 8605
8607 8608 8616 8617 8618 8619 8620 8621 8622 8629 8637 8639 8647 8662 8664
8665 8666 8673 8674 8676 8689 8691 8692 8693 8694 8699 8700 8702 8703 8712
8714 8715 8719 8724 8733 8734 8736
"""
qaids_str = """
82 117 118 213 299 336 351 368 392 430 434 441 495 616 629 664 679 682 685 695 835 915 1317 1382 3550 4239 4242 4246 4256 4257 4258 4439 4445 4447 4489 4706 4800 4812 4813 4819 4828 4829 4831 4864 4865 4871 4877 4879 4885 4886 4891 4897 4899 4902 4904 4909 4912 4933 4934 4936 4952 5053 5073 5248 5367 5776 7197 7225 7254 7263 7298 7309 7470 7473 7479 7507 7535 7570 7589 7666 7672 7722 7734 7740 7754 7760 7796 7798 7807 7813 7829 7840 7875 7876 7888 7889 7896 7899 7900 7901 7908 7909 7911 7916 7917 7925 7931 7934 7936 7938 7944 7947 7951 7954 7961 7964 7965 7966 7978 7979 7981 7988 7992 7998 8019 8044 8045 8047 8051 8052 8058 8059 8062 8063 8064 8066 8074 8075 8083 8088 8094 8095 8100 8101 8102 8103 8105 8111 8113 8116 8119 8120 8121 8123 8126 8128 8144 8151 8152 8153 8155 8156 8157 8165 8170 8180 8186 8188 8198 8201 8206 8213 8216 8226 8228 8231 8238 8258 8276 8281 8285 8287 8295 8297 8301 8305 8306 8308 8312 8318 8319 8329 8332 8355 8357 8361 8365 8367 8372 8373 8381 8386 8388 8389 8392 8398 8399 8402 8403 8406 8407 8412 8424 8425 8426 8428 8429 8439 8442 8444 8446 8447 8449 8450 8452 8456 8457 8461 8463 8464 8466 8470 8471 8481 8486 8489 8490 8494 8497 8499 8500 8501 8503 8506 8508 8535 8536 8537 8538 8539 8540 8544 8545 8550 8554 8555 8557 8558 8559 8563 8564 8567 8574 8575 8582 8584 8587 8589 8592 8593 8596 8597 8600 8601 8604 8605 8607 8608 8616 8617 8618 8619 8620 8621 8622 8623 8629 8637 8639 8647 8662 8665 8666 8673 8674 8676 8691 8693 8694 8699 8700 8702 8703 8712 8714 8715 8719 8724 8731 8733 8734 8736
"""
qaids_ = map(int, filter(len, qaids_str.replace('\n', ' ').split(' ')))
import ibeis
ibeis._preload()
from ibeis.gui import inspect_gui
import guitool
ibs = ibeis.opendb('PZ_Master0')
#ibs._default_config()
#ibs.cfg.save()
daids = ibs.get_valid_aids(minqual='poor')
qaids = ibs.filter_junk_annotations(qaids_)
#qaids = qaids[64:128]
qreq_ = ibs.new_query_request(qaids, daids)
#qreq_.lazy_load()
qres_list = ibs.query_chips(qreq_=qreq_, verbose=True)
qres_wgt = inspect_gui.launch_review_matches_interface(ibs, qres_list, dodraw=ut.show_was_requested())
if ut.show_was_requested():
guitool.guitool_main.qtapp_loop()
return qres_wgt
[docs]def myquery():
r"""
BUG::
THERE IS A BUG SOMEWHERE: HOW IS THIS POSSIBLE?
if everything is weightd ) how di the true positive even get a score
while the true negative did not
qres_copy.filtkey_list = ['ratio', 'fg', 'homogerr', 'distinctiveness']
CORRECT STATS
{
'max' : [0.832, 0.968, 0.604, 0.000],
'min' : [0.376, 0.524, 0.000, 0.000],
'mean' : [0.561, 0.924, 0.217, 0.000],
'std' : [0.114, 0.072, 0.205, 0.000],
'nMin' : [1, 1, 1, 51],
'nMax' : [1, 1, 1, 1],
'shape': (52, 4),
}
INCORRECT STATS
{
'max' : [0.759, 0.963, 0.264, 0.000],
'min' : [0.379, 0.823, 0.000, 0.000],
'mean' : [0.506, 0.915, 0.056, 0.000],
'std' : [0.125, 0.039, 0.078, 0.000],
'nMin' : [1, 1, 1, 24],
'nMax' : [1, 1, 1, 1],
'shape': (26, 4),
# score_diff, tp_score, tn_score, p, K, dcvs_clip_max, fg_power, homogerr_power
0.494, 0.494, 0.000, 73.000, 2, 0.500, 0.100, 10.000
see how seperability changes as we very things
CommandLine:
python -m ibeis.algo.hots.devcases --test-myquery
python -m ibeis.algo.hots.devcases --test-myquery --show --index 0
python -m ibeis.algo.hots.devcases --test-myquery --show --index 1
python -m ibeis.algo.hots.devcases --test-myquery --show --index 2
References:
http://en.wikipedia.org/wiki/Pareto_distribution <- look into
Example:
>>> # DISABLE_DOCTEST
>>> from ibeis.all_imports import * # NOQA
>>> from ibeis.algo.hots.devcases import * # NOQA
>>> ut.dev_ipython_copypaster(myquery) if ut.inIPython() else myquery()
>>> pt.show_if_requested()
"""
from ibeis.algo.hots import special_query # NOQA
from ibeis.algo.hots import distinctiveness_normalizer # NOQA
from ibeis import viz # NOQA
import plottool as pt
index = ut.get_argval('--index', int, 0)
ibs, aid1, aid2, tn_aid = testdata_my_exmaples(index)
qaids = [aid1]
daids = [aid2] + [tn_aid]
qvuuid = ibs.get_annot_visual_uuids(aid1)
cfgdict_vsone = dict(
sv_on=True,
#sv_on=False,
#codename='vsone_unnorm_dist_ratio_extern_distinctiveness',
codename='vsone_unnorm_ratio_extern_distinctiveness',
sver_output_weighting=True,
)
use_cache = False
save_qcache = False
qres_list, qreq_ = ibs.query_chips(qaids, daids, cfgdict=cfgdict_vsone,
return_request=True, use_cache=use_cache,
save_qcache=save_qcache, verbose=True)
qreq_.load_distinctiveness_normalizer()
qres = qres_list[0]
top_aids = qres.get_top_aids() # NOQA
qres_orig = qres # NOQA
def test_config(qreq_, qres_orig, cfgdict):
""" function to grid search over """
qres_copy = copy.deepcopy(qres_orig)
qreq_vsone_ = qreq_
qres_vsone = qres_copy
filtkey = hstypes.FiltKeys.DISTINCTIVENESS
newfsv_list, newscore_aids = special_query.get_extern_distinctiveness(qreq_, qres_copy, **cfgdict)
special_query.apply_new_qres_filter_scores(qreq_vsone_, qres_vsone, newfsv_list, newscore_aids, filtkey)
tp_score = qres_copy.aid2_score[aid2]
tn_score = qres_copy.aid2_score[tn_aid]
return qres_copy, tp_score, tn_score
#[.01, .1, .2, .5, .6, .7, .8, .9, 1.0]),
#FiltKeys = hstypes.FiltKeys
# FIXME: Use other way of doing gridsearch
grid_basis = distinctiveness_normalizer.DCVS_DEFAULT.get_grid_basis()
gridsearch = ut.GridSearch(grid_basis, label='qvuuid=%r' % (qvuuid,))
print('Begin Grid Search')
for cfgdict in ut.ProgressIter(gridsearch, lbl='GridSearch'):
qres_copy, tp_score, tn_score = test_config(qreq_, qres_orig, cfgdict)
gridsearch.append_result(tp_score, tn_score)
print('Finish Grid Search')
# Get best result
best_cfgdict = gridsearch.get_rank_cfgdict()
qres_copy, tp_score, tn_score = test_config(qreq_, qres_orig, best_cfgdict)
# Examine closely what you can do with scores
if False:
qres_copy = copy.deepcopy(qres_orig)
qreq_vsone_ = qreq_
filtkey = hstypes.FiltKeys.DISTINCTIVENESS
newfsv_list, newscore_aids = special_query.get_extern_distinctiveness(qreq_, qres_copy, **cfgdict)
ut.embed()
def make_cm_very_old_tuple(qres_copy):
assert ut.listfind(qres_copy.filtkey_list, filtkey) is None
weight_filters = hstypes.WEIGHT_FILTERS
weight_filtxs, nonweight_filtxs = special_query.index_partition(qres_copy.filtkey_list, weight_filters)
aid2_fsv = {}
aid2_fs = {}
aid2_score = {}
for new_fsv_vsone, daid in zip(newfsv_list, newscore_aids):
pass
break
#scorex_vsone = ut.listfind(qres_copy.filtkey_list, filtkey)
#if scorex_vsone is None:
# TODO: add spatial verification as a filter score
# augment the vsone scores
# TODO: paramaterize
weighted_ave_score = True
if weighted_ave_score:
# weighted average scoring
new_fs_vsone = special_query.weighted_average_scoring(new_fsv_vsone, weight_filtxs, nonweight_filtxs)
else:
# product scoring
new_fs_vsone = special_query.product_scoring(new_fsv_vsone)
new_score_vsone = new_fs_vsone.sum()
aid2_fsv[daid] = new_fsv_vsone
aid2_fs[daid] = new_fs_vsone
aid2_score[daid] = new_score_vsone
return aid2_fsv, aid2_fs, aid2_score
# Look at plot of query products
for new_fsv_vsone, daid in zip(newfsv_list, newscore_aids):
new_fs_vsone = special_query.product_scoring(new_fsv_vsone)
scores_list = np.array(new_fs_vsone)[:, None].T
pt.plot_sorted_scores(scores_list, logscale=False, figtitle=str(daid))
pt.iup()
special_query.apply_new_qres_filter_scores(qreq_vsone_, qres_copy, newfsv_list, newscore_aids, filtkey)
# PRINT INFO
import functools
#ut.rrrr()
get_stats_str = functools.partial(ut.get_stats_str, axis=0, newlines=True, precision=3)
tp_stats_str = ut.align(get_stats_str(qres_copy.aid2_fsv[aid2]), ':')
tn_stats_str = ut.align(get_stats_str(qres_copy.aid2_fsv[tn_aid]), ':')
info_str_list = []
info_str_list.append('qres_copy.filtkey_list = %r' % (qres_copy.filtkey_list,))
info_str_list.append('CORRECT STATS')
info_str_list.append(tp_stats_str)
info_str_list.append('INCORRECT STATS')
info_str_list.append(tn_stats_str)
info_str = '\n'.join(info_str_list)
print(info_str)
# SHOW BEST RESULT
#qres_copy.ishow_top(ibs, fnum=pt.next_fnum())
#qres_orig.ishow_top(ibs, fnum=pt.next_fnum())
# Text Informatio
param_lbl = 'dcvs_power'
param_stats_str = gridsearch.get_dimension_stats_str(param_lbl)
print(param_stats_str)
csvtext = gridsearch.get_csv_results(10)
print(csvtext)
# Paramter visuzliation
fnum = pt.next_fnum()
# plot paramter influence
param_label_list = gridsearch.get_param_lbls()
pnum_ = pt.get_pnum_func(2, len(param_label_list))
for px, param_label in enumerate(param_label_list):
gridsearch.plot_dimension(param_label, fnum=fnum, pnum=pnum_(px))
# plot match figure
pnum2_ = pt.get_pnum_func(2, 2)
qres_copy.show_matches(ibs, aid2, fnum=fnum, pnum=pnum2_(2))
qres_copy.show_matches(ibs, tn_aid, fnum=fnum, pnum=pnum2_(3))
# Add figure labels
figtitle = 'Effect of parameters on vsone separation for a single case'
subtitle = 'qvuuid = %r' % (qvuuid)
figtitle += '\n' + subtitle
pt.set_figtitle(figtitle)
# Save Figure
#fig_fpath = pt.save_figure(usetitle=True)
#print(fig_fpath)
# Write CSV Results
#csv_fpath = fig_fpath + '.csv.txt'
#ut.write_to(csv_fpath, csvtext)
#qres_copy.ishow_top(ibs)
#from matplotlib import pyplot as plt
#plt.show()
#print(ut.list_str()))
# TODO: plot max variation dims
#import plottool as pt
#pt.plot(p_list, diff_list)
"""
viz.show_chip(ibs, aid1)
import plottool as pt
pt.update()
"""
[docs]def get_dev_test_fpaths(index):
ibs, aid1, aid2, tn_aid = testdata_my_exmaples(index)
fpath1, fpath2, fpath3 = ibs.get_annot_chip_fpath([aid1, aid2, tn_aid])
return fpath1, fpath2, fpath3
[docs]def testdata_my_exmaples(index):
r"""
Example:
>>> # DISABLE_DOCTEST
>>> from ibeis.all_imports import * # NOQA
>>> from ibeis.algo.hots.devcases import * # NOQA
>>> index = 1
"""
import ibeis
from uuid import UUID
ibs = ibeis.opendb('GZ_ALL')
vsone_pair_examples = [
[UUID('8415b50f-2c98-0d52-77d6-04002ff4d6f8'), UUID('308fc664-7990-91ad-0576-d2e8ea3103d0')],
[UUID('490f76bf-7616-54d5-576a-8fbc907e46ae'), UUID('2046509f-0a9f-1470-2b47-5ea59f803d4b')],
[UUID('5cdf68ab-be49-ee3f-94d8-5483772c8618'), UUID('879977a7-b841-d223-dd91-761dfa58d486')],
]
gf_mapping = {
UUID('8415b50f-2c98-0d52-77d6-04002ff4d6f8'): [UUID('38211759-8fa7-875b-1f3e-39a630653f66')],
UUID('490f76bf-7616-54d5-576a-8fbc907e46ae'): [UUID('58920d6e-31ba-307c-2ac8-e56aff2b2b9e')], # other bad_aid is actually a good partial match
UUID('5cdf68ab-be49-ee3f-94d8-5483772c8618'): [UUID('5a8c8ad7-873a-e6ed-98df-56a452e0a93e')],
}
#ibs.get_annot_visual_uuids([36, 3])
vuuid_pair = vsone_pair_examples[index]
vuuid1, vuuid2 = vuuid_pair
aid1, aid2 = ibs.get_annot_aids_from_visual_uuid(vuuid_pair)
assert aid1 is not None
assert aid2 is not None
#daids = ibs.get_valid_aids()
tn_vuuid = gf_mapping.get(vuuid1)
if tn_vuuid is None:
qaids = [aid1]
find_close_incorrect_match(ibs, qaids)
print('baste the result in gf_mapping')
return
tn_aids = ibs.get_annot_aids_from_visual_uuid(tn_vuuid)
tn_aid = tn_aids[0]
return ibs, aid1, aid2, tn_aid
[docs]def find_close_incorrect_match(ibs, qaids):
use_cache = False
save_qcache = False
cfgdict_vsmany = dict(index_method='single',
pipeline_root='vsmany',)
qres_vsmany_list, qreq_vsmany_ = ibs.query_chips(
qaids, ibs.get_valid_aids(), cfgdict=cfgdict_vsmany,
return_request=True, use_cache=use_cache, save_qcache=save_qcache,
verbose=True)
qres_vsmany = qres_vsmany_list[0]
qres_vsmany.ishow_top(ibs)
top_aids = qres_vsmany.get_top_aids()
top_nids = ibs.get_annot_nids(top_aids)
qaid = qaids[0]
qnid = ibs.get_annot_nids(qaid)
is_groundfalse = [nid != qnid for nid in top_nids]
top_gf_aids = ut.compress(top_aids, is_groundfalse)
#top_gt_aids = ut.filterfalse_items(top_aids, is_groundfalse)
top_gf_vuuids = ibs.get_annot_visual_uuids(top_gf_aids)
qvuuid = ibs.get_annot_visual_uuids(qaid)
gf_mapping = {qvuuid: top_gf_vuuids[0:1]}
print('gf_mapping = ' + ut.dict_str(gf_mapping))
pass
[docs]def show_power_law_plots():
"""
CommandLine:
python -m ibeis.algo.hots.devcases --test-show_power_law_plots --show
Example:
>>> # DISABLE_DOCTEST
>>> #%pylab qt4
>>> from ibeis.all_imports import * # NOQA
>>> from ibeis.algo.hots.devcases import * # NOQA
>>> show_power_law_plots()
>>> pt.show_if_requested()
"""
import numpy as np
import plottool as pt
xdata = np.linspace(0, 1, 1000)
ydata = xdata
fnum = 1
powers = [.01, .1, .5, 1, 2, 30, 70, 100, 1000]
nRows, nCols = pt.get_square_row_cols(len(powers), fix=True)
pnum_next = pt.make_pnum_nextgen(nRows, nCols)
for p in powers:
plotkw = dict(
fnum=fnum,
marker='g-',
linewidth=2,
pnum=pnum_next(),
title='p=%r' % (p,)
)
ydata_ = ydata ** p
pt.plot2(xdata, ydata_, **plotkw)
pt.set_figtitle('power laws y = x ** p')
[docs]def get_gzall_small_test():
"""
ibs.get_annot_visual_uuids([qaid, aid])
"""
#aid_list = [839, 999, 1047, 209, 307, 620, 454, 453, 70, 1015, 939, 1021,
# 306, 742, 1010, 802, 619, 1041, 27, 420, 740, 1016, 140, 992,
# 1043, 662, 816, 793, 994, 867, 534, 986, 783, 858, 937, 60,
# 879, 1044, 528, 459, 639]
debug_examples = [
UUID('308fc664-7990-91ad-0576-d2e8ea3103d0'),
]
#vsone_pair_examples
debug_examples
ignore_vuuids = [
UUID('be6fe4d6-ae87-0f8f-269f-e9f706b69e41'), # OUT OF PLANE
UUID('c3394b28-e7f2-2da6-1a49-335b748acf9e'), # HUGE OUT OF PLANE, foal (vsmany gets rank3)
UUID('490f76bf-7616-54d5-576a-8fbc907e46ae'),
UUID('2046509f-0a9f-1470-2b47-5ea59f803d4b'),
]
vuuid_list = [
UUID('e9a9544d-083d-6c30-b00f-d6806824a21a'),
UUID('153306d8-e9f8-b5a6-a06d-90ddb7de6c17'),
UUID('04908b6f-b775-46f1-e9ec-fd834d9fe046'),
UUID('20817244-12d1-bcf4-dac8-b787c064e6b4'),
UUID('7ad8b4fc-f057-bac9-0b1a-fa05db09b685'),
UUID('df418005-ce26-e439-ab43-00f56447a3c8'),
UUID('2ca8c5b0-ae45-a1a2-11fb-3497dfd58736'),
UUID('7c6fd123-ad9c-7360-8b7c-b8d694ac4057'),
UUID('98e87153-4437-562b-9f77-d7c58495cfea'),
UUID('7bb9b77a-7ad5-44f3-4352-bf6bf901323a'),
UUID('863786d9-853d-859d-f726-13796fc0a257'),
UUID('9c1b04bc-7af1-bd3f-85d3-7c06c8b0d0a7'),
UUID('c0775a6d-f3a9-f1d2-1a92-cfc4817ecedf'),
UUID('52668d79-8065-bae4-29ca-0f393e8b0331'),
UUID('86bf60e5-20a8-0e8d-590c-836ac4723d23'),
UUID('2046509f-0a9f-1470-2b47-5ea59f803d4b'),
UUID('a0444615-1264-8768-8a4e-fbc2cafb76ce'),
UUID('308fc664-7990-91ad-0576-d2e8ea3103d0'), # testcase
UUID('4bd156a3-0315-72fd-d181-309b92f21d58'),
UUID('04815be5-fee7-f34d-e2cd-6130914e2071'),
UUID('815a8276-8812-35a3-d1e5-963c2047edc5'),
UUID('2d94da8d-0d97-815d-d350-bf3ab1caaf23'),
UUID('9732e459-4c73-c8d5-3911-59c6e66d81f8'),
UUID('38e39dda-bae3-ce19-f7d3-a50fc1c3554d'),
UUID('1509cad7-e368-6d95-9047-552d054ddabd'),
UUID('2091fa5b-bf9d-25ba-b539-9156202dd522'),
UUID('fc94609f-b378-9877-d0ac-433993e7f6bd'),
UUID('914f1c91-c22b-a4b5-77f8-59423bc6d99d'),
UUID('249f7615-95e2-ea66-649f-ec8021e5aa41'),
UUID('2de71fb1-dd7c-a7de-2e0d-0be399286d09'),
UUID('94010938-cb14-c209-5488-5372b81d1eb1'),
UUID('d75a9205-efc4-a078-a533-bdde5345b74a'),
UUID('99a1e02a-0e3d-cd9a-b410-902f5d8cf308'),
UUID('193ade79-eff2-f888-7f15-27a399c505b0'),
UUID('190bf50d-9729-48c3-47b6-acefc6f3ef03'),
UUID('5345c6dc-bc52-43ec-d792-0e7c9e7ec3b5'),
UUID('10757fe8-8fd3-ad59-f550-c941da967b82'),
UUID('89859efb-a233-5e43-fb5e-c36e9d446a1e'),
UUID('265cf095-64f6-e5dd-8f7d-2a82f627b7d1'),
UUID('4b19968e-f813-f238-0dcc-6a54f1943d57')]
return vuuid_list, ignore_vuuids
[docs]def get_pz_master_testcase():
aid_uuid_list = [
(7944, UUID('b315d75f-a54f-5abf-18e5-7e353c113876'), 'small chip area. fgweights should not be dialated here')
(8490, UUID('316571aa-f675-ea1a-2674-0cb9a0f00426'), 'had corrupted chip')
]
aid_uuid_list
[docs]def load_gztest(ibs):
r"""
CommandLine:
python -m ibeis.algo.hots.special_query --test-load_gztest
Example:
>>> # DISABLE_DOCTEST
>>> from ibeis.algo.hots.devcases import * # NOQA
>>> import ibeis
>>> ibs = ibeis.opendb('GZ_ALL')
"""
from os.path import join
from ibeis.algo.hots import match_chips4 as mc4
dir_ = ut.get_module_dir(mc4)
eval_text = ut.read_from(join(dir_, 'GZ_TESTTUP.txt'))
testcases = eval(eval_text)
count_dict = ut.count_dict_vals(testcases)
print(ut.dict_str(count_dict))
testtup_list = ut.flatten(ut.dict_take_list(testcases, ['vsone_wins',
'vsmany_outperformed',
'vsmany_dominates',
'vsmany_wins']))
qaid_list = [testtup.qaid_t for testtup in testtup_list]
visual_uuids = ibs.get_annot_visual_uuids(qaid_list)
visual_uuids
if __name__ == '__main__':
"""
CommandLine:
python -m ibeis.algo.hots.devcases
python -m ibeis.algo.hots.devcases --allexamples
python -m ibeis.algo.hots.devcases --allexamples --noface --nosrc
"""
import multiprocessing
multiprocessing.freeze_support() # for win32
import utool as ut # NOQA
ut.doctest_funcs()