def testrun_pipeline_upto(qreq_, stop_node=None, verbose=True): r""" Main tester function. Runs the pipeline by mirroring `request_ibeis_query_L0`, but stops at a requested breakpoint and returns the local variables. convinience: runs pipeline for tests this should mirror request_ibeis_query_L0 Ignore: >>> # TODO: autogenerate >>> # The following is a stub that starts the autogeneration process >>> import utool as ut >>> from ibeis.algo.hots import pipeline >>> source = ut.get_func_sourcecode(pipeline.request_ibeis_query_L0, >>> strip_docstr=True, stripdef=True, >>> strip_comments=True) >>> import re >>> source = re.sub(r'^\s*$\n', '', source, flags=re.MULTILINE) >>> print(source) >>> ut.replace_between_tags(source, '', sentinal) """ from ibeis.algo.hots.pipeline import ( nearest_neighbors, baseline_neighbor_filter, weight_neighbors, build_chipmatches, spatial_verification, vsone_reranking, build_impossible_daids_list) print('RUN PIPELINE UPTO: %s' % (stop_node,)) print(qreq_) qreq_.lazy_load(verbose=verbose) #--- if stop_node == 'build_impossible_daids_list': return locals() impossible_daids_list, Kpad_list = build_impossible_daids_list(qreq_) #--- if stop_node == 'nearest_neighbors': return locals() nns_list = nearest_neighbors(qreq_, Kpad_list, verbose=verbose) #--- if stop_node == 'baseline_neighbor_filter': return locals() nnvalid0_list = baseline_neighbor_filter(qreq_, nns_list, impossible_daids_list, verbose=verbose) #--- if stop_node == 'weight_neighbors': return locals() weight_ret = weight_neighbors(qreq_, nns_list, nnvalid0_list, verbose=verbose) filtkey_list, filtweights_list, filtvalids_list, filtnormks_list = weight_ret #--- if stop_node == 'filter_neighbors': raise AssertionError('no longer exists') #--- if stop_node == 'build_chipmatches': return locals() cm_list_FILT = build_chipmatches(qreq_, nns_list, nnvalid0_list, filtkey_list, filtweights_list, filtvalids_list, filtnormks_list, verbose=verbose) #--- if stop_node == 'spatial_verification': return locals() cm_list_SVER = spatial_verification(qreq_, cm_list_FILT, verbose=verbose) #--- if stop_node == 'vsone_reranking': return locals() if qreq_.qparams.rrvsone_on: # VSONE RERANKING cm_list_VSONERR = vsone_reranking(qreq_, cm_list_SVER, verbose=verbose) cm_list = cm_list_VSONERR else: cm_list = cm_list_SVER assert False, 'unknown stop_node=%r' % (stop_node,) #qaid2_svtups = qreq_.metadata['qaid2_svtups'] return locals()
def get_query_components(ibs, qaids): r""" Args: ibs (IBEISController): ibeis controller object qaids (?): Returns: ?: CommandLine: python -m ibeis.algo.hots.query_helpers --test-get_query_components Example: >>> # DISABLE_DOCTEST >>> from ibeis.algo.hots.query_helpers import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> qaids = ibs.get_valid_aids() >>> # execute function >>> result = get_query_components(ibs, qaids) >>> # verify results >>> print(result) """ from ibeis.algo.hots import pipeline from ibeis.algo.hots import query_request daids = ibs.get_valid_aids() cfgdict = dict(with_metadata=True) qreq_ = query_request.new_ibeis_query_request(ibs, qaids, daids, cfgdict) qaid = qaids[0] assert len(daids) > 0, '!!! nothing to search' assert len(qaids) > 0, '!!! nothing to query' qreq_.lazy_load() pipeline_locals_ = pipeline.testrun_pipeline_upto(qreq_, None) qaid2_nns = pipeline_locals_['qaid2_nns'] qaid2_nnvalid0 = pipeline_locals_['qaid2_nnvalid0'] qaid2_filtweights = pipeline_locals_['qaid2_filtweights'] qaid2_nnfilts = pipeline_locals_['qaid2_nnfilts'] qaid2_chipmatch_FILT = pipeline_locals_['qaid2_chipmatch_FILT'] qaid2_chipmatch_SVER = pipeline_locals_['qaid2_chipmatch_SVER'] qaid2_svtups = qreq_.metadata['qaid2_svtups'] #--- qaid2_qres = pipeline.chipmatch_to_resdict(qreq_, qaid2_chipmatch_SVER) ##################### # Testing components ##################### with ut.Indenter('[components]'): qfx2_idx, qfx2_dist = qaid2_nns[qaid] qfx2_aid = qreq_.indexer.get_nn_aids(qfx2_idx) qfx2_fx = qreq_.indexer.get_nn_featxs(qfx2_idx) qfx2_gid = ibs.get_annot_gids(qfx2_aid) # NOQA qfx2_nid = ibs.get_annot_name_rowids(qfx2_aid) # NOQA filtkey_list, qfx2_scores, qfx2_valids = qaid2_nnfilts[qaid] qaid2_nnfilt_ORIG = pipeline.identity_filter(qreq_, qaid2_nns) qaid2_chipmatch_ORIG = pipeline.build_chipmatches(qreq_, qaid2_nns, qaid2_nnfilt_ORIG) qaid2_qres_ORIG = pipeline.chipmatch_to_resdict(qaid2_chipmatch_ORIG, qreq_) qaid2_qres_FILT = pipeline.chipmatch_to_resdict(qaid2_chipmatch_FILT, qreq_) qaid2_qres_SVER = qaid2_qres ##################### # Relevant components ##################### qaid = qaids[0] qres_ORIG = qaid2_qres_ORIG[qaid] qres_FILT = qaid2_qres_FILT[qaid] qres_SVER = qaid2_qres_SVER[qaid] return locals()