def initialize_persistant_query_request(ibs, qaid_chunk): # FIXME: allow for multiple species or make a nicer way of ensuring that # there is only one species here species_text_set = set(ibs.get_annot_species_texts(qaid_chunk)) assert len(species_text_set) == 1, 'query chunk has more than one species' species_text = list(species_text_set)[0] # controller based exemplars daid_list = ibs.get_valid_aids(is_exemplar=True, species=species_text, is_known=True, minqual='poor') num_names = len(set(ibs.get_annot_nids(daid_list))) # TODO: choose vsmany K every time # need to be able to update qreq_.qparams vsmany_K = automated_params.choose_vsmany_K(num_names, qaid_chunk, daid_list) vsmany_cfgdict = dict( K=vsmany_K, Knorm=3, #index_method='single', pipeline_root='vsmany', #return_expanded_nns=False, #return_expanded_nns=True, ) # Create New qreq qreq_vsmany_ = ibs.new_query_request(qaid_chunk, daid_list, cfgdict=vsmany_cfgdict, use_memcache=False) return qreq_vsmany_
def query_vsmany_initial(ibs, qaids, daids, use_cache=False, qreq_vsmany_=None, save_qcache=False): r""" Args: ibs (IBEISController): ibeis controller object qaids (list): query annotation ids daids (list): database annotation ids use_cache (bool): turns on disk based caching qreq_vsmany_ (QueryRequest): persistant vsmany query request Returns: tuple: (newfsv_list, newscore_aids) CommandLine: python -m ibeis.algo.hots.special_query --test-query_vsmany_initial Example: >>> # DISABLE_DOCTEST >>> from ibeis.algo.hots.special_query import * # NOQA >>> ibs, valid_aids = testdata_special_query() >>> qaids = valid_aids[0:1] >>> daids = valid_aids[1:] >>> use_cache = False >>> # execute function >>> qaid2_qres_vsmany, qreq_vsmany_ = query_vsmany_initial(ibs, qaids, daids, use_cache) >>> qres_vsmany = qaid2_qres_vsmany[qaids[0]] >>> # verify results >>> result = qres_vsmany.get_top_aids().tolist() >>> print(result) [2, 6, 4] """ num_names = len(set(ibs.get_annot_nids(daids))) vsmany_cfgdict = dict(K=automated_params.choose_vsmany_K( num_names, qaids, daids), Knorm=3, index_method='multi', pipeline_root='vsmany', return_expanded_nns=True) cm_list, qreq_vsmany_ = ibs.query_chips(qaids, daids, cfgdict=vsmany_cfgdict, return_request=True, use_cache=use_cache, qreq_=qreq_vsmany_, save_qcache=save_qcache) qaid2_qres_vsmany = {cm.qaid: cm for cm in cm_list} isnsum = qreq_vsmany_.qparams.score_method == 'nsum' assert isnsum, 'not nsum' assert qreq_vsmany_.qparams.pipeline_root != 'vsone' return qaid2_qres_vsmany, qreq_vsmany_
def query_vsmany_initial(ibs, qaids, daids, use_cache=False, qreq_vsmany_=None, save_qcache=False): r""" Args: ibs (IBEISController): ibeis controller object qaids (list): query annotation ids daids (list): database annotation ids use_cache (bool): turns on disk based caching qreq_vsmany_ (QueryRequest): persistant vsmany query request Returns: tuple: (newfsv_list, newscore_aids) CommandLine: python -m ibeis.algo.hots.special_query --test-query_vsmany_initial Example: >>> # DISABLE_DOCTEST >>> from ibeis.algo.hots.special_query import * # NOQA >>> ibs, valid_aids = testdata_special_query() >>> qaids = valid_aids[0:1] >>> daids = valid_aids[1:] >>> use_cache = False >>> # execute function >>> qaid2_qres_vsmany, qreq_vsmany_ = query_vsmany_initial(ibs, qaids, daids, use_cache) >>> qres_vsmany = qaid2_qres_vsmany[qaids[0]] >>> # verify results >>> result = qres_vsmany.get_top_aids().tolist() >>> print(result) [2, 6, 4] """ num_names = len(set(ibs.get_annot_nids(daids))) vsmany_cfgdict = dict( K=automated_params.choose_vsmany_K(num_names, qaids, daids), Knorm=3, index_method='multi', pipeline_root='vsmany', return_expanded_nns=True ) cm_list, qreq_vsmany_ = ibs.query_chips( qaids, daids, cfgdict=vsmany_cfgdict, return_request=True, use_cache=use_cache, qreq_=qreq_vsmany_, save_qcache=save_qcache) qaid2_qres_vsmany = {cm.qaid: cm for cm in cm_list} isnsum = qreq_vsmany_.qparams.score_method == 'nsum' assert isnsum, 'not nsum' assert qreq_vsmany_.qparams.pipeline_root != 'vsone' return qaid2_qres_vsmany, qreq_vsmany_