Exemplo n.º 1
0
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_
Exemplo n.º 2
0
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_
Exemplo n.º 3
0
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_
Exemplo n.º 4
0
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_