Source code for ibeis.control._autogen_explicit_controller

# -*- coding: utf-8 -*-
"""
Static file containing autogenerated functions for IBEISController
Autogenerated on ymd_hm-2016-04-20_11-22

RegenCommand:
    python -m ibeis.control.controller_inject --exec-dev_autogen_explicit_injects
"""

from __future__ import absolute_import, division, print_function
import utool as ut
import sys  # NOQA
from ibeis import annotmatch_funcs
from ibeis import tag_funcs
from ibeis.other import ibsfuncs
from ibeis.init import filter_annots
from ibeis.control import manual_featweight_funcs
from ibeis.control import _autogen_party_funcs
from ibeis.control import _autogen_annotmatch_funcs
from ibeis.control import manual_ibeiscontrol_funcs
from ibeis.control import manual_wildbook_funcs
from ibeis.control import manual_meta_funcs
from ibeis.control import manual_lbltype_funcs
from ibeis.control import manual_lblannot_funcs
from ibeis.control import manual_lblimage_funcs
from ibeis.web import apis_detect
from ibeis.web import apis_engine
from ibeis.web import apis_query
from ibeis.control import manual_image_funcs
from ibeis.control import manual_imageset_funcs
from ibeis.control import manual_gsgrelate_funcs
from ibeis.control import manual_garelate_funcs
from ibeis.control import manual_annot_funcs
from ibeis.control import manual_name_funcs
from ibeis.control import manual_species_funcs
from ibeis.control import manual_annotgroup_funcs
from ibeis.control import manual_chip_funcs
from ibeis.control import manual_feat_funcs
if not ut.get_argflag((u'--no-cnn', u'--nocnn')) or 'ibeis_cnn' in sys.modules:
    from ibeis_cnn import _plugin
from ibeis.other import detectfuncs
print, rrr, profile = ut.inject2(
    __name__, '[autogen_explicit_inject_IBEISController]')


[docs]class ExplicitInjectIBEISController(object): def _get_all_known_name_rowids(ibs): """ Returns: list_ (list): all nids of known animals (does not include unknown names) """ return manual_name_funcs._get_all_known_name_rowids(ibs) def _get_all_name_rowids(ibs): """ Returns: list_ (list): all nids of known animals (does not include unknown names) """ return manual_name_funcs._get_all_name_rowids(ibs) def _get_all_known_nids(ibs): """ alias """ return manual_name_funcs._get_all_known_nids(ibs)
[docs] def add_names(*args, **kwargs): """ Adds a list of names. Returns: name_rowid_list (list): their nids RESTful: Method: POST URL: /api/name/ """ return manual_name_funcs.add_names(*args, **kwargs)
[docs] def sanitize_name_texts(ibs, name_text_list): """ RESTful: Method: PUT URL: /api/name/sanitize """ return manual_name_funcs.sanitize_name_texts(ibs, name_text_list)
[docs] def delete_names(*args, **kwargs): """ deletes names from the database CAREFUL. YOU PROBABLY DO NOT WANT TO USE THIS at least ensure that no annot is associated with any of these nids RESTful: Method: DELETE URL: /api/name/ Example: >>> # UNPORTED_DOCTEST >>> gpath_list = grabdata.get_test_gpaths(ndata=None)[0:4] >>> gid_list = ibs.add_images(gpath_list) >>> bbox_list = [(0, 0, 100, 100)]*len(gid_list) >>> name_list = ['a', 'b', 'a', 'd'] >>> aid_list = ibs.add_annots(gid_list, bbox_list=bbox_list, name_list=name_list) >>> assert len(aid_list) != 0, "No annotations added" >>> nid_list = ibs.get_valid_nids() >>> assert len(nid_list) != 0, "No names added" >>> nid = nid_list[0] >>> assert nid is not None, "nid is None" >>> ibs.delete_names(nid) >>> all_nids = ibs.get_valid_nids() >>> assert nid not in all_nids, "NID not deleted" """ return manual_name_funcs.delete_names(*args, **kwargs)
[docs] def get_empty_nids(ibs): """ get name rowids that do not have any annotations (not including UNKONWN) Returns: list: nid_list - all names without any animals (does not include unknown names) an nid is not invalid if it has a valid alias CommandLine: python -m ibeis.control.manual_name_funcs --test-get_empty_nids RESTful: Method: GET URL: /api/name/empty_nids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> new_nid_list = ibs.make_next_nids(num=2) >>> empty_nids = ibs.get_empty_nids() >>> assert len(empty_nids) == 2, 'get_empty_nids fails1' >>> assert new_nid_list == empty_nids, 'get_empty_nids fails2' >>> ibs.delete_empty_nids() >>> empty_nids2 = ibs.get_empty_nids() >>> assert len(empty_nids2) == 0, 'get_empty_nids fails3' >>> result = str(empty_nids2) >>> print(result) [] """ return manual_name_funcs.get_empty_nids(ibs)
[docs] def delete_empty_nids(ibs): """ Removes names that have no Rois from the database RESTful: Method: DELETE URL: /api/name/empty_nids/ """ return manual_name_funcs.delete_empty_nids(ibs)
[docs] def get_name_aids(*args, **kwargs): """ # TODO: Rename to get_anot_rowids_from_name_rowid Returns: list: aids_list a list of list of aids in each name RESTful: Method: GET URL: /api/name/aids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> # Map annotations to name ids >>> aid_list = ibs.get_valid_aids() >>> nid_list = ibs.get_annot_name_rowids(aid_list) >>> # Get annotation ids for each name >>> aids_list = ibs.get_name_aids(nid_list) >>> # Run Assertion Test >>> groupid2_items = ut.group_items(aids_list, nid_list) >>> grouped_items = list(six.itervalues(groupid2_items)) >>> passed_iter = map(ut.allsame, grouped_items) >>> passed_list = list(passed_iter) >>> assert all(passed_list), 'problem in get_name_aids' >>> # Print gropued items >>> print(ut.dict_str(groupid2_items, newlines=False)) Ignore; from ibeis.control.manual_name_funcs import * # NOQA import ibeis #ibs = ibeis.opendb('testdb1') #ibs = ibeis.opendb('PZ_MTEST') ibs = ibeis.opendb('PZ_Master0') #ibs = ibeis.opendb('GZ_ALL') nid_list = ibs.get_valid_nids() nid_list_ = [const.UNKNOWN_NAME_ROWID if nid <= 0 else nid for nid in nid_list] with ut.Timer('sql'): #aids_list1 = ibs.get_name_aids(nid_list, enable_unknown_fix=False) aids_list1 = ibs.db.get(const.ANNOTATION_TABLE, (ANNOT_ROWID,), nid_list_, id_colname=NAME_ROWID, unpack_scalars=False) with ut.Timer('hackquery + group'): opstr = ''' SELECT annot_rowid, name_rowid FROM annotations WHERE name_rowid IN (%s) ORDER BY name_rowid ASC, annot_rowid ASC ''' % (', '.join(map(str, nid_list))) pair_list = ibs.db.connection.execute(opstr).fetchall() aids = np.array(ut.get_list_column(pair_list, 0)) nids = np.array(ut.get_list_column(pair_list, 1)) unique_nids, groupx = vt.group_indices(nids) grouped_aids_ = vt.apply_grouping(aids, groupx) aids_list5 = [sorted(arr.tolist()) for arr in grouped_aids_] for aids1, aids5 in zip(aids_list1, aids_list5): if (aids1) != (aids5): print(aids1) print(aids5) print('-----') ut.assert_lists_eq(list(map(tuple, aids_list5)), list(map(tuple, aids_list1))) with ut.Timer('numpy'): # alt method valid_aids = np.array(ibs.get_valid_aids()) valid_nids = np.array(ibs.get_annot_name_rowids(valid_aids, distinguish_unknowns=False)) aids_list2 = [valid_aids.take(np.flatnonzero(valid_nids == nid)).tolist() for nid in nid_list_] with ut.Timer('numpy2'): # alt method valid_aids = np.array(ibs.get_valid_aids()) valid_nids = np.array(ibs.get_annot_name_rowids(valid_aids, distinguish_unknowns=False)) aids_list3 = [valid_aids.take(np.flatnonzero(np.equal(valid_nids, nid))).tolist() for nid in nid_list_] with ut.Timer('numpy3'): # alt method valid_aids = np.array(ibs.get_valid_aids()) valid_nids = np.array(ibs.db.get_all_col_rows(const.ANNOTATION_TABLE, NAME_ROWID)) aids_list4 = [valid_aids.take(np.flatnonzero(np.equal(valid_nids, nid))).tolist() for nid in nid_list_] assert aids_list2 == aids_list3 assert aids_list3 == aids_list4 assert aids_list1 == aids_list2 valid_aids = ibs.get_valid_aids() %timeit ibs.db.get_all_col_rows('annotations', 'rowid') %timeit ibs.db.get_all_col_rows('annotations', 'name_rowid') %timeit ibs.get_annot_name_rowids(valid_aids, distinguish_unknowns=False) %timeit ibs.get_valid_aids() %timeit ibs.get_annot_name_rowids(ibs.get_valid_aids(), distinguish_unknowns=False) valid_nids1 = ibs.get_annot_name_rowids(valid_aids, distinguish_unknowns=False) valid_nids2 = ibs.db.get_all_col_rows('annotations', 'name_rowid') assert valid_nids1 == valid_nids2 ibs.db.fname ibs.db.fpath import sqlite3 con = sqlite3.connect(ibs.db.fpath) opstr = ''' SELECT annot_rowid, name_rowid FROM annotations WHERE name_rowid IN (SELECT name_rowid FROM name) ORDER BY name_rowid ASC, annot_rowid ASC ''' annot_rowid_list = con.execute(opstr).fetchall() aid_list = ut.get_list_column(annot_rowid_list, 0) nid_list = ut.get_list_column(annot_rowid_list, 1) # HACKY HACKY HACK with ut.Timer('hackquery + group'): #nid_list = ibs.get_valid_nids()[10:15] nid_list = ibs.get_valid_nids() opstr = ''' SELECT annot_rowid, name_rowid FROM annotations WHERE name_rowid IN (%s) ORDER BY name_rowid ASC, annot_rowid ASC ''' % (', '.join(map(str, nid_list))) pair_list = ibs.db.connection.execute(opstr).fetchall() aids = np.array(ut.get_list_column(pair_list, 0)) nids = np.array(ut.get_list_column(pair_list, 1)) unique_nids, groupx = vt.group_indices(nids) grouped_aids_ = vt.apply_grouping(aids, groupx) grouped_aids = [arr.tolist() for arr in grouped_aids_] SELECT name_rowid, COUNT(annot_rowid) AS number, GROUP_CONCAT(annot_rowid) AS aid_list FROM annotations WHERE name_rowid in (SELECT name_rowid FROM name) GROUP BY name_rowid ORDER BY name_rowid ASC import vtool as vt vt vt.aid_list[0] annot_rowid_list = con.execute(opstr).fetchall() opstr = ''' SELECT annot_rowid FROM annotations WHERE name_rowid=? ''' cur = ibs.db.connection.cursor() cur = con.execute('BEGIN IMMEDIATE TRANSACTION') cur = ibs.db.connection res = [cur.execute(opstr, (nid,)).fetchall() for nid in nid_list_] cur.execute('COMMIT TRANSACTION') res = [ibs.db.cur.execute(opstr, (nid,)).fetchall() for nid in nid_list_] """ return manual_name_funcs.get_name_aids(*args, **kwargs)
[docs] def get_name_exemplar_aids(*args, **kwargs): """ Returns: list_ (list): a list of list of cids in each name CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_exemplar_aids RESTful: Method: GET URL: /api/name/exemplar_aids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> nid_list = ibs.get_annot_name_rowids(aid_list) >>> exemplar_aids_list = ibs.get_name_exemplar_aids(nid_list) >>> result = exemplar_aids_list >>> print(result) [[], [2, 3], [2, 3], [], [5, 6], [5, 6], [7], [8], [], [10], [], [12], [13]] """ return manual_name_funcs.get_name_exemplar_aids(*args, **kwargs)
[docs] def get_name_gids(*args, **kwargs): """ Returns: list_ (list): the image ids associated with name ids RESTful: Method: GET URL: /api/name/gids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> nid_list = ibs._get_all_known_name_rowids() >>> gids_list = ibs.get_name_gids(nid_list) >>> result = gids_list >>> print(result) [[2, 3], [5, 6], [7], [8], [10], [12], [13]] """ return manual_name_funcs.get_name_gids(*args, **kwargs)
[docs] def get_name_uuids(*args, **kwargs): """ Returns: list_ (list): uuids_list - name uuids RESTful: Method: GET URL: /api/name/uuids/ """ return manual_name_funcs.get_name_uuids(*args, **kwargs)
[docs] def get_name_notes(*args, **kwargs): """ Returns: list_ (list): notes_list - name notes RESTful: Method: GET URL: /api/name/notes/ """ return manual_name_funcs.get_name_notes(*args, **kwargs)
[docs] def get_name_num_annotations(*args, **kwargs): """ Returns: list_ (list): the number of annotations for each name CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_num_annotations RESTful: Method: GET URL: /api/name/num_annotations/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> nid_list = ibs._get_all_known_name_rowids() >>> result = get_name_num_annotations(ibs, nid_list) >>> print(result) [2, 2, 1, 1, 1, 1, 1] """ return manual_name_funcs.get_name_num_annotations(*args, **kwargs)
[docs] def get_name_num_exemplar_annotations(*args, **kwargs): """ Returns: list_ (list): the number of annotations, which are exemplars for each name RESTful: Method: GET URL: /api/name/num_exemplar_annotations/ """ return manual_name_funcs.get_name_num_exemplar_annotations( *args, **kwargs)
[docs] def get_name_temp_flag(ibs, name_rowid_list, eager=True, nInput=None): """ name_temp_flag_list <- name.name_temp_flag[name_rowid_list] gets data from the "native" column "name_temp_flag" in the "name" table Args: name_rowid_list (list): Returns: list: name_temp_flag_list TemplateInfo: Tgetter_table_column col = name_temp_flag tbl = name CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_temp_flag RESTful: Method: GET URL: /api/name/temp_flag/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> name_rowid_list = ibs._get_all_name_rowids() >>> eager = True >>> name_temp_flag_list = ibs.get_name_temp_flag(name_rowid_list, eager=eager) >>> assert len(name_rowid_list) == len(name_temp_flag_list) """ return manual_name_funcs.get_name_temp_flag( ibs, name_rowid_list, eager, nInput)
[docs] def set_name_temp_flag( ibs, name_rowid_list, name_temp_flag_list, duplicate_behavior='error'): """ name_temp_flag_list -> name.name_temp_flag[name_rowid_list] Args: name_rowid_list name_temp_flag_list TemplateInfo: Tsetter_native_column tbl = name col = name_temp_flag RESTful: Method: PUT URL: /api/name/temp_flag/ """ return manual_name_funcs.set_name_temp_flag( ibs, name_rowid_list, name_temp_flag_list, duplicate_behavior)
[docs] def get_name_alias_texts(*args, **kwargs): """ Returns: list_ (list): name_alias_text_list CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_texts CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_alias_texts RESTful: Method: GET URL: /api/name/alias_texts/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> name_rowid_list = ibs.get_valid_nids() >>> # execute function >>> name_alias_text_list = get_name_alias_texts(ibs, name_rowid_list) >>> # verify results >>> result = str(name_alias_text_list) >>> print(result) [None, None, None, None, None, None, None] """ return manual_name_funcs.get_name_alias_texts(*args, **kwargs)
[docs] def set_name_alias_texts(*args, **kwargs): """ Returns: list_ (list): name_alias_text_list CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_texts RESTful: Method: PUT URL: /api/name/alias_texts/ """ return manual_name_funcs.set_name_alias_texts(*args, **kwargs)
[docs] def get_name_texts(*args, **kwargs): """ Returns: list_ (list): text names CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_texts RESTful: Method: GET URL: /api/name/texts/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> name_rowid_list = ibs._get_all_known_name_rowids() >>> name_text_list = get_name_texts(ibs, name_rowid_list) >>> result = str(name_text_list) >>> print(result) [u'easy', u'hard', u'jeff', u'lena', u'occl', u'polar', u'zebra'] """ return manual_name_funcs.get_name_texts(*args, **kwargs)
[docs] def get_num_names(ibs, **kwargs): """ Number of valid names CommandLine: python -m ibeis.control.manual_name_funcs --test-get_num_names RESTful: Method: GET URL: /api/name/num/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> result = get_num_names(ibs) >>> print(result) 7 """ return manual_name_funcs.get_num_names(ibs, **kwargs)
[docs] def get_name_rowids_from_text(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object name_text_list (list): ensure (bool): adds as new names if non-existant (default = True) Returns: name_rowid_list (list): Creates one if it doesnt exist CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_rowids_from_text:0 python -m ibeis.control.manual_name_funcs --test-get_name_rowids_from_text:1 TODO: should ensure be defaulted to False? RESTful: Method: GET URL: /api/name/rowids_from_text/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> import utool as ut >>> ibs = ibeis.opendb('testdb1') >>> name_text_list = [u'Fred', u'Sue', '____', u'zebra_grevys', 'TYPO', '____'] >>> ensure = False >>> name_rowid_list = ibs.get_name_rowids_from_text(name_text_list, ensure) >>> print(ut.list_str(list(zip(name_text_list, name_rowid_list)))) >>> ensure = True >>> name_rowid_list = ibs.get_name_rowids_from_text(name_text_list, ensure) >>> print(ut.list_str(list(zip(name_text_list, name_rowid_list)))) >>> ibs.print_name_table() >>> result = str(name_rowid_list) + '\n' >>> typo_rowids = ibs.get_name_rowids_from_text(['TYPO', 'Fred', 'Sue', 'zebra_grevys']) >>> ibs.delete_names(typo_rowids) >>> result += str(ibs._get_all_known_name_rowids()) >>> print('----') >>> ibs.print_name_table() >>> print(result) [8, 9, 0, 10, 11, 0] [1, 2, 3, 4, 5, 6, 7] """ return manual_name_funcs.get_name_rowids_from_text(*args, **kwargs)
[docs] def get_name_rowids_from_text_(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object name_text_list (list): Returns: name_rowid_list (list): CommandLine: python -m ibeis.control.manual_name_funcs --test-get_name_rowids_from_text_ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> import utool as ut # NOQA >>> ibs = ibeis.opendb('testdb1') >>> name_text_list = [u'Fred', 'easy', u'Sue', '____', u'zebra_grevys', 'TYPO', 'jeff'] >>> name_rowid_list = ibs.get_name_rowids_from_text_(name_text_list) >>> ibs.print_name_table() >>> result = str(name_rowid_list) >>> print(result) [None, 1, None, 0, None, None, 3] """ return manual_name_funcs.get_name_rowids_from_text_(*args, **kwargs)
[docs] def get_name_nids_with_gids(ibs, nid_list=None): """ """ return manual_name_funcs.get_name_nids_with_gids(ibs, nid_list)
[docs] def get_valid_nids( ibs, imgsetid=None, filter_empty=False, min_pername=None): """ Returns: list_ (list): all valid names with at least one animal (does not include unknown names) RESTful: Method: GET URL: /api/name/ """ return manual_name_funcs.get_valid_nids( ibs, imgsetid, filter_empty, min_pername)
[docs] def set_name_notes(*args, **kwargs): """ Sets a note for each name (multiple annotations) RESTful: Method: PUT URL: /api/name/notes/ """ return manual_name_funcs.set_name_notes(*args, **kwargs)
[docs] def set_name_texts(*args, **kwargs): """ Changes the name text. Does not affect the animals of this name. Effectively just changes the TEXT UUID CommandLine: python -m ibeis.control.manual_name_funcs --test-set_name_texts RESTful: Method: PUT URL: /api/name/texts/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> nid_list = ibs.get_valid_nids()[0:2] >>> name_list = ibs.get_name_texts(nid_list) >>> # result = set_name_texts(ibs, nid_list, name_list) >>> print(result) """ return manual_name_funcs.set_name_texts(*args, **kwargs)
[docs] def get_name_sex(ibs, name_rowid_list, eager=True, nInput=None): """ name_sex_list <- name.name_sex[name_rowid_list] gets data from the "native" column "name_sex" in the "name" table Args: name_rowid_list (list): Returns: list: name_sex_list TemplateInfo: Tgetter_table_column col = name_sex tbl = name RESTful: Method: GET URL: /api/name/sex/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_name_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> name_rowid_list = ibs._get_all_name_rowids() >>> eager = True >>> name_sex_list = ibs.get_name_sex(name_rowid_list, eager=eager) >>> assert len(name_rowid_list) == len(name_sex_list) """ return manual_name_funcs.get_name_sex( ibs, name_rowid_list, eager, nInput)
[docs] def set_name_sex( ibs, name_rowid_list, name_sex_list, duplicate_behavior='error'): """ name_sex_list -> name.name_sex[name_rowid_list] Args: name_rowid_list name_sex_list TemplateInfo: Tsetter_native_column tbl = name col = name_sex RESTful: Method: PUT URL: /api/name/sex/ """ return manual_name_funcs.set_name_sex( ibs, name_rowid_list, name_sex_list, duplicate_behavior)
[docs] def get_name_sex_text(ibs, name_rowid_list, eager=True, nInput=None): """ RESTful: Method: GET URL: /api/name/sex_text/ """ return manual_name_funcs.get_name_sex_text( ibs, name_rowid_list, eager, nInput)
[docs] def set_name_sex_text(ibs, name_rowid_list, name_sex_text_list): """ RESTful: Method: PUT URL: /api/name/sex_text/ """ return manual_name_funcs.set_name_sex_text( ibs, name_rowid_list, name_sex_text_list)
[docs] def get_name_age_months_est_min(ibs, name_rowid_list): """ RESTful: Method: GET URL: /api/name/age_months_est_min/ """ return manual_name_funcs.get_name_age_months_est_min( ibs, name_rowid_list)
[docs] def get_name_age_months_est_max(ibs, name_rowid_list): """ RESTful: Method: GET URL: /api/name/age_months_est_max/ """ return manual_name_funcs.get_name_age_months_est_max( ibs, name_rowid_list)
[docs] def get_name_imgsetids(ibs, nid_list): """ RESTful: Method: GET URL: /api/name/imgsetids/ """ return manual_name_funcs.get_name_imgsetids(ibs, nid_list)
[docs] def detect_random_forest(*args, **kwargs): """ Runs animal detection in each image. Adds annotations to the database as they are found. Args: gid_list (list): list of image ids to run detection on species (str): string text of the species to identify Returns: aids_list (list): list of lists of annotation ids detected in each image CommandLine: python -m ibeis.web.apis_detect --test-detect_random_forest --show RESTful: Method: PUT, GET URL: /api/detect/random_forest/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.web.apis_detect import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids()[0:2] >>> species = ibeis.const.TEST_SPECIES.ZEB_PLAIN >>> # execute function >>> aids_list = ibs.detect_random_forest(gid_list, species) >>> # Visualize results >>> if ut.show_was_requested(): >>> import plottool as pt >>> from ibeis.viz import viz_image >>> for fnum, gid in enumerate(gid_list): >>> viz_image.show_image(ibs, gid, fnum=fnum) >>> pt.show_if_requested() >>> # Remove newly detected annotations >>> ibs.delete_annots(ut.flatten(aids_list)) """ return apis_detect.detect_random_forest(*args, **kwargs)
[docs] def detect_cnn_yolo_json(*args, **kwargs): """ Runs animal detection in each image and returns json-ready formatted results, does not return annotations Args: gid_list (list): list of image ids to run detection on Returns: results_dict (list): dict of detection results (not annotations) CommandLine: python -m ibeis.web.apis_detect --test-detect_cnn_yolo_json Example: >>> # DISABLE_DOCTEST >>> from ibeis.web.apis_detect import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids()[0:2] >>> # execute function >>> results_dict = ibs.detect_cnn_yolo_json(gid_list) >>> print(results_dict) """ return apis_detect.detect_cnn_yolo_json(*args, **kwargs)
[docs] def detect_cnn_yolo(*args, **kwargs): """ Runs animal detection in each image. Adds annotations to the database as they are found. Args: gid_list (list): list of image ids to run detection on Returns: aids_list (list): list of lists of annotation ids detected in each image CommandLine: python -m ibeis.web.apis_detect --test-detect_cnn_yolo --show RESTful: Method: PUT, GET URL: /api/detect/cnn/yolo/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.web.apis_detect import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids()[0:2] >>> # execute function >>> aids_list = ibs.detect_cnn_yolo(gid_list) >>> # Visualize results >>> if ut.show_was_requested(): >>> import plottool as pt >>> from ibeis.viz import viz_image >>> for fnum, gid in enumerate(gid_list): >>> viz_image.show_image(ibs, gid, fnum=fnum) >>> pt.show_if_requested() >>> # Remove newly detected annotations >>> ibs.delete_annots(ut.flatten(aids_list)) """ return apis_detect.detect_cnn_yolo(*args, **kwargs)
[docs] def commit_detection_results(ibs, gid_list, results_list, note=None): """ """ return apis_detect.commit_detection_results( ibs, gid_list, results_list, note)
[docs] def has_species_detector(ibs, species_text): """ TODO: extend to use non-constant species RESTful: Method: GET URL: /api/detect/species/enabled/ """ return apis_detect.has_species_detector(ibs, species_text)
[docs] def get_species_with_detectors(ibs): """ RESTful: Method: GET URL: /api/detect/species/ """ return apis_detect.get_species_with_detectors(ibs)
[docs] def get_working_species(ibs): """ RESTful: Method: GET URL: /api/detect/species/working/ """ return apis_detect.get_working_species(ibs)
def _get_all_lblannot_rowids(ibs): """ """ return manual_lblannot_funcs._get_all_lblannot_rowids(ibs)
[docs] def add_annot_relationship(*args, **kwargs): """ Adds a relationship between annots and lblannots (annotations and labels of annotations) """ return manual_lblannot_funcs.add_annot_relationship(*args, **kwargs)
[docs] def add_lblannots(*args, **kwargs): """ Adds new lblannots (labels of annotations) creates a new uuid for any new pair(type, value) #TODO: reverse order of rowid_list value_list in input """ return manual_lblannot_funcs.add_lblannots(*args, **kwargs)
[docs] def get_lblannot_rowid_from_superkey(*args, **kwargs): """ Returns: list_ (list): lblannot_rowid_list from the superkey (lbltype, value) """ return manual_lblannot_funcs.get_lblannot_rowid_from_superkey( *args, **kwargs)
[docs] def delete_annot_relations(*args, **kwargs): """ Deletes the relationship between an annotation and a label """ return manual_lblannot_funcs.delete_annot_relations(*args, **kwargs)
[docs] def delete_annot_relations_oftype(*args, **kwargs): """ Deletes the relationship between an annotation and a label """ return manual_lblannot_funcs.delete_annot_relations_oftype( *args, **kwargs)
[docs] def delete_lblannots(*args, **kwargs): """ deletes lblannots from the database """ return manual_lblannot_funcs.delete_lblannots(*args, **kwargs)
[docs] def get_alr_annot_rowids(*args, **kwargs): """ Args: alrid_list (list of rowids): annot + label relationship rows get the annot_rowid belonging to each relationship """ return manual_lblannot_funcs.get_alr_annot_rowids(*args, **kwargs)
[docs] def get_alr_annot_rowids_from_lblannot_rowid(ibs, lblannot_rowid_list): """ This is a 1toM getter Get annotation rowids of labels. There may be more than one annotation per label. Args: lblannot_rowid_list (list): of lblannot (labels of annotations) rowids Returns: aids_list (list): of lists annotation rowids """ return manual_lblannot_funcs.get_alr_annot_rowids_from_lblannot_rowid( ibs, lblannot_rowid_list)
[docs] def get_alr_confidence(*args, **kwargs): """ Args: alrid_list (list of rowids): annot + label relationship rows Returns: alr_confidence_list (list of rowids): confidence in an annotation relationship """ return manual_lblannot_funcs.get_alr_confidence(*args, **kwargs)
[docs] def get_alr_config_rowid(*args, **kwargs): """ Args: alrid_list (list of rowids): annot + label relationship rows Returns: config_rowid_list (list): config_rowid in an annotation relationship """ return manual_lblannot_funcs.get_alr_config_rowid(*args, **kwargs)
[docs] def get_alr_lblannot_rowids(*args, **kwargs): """ Args: alrid_list (list of rowids): annot + label relationship rows Returns: lblannot_rowids_list (list of rowids): label rowids (of annotations) """ return manual_lblannot_funcs.get_alr_lblannot_rowids(*args, **kwargs)
[docs] def get_alrid_from_superkey(*args, **kwargs): """ Args: aid_list (list): list of annotation row-ids lblannot_rowid_list (list): list of lblannot row-ids config_rowid_list (list): list of config row-ids Returns: alrid_list (list): annot-label relationship id list """ return manual_lblannot_funcs.get_alrid_from_superkey(*args, **kwargs)
[docs] def get_annot_lblannot_value_of_lbltype(*args, **kwargs): """ Returns: lblannot_value_list (list): a list of strings ['fred', 'sue', ...] for each chip identifying the animal """ return manual_lblannot_funcs.get_annot_lblannot_value_of_lbltype( *args, **kwargs)
[docs] def get_lblannot_lbltypes_rowids(*args, **kwargs): """ """ return manual_lblannot_funcs.get_lblannot_lbltypes_rowids( *args, **kwargs)
[docs] def get_lblannot_notes(*args, **kwargs): """ """ return manual_lblannot_funcs.get_lblannot_notes(*args, **kwargs)
[docs] def get_lblannot_rowid_from_uuid(*args, **kwargs): """ UNSAFE Returns: lblannot_rowid_list from the superkey (lbltype, value) """ return manual_lblannot_funcs.get_lblannot_rowid_from_uuid( *args, **kwargs)
[docs] def get_lblannot_uuids(*args, **kwargs): """ """ return manual_lblannot_funcs.get_lblannot_uuids(*args, **kwargs)
[docs] def get_lblannot_values(*args, **kwargs): """ Returns: text lblannots """ return manual_lblannot_funcs.get_lblannot_values(*args, **kwargs)
[docs] def set_alr_confidence(*args, **kwargs): """ sets annotation-lblannot-relationship confidence """ return manual_lblannot_funcs.set_alr_confidence(*args, **kwargs)
[docs] def set_alr_lblannot_rowids(*args, **kwargs): """ Associates whatever annotation is at row(alrid) with a new lblannot_rowid. (effectively changes the label value of the rowid) """ return manual_lblannot_funcs.set_alr_lblannot_rowids(*args, **kwargs)
[docs] def set_annot_lblannot_from_rowid(*args, **kwargs): """ Sets items/lblannot_rowids of a list of annotations.""" return manual_lblannot_funcs.set_annot_lblannot_from_rowid( *args, **kwargs)
[docs] def set_annot_lblannot_from_value(*args, **kwargs): """ Associates the annot and lblannot of a specific type and value Adds the lblannot if it doesnt exist. Wrapper around convenience function for set_annot_from_lblannot_rowid """ return manual_lblannot_funcs.set_annot_lblannot_from_value( *args, **kwargs)
[docs] def set_lblannot_notes(ibs, lblannot_rowid_list, value_list): """ Updates the value for lblannots. Note this change applies to all annotations related to this lblannot_rowid """ return manual_lblannot_funcs.set_lblannot_notes( ibs, lblannot_rowid_list, value_list)
[docs] def set_lblannot_values(ibs, lblannot_rowid_list, value_list): """ Updates the value for lblannots. Note this change applies to all annotations related to this lblannot_rowid """ return manual_lblannot_funcs.set_lblannot_values( ibs, lblannot_rowid_list, value_list)
[docs] def get_annot_alrids(*args, **kwargs): """ FIXME: __name__ Get all the relationship ids belonging to the input annotations if lblannot lbltype is specified the relationship ids are filtered to be only of a specific lbltype/category/type """ return manual_lblannot_funcs.get_annot_alrids(*args, **kwargs)
[docs] def get_annot_alrids_oftype(*args, **kwargs): """ Get all the relationship ids belonging to the input annotations where the relationship ids are filtered to be only of a specific lbltype/category/type """ return manual_lblannot_funcs.get_annot_alrids_oftype(*args, **kwargs)
[docs] def get_annot_lblannot_rowids(*args, **kwargs): """ Returns: list_ (list): the name id of each annotation. """ return manual_lblannot_funcs.get_annot_lblannot_rowids(*args, **kwargs)
[docs] def get_annot_lblannot_rowids_oftype(*args, **kwargs): """ Returns: list_ (list): the name id of each annotation. """ return manual_lblannot_funcs.get_annot_lblannot_rowids_oftype( *args, **kwargs)
[docs] def delete_empty_imgsetids(ibs): """ Removes imagesets without images Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.control.manual_gsgrelate_funcs --test-delete_empty_imgsetids Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_gsgrelate_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> # execute function >>> result = ibs.delete_empty_imgsetids() >>> # verify results >>> print(result) """ return manual_gsgrelate_funcs.delete_empty_imgsetids(ibs)
[docs] def get_image_gsgrids(*args, **kwargs): """ Returns: list_ (list): a list of imageset-image-relationship rowids for each imageid """ return manual_gsgrelate_funcs.get_image_gsgrids(*args, **kwargs)
[docs] def delete_gsgr_imageset_relations(*args, **kwargs): """ Removes relationship between input imagesets and all images """ return manual_gsgrelate_funcs.delete_gsgr_imageset_relations( *args, **kwargs)
[docs] def delete_gsgr_image_relations(*args, **kwargs): """ Removes relationship between input images and all imagesets """ return manual_gsgrelate_funcs.delete_gsgr_image_relations( *args, **kwargs)
[docs] def unrelate_images_and_imagesets(*args, **kwargs): """ Seems to unrelate specific image imageset pairs Args: ibs (IBEISController): ibeis controller object gid_list (list): imgsetid_list (list): Returns: list: gids_list CommandLine: python -m ibeis.control.manual_gsgrelate_funcs --test-unrelate_images_and_imagesets python -c "import utool; print(utool.auto_docstr('ibeis.control.manual_gsgrelate_funcs', 'delete_gsgr_image_relations'))" Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_gsgrelate_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> # Reset and compute imagesets >>> ibs.delete_all_imagesets() >>> ibs.compute_occurrences() >>> imgsetid_list = ibs.get_valid_imgsetids() >>> gids_list = ibs.get_imageset_gids(imgsetid_list) >>> assert len(imgsetid_list) == 2 >>> assert len(gids_list) == 2 >>> assert len(gids_list[0]) == 7 >>> assert len(gids_list[1]) == 6 >>> # Add imageset 2 gids to imageset 1 so an image belongs to multiple imagesets >>> imgset2_gids = gids_list[1][0:1] >>> imgset1_imgsetids = imgsetid_list[0:1] >>> ibs.add_image_relationship(imgset2_gids, imgset1_imgsetids) >>> # Now delete the image from the imageset 2 >>> imgset2_imgsetids = imgsetid_list[1:2] >>> # execute function >>> ibs.unrelate_images_and_imagesets(imgset2_gids, imgset2_imgsetids) >>> # verify results >>> ibs.print_egpairs_table() >>> imgsetid_list_ = ibs.get_valid_imgsetids() >>> gids_list_ = ibs.get_imageset_gids(imgsetid_list_) >>> result = str(gids_list_) >>> print(result) >>> # imgset2_gids should now only be in imageset1 >>> assert imgset2_gids[0] in gids_list_[0] >>> assert imgset2_gids[0] not in gids_list_[1] """ return manual_gsgrelate_funcs.unrelate_images_and_imagesets( *args, **kwargs)
[docs] def get_gsgr_rowid_from_superkey(*args, **kwargs): """ Returns: gsgrid_list (list): eg-relate-ids from info constrained to be unique (imgsetid, gid) """ return manual_gsgrelate_funcs.get_gsgr_rowid_from_superkey( *args, **kwargs)
[docs] def add_image_relationship(*args, **kwargs): """ Adds a relationship between an image and and imageset """ return manual_gsgrelate_funcs.add_image_relationship(*args, **kwargs)
def _get_all_species_rowids(ibs): """ Returns: list_ (list): all nids of known animals (does not include unknown names) """ return manual_species_funcs._get_all_species_rowids(ibs)
[docs] def get_all_species_texts(ibs): """ Returns: list_ (list): all nids of known animals (does not include unknown names) """ return manual_species_funcs.get_all_species_texts(ibs)
[docs] def get_all_species_nice(ibs): """ Returns: list_ (list): all nids of known animals (does not include unknown names) """ return manual_species_funcs.get_all_species_nice(ibs)
[docs] def sanitize_species_texts(ibs, species_text_list): """ changes unknown species to the unknown value Args: ibs (IBEISController): ibeis controller object species_text_list (list): Returns: list: species_text_list_ CommandLine: python -m ibeis.control.manual_species_funcs --test-sanitize_species_texts RESTful: Method: POST URL: /api/species/sanitize Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_species_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> species_text_list = ['foo', 'bar', 'zebra_plains'] >>> # execute function >>> species_text_list_ = sanitize_species_texts(ibs, species_text_list) >>> # verify results >>> result = ut.list_str(species_text_list_, nl=False) >>> print(result) ['foo', 'bar', 'zebra_plains'] """ return manual_species_funcs.sanitize_species_texts( ibs, species_text_list)
[docs] def add_species(*args, **kwargs): """ Adds a list of species. Returns: list: speciesid_list - species rowids RESTful: Method: POST URL: /api/species/ CommandLine: python -m ibeis.control.manual_species_funcs --test-add_species Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_species_funcs import * # NOQA >>> import ibeis >>> import utool as ut >>> ibs = ibeis.opendb('testdb1') >>> species_text_list = [ ... 'jaguar', 'zebra_plains', 'zebra_plains', '____', 'TYPO', ... '____', 'zebra_grevys', 'bear_polar'] >>> species_rowid_list = ibs.add_species(species_text_list) >>> print(ut.list_str(list(zip(species_text_list, species_rowid_list)))) >>> ibs.print_species_table() >>> species_text = ibs.get_species_texts(species_rowid_list) >>> # Ensure we leave testdb1 in a clean state >>> ibs.delete_species(ibs.get_species_rowids_from_text(['jaguar', 'TYPO'])) >>> all_species_rowids = ibs._get_all_species_rowids() >>> result = ut.list_str(species_text, nl=False) + '\n' >>> result += ut.list_str(all_species_rowids, nl=False) + '\n' >>> result += ut.list_str(ibs.get_species_texts(all_species_rowids), nl=False) >>> print(result) ['jaguar', 'zebra_plains', 'zebra_plains', '____', 'typo', '____', 'zebra_grevys', 'bear_polar'] [1, 2, 3] ['zebra_plains', 'zebra_grevys', 'bear_polar'] [u'jaguar', u'zebra_plains', u'zebra_plains', '____', '____', '____', u'zebra_grevys', u'bear_polar'] [8, 9, 10] [u'zebra_plains', u'zebra_grevys', u'bear_polar'] """ return manual_species_funcs.add_species(*args, **kwargs)
[docs] def delete_species(*args, **kwargs): """ deletes species from the database CAREFUL. YOU PROBABLY DO NOT WANT TO USE THIS at least ensure that no annot is associated with any of these species rowids RESTful: Method: DELETE URL: /api/species/ """ return manual_species_funcs.delete_species(*args, **kwargs)
[docs] def get_species_rowids_from_text(*args, **kwargs): """ Returns: species_rowid_list (list): Creates one if it doesnt exist CommandLine: python -m ibeis.control.manual_species_funcs --test-get_species_rowids_from_text:0 python -m ibeis.control.manual_species_funcs --test-get_species_rowids_from_text:1 RESTful: Method: GET URL: /api/species/rowids_from_text/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_species_funcs import * # NOQA >>> import ibeis >>> import utool as ut >>> ibs = ibeis.opendb('testdb1') >>> species_text_list = [ ... u'jaguar', u'zebra_plains', u'zebra_plains', '____', 'TYPO', ... '____', u'zebra_grevys', u'bear_polar'] >>> ensure = False >>> species_rowid_list = ibs.get_species_rowids_from_text(species_text_list, ensure) >>> print(ut.list_str(list(zip(species_text_list, species_rowid_list)))) >>> ensure = True >>> species_rowid_list = ibs.get_species_rowids_from_text(species_text_list, ensure) >>> print(ut.list_str(list(zip(species_text_list, species_rowid_list)))) >>> ibs.print_species_table() >>> species_text = ibs.get_species_texts(species_rowid_list) >>> # Ensure we leave testdb1 in a clean state >>> ibs.delete_species(ibs.get_species_rowids_from_text(['jaguar', 'TYPO'])) >>> all_species_rowids = ibs._get_all_species_rowids() >>> result = ut.list_str(species_text, nl=False) + '\n' >>> result += ut.list_str(all_species_rowids, nl=False) + '\n' >>> result += ut.list_str(ibs.get_species_texts(all_species_rowids), nl=False) >>> print(result) ['jaguar', 'zebra_plains', 'zebra_plains', '____', 'typo', '____', 'zebra_grevys', 'bear_polar'] [1, 2, 3] ['zebra_plains', 'zebra_grevys', 'bear_polar'] [u'jaguar', u'zebra_plains', u'zebra_plains', '____', '____', '____', u'zebra_grevys', u'bear_polar'] [8, 9, 10] [u'zebra_plains', u'zebra_grevys', u'bear_polar'] Example1: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_species_funcs import * # NOQA >>> import ibeis >>> import utool as ut # NOQA >>> ibs = ibeis.opendb('testdb1') >>> species_text_list = [ ... u'jaguar', u'zebra_plains', u'zebra_plains', '____', 'TYPO', ... '____', u'zebra_grevys', u'bear_polar'] >>> ensure = False >>> species_rowid_list = ibs.get_species_rowids_from_text(species_text_list, ensure) """ return manual_species_funcs.get_species_rowids_from_text( *args, **kwargs)
[docs] def get_species_uuids(*args, **kwargs): """ Returns: list_ (list): uuids_list - species uuids RESTful: Method: GET URL: /api/species/uuids/ """ return manual_species_funcs.get_species_uuids(*args, **kwargs)
[docs] def get_species_texts(*args, **kwargs): """ Returns: list: species_text_list text names CommandLine: python -m ibeis.control.manual_species_funcs --test-get_species_texts --enableall RESTful: Method: GET URL: /api/species/texts/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_species_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> species_rowid_list = ibs._get_all_species_rowids() >>> result = get_species_texts(ibs, species_rowid_list) >>> print(result) [u'zebra_plains', u'zebra_grevys', u'bear_polar'] """ return manual_species_funcs.get_species_texts(*args, **kwargs)
[docs] def get_species_nice(*args, **kwargs): """ Returns: list: species_text_list nice names CommandLine: python -m ibeis.control.manual_species_funcs --test-get_species_nice --enableall RESTful: Method: GET URL: /api/species/nice/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_species_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> ibs._clean_species() >>> species_rowid_list = ibs._get_all_species_rowids() >>> result = get_species_nice(ibs, species_rowid_list) >>> print(result) [u'Zebra (Plains)', u"Zebra (Grevy's)", u'Polar Bear'] """ return manual_species_funcs.get_species_nice(*args, **kwargs)
[docs] def get_species_codes(*args, **kwargs): """ Returns: list_ (list): code_list - species codes RESTful: Method: GET URL: /api/species/codes/ """ return manual_species_funcs.get_species_codes(*args, **kwargs)
[docs] def get_species_notes(*args, **kwargs): """ Returns: list_ (list): notes_list - species notes RESTful: Method: GET URL: /api/species/notes/ """ return manual_species_funcs.get_species_notes(*args, **kwargs)
[docs] def get_species_enabled(*args, **kwargs): """ Returns: list_ (list): "Species Enabled" flag, true if the species is enabled RESTful: Method: GET URL: /api/species/enabled/ """ return manual_species_funcs.get_species_enabled(*args, **kwargs)
def _set_species_texts(*args, **kwargs): """ Sets the species nice names """ return manual_species_funcs._set_species_texts(*args, **kwargs) def _set_species_nice(*args, **kwargs): """ Sets the species nice names """ return manual_species_funcs._set_species_nice(*args, **kwargs) def _set_species_code(*args, **kwargs): """ Sets the species nice names """ return manual_species_funcs._set_species_code(*args, **kwargs)
[docs] def set_species_enabled(*args, **kwargs): """ Sets the species all instances enabled bit RESTful: Method: PUT URL: /api/species/enabled/ """ return manual_species_funcs.set_species_enabled(*args, **kwargs)
[docs] def get_wildbook_target(ibs): """ """ return manual_wildbook_funcs.get_wildbook_target(ibs)
[docs] def get_wildbook_info(ibs, tomcat_dpath=None, wb_target=None): """ """ return manual_wildbook_funcs.get_wildbook_info( ibs, tomcat_dpath, wb_target)
[docs] def get_wildbook_tomcat_path(ibs, tomcat_dpath=None, wb_target=None): """ """ return manual_wildbook_funcs.get_wildbook_tomcat_path( ibs, tomcat_dpath, wb_target)
[docs] def get_wildbook_base_url(ibs, wb_target=None): """ """ return manual_wildbook_funcs.get_wildbook_base_url(ibs, wb_target)
[docs] def wildbook_signal_annot_name_changes( ibs, aid_list=None, tomcat_dpath=None, wb_target=None, dryrun=False): """ Args: aid_list (int): list of annotation ids(default = None) tomcat_dpath (None): (default = None) wb_target (None): (default = None) dryrun (bool): (default = False) CommandLine: python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_annot_name_changes:0 --dryrun python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_annot_name_changes:1 --dryrun python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_annot_name_changes:1 python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_annot_name_changes:2 python -m ibeis --tf wildbook_signal_annot_name_changes:0 --dryrun python -m ibeis --tf wildbook_signal_annot_name_changes:1 --dryrun python -m ibeis --tf wildbook_signal_annot_name_changes:1 python -m ibeis --tf wildbook_signal_annot_name_changes:2 Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_wildbook_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> #gid_list = ibs.get_valid_gids()[0:10] >>> gid_list = ibs.get_valid_gids()[3:5] >>> aid_list = ut.flatten(ibs.get_image_aids(gid_list)) >>> # Test case where some names change, some do not. There are no new names. >>> old_nid_list = ibs.get_annot_name_rowids(aid_list) >>> new_nid_list = ut.list_roll(old_nid_list, 1) >>> ibs.set_annot_name_rowids(aid_list, new_nid_list) >>> dryrun = ut.get_argflag('--dryrun') >>> wb_target, tomcat_dpath = testdata_wildbook_server() >>> result = ibs.wildbook_signal_annot_name_changes(aid_list, tomcat_dpath, wb_target, dryrun) >>> ibs.set_annot_name_rowids(aid_list, old_nid_list) Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_wildbook_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> #gid_list = ibs.get_valid_gids()[0:10] >>> gid_list = ibs.get_valid_gids()[3:5] >>> aid_list = ut.flatten(ibs.get_image_aids(gid_list)) >>> # Test case where all names change to one known name >>> #old_nid_list = ibs.get_annot_name_rowids(aid_list) >>> #new_nid_list = [old_nid_list[0]] * len(old_nid_list) >>> old_nid_list = [1, 2] >>> new_nid_list = [1, 1] >>> print('old_nid_list = %r' % (old_nid_list,)) >>> print('new_nid_list = %r' % (new_nid_list,)) >>> ibs.set_annot_name_rowids(aid_list, new_nid_list) >>> dryrun = ut.get_argflag('--dryrun') >>> wb_target, tomcat_dpath = testdata_wildbook_server() >>> result = ibs.wildbook_signal_annot_name_changes(aid_list, tomcat_dpath, wb_target, dryrun) >>> # Undo changes here (not undone in wildbook) >>> #ibs.set_annot_name_rowids(aid_list, old_nid_list) Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_wildbook_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> gid_list = ibs.get_valid_gids()[3:5] >>> aid_list = ut.flatten(ibs.get_image_aids(gid_list)) >>> old_nid_list = [1, 2] >>> ibs.set_annot_name_rowids(aid_list, old_nid_list) >>> # Signal what currently exists (should put them back to normal) >>> dryrun = ut.get_argflag('--dryrun') >>> wb_target, tomcat_dpath = testdata_wildbook_server() >>> result = ibs.wildbook_signal_annot_name_changes(aid_list, tomcat_dpath, wb_target, dryrun) """ return manual_wildbook_funcs.wildbook_signal_annot_name_changes( ibs, aid_list, tomcat_dpath, wb_target, dryrun)
[docs] def wildbook_signal_imgsetid_list( ibs, imgsetid_list=None, set_shipped_flag=True, open_url_on_complete=True, tomcat_dpath=None, wb_target=None, dryrun=False): """ Exports specified imagesets to wildbook. This is a synchronous call. Args: imgsetid_list (list): (default = None) set_shipped_flag (bool): (default = True) open_url_on_complete (bool): (default = True) RESTful: Method: PUT URL: /api/wildbook/signal_imgsetid_list/ Ignore: cd $CODE_DIR/Wildbook/tmp # Reset IBEIS database python -m ibeis.tests.reset_testdbs --reset_mtest python -m ibeis --tf reset_mtest # Reset Wildbook database #python -m ibeis.control.manual_wildbook_funcs --exec-reset_local_wildbook python -m ibeis --tf reset_local_wildbook # Install Wildbook #python -m ibeis.control.manual_wildbook_funcs --test-install_wildbook python -m ibeis --tf install_wildbook # Startup Wildbook #python -m ibeis.control.manual_wildbook_funcs --test-startup_wildbook_server python -m ibeis --tf startup_wildbook_server # Login to wildbook #python -m ibeis.control.manual_wildbook_funcs --exec-test_wildbook_login python -m ibeis --tf test_wildbook_login # Ship ImageSets to wildbook #python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_imgsetid_list python -m ibeis --tf wildbook_signal_imgsetid_list # Change annotations names to a single name #python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_annot_name_changes:1 python -m ibeis --tf wildbook_signal_annot_name_changes:1 # Change annotations names back to normal #python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_annot_name_changes:2 python -m ibeis --tf wildbook_signal_annot_name_changes:2 CommandLine: python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_imgsetid_list python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_imgsetid_list --dryrun python -m ibeis.control.manual_wildbook_funcs --test-wildbook_signal_imgsetid_list --break SeeAlso: ~/local/build_scripts/init_wildbook.sh Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_wildbook_funcs import * # NOQA >>> dryrun = ut.get_argflag('--dryrun') >>> wb_target, tomcat_dpath = testdata_wildbook_server() >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> #gid_list = ibs.get_valid_gids()[0:10] >>> gid_list = ibs.get_valid_gids()[3:5] >>> new_imgsetid = ibs.create_new_imageset_from_images(gid_list) # NOQA >>> print('new imageset uuid = %r' % (ibs.get_imageset_uuid(new_imgsetid),)) >>> print('new imageset text = %r' % (ibs.get_imageset_text(new_imgsetid),)) >>> imgsetid_list = [new_imgsetid] >>> ibs.set_imageset_processed_flags([new_imgsetid], [1]) >>> gid_list = ibs.get_imageset_gids(new_imgsetid) >>> ibs.set_image_reviewed(gid_list, [1] * len(gid_list)) >>> set_shipped_flag = True >>> open_url_on_complete = True >>> result = ibs.wildbook_signal_imgsetid_list(imgsetid_list, set_shipped_flag, open_url_on_complete, tomcat_dpath, wb_target, dryrun) >>> # cleanup >>> #ibs.delete_imagesets(new_imgsetid) >>> print(result) """ return manual_wildbook_funcs.wildbook_signal_imgsetid_list( ibs, imgsetid_list, set_shipped_flag, open_url_on_complete, tomcat_dpath, wb_target, dryrun)
[docs] def refresh(ibs): """ DEPRICATE """ return ibsfuncs.refresh(ibs)
[docs] def export_to_hotspotter(ibs): """ """ return ibsfuncs.export_to_hotspotter(ibs)
[docs] def get_image_time_statstr(ibs, gid_list=None): """ """ return ibsfuncs.get_image_time_statstr(ibs, gid_list)
[docs] def get_image_annotation_bboxes(ibs, gid_list): """ """ return ibsfuncs.get_image_annotation_bboxes(ibs, gid_list)
[docs] def get_image_annotation_thetas(ibs, gid_list): """ """ return ibsfuncs.get_image_annotation_thetas(ibs, gid_list)
[docs] def filter_junk_annotations(ibs, aid_list): """ remove junk annotations from a list Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: filtered_aid_list Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> filtered_aid_list = filter_junk_annotations(ibs, aid_list) >>> result = str(filtered_aid_list) >>> print(result) """ return ibsfuncs.filter_junk_annotations(ibs, aid_list)
[docs] def compute_all_chips(ibs, **kwargs): """ Executes lazy evaluation of all chips """ return ibsfuncs.compute_all_chips(ibs, **kwargs)
[docs] def ensure_annotation_data( ibs, aid_list, chips=True, feats=True, featweights=False): """ """ return ibsfuncs.ensure_annotation_data( ibs, aid_list, chips, feats, featweights)
[docs] def convert_empty_images_to_annotations(ibs): """ images without chips are given an ANNOTATION over the entire image """ return ibsfuncs.convert_empty_images_to_annotations(ibs)
[docs] def use_images_as_annotations( ibs, gid_list, name_list=None, nid_list=None, notes_list=None, adjust_percent=0.0): """ Adds an annotation the size of the entire image to each image. adjust_percent - shrinks the ANNOTATION by percentage on each side """ return ibsfuncs.use_images_as_annotations( ibs, gid_list, name_list, nid_list, notes_list, adjust_percent)
[docs] def get_annot_been_adjusted(ibs, aid_list): """ Returns if a bounding box has been adjusted from defaults set in use_images_as_annotations Very hacky very heurstic. """ return ibsfuncs.get_annot_been_adjusted(ibs, aid_list)
[docs] def assert_valid_species_texts(ibs, species_list, iswarning=True): """ """ return ibsfuncs.assert_valid_species_texts( ibs, species_list, iswarning)
[docs] def assert_singleton_relationship(ibs, alrids_list): """ """ return ibsfuncs.assert_singleton_relationship(ibs, alrids_list)
[docs] def assert_valid_gids(ibs, gid_list, verbose=False, veryverbose=False): """ """ return ibsfuncs.assert_valid_gids(ibs, gid_list, verbose, veryverbose)
[docs] def assert_valid_aids( ibs, aid_list, verbose=False, veryverbose=False, msg=u'', auuid_list=None): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids verbose (bool): verbosity flag(default = False) veryverbose (bool): (default = False) CommandLine: python -m ibeis.other.ibsfuncs --test-assert_valid_aids Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> verbose = False >>> veryverbose = False >>> print('Asserting multiple') >>> result = assert_valid_aids(ibs, aid_list, verbose, veryverbose) >>> print('Asserting single') >>> result = assert_valid_aids(ibs, aid_list[0:1], verbose, veryverbose) >>> print('Asserting multiple incorrect') >>> auuid_list = ibs.get_annot_uuids(aid_list) + [None] >>> try: >>> result = assert_valid_aids(ibs, aid_list + [0], verbose, veryverbose, auuid_list=auuid_list) >>> except AssertionError: >>> print('Correctly got assertion') >>> else: >>> assert False, 'should have failed' >>> print('Asserting single incorrect') >>> try: >>> result = assert_valid_aids(ibs, [0], verbose, veryverbose) >>> except AssertionError: >>> print('Correctly got assertion') >>> else: >>> assert False, 'should have failed' >>> print(result) >>> print(result) """ return ibsfuncs.assert_valid_aids( ibs, aid_list, verbose, veryverbose, msg, auuid_list)
[docs] def get_missing_gids(ibs, gid_list=None): """ Finds gids with broken links to the original data. Args: ibs (IBEISController): ibeis controller object gid_list (list): (default = None) CommandLine: python -m ibeis.other.ibsfuncs --exec-get_missing_gids --db GZ_Master1 Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> #ibs = ibeis.opendb('GZ_Master1') >>> gid_list = ibs.get_valid_gids() >>> bad_gids = ibs.get_missing_gids(gid_list) >>> print('#bad_gids = %r / %r' % (len(bad_gids), len(gid_list))) """ return ibsfuncs.get_missing_gids(ibs, gid_list)
[docs] def assert_images_exist(ibs, gid_list=None, verbose=True): """ """ return ibsfuncs.assert_images_exist(ibs, gid_list, verbose)
[docs] def check_image_consistency(ibs, gid_list=None): """ Args: ibs (IBEISController): ibeis controller object gid_list (list): (default = None) CommandLine: python -m ibeis.other.ibsfuncs --exec-check_image_consistency --db=GZ_Master1 Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> gid_list = None >>> result = check_image_consistency(ibs, gid_list) >>> print(result) """ return ibsfuncs.check_image_consistency(ibs, gid_list)
[docs] def check_annot_consistency(ibs, aid_list=None): """ Args: ibs (IBEISController): aid_list (list): CommandLine: python -m ibeis.other.ibsfuncs --test-check_annot_consistency Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> result = check_annot_consistency(ibs, aid_list) >>> print(result) """ return ibsfuncs.check_annot_consistency(ibs, aid_list)
[docs] def check_annot_corrupt_uuids(ibs, aid_list=None): """ # del dtool.__SQLITE__.converters['UUID'] # import uuid # del dtool.__SQLITE__.adapters[(uuid.UUID, dtool.__SQLITE__.PrepareProtocol)] >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('PZ_MTEST') >>> aid_list = ibs.get_valid_aids() >>> check_annot_corrupt_uuids(ibs, aid_list) """ return ibsfuncs.check_annot_corrupt_uuids(ibs, aid_list)
[docs] def check_name_mapping_consistency(ibs, nx2_aids): """ checks that all the aids grouped in a name ahave the same name """ return ibsfuncs.check_name_mapping_consistency(ibs, nx2_aids)
[docs] def check_annot_size(ibs): """ """ return ibsfuncs.check_annot_size(ibs)
[docs] def run_integrity_checks(ibs, embed=False): """ Function to run all database consistency checks """ return ibsfuncs.run_integrity_checks(ibs, embed)
[docs] def check_annotmatch_consistency(ibs): """ """ return ibsfuncs.check_annotmatch_consistency(ibs)
[docs] def fix_invalid_annotmatches(ibs): """ """ return ibsfuncs.fix_invalid_annotmatches(ibs)
[docs] def fix_and_clean_database(ibs): """ Function to run all database cleanup scripts Rename to run_cleanup_scripts Break into two funcs: run_cleanup_scripts run_fixit_scripts CONSITENCY CHECKS TODO: * check that annotmatches marked as False do not have the same name for similar viewpoints. * check that photobombs are have different names * warn if scenery matches have the same name """ return ibsfuncs.fix_and_clean_database(ibs)
[docs] def fix_exif_data(ibs, gid_list): """ TODO CALL SCRIPT Args: ibs (IBEISController): ibeis controller object gid_list (list): list of image ids CommandLine: python -m ibeis.other.ibsfuncs --exec-fix_exif_data Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='lynx') >>> gid_list = ibs.get_valid_gids() >>> result = fix_exif_data(ibs, gid_list) >>> print(result) """ return ibsfuncs.fix_exif_data(ibs, gid_list)
[docs] def fix_invalid_nids(ibs): """ Make sure that all rowids are greater than 0 We can only handle there being a name with rowid 0 if it is UNKNOWN. In this case we safely delete it, but anything more complicated needs to be handled anually Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.other.ibsfuncs --test-fix_invalid_nids Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> # execute function >>> result = fix_invalid_nids(ibs) >>> # verify results >>> print(result) """ return ibsfuncs.fix_invalid_nids(ibs)
[docs] def fix_invalid_name_texts(ibs): """ Ensure that no name text is empty or '____' Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.other.ibsfuncs --test-fix_invalid_names Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> # execute function >>> result = fix_invalid_name_texts(ibs) >>> # verify results >>> print(result) ibs.set_name_texts(nid_list[3], '____') ibs.set_name_texts(nid_list[2], '') """ return ibsfuncs.fix_invalid_name_texts(ibs)
[docs] def copy_imagesets(ibs, imgsetid_list): """ Args: ibs (IBEISController): ibeis controller object imgsetid_list (list): Returns: list: new_imgsetid_list CommandLine: python -m ibeis.other.ibsfuncs --test-copy_imagesets Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> ibs.delete_all_imagesets() >>> ibs.compute_occurrences() >>> imgsetid_list = ibs.get_valid_imgsetids() >>> # execute function >>> new_imgsetid_list = copy_imagesets(ibs, imgsetid_list) >>> # verify results >>> result = str(ibs.get_imageset_text(new_imgsetid_list)) >>> assert [2] == list(set(map(len, ibs.get_image_imgsetids(ibs.get_valid_gids())))) >>> print(result) >>> ibs.delete_all_imagesets() >>> ibs.compute_occurrences() """ return ibsfuncs.copy_imagesets(ibs, imgsetid_list)
[docs] def fix_unknown_exemplars(ibs): """ Goes through all of the annotations, and sets their exemplar flag to 0 if it is associated with an unknown annotation """ return ibsfuncs.fix_unknown_exemplars(ibs)
[docs] def delete_all_recomputable_data(ibs): """ Delete all cached data including chips and imagesets """ return ibsfuncs.delete_all_recomputable_data(ibs)
[docs] def delete_cache(ibs, delete_chips=False, delete_imagesets=False): """ Deletes the cache directory in the database directory. Can specify to delete encoutners and chips as well. """ return ibsfuncs.delete_cache(ibs, delete_chips, delete_imagesets)
[docs] def delete_cachedir(ibs): """ Deletes the cache directory in the database directory. (does not remove chips) """ return ibsfuncs.delete_cachedir(ibs)
[docs] def delete_qres_cache(ibs): """ Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis --tf delete_qres_cache python -m ibeis --tf delete_qres_cache --db PZ_MTEST python -m ibeis --tf delete_qres_cache --db PZ_Master1 Example: >>> # SCRIPT >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> result = delete_qres_cache(ibs) >>> print(result) """ return ibsfuncs.delete_qres_cache(ibs)
[docs] def delete_neighbor_cache(ibs): """ """ return ibsfuncs.delete_neighbor_cache(ibs)
[docs] def delete_all_features(ibs): """ """ return ibsfuncs.delete_all_features(ibs)
[docs] def delete_all_chips(ibs): """ """ return ibsfuncs.delete_all_chips(ibs)
[docs] def delete_all_imagesets(ibs): """ """ return ibsfuncs.delete_all_imagesets(ibs)
[docs] def delete_all_annotations(ibs): """ Carefull with this function. Annotations are not recomputable """ return ibsfuncs.delete_all_annotations(ibs)
[docs] def delete_thumbnails(ibs): """ """ return ibsfuncs.delete_thumbnails(ibs)
[docs] def delete_flann_cachedir(ibs): """ """ return ibsfuncs.delete_flann_cachedir(ibs)
[docs] def vd(ibs): """ """ return ibsfuncs.vd(ibs)
[docs] def view_dbdir(ibs): """ """ return ibsfuncs.view_dbdir(ibs)
[docs] def get_empty_gids(ibs, imgsetid=None): """ returns gid list without any chips """ return ibsfuncs.get_empty_gids(ibs, imgsetid)
[docs] def get_annot_vecs_cache(ibs, aids): """ When you have a list with duplicates and you dont want to copy data creates a reference to each data object indexed by a dict """ return ibsfuncs.get_annot_vecs_cache(ibs, aids)
[docs] def get_annot_is_hard(ibs, aid_list): """ CmdLine: ./dev.py --cmd --db PZ_Mothers Args: ibs (IBEISController): aid_list (list): Returns: list: is_hard_list Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0::2] >>> is_hard_list = get_annot_is_hard(ibs, aid_list) >>> result = str(is_hard_list) >>> print(result) [False, False, False, False, False, False, False] """ return ibsfuncs.get_annot_is_hard(ibs, aid_list)
[docs] def get_hard_annot_rowids(ibs): """ """ return ibsfuncs.get_hard_annot_rowids(ibs)
[docs] def get_easy_annot_rowids(ibs): """ """ return ibsfuncs.get_easy_annot_rowids(ibs)
[docs] def set_annot_is_hard(ibs, aid_list, flag_list): """ Hack to mark hard cases in the notes column Example: >>> pz_mothers_hard_aids = [27, 43, 44, 49, 50, 51, 54, 66, 89, 97] >>> aid_list = pz_mothers_hard_aids >>> flag_list = [True] * len(aid_list) """ return ibsfuncs.set_annot_is_hard(ibs, aid_list, flag_list)
[docs] def is_nid_unknown(*args, **kwargs): """ """ return ibsfuncs.is_nid_unknown(*args, **kwargs)
[docs] def set_annot_names_to_next_name(ibs, aid_list): """ """ return ibsfuncs.set_annot_names_to_next_name(ibs, aid_list)
def _overwrite_annot_species_to_plains(ibs, aid_list): """ """ return ibsfuncs._overwrite_annot_species_to_plains(ibs, aid_list) def _overwrite_annot_species_to_grevys(ibs, aid_list): """ """ return ibsfuncs._overwrite_annot_species_to_grevys(ibs, aid_list) def _overwrite_annot_species_to_giraffe(ibs, aid_list): """ """ return ibsfuncs._overwrite_annot_species_to_giraffe(ibs, aid_list) def _overwrite_all_annot_species_to(ibs, species): """ THIS OVERWRITES A LOT OF INFO """ return ibsfuncs._overwrite_all_annot_species_to(ibs, species)
[docs] def get_annot_info(*args, **kwargs): """ Args: ibs (ibeis.IBEISController): ibeis controller object aid_list (list): list of annotation rowids default (bool): (default = False) Returns: list: infodict_list CommandLine: python -m ibeis.other.ibsfuncs --exec-get_annot_info --tb Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids()[0:2] >>> default = True >>> infodict_list = ibs.get_annot_info(1, default) >>> result = ('infodict_list = %s' % (ut.obj_str(infodict_list, nl=4),)) >>> print(result) """ return ibsfuncs.get_annot_info(*args, **kwargs)
[docs] def update_exemplar_special_imageset(*args, **kwargs): """ """ return ibsfuncs.update_exemplar_special_imageset(*args, **kwargs)
[docs] def update_reviewed_unreviewed_image_special_imageset(*args, **kwargs): """ Creates imageset of images that have not been reviewed and that have been reviewed """ return ibsfuncs.update_reviewed_unreviewed_image_special_imageset( *args, **kwargs)
[docs] def update_all_image_special_imageset(*args, **kwargs): """ """ return ibsfuncs.update_all_image_special_imageset(*args, **kwargs)
[docs] def get_special_imgsetids(ibs): """ """ return ibsfuncs.get_special_imgsetids(ibs)
[docs] def get_ungrouped_gids(ibs): """ CommandLine: python -m ibeis.other.ibsfuncs --test-get_ungrouped_gids Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> ibs.delete_all_imagesets() >>> ibs.compute_occurrences() >>> ibs.update_special_imagesets() >>> # Now we want to remove some images from a non-special imageset >>> nonspecial_imgsetids = [i for i in ibs.get_valid_imgsetids() if i not in ibs.get_special_imgsetids()] >>> print("Nonspecial EIDs %r" % nonspecial_imgsetids) >>> images_to_remove = ibs.get_imageset_gids(nonspecial_imgsetids[0:1])[0][0:1] >>> print("Removing %r" % images_to_remove) >>> ibs.unrelate_images_and_imagesets(images_to_remove,nonspecial_imgsetids[0:1] * len(images_to_remove)) >>> ibs.update_special_imagesets() >>> ungr_imgsetid = ibs.get_imageset_imgsetids_from_text(const.UNGROUPED_IMAGES_IMAGESETTEXT) >>> print("Ungrouped gids %r" % ibs.get_ungrouped_gids()) >>> print("Ungrouped imgsetid %d contains %r" % (ungr_imgsetid, ibs.get_imageset_gids([ungr_imgsetid]))) >>> ungr_gids = ibs.get_imageset_gids([ungr_imgsetid])[0] >>> assert(sorted(images_to_remove) == sorted(ungr_gids)) """ return ibsfuncs.get_ungrouped_gids(ibs)
[docs] def update_ungrouped_special_imageset(ibs): """ Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.other.ibsfuncs --test-update_ungrouped_special_imageset Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> # build test data >>> ibs = ibeis.opendb('testdb9') >>> # execute function >>> result = update_ungrouped_special_imageset(ibs) >>> # verify results >>> print(result) """ return ibsfuncs.update_ungrouped_special_imageset(ibs)
[docs] def update_special_imagesets(*args, **kwargs): """ """ return ibsfuncs.update_special_imagesets(*args, **kwargs)
[docs] def print_dbinfo(ibs, **kwargs): """ """ return ibsfuncs.print_dbinfo(ibs, **kwargs)
[docs] def print_infostr(ibs, **kwargs): """ """ return ibsfuncs.print_infostr(ibs, **kwargs)
[docs] def print_annotation_table( ibs, verbosity=1, exclude_columns=[], include_columns=[]): """ Dumps annotation table to stdout Args: ibs (IBEISController): verbosity (int): Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> verbosity = 1 >>> print_annotation_table(ibs, verbosity) """ return ibsfuncs.print_annotation_table( ibs, verbosity, exclude_columns, include_columns)
[docs] def print_annotmatch_table(ibs): """ Dumps annotation match table to stdout Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.other.ibsfuncs --exec-print_annotmatch_table python -m ibeis.other.ibsfuncs --exec-print_annotmatch_table --db PZ_Master1 Example: >>> # SCRIPT >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> result = print_annotmatch_table(ibs) >>> print(result) """ return ibsfuncs.print_annotmatch_table(ibs)
[docs] def print_chip_table(ibs): """ Dumps chip table to stdout """ return ibsfuncs.print_chip_table(ibs)
[docs] def print_feat_table(ibs): """ Dumps chip table to stdout """ return ibsfuncs.print_feat_table(ibs)
[docs] def print_image_table(ibs, **kwargs): """ Dumps chip table to stdout """ return ibsfuncs.print_image_table(ibs, **kwargs)
[docs] def print_party_table(ibs, **kwargs): """ Dumps chip table to stdout """ return ibsfuncs.print_party_table(ibs, **kwargs)
[docs] def print_lblannot_table(ibs, **kwargs): """ Dumps lblannot table to stdout """ return ibsfuncs.print_lblannot_table(ibs, **kwargs)
[docs] def print_name_table(ibs, **kwargs): """ Dumps name table to stdout """ return ibsfuncs.print_name_table(ibs, **kwargs)
[docs] def print_species_table(ibs, **kwargs): """ Dumps species table to stdout """ return ibsfuncs.print_species_table(ibs, **kwargs)
[docs] def print_alr_table(ibs, **kwargs): """ Dumps alr table to stdout """ return ibsfuncs.print_alr_table(ibs, **kwargs)
[docs] def print_config_table(ibs, **kwargs): """ Dumps config table to stdout """ return ibsfuncs.print_config_table(ibs, **kwargs)
[docs] def print_imageset_table(ibs, **kwargs): """ Dumps imageset table to stdout Kwargs: exclude_columns (list): """ return ibsfuncs.print_imageset_table(ibs, **kwargs)
[docs] def print_egpairs_table(ibs, **kwargs): """ Dumps egpairs table to stdout """ return ibsfuncs.print_egpairs_table(ibs, **kwargs)
[docs] def print_tables(ibs, exclude_columns=None, exclude_tables=None): """ """ return ibsfuncs.print_tables(ibs, exclude_columns, exclude_tables)
[docs] def print_contributor_table(ibs, verbosity=1, exclude_columns=[]): """ Dumps annotation table to stdout Args: ibs (IBEISController): verbosity (int): Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> verbosity = 1 >>> print_contributor_table(ibs, verbosity) """ return ibsfuncs.print_contributor_table( ibs, verbosity, exclude_columns)
[docs] def is_aid_unknown(ibs, aid_list): """ Returns if an annotation has been given a name (even if that name is temporary) """ return ibsfuncs.is_aid_unknown(ibs, aid_list)
[docs] def batch_rename_consecutive_via_species(ibs, imgsetid=None): """ actually sets the new consectuive names""" return ibsfuncs.batch_rename_consecutive_via_species(ibs, imgsetid)
[docs] def get_consecutive_newname_list_via_species(ibs, imgsetid=None): """ Just creates the nams, but does not set them Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.other.ibsfuncs --test-get_consecutive_newname_list_via_species Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> ibs._clean_species() >>> # execute function >>> imgsetid = None >>> new_nid_list, new_name_list = get_consecutive_newname_list_via_species(ibs, imgsetid=imgsetid) >>> result = ut.list_str((new_nid_list, new_name_list)) >>> # verify results >>> print(result) ( [1, 2, 3, 4, 5, 6, 7], ['IBEIS_PZ_0001', 'IBEIS_PZ_0002', 'IBEIS_UNKNOWN_0001', 'IBEIS_UNKNOWN_0002', 'IBEIS_GZ_0001', 'IBEIS_PB_0001', 'IBEIS_UNKNOWN_0003'], ) Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> ibs._clean_species() >>> ibs.delete_all_imagesets() >>> ibs.compute_occurrences() >>> # execute function >>> imgsetid = ibs.get_valid_imgsetids()[1] >>> new_nid_list, new_name_list = get_consecutive_newname_list_via_species(ibs, imgsetid=imgsetid) >>> result = ut.list_str((new_nid_list, new_name_list)) >>> # verify results >>> print(result) ( [4, 5, 6, 7], ['IBEIS_UNKNOWN_Occurrence_1_0001', 'IBEIS_GZ_Occurrence_1_0001', 'IBEIS_PB_Occurrence_1_0001', 'IBEIS_UNKNOWN_Occurrence_1_0002'], ) """ return ibsfuncs.get_consecutive_newname_list_via_species(ibs, imgsetid)
[docs] def set_annot_names_to_same_new_name(ibs, aid_list): """ """ return ibsfuncs.set_annot_names_to_same_new_name(ibs, aid_list)
[docs] def set_annot_names_to_different_new_names(ibs, aid_list): """ """ return ibsfuncs.set_annot_names_to_different_new_names(ibs, aid_list)
[docs] def make_next_nids(ibs, *args, **kwargs): """ makes name and adds it to the database returning the newly added name rowid(s) CAUTION; changes database state SeeAlso: make_next_name """ return ibsfuncs.make_next_nids(ibs, *args, **kwargs)
[docs] def make_next_name( ibs, num=None, str_format=2, species_text=None, location_text=None): """ Creates a number of names which are not in the database, but does not add them Args: ibs (IBEISController): ibeis controller object num (None): str_format (int): either 1 or 2 Returns: str: next_name CommandLine: python -m ibeis.other.ibsfuncs --test-make_next_name Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs1 = ibeis.opendb('testdb1') >>> ibs2 = ibeis.opendb('PZ_MTEST') >>> ibs3 = ibeis.opendb('NAUT_test') >>> #ibs5 = ibeis.opendb('GIR_Tanya') >>> ibs1._clean_species() >>> ibs2._clean_species() >>> ibs3._clean_species() >>> num = None >>> str_format = 2 >>> # execute function >>> next_name1 = make_next_name(ibs1, num, str_format) >>> next_name2 = make_next_name(ibs2, num, str_format) >>> next_name3 = make_next_name(ibs3, num, str_format) >>> next_name4 = make_next_name(ibs1, num, str_format, const.TEST_SPECIES.ZEB_GREVY) >>> name_list = [next_name1, next_name2, next_name3, next_name4] >>> next_name_list1 = make_next_name(ibs2, 5, str_format) >>> temp_nids = ibs2.add_names(['IBEIS_PZ_0045', 'IBEIS_PZ_0048']) >>> next_name_list2 = make_next_name(ibs2, 5, str_format) >>> ibs2.delete_names(temp_nids) >>> next_name_list3 = make_next_name(ibs2, 5, str_format) >>> # verify results >>> # FIXME: nautiluses are not working right >>> result = ut.list_str((name_list, next_name_list1, next_name_list2, next_name_list3)) >>> print(result) ( ['IBEIS_UNKNOWN_0008', 'IBEIS_PZ_0042', 'IBEIS_UNKNOWN_0004', 'IBEIS_GZ_0008'], ['IBEIS_PZ_0042', 'IBEIS_PZ_0043', 'IBEIS_PZ_0044', 'IBEIS_PZ_0045', 'IBEIS_PZ_0046'], ['IBEIS_PZ_0044', 'IBEIS_PZ_0046', 'IBEIS_PZ_0047', 'IBEIS_PZ_0049', 'IBEIS_PZ_0050'], ['IBEIS_PZ_0042', 'IBEIS_PZ_0043', 'IBEIS_PZ_0044', 'IBEIS_PZ_0045', 'IBEIS_PZ_0046'], ) """ return ibsfuncs.make_next_name( ibs, num, str_format, species_text, location_text)
[docs] def group_annots_by_name(ibs, aid_list, distinguish_unknowns=True): """ This function is probably the fastest of its siblings Args: ibs (IBEISController): ibeis controller object aid_list (list): distinguish_unknowns (bool): Returns: tuple: grouped_aids_, unique_nids CommandLine: python -m ibeis.other.ibsfuncs --test-group_annots_by_name Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> distinguish_unknowns = True >>> # execute function >>> grouped_aids_, unique_nids = group_annots_by_name(ibs, aid_list, distinguish_unknowns) >>> result = str([aids.tolist() for aids in grouped_aids_]) >>> result += '\n' + str(unique_nids.tolist()) >>> # verify results >>> print(result) [[11], [9], [4], [1], [2, 3], [5, 6], [7], [8], [10], [12], [13]] [-11, -9, -4, -1, 1, 2, 3, 4, 5, 6, 7] """ return ibsfuncs.group_annots_by_name( ibs, aid_list, distinguish_unknowns)
[docs] def group_annots_by_known_names(ibs, aid_list, checks=True): """ FIXME; rectify this #>>> import ibeis # NOQA CommandLine: python -m ibeis.other.ibsfuncs --test-group_annots_by_known_names Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(db='testdb1') >>> aid_list = ibs.get_valid_aids() >>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] >>> known_aids_list, unknown_aids = group_annots_by_known_names(ibs, aid_list) >>> result = str(known_aids_list) + '\n' >>> result += str(unknown_aids) >>> print(result) [[2, 3], [5, 6], [7], [8], [10], [12], [13]] [11, 9, 4, 1] """ return ibsfuncs.group_annots_by_known_names(ibs, aid_list, checks)
[docs] def get_num_annots_per_name(ibs, aid_list): """ Returns the number of annots per name (IN THIS LIST) Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids CommandLine: python -m ibeis.other.ibsfuncs --exec-get_num_annots_per_name python -m ibeis.other.ibsfuncs --exec-get_num_annots_per_name --db PZ_Master1 Example: >>> # UNSTABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids(is_known=True) >>> num_annots_per_name, unique_nids = get_num_annots_per_name(ibs, aid_list) >>> per_name_hist = ut.dict_hist(num_annots_per_name) >>> items = per_name_hist.items() >>> items = sorted(items)[::-1] >>> key_list = ut.get_list_column(items, 0) >>> val_list = ut.get_list_column(items, 1) >>> min_per_name = dict(zip(key_list, np.cumsum(val_list))) >>> result = ('per_name_hist = %s' % (ut.dict_str(per_name_hist),)) >>> print(result) >>> print('min_per_name = %s' % (ut.dict_str(min_per_name),)) per_name_hist = { 1: 5, 2: 2, } """ return ibsfuncs.get_num_annots_per_name(ibs, aid_list)
[docs] def get_annots_per_name_stats(ibs, aid_list, **kwargs): """ """ return ibsfuncs.get_annots_per_name_stats(ibs, aid_list, **kwargs)
[docs] def get_aids_with_groundtruth(ibs): """ returns aids with valid groundtruth """ return ibsfuncs.get_aids_with_groundtruth(ibs)
[docs] def get_dbnotes_fpath(ibs, ensure=False): """ """ return ibsfuncs.get_dbnotes_fpath(ibs, ensure)
[docs] def get_annot_bbox_area(ibs, aid_list): """ """ return ibsfuncs.get_annot_bbox_area(ibs, aid_list)
[docs] def get_match_text(ibs, aid1, aid2): """ """ return ibsfuncs.get_match_text(ibs, aid1, aid2)
[docs] def get_database_species(ibs, aid_list=None): """ CommandLine: python -m ibeis.other.ibsfuncs --test-get_database_species Example1: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> result = ut.list_str(ibs.get_database_species(), nl=False) >>> print(result) ['____', 'bear_polar', 'zebra_grevys', 'zebra_plains'] Example2: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('PZ_MTEST') >>> result = ut.list_str(ibs.get_database_species(), nl=False) >>> print(result) ['zebra_plains'] """ return ibsfuncs.get_database_species(ibs, aid_list)
[docs] def get_primary_database_species(ibs, aid_list=None): """ Args: aid_list (list): list of annotation ids (default = None) CommandLine: python -m ibeis.other.ibsfuncs --test-get_primary_database_species Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = None >>> primary_species = get_primary_database_species(ibs, aid_list) >>> result = primary_species >>> print('primary_species = %r' % (primary_species,)) >>> print(result) zebra_plains """ return ibsfuncs.get_primary_database_species(ibs, aid_list)
[docs] def get_dominant_species(ibs, aid_list): """ Args: aid_list (int): list of annotation ids CommandLine: python -m ibeis.other.ibsfuncs --test-get_dominant_species Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> result = get_dominant_species(ibs, aid_list) >>> print(result) zebra_plains """ return ibsfuncs.get_dominant_species(ibs, aid_list)
[docs] def get_database_species_count(ibs, aid_list=None): """ CommandLine: python -m ibeis.other.ibsfuncs --test-get_database_species_count Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> #print(ut.dict_str(ibeis.opendb('PZ_Master0').get_database_species_count())) >>> ibs = ibeis.opendb('testdb1') >>> result = ut.dict_str(ibs.get_database_species_count(), nl=False) >>> print(result) {'____': 3, 'bear_polar': 2, 'zebra_grevys': 2, 'zebra_plains': 6} """ return ibsfuncs.get_database_species_count(ibs, aid_list)
[docs] def get_match_truth(ibs, aid1, aid2): """ """ return ibsfuncs.get_match_truth(ibs, aid1, aid2)
[docs] def get_aidpair_truths(ibs, aid1_list, aid2_list): """ Uses NIDS to verify truth Args: ibs (IBEISController): ibeis controller object aid1_list (list): aid2_list (list): Returns: list[bool]: truth CommandLine: python -m ibeis.other.ibsfuncs --test-get_aidpair_truths Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid1_list = ibs.get_valid_aids() >>> aid2_list = ut.list_roll(ibs.get_valid_aids(), -1) >>> # execute function >>> truth = get_aidpair_truths(ibs, aid1_list, aid2_list) >>> # verify results >>> result = str(truth) >>> print(result) """ return ibsfuncs.get_aidpair_truths(ibs, aid1_list, aid2_list)
[docs] def get_dbinfo_str(ibs): """ """ return ibsfuncs.get_dbinfo_str(ibs)
[docs] def get_infostr(ibs): """ Returns sort printable database information Args: ibs (IBEISController): ibeis controller object Returns: str: infostr """ return ibsfuncs.get_infostr(ibs)
[docs] def get_dbnotes(ibs): """ sets notes for an entire database """ return ibsfuncs.get_dbnotes(ibs)
[docs] def set_dbnotes(ibs, notes): """ sets notes for an entire database """ return ibsfuncs.set_dbnotes(ibs, notes)
[docs] def annotstr(ibs, aid): """ """ return ibsfuncs.annotstr(ibs, aid)
[docs] def merge_names(ibs, merge_name, other_names): """ Args: ibs (IBEISController): ibeis controller object merge_name (str): other_names (list): CommandLine: python -m ibeis.other.ibsfuncs --test-merge_names Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis # NOQA >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> merge_name = 'zebra' >>> other_names = ['occl', 'jeff'] >>> # execute function >>> result = merge_names(ibs, merge_name, other_names) >>> # verify results >>> print(result) >>> ibs.print_names_table() """ return ibsfuncs.merge_names(ibs, merge_name, other_names)
[docs] def set_exemplars_from_quality_and_viewpoint( ibs, aid_list=None, exemplars_per_view=None, imgsetid=None, dry_run=False, verbose=False): """ Automatic exemplar selection algorithm based on viewpoint and quality Ignore: # We want to choose the minimum per-item weight w such that # we can't pack more than N w's into the knapsack w * (N + 1) > N # and w < 1.0, so we can have wiggle room for preferences # so w * (N + 1) > N w > N / (N + 1) EPS = 1E-9 w = N / (N + 1) + EPS # Preference denomiantor should not make any choice of # feasible items infeasible, but give more weight to a few. # delta_w is the wiggle room we have, but we need to choose a number # much less than it. prefdenom = N ** 2 maybe its just N + EPS? N ** 2 should work though. Figure out correct value later delta_w = (1 - w) prefdenom = delta_w / N N - (w * N) N = 3 EPS = 1E-9 w = N / (N + 1) + EPS pref_decimator = N ** 2 num_teir1_levels = 3 pref_teir1 = w / (num_teir1_levels * pref_decimator) pref_teir2 = pref_teir1 / pref_decimator pref_teir3 = pref_teir2 / pref_decimator References: # implement maximum diversity approximation instead http://www.csbio.unc.edu/mcmillan/pubs/ICDM07_Pan.pdf CommandLine: python -m ibeis.other.ibsfuncs --test-set_exemplars_from_quality_and_viewpoint python -m ibeis.other.ibsfuncs --test-set_exemplars_from_quality_and_viewpoint:1 Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> #ibs = ibeis.opendb('PZ_MUGU_19') >>> ibs = ibeis.opendb('PZ_MTEST') >>> dry_run = True >>> verbose = False >>> old_sum = sum(ibs.get_annot_exemplar_flags(ibs.get_valid_aids())) >>> new_aid_list, new_flag_list = ibs.set_exemplars_from_quality_and_viewpoint(dry_run=dry_run) >>> new_sum = sum(new_flag_list) >>> print('old_sum = %r' % (old_sum,)) >>> print('new_sum = %r' % (new_sum,)) >>> zero_aid_list, zero_flag_list = ibs.set_exemplars_from_quality_and_viewpoint(exemplars_per_view=0, dry_run=dry_run) >>> assert sum(zero_flag_list) == 0 >>> result = new_sum Example1: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> dry_run = True >>> verbose = False >>> old_sum = sum(ibs.get_annot_exemplar_flags(ibs.get_valid_aids())) >>> new_aid_list, new_flag_list = ibs.set_exemplars_from_quality_and_viewpoint(dry_run=dry_run) >>> assert len(new_aid_list) == len(new_flag_list) >>> # 2 of the 11 annots are unknown and should not be exemplars >>> ut.assert_eq(len(new_aid_list), 9) Example2: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb2') >>> dry_run = True >>> verbose = False >>> imgsetid = None >>> new_aid_list, new_flag_list = ibs.set_exemplars_from_quality_and_viewpoint(dry_run=dry_run) >>> old_flag_list = ibs.get_annot_exemplar_flags(new_aid_list) >>> new_exemplar_aids = ut.compress(new_aid_list, new_flag_list) >>> new_exemplar_qualtexts = ibs.get_annot_quality_texts(new_exemplar_aids) >>> assert 'junk' not in new_exemplar_qualtexts, 'should not have junk exemplars' >>> assert 'poor' not in new_exemplar_qualtexts, 'should not have poor exemplars' >>> #assert len(new_aid_list) == len(new_flag_list) >>> # 2 of the 11 annots are unknown and should not be exemplars >>> #ut.assert_eq(len(new_aid_list), 9) """ return ibsfuncs.set_exemplars_from_quality_and_viewpoint( ibs, aid_list, exemplars_per_view, imgsetid, dry_run, verbose)
[docs] def get_prioritized_name_subset(ibs, aid_list=None, annots_per_name=None): """ TODO: this needs to be integrated more cleanly with a nonhacky way of getting a subset of exemplars. Currently ther is duplicate code in guiback and here to use left side only when custom filter is on. CommandLine: python -m ibeis.other.ibsfuncs --test-get_prioritized_name_subset Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb2') >>> aid_list = ibs.get_valid_aids() >>> annots_per_name = 2 >>> aid_subset = get_prioritized_name_subset(ibs, aid_list, annots_per_name) >>> qualtexts = ibs.get_annot_quality_texts(aid_subset) >>> yawtexts = ibs.get_annot_yaw_texts(aid_subset) >>> assert 'junk' not in qualtexts >>> assert 'right' not in yawtexts >>> result = len(aid_subset) >>> print(result) 28 Exeample: >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb2') >>> aid_list = ibs.get_valid_aids() >>> aid_list = ut.compress(aid_list, ibs.is_aid_unknown(aid_list)) >>> annots_per_name = 2 >>> aid_subset = get_prioritized_name_subset(ibs, aid_list, annots_per_name) >>> qualtexts = ibs.get_annot_quality_texts(aid_list) >>> yawtexts = ibs.get_annot_yaw_texts(aid_list) """ return ibsfuncs.get_prioritized_name_subset( ibs, aid_list, annots_per_name)
[docs] def get_annot_quality_viewpoint_subset( ibs, aid_list=None, annots_per_view=2, verbose=False): """ CommandLine: python -m ibeis.other.ibsfuncs --exec-get_annot_quality_viewpoint_subset --show Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb2') >>> aid_list = ibs.get_valid_aids() >>> annots_per_view = 2 >>> new_aid_list, new_flag_list = get_annot_quality_viewpoint_subset(ibs) >>> result = sum(new_flag_list) >>> print(result) 38 Ignore: nids = ibs.get_annot_nids(new_aid_list) uniquenids, groupxs = ut.group_indices(nids) num_hacked = 0 grouped_exemplars = ut.apply_grouping(new_flag_list, groupxs) for exflags, idxs in zip(grouped_exemplars, groupxs): if not any(exflags): num_hacked += 1 new_flag_list[idxs[0]] = True print('(exemplars) num_hacked = %r' % (num_hacked,)) """ return ibsfuncs.get_annot_quality_viewpoint_subset( ibs, aid_list, annots_per_view, verbose)
[docs] def report_sightings(ibs, complete=True, include_images=False, **kwargs): """ """ return ibsfuncs.report_sightings( ibs, complete, include_images, **kwargs)
[docs] def report_sightings_str(ibs, **kwargs): """ """ return ibsfuncs.report_sightings_str(ibs, **kwargs)
[docs] def check_chip_existence(ibs, aid_list=None): """ """ return ibsfuncs.check_chip_existence(ibs, aid_list)
[docs] def is_special_imageset(ibs, imgsetid_list): """ """ return ibsfuncs.is_special_imageset(ibs, imgsetid_list)
[docs] def get_quality_filterflags(ibs, aid_list, minqual, unknown_ok=True): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids minqual (str): qualtext unknown_ok (bool): (default = False) Returns: iter: qual_flags CommandLine: python -m ibeis.other.ibsfuncs --exec-get_quality_filterflags Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids()[0:20] >>> minqual = 'junk' >>> unknown_ok = False >>> qual_flags = list(get_quality_filterflags(ibs, aid_list, minqual, unknown_ok)) >>> result = ('qual_flags = %s' % (str(qual_flags),)) >>> print(result) """ return ibsfuncs.get_quality_filterflags( ibs, aid_list, minqual, unknown_ok)
[docs] def get_viewpoint_filterflags(ibs, aid_list, valid_yaws, unknown_ok=True): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids valid_yaws (?): unknown_ok (bool): (default = True) Returns: int: aid_list - list of annotation ids CommandLine: python -m ibeis.other.ibsfuncs --exec-get_viewpoint_filterflags python -m ibeis.other.ibsfuncs --exec-get_viewpoint_filterflags --db NNP_Master3 Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids()[0:20] >>> valid_yaws = None >>> unknown_ok = False >>> yaw_flags = list(get_viewpoint_filterflags(ibs, aid_list, valid_yaws, unknown_ok)) >>> result = ('yaw_flags = %s' % (str(yaw_flags),)) >>> print(result) """ return ibsfuncs.get_viewpoint_filterflags( ibs, aid_list, valid_yaws, unknown_ok)
[docs] def get_quality_viewpoint_filterflags(ibs, aid_list, minqual, valid_yaws): """ """ return ibsfuncs.get_quality_viewpoint_filterflags( ibs, aid_list, minqual, valid_yaws)
[docs] def get_annot_custom_filterflags(ibs, aid_list): """ """ return ibsfuncs.get_annot_custom_filterflags(ibs, aid_list)
[docs] def filter_aids_custom(ibs, aid_list): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: aid_list_ CommandLine: python -m ibeis.other.ibsfuncs --test-filter_aids_custom Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb2') >>> aid_list = ibs.get_valid_aids() >>> # execute function >>> aid_list_ = filter_aids_custom(ibs, aid_list) >>> # verify results >>> result = str(aid_list_) >>> print(result) """ return ibsfuncs.filter_aids_custom(ibs, aid_list)
[docs] def flag_aids_count(ibs, aid_list): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids pre_unixtime_sort (bool): Returns: list: CommandLine: python -m ibeis.other.ibsfuncs --test-flag_aids_count Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> # execute function >>> gzc_flag_list = flag_aids_count(ibs, aid_list) >>> result = gzc_flag_list >>> # verify results >>> print(result) [False, True, False, False, True, False, True, True, False, True, False, True, True] """ return ibsfuncs.flag_aids_count(ibs, aid_list)
[docs] def filter_aids_count(ibs, aid_list=None, pre_unixtime_sort=True): """ """ return ibsfuncs.filter_aids_count(ibs, aid_list, pre_unixtime_sort)
[docs] def filterflags_unflat_aids_custom(ibs, aids_list): """ """ return ibsfuncs.filterflags_unflat_aids_custom(ibs, aids_list)
[docs] def filter_nids_custom(ibs, nid_list): """ """ return ibsfuncs.filter_nids_custom(ibs, nid_list)
[docs] def filter_gids_custom(ibs, gid_list): """ """ return ibsfuncs.filter_gids_custom(ibs, gid_list)
[docs] def get_name_gps_tracks(ibs, nid_list=None, aid_list=None): """ CommandLine: python -m ibeis.other.ibsfuncs --test-get_name_gps_tracks Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> # build test data >>> #ibs = ibeis.opendb('PZ_Master0') >>> ibs = ibeis.opendb('testdb1') >>> #nid_list = ibs.get_valid_nids() >>> aid_list = ibs.get_valid_aids() >>> nid_list, gps_track_list, aid_track_list = ibs.get_name_gps_tracks(aid_list=aid_list) >>> nonempty_list = list(map(lambda x: len(x) > 0, gps_track_list)) >>> ut.compress(nid_list, nonempty_list) >>> ut.compress(gps_track_list, nonempty_list) >>> ut.compress(aid_track_list, nonempty_list) >>> result = str(aid_track_list) >>> print(result) [[11], [], [4], [1], [2, 3], [5, 6], [7], [8], [10], [12], [13]] """ return ibsfuncs.get_name_gps_tracks(ibs, nid_list, aid_list)
[docs] def get_unflat_annots_kmdists_list(ibs, aids_list): """ """ return ibsfuncs.get_unflat_annots_kmdists_list(ibs, aids_list)
[docs] def get_unflat_annots_hourdists_list(ibs, aids_list): """ Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> ibs = testdata_ibs('NNP_Master3') >>> nid_list = get_valid_multiton_nids_custom(ibs) >>> aids_list_ = ibs.get_name_aids(nid_list) >>> aids_list = [ibs.filter_aids_custom(aids) for aids in aids_list_] """ return ibsfuncs.get_unflat_annots_hourdists_list(ibs, aids_list)
[docs] def get_unflat_annots_timedelta_list(ibs, aids_list): """ Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> ibs = testdata_ibs('NNP_Master3') >>> nid_list = get_valid_multiton_nids_custom(ibs) >>> aids_list_ = ibs.get_name_aids(nid_list) >>> aids_list = [ibs.filter_aids_custom(aids) for aids in aids_list_] """ return ibsfuncs.get_unflat_annots_timedelta_list(ibs, aids_list)
[docs] def get_unflat_annots_speeds_list(ibs, aids_list): """ """ return ibsfuncs.get_unflat_annots_speeds_list(ibs, aids_list)
[docs] def get_name_speeds(ibs, nid_list): """ CommandLine: python -m ibeis.other.ibsfuncs --test-get_name_speeds Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> ibs = testdata_ibs('NNP_Master3') >>> nid_list = get_valid_multiton_nids_custom(ibs) >>> speeds_list = get_name_speeds(ibs, nid_list) >>> result = str(speeds_list) >>> print(result) """ return ibsfuncs.get_name_speeds(ibs, nid_list)
[docs] def get_name_hourdiffs(*args, **kwargs): """ CommandLine: python -m ibeis.other.ibsfuncs --test-get_name_hourdiffs Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> ibs = testdata_ibs('NNP_Master3') >>> nid_list = ibs.filter_nids_custom(ibs._get_all_known_nids()) >>> hourdiffs_list = ibs.get_name_hourdiffs(nid_list) >>> result = hourdiffs_list >>> print(hourdiffs_list) """ return ibsfuncs.get_name_hourdiffs(*args, **kwargs)
[docs] def get_name_max_hourdiff(*args, **kwargs): """ """ return ibsfuncs.get_name_max_hourdiff(*args, **kwargs)
[docs] def get_name_max_speed(*args, **kwargs): """ CommandLine: python -m ibeis.other.ibsfuncs --test-get_name_max_speed Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> ibs = testdata_ibs('NNP_Master3') >>> nid_list = ibs.filter_nids_custom(ibs._get_all_known_nids()) >>> maxspeed_list = ibs.get_name_max_speed(nid_list) >>> result = maxspeed_list >>> print(maxspeed_list) """ return ibsfuncs.get_name_max_speed(*args, **kwargs)
[docs] def make_next_imageset_text(ibs): """ Creates what the next imageset name would be but does not add it to the database Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.other.ibsfuncs --test-make_next_imageset_text Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> new_imagesettext = make_next_imageset_text(ibs) >>> result = new_imagesettext >>> print(result) New ImageSet 0 """ return ibsfuncs.make_next_imageset_text(ibs)
[docs] def add_next_imageset(ibs): """ Adds a new imageset to the database """ return ibsfuncs.add_next_imageset(ibs)
[docs] def create_new_imageset_from_images(ibs, gid_list, new_imgsetid=None): """ Args: gid_list (list): CommandLine: python -m ibeis.other.ibsfuncs --test-create_new_imageset_from_images Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids()[::2] >>> # execute function >>> new_imgsetid = create_new_imageset_from_images(ibs, gid_list) >>> # verify results >>> result = new_imgsetid >>> print(result) """ return ibsfuncs.create_new_imageset_from_images( ibs, gid_list, new_imgsetid)
[docs] def new_imagesets_from_images(ibs, gids_list): """ Args: gids_list (list): """ return ibsfuncs.new_imagesets_from_images(ibs, gids_list)
[docs] def create_new_imageset_from_names(ibs, nid_list): """ Args: nid_list (list): CommandLine: python -m ibeis.other.ibsfuncs --test-create_new_imageset_from_names Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> nid_list = ibs._get_all_known_nids()[0:2] >>> # execute function >>> new_imgsetid = ibs.create_new_imageset_from_names(nid_list) >>> # clean up >>> ibs.delete_imagesets(new_imgsetid) >>> # verify results >>> result = new_imgsetid >>> print(result) """ return ibsfuncs.create_new_imageset_from_names(ibs, nid_list)
[docs] def prepare_annotgroup_review(ibs, aid_list): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: tuple: (src_ag_rowid, dst_ag_rowid) - source and dest annot groups CommandLine: python -m ibeis.other.ibsfuncs --test-prepare_annotgroup_review Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> result = prepare_annotgroup_review(ibs, aid_list) >>> print(result) """ return ibsfuncs.prepare_annotgroup_review(ibs, aid_list)
[docs] def remove_groundtrue_aids(ibs, aid_list, ref_aid_list): """ removes any aids that are known to match """ return ibsfuncs.remove_groundtrue_aids(ibs, aid_list, ref_aid_list)
[docs] def search_annot_notes(ibs, pattern, aid_list=None): """ Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('PZ_Master0') >>> pattern = ['gash', 'injury', 'scar', 'wound'] >>> valid_aid_list = ibs.search_annot_notes(pattern) >>> print(valid_aid_list) >>> print(ibs.get_annot_notes(valid_aid_list)) """ return ibsfuncs.search_annot_notes(ibs, pattern, aid_list)
[docs] def filter_aids_to_quality(ibs, aid_list, minqual, unknown_ok=True): """ """ return ibsfuncs.filter_aids_to_quality( ibs, aid_list, minqual, unknown_ok)
[docs] def filter_aids_to_viewpoint(ibs, aid_list, valid_yaws, unknown_ok=True): """ Removes aids that do not have a valid yaw TODO: rename to valid_viewpoint because this func uses category labels valid_yaws = ['primary', 'primary1', 'primary-1'] """ return ibsfuncs.filter_aids_to_viewpoint( ibs, aid_list, valid_yaws, unknown_ok)
[docs] def remove_aids_of_viewpoint(ibs, aid_list, invalid_yaws): """ Removes aids that do not have a valid yaw TODO; rename to valid_viewpoint because this func uses category labels """ return ibsfuncs.remove_aids_of_viewpoint(ibs, aid_list, invalid_yaws)
[docs] def filter_aids_without_name(ibs, aid_list, invert=False): """ Remove aids without names """ return ibsfuncs.filter_aids_without_name(ibs, aid_list, invert)
[docs] def filter_annots_using_minimum_timedelta(ibs, aid_list, min_timedelta): """ Uses a dynamic program to find the maximum number of annotations that are above the minimum timedelta requirement. Args: ibs (IBEISController): ibeis controller object aid_list (?): min_timedelta (?): CommandLine: python -m ibeis.other.ibsfuncs --exec-filter_annots_using_minimum_timedelta python -m ibeis.other.ibsfuncs --exec-filter_annots_using_minimum_timedelta --db PZ_Master1 Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> aid_list = ibs.get_valid_aids() >>> aid_list = ibs.filter_aids_without_timestamps(aid_list) >>> print('Before') >>> ibs.print_annot_stats(aid_list, min_name_hourdist=True) >>> min_timedelta = 60 * 60 * 24 >>> filtered_aids = filter_annots_using_minimum_timedelta(ibs, aid_list, min_timedelta) >>> print('After') >>> ibs.print_annot_stats(filtered_aids, min_name_hourdist=True) >>> ut.quit_if_noshow() >>> ibeis.other.dbinfo.hackshow_names(ibs, aid_list) >>> ibeis.other.dbinfo.hackshow_names(ibs, filtered_aids) >>> ut.show_if_requested() """ return ibsfuncs.filter_annots_using_minimum_timedelta( ibs, aid_list, min_timedelta)
[docs] def filter_aids_without_timestamps(ibs, aid_list, invert=False): """ Removes aids without timestamps aid_list = ibs.get_valid_aids() """ return ibsfuncs.filter_aids_without_timestamps(ibs, aid_list, invert)
[docs] def filter_aids_to_species(ibs, aid_list, species): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids species (?): Returns: list: aid_list_ CommandLine: python -m ibeis.other.ibsfuncs --exec-filter_aids_to_species Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> species = ibeis.const.TEST_SPECIES.ZEB_GREVY >>> aid_list_ = filter_aids_to_species(ibs, aid_list, species) >>> result = 'aid_list_ = %r' % (aid_list_,) >>> print(result) aid_list_ = [9, 10] """ return ibsfuncs.filter_aids_to_species(ibs, aid_list, species)
[docs] def partition_annots_into_singleton_multiton(ibs, aid_list): """ aid_list = aid_list_ """ return ibsfuncs.partition_annots_into_singleton_multiton(ibs, aid_list)
[docs] def partition_annots_into_corresponding_groups(ibs, aid_list1, aid_list2): """ Used for grouping one-vs-one training pairs and corerspondence filtering Args: ibs (ibeis.control.IBEISControl.IBEISController): ibeis controller object aid_list1 (int): list of annotation ids aid_list2 (int): list of annotation ids Returns: tuple: 4 lists of lists. In the first two each list is a list of aids grouped by names and the names correspond with each other. In the last two are the annots that did not correspond with anything in the other list. CommandLine: python -m ibeis.other.ibsfuncs --exec-partition_annots_into_corresponding_groups Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> grouped_aids = list(map(list, ibs.group_annots_by_name(ibs.get_valid_aids())[0])) >>> grouped_aids = [aids for aids in grouped_aids if len(aids) > 3] >>> # Get some overlapping groups >>> import copy >>> aids_group1 = copy.deepcopy((ut.get_list_column_slice(grouped_aids[0:5], slice(0, 2)))) >>> aids_group2 = copy.deepcopy((ut.get_list_column_slice(grouped_aids[2:7], slice(2, None)))) >>> # Ensure there is a singleton in each >>> ut.delete_items_by_index(aids_group1[0], [0]) >>> ut.delete_items_by_index(aids_group2[-1], [0]) >>> aid_list1 = ut.flatten(aids_group1) >>> aid_list2 = ut.flatten(aids_group2) >>> #aid_list1 = [1, 2, 8, 9, 60] >>> #aid_list2 = [3, 7, 20] >>> groups = partition_annots_into_corresponding_groups(ibs, aid_list1, aid_list2) >>> result = ut.list_str(groups, label_list=['gt_grouped_aids1', 'gt_grouped_aids2', 'gf_grouped_aids1', 'gf_gropued_aids2']) >>> print(result) gt_grouped_aids1 = [[10, 11], [17, 18], [22, 23]] gt_grouped_aids2 = [[12, 13, 14, 15], [19, 20, 21], [24, 25, 26]] gf_grouped_aids1 = [[2], [5, 6]] gf_gropued_aids2 = [[29, 30, 31, 32], [49]] """ return ibsfuncs.partition_annots_into_corresponding_groups( ibs, aid_list1, aid_list2)
[docs] def dans_lists(ibs, positives=10, negatives=10, verbose=False): """ """ return ibsfuncs.dans_lists(ibs, positives, negatives, verbose)
[docs] def get_annot_qual_stats(ibs, aid_list): """ """ return ibsfuncs.get_annot_qual_stats(ibs, aid_list)
[docs] def get_annot_yaw_stats(ibs, aid_list): """ """ return ibsfuncs.get_annot_yaw_stats(ibs, aid_list)
[docs] def get_annot_intermediate_viewpoint_stats(ibs, aids, size=2): """ >>> from ibeis.other.ibsfuncs import * # NOQA >>> aids = available_aids """ return ibsfuncs.get_annot_intermediate_viewpoint_stats(ibs, aids, size)
[docs] def group_annots_by_name_dict(ibs, aids): """ """ return ibsfuncs.group_annots_by_name_dict(ibs, aids)
[docs] def group_annots_by_prop(ibs, aids, getter_func): """ """ return ibsfuncs.group_annots_by_prop(ibs, aids, getter_func)
[docs] def group_annots_by_prop_and_name(ibs, aids, getter_func): """ """ return ibsfuncs.group_annots_by_prop_and_name(ibs, aids, getter_func)
[docs] def group_annots_by_multi_prop(ibs, aids, getter_list): """ Performs heirachical grouping of annotations based on properties Args: ibs (IBEISController): ibeis controller object aids (list): list of annotation rowids getter_list (list): Returns: dict: multiprop2_aids CommandLine: python -m ibeis.other.ibsfuncs --exec-group_annots_by_multi_prop --db PZ_Master1 --props=yaw_texts,name_rowids --keys1 frontleft python -m ibeis.other.ibsfuncs --exec-group_annots_by_multi_prop Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aids = ibs.get_valid_aids(is_known=True) >>> #getter_list = [ibs.get_annot_name_rowids, ibs.get_annot_yaw_texts] >>> props = ut.get_argval('--props', type_=list, default=['yaw_texts', 'name_rowids']) >>> getter_list = [getattr(ibs, 'get_annot_' + prop) for prop in props] >>> print('getter_list = %r' % (getter_list,)) >>> #getter_list = [ibs.get_annot_yaw_texts, ibs.get_annot_name_rowids] >>> multiprop2_aids = group_annots_by_multi_prop(ibs, aids, getter_list) >>> get_dict_values = lambda x: list(x.values()) >>> # a bit convoluted >>> keys1 = ut.get_argval('--keys1', type_=list, default=list(multiprop2_aids.keys())) >>> multiprop2_num_aids = ut.hmap_vals(len, multiprop2_aids) >>> prop2_num_aids = ut.hmap_vals(get_dict_values, multiprop2_num_aids, max_depth=len(props) - 2) >>> #prop2_num_aids_stats = ut.hmap_vals(ut.get_stats, prop2_num_aids) >>> prop2_num_aids_hist = ut.hmap_vals(ut.dict_hist, prop2_num_aids) >>> prop2_num_aids_cumhist = ut.map_dict_vals(ut.dict_hist_cumsum, prop2_num_aids_hist) >>> print('prop2_num_aids_hist[%s] = %s' % (keys1, ut.dict_str(ut.dict_subset(prop2_num_aids_hist, keys1)))) >>> print('prop2_num_aids_cumhist[%s] = %s' % (keys1, ut.dict_str(ut.dict_subset(prop2_num_aids_cumhist, keys1)))) """ return ibsfuncs.group_annots_by_multi_prop(ibs, aids, getter_list)
[docs] def get_annot_stats_dict( ibs, aids, prefix=u'', forceall=False, old=True, **kwargs): """ stats for a set of annots Args: ibs (ibeis.IBEISController): ibeis controller object aids (list): list of annotation rowids prefix (str): (default = '') Kwargs: hashid, per_name, per_qual, per_vp, per_name_vpedge, per_image, min_name_hourdist Returns: dict: aid_stats_dict CommandLine: python -m ibeis.other.ibsfuncs --exec-get_annot_stats_dict python -m ibeis.other.ibsfuncs --exec-get_annot_stats_dict --db PZ_Master1 --per_name_vpedge=True python -m ibeis.other.ibsfuncs --exec-get_annot_stats_dict --db PZ_Master1 --min_name_hourdist=True python -m ibeis.other.ibsfuncs --exec-get_annot_stats_dict --db GZ_ALL --min_name_hourdist=True --all python -m ibeis.other.ibsfuncs --exec-get_annot_stats_dict --db PZ_Master1 --min_name_hourdist=True --all python -m ibeis.other.ibsfuncs --exec-get_annot_stats_dict --db NNP_MasterGIRM_core --min_name_hourdist=True --all Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aids = ibs.get_valid_aids() >>> prefix = '' >>> kwkeys = ut.parse_func_kwarg_keys(get_annot_stats_dict) >>> #default = True if ut.get_argflag('--all') else None >>> default = None if ut.get_argflag('--notall') else True >>> kwargs = ut.argparse_dict(dict(zip(kwkeys, [default] * len(kwkeys)))) >>> print('kwargs = %r' % (kwargs,)) >>> aid_stats_dict = get_annot_stats_dict(ibs, aids, prefix, **kwargs) >>> result = ('aid_stats_dict = %s' % (ut.dict_str(aid_stats_dict, strvals=True, nl=True),)) >>> print(result) """ return ibsfuncs.get_annot_stats_dict( ibs, aids, prefix, forceall, old, **kwargs)
[docs] def print_annot_stats(ibs, aids, prefix=u'', label=u'', **kwargs): """ """ return ibsfuncs.print_annot_stats(ibs, aids, prefix, label, **kwargs)
[docs] def compare_nested_props( ibs, aids1_list, aids2_list, getter_func, cmp_func): """ Compares properties of query vs database annotations grouped_qaids = aids1_list grouped_groundtruth_list = aids2_list getter_func = ibs.get_annot_yaws cmp_func = vt.ori_distance getter_func = ibs.get_annot_image_unixtimes_asfloat cmp_func = ut.unixtime_hourdiff ExpandNestedComparisions: import itertools list(map(list, itertools.starmap(ut.iprod, zip(aids1_list, aids2_list)))) Args: ibs (IBEISController): ibeis controller object aids1_list (list): aids2_list (list): getter_func (?): cmp_func (?): Returns: list of ndarrays: CommandLine: python -m ibeis.other.ibsfuncs --exec-compare_nested_props --show Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> aids1_list = [ibs.get_valid_aids()[8:11]] >>> aids2_list = [ibs.get_valid_aids()[8:11]] >>> getter_func = ibs.get_annot_image_unixtimes_asfloat >>> cmp_func = ut.unixtime_hourdiff >>> result = compare_nested_props(ibs, aids1_list, aids2_list, getter_func, cmp_func) >>> print(result) >>> ut.quit_if_noshow() >>> import plottool as pt >>> ut.show_if_requested() """ return ibsfuncs.compare_nested_props( ibs, aids1_list, aids2_list, getter_func, cmp_func)
[docs] def get_annot_per_name_stats(ibs, aid_list): """ stats about this set of aids """ return ibsfuncs.get_annot_per_name_stats(ibs, aid_list)
[docs] def print_annotconfig_stats(ibs, qaids, daids, **kwargs): """ SeeAlso: ibs.get_annotconfig_stats """ return ibsfuncs.print_annotconfig_stats(ibs, qaids, daids, **kwargs)
[docs] def get_annotconfig_stats( ibs, qaids, daids, verbose=True, combined=False, **kwargs): """ Gets statistics about a query / database set of annotations USEFUL DEVELOPER FUNCTION TODO: this function should return non-string values in dictionaries. The print function should do string conversions Args: ibs (IBEISController): ibeis controller object qaids (list): query annotation ids daids (list): database annotation ids SeeAlso: ibeis.dbinfo.print_qd_info ibs.get_annot_stats_dict ibs.print_annotconfig_stats(qaid_list, daid_list) CommandLine: python -m ibeis.other.ibsfuncs --exec-get_annotconfig_stats --db PZ_MTEST -a default python -m ibeis.other.ibsfuncs --exec-get_annotconfig_stats --db testdb1 -a default python -m ibeis.other.ibsfuncs --exec-get_annotconfig_stats --db PZ_MTEST -a controlled python -m ibeis.other.ibsfuncs --exec-get_annotconfig_stats --db PZ_FlankHack -a default:qaids=allgt python -m ibeis.other.ibsfuncs --exec-get_annotconfig_stats --db PZ_MTEST -a controlled:per_name=2,min_gt=4 Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> from ibeis.init import main_helpers >>> kwargs = {'per_enc': True, 'enc_per_name': True} >>> ibs, qaids, daids = main_helpers.testdata_expanded_aids(defaultdb='testdb1') >>> _ = get_annotconfig_stats(ibs, qaids, daids, **kwargs) """ return ibsfuncs.get_annotconfig_stats( ibs, qaids, daids, verbose, combined, **kwargs)
[docs] def get_dbname_alias(ibs): """ convinience for plots """ return ibsfuncs.get_dbname_alias(ibs)
[docs] def find_unlabeled_name_members(ibs, **kwargs): """ Find annots where some members of a name have information but others do not. Args: ibs (IBEISController): ibeis controller object CommandLine: python -m ibeis.other.ibsfuncs --exec-find_unlabeled_name_members --qual Example: >>> # SCRIPT >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_Master1') >>> defaultdict = dict(ut.parse_func_kwarg_keys(find_unlabeled_name_members, with_vals=True)) >>> kwargs = ut.argparse_dict(defaultdict) >>> result = find_unlabeled_name_members(ibs, **kwargs) >>> print(result) """ return ibsfuncs.find_unlabeled_name_members(ibs, **kwargs)
[docs] def get_annot_pair_lazy_dict( ibs, qaid, daid, qconfig2_=None, dconfig2_=None): """ Args: ibs (IBEISController): ibeis controller object qaid (int): query annotation id daid (?): qconfig2_ (dict): (default = None) dconfig2_ (dict): (default = None) CommandLine: python -m ibeis.other.ibsfuncs --exec-get_annot_pair_lazy_dict Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> qaid, daid = ibs.get_valid_aids()[0:2] >>> qconfig2_ = None >>> dconfig2_ = None >>> result = get_annot_pair_lazy_dict(ibs, qaid, daid, qconfig2_, dconfig2_) >>> print(result) """ return ibsfuncs.get_annot_pair_lazy_dict( ibs, qaid, daid, qconfig2_, dconfig2_)
[docs] def get_annot_lazy_dict(ibs, aid, config2_=None): """ Args: ibs (ibeis.IBEISController): image analysis api aid (int): annotation id config2_ (dict): (default = None) Returns: ut.LazyDict: metadata CommandLine: python -m ibeis.other.ibsfuncs --exec-get_annot_lazy_dict --show Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid = 1 >>> config2_ = None >>> metadata = get_annot_lazy_dict(ibs, aid, config2_) >>> result = ('metadata = %s' % (ut.repr3(metadata),)) >>> print(result) """ return ibsfuncs.get_annot_lazy_dict(ibs, aid, config2_)
[docs] def get_annot_lazy_dict2(ibs, aid, config=None): """ Args: ibs (ibeis.IBEISController): image analysis api aid (int): annotation id config (dict): (default = None) Returns: ut.LazyDict: metadata CommandLine: python -m ibeis.other.ibsfuncs --exec-get_annot_lazy_dict2 --show Example: >>> # ENABLE_DOCTEST >>> from ibeis.other.ibsfuncs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid = 1 >>> config = {'dim_size': 450} >>> metadata = get_annot_lazy_dict2(ibs, aid, config) >>> result = ('metadata = %s' % (ut.repr3(metadata),)) >>> print(result) """ return ibsfuncs.get_annot_lazy_dict2(ibs, aid, config)
[docs] def execute_pipeline_test( ibs, qaids, daids, pipecfg_name_list=[u'default']): """ """ return ibsfuncs.execute_pipeline_test( ibs, qaids, daids, pipecfg_name_list)
[docs] def get_imageset_expanded_aids(ibs, aid_list=None): """ Example: >>> import ibeis >>> from ibeis.other.ibsfuncs import * # NOQA >>> ibs = ibeis.opendb(defaultdb='lynx') >>> a = ['default:hack_imageset=True', ] >>> from ibeis.expt import experiment_helpers >>> acfg_list, expanded_aids_list = experiment_helpers.get_annotcfg_list(ibs, [a[0]], use_cache=False) >>> aid_list = ibs.get_valid_aids() >>> filter_kw = dict(been_adjusted=True) >>> aid_list = ibs.filter_annots_general(aid_list, filter_kw) >>> qaid_list, daid_list = ibs.get_imageset_expanded_aids() >>> #ibs.query_chips(qaid_list, daid_list) >>> testres = ibs.execute_pipeline_test(qaid_list, daid_list) >>> testres.print_perent_identification_success() """ return ibsfuncs.get_imageset_expanded_aids(ibs, aid_list)
[docs] def get_annot_primary_imageset(ibs, aid_list=None): """ """ return ibsfuncs.get_annot_primary_imageset(ibs, aid_list)
[docs] def lookup_annot_vecs_subset( ibs, unflat_aids, unflat_fxs, annots=None, config2_=None): """ unflat_aids = naids_list unflat_fxs = nfxs_list annots = data_annots config2_ = data_config2_ unflat_aids = cm.filtnorm_aids[0] unflat_fxs = cm.filtnorm_fxs[0] """ return ibsfuncs.lookup_annot_vecs_subset( ibs, unflat_aids, unflat_fxs, annots, config2_)
[docs] def get_annot_vecs_subset(ibs, aid_list, fxs_list, config2_=None): """ """ return ibsfuncs.get_annot_vecs_subset( ibs, aid_list, fxs_list, config2_)
[docs] def get_annot_fgweights_subset(ibs, aid_list, fxs_list, config2_=None): """ """ return ibsfuncs.get_annot_fgweights_subset( ibs, aid_list, fxs_list, config2_)
def _clean_species(ibs): """ """ return ibsfuncs._clean_species(ibs)
[docs] def get_annot_encounter_text(ibs, aids): """ Encounter identifier for annotations """ return ibsfuncs.get_annot_encounter_text(ibs, aids)
[docs] def get_annot_occurrence_text(ibs, aids): """ Occurrence identifier for annotations """ return ibsfuncs.get_annot_occurrence_text(ibs, aids)
def _parse_smart_xml(back, xml_path, nTotal, offset=1): """ """ return ibsfuncs._parse_smart_xml(back, xml_path, nTotal, offset)
[docs] def compute_occurrences_smart(ibs, gid_list, smart_xml_fpath): """ Function to load and process a SMART patrol XML file """ return ibsfuncs.compute_occurrences_smart( ibs, gid_list, smart_xml_fpath)
[docs] def temp_group_annot_occurrences(ibs, aid_list): """ """ return ibsfuncs.temp_group_annot_occurrences(ibs, aid_list)
[docs] def compute_occurrences(ibs): """ Clusters ungrouped images into imagesets representing occurrences CommandLine: python -m ibeis.control.IBEISControl --test-compute_occurrences Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import ibeis # NOQA >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> ibs.compute_occurrences() >>> ibs.update_special_imagesets() >>> # Now we want to remove some images from a non-special imageset >>> nonspecial_imgsetids = [i for i in ibs.get_valid_imgsetids() if i not in ibs.get_special_imgsetids()] >>> images_to_remove = ibs.get_imageset_gids(nonspecial_imgsetids[0:1])[0][0:1] >>> ibs.unrelate_images_and_imagesets(images_to_remove,nonspecial_imgsetids[0:1] * len(images_to_remove)) >>> ibs.update_special_imagesets() >>> ungr_imgsetid = ibs.get_imageset_imgsetids_from_text(const.UNGROUPED_IMAGES_IMAGESETTEXT) >>> ungr_gids = ibs.get_imageset_gids([ungr_imgsetid])[0] >>> #Now let's make sure that when we recompute imagesets, our non-special imgsetid remains the same >>> print('PRE COMPUTE: ImageSets are %r' % ibs.get_valid_imgsetids()) >>> print('Containing: %r' % ibs.get_imageset_gids(ibs.get_valid_imgsetids())) >>> ibs.compute_occurrences() >>> print('COMPUTE: New imagesets are %r' % ibs.get_valid_imgsetids()) >>> print('Containing: %r' % ibs.get_imageset_gids(ibs.get_valid_imgsetids())) >>> ibs.update_special_imagesets() >>> print('UPDATE SPECIAL: New imagesets are %r' % ibs.get_valid_imgsetids()) >>> print('Containing: %r' % ibs.get_imageset_gids(ibs.get_valid_imgsetids())) >>> assert(images_to_remove[0] not in ibs.get_imageset_gids(nonspecial_imgsetids[0:1])[0]) """ return ibsfuncs.compute_occurrences(ibs)
[docs] def get_neuralnet_dir(ibs): """ """ return _plugin.get_neuralnet_dir(ibs)
[docs] def get_verified_aid_pairs(ibs): """ Example: >>> # DISABLE_DOCTEST >>> from ibeis_cnn.train import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('NNP_Master3') >>> verified_aid1_list, verified_aid2_list = get_verified_aid_pairs(ibs) """ return _plugin.get_verified_aid_pairs(ibs)
[docs] def detect_annot_zebra_background_mask( ibs, aid_list, species=None, config2_=None): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: mask_list """ return _plugin.detect_annot_zebra_background_mask( ibs, aid_list, species, config2_)
[docs] def detect_annot_whale_fluke_background_mask( ibs, aid_list, species=u'whale_fluke', config2_=None): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: mask_list """ return _plugin.detect_annot_whale_fluke_background_mask( ibs, aid_list, species, config2_)
[docs] def generate_species_background_mask(ibs, chip_fpath_list, species=None): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: species_viewpoint_list CommandLine: python -m ibeis_cnn._plugin --exec-generate_species_background_mask --show --db PZ_Master1 python -m ibeis_cnn --tf generate_species_background_mask --show --db PZ_Master1 --aid 9970 Example: >>> # DISABLE_DOCTEST >>> import ibeis_cnn >>> import ibeis >>> from ibeis_cnn._plugin import * # NOQA >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ut.get_argval(('--aids', '--aid'), type_=list, default=ibs.get_valid_aids()[0:10]) >>> chip_fpath_list = ibs.get_annot_chip_fpath(aid_list) >>> species = ibs.const.TEST_SPECIES.ZEB_PLAIN >>> mask_list = generate_species_background_mask(ibs, chip_fpath_list, species) >>> ut.quit_if_noshow() >>> import plottool as pt >>> iteract_obj = pt.interact_multi_image.MultiImageInteraction(mask_list, nPerPage=4) >>> #pt.imshow(mask_list[0]) >>> ut.show_if_requested() #>>> from ibeis_cnn.draw_results import * # NOQA #>>> from ibeis_cnn import ingest_data #>>> data, labels = ingest_data.testdata_patchmatch2() #>>> flat_metadata = {'fs': np.arange(len(labels))} #>>> result = interact_siamsese_data_patches(labels, data, flat_metadata) #>>> ut.show_if_requested() """ return _plugin.generate_species_background_mask( ibs, chip_fpath_list, species)
[docs] def generate_species_background(ibs, chip_list, species=None, nInput=None): """ TODO: Use this as the primary function CommandLine: python -m ibeis_cnn._plugin --exec-generate_species_background --show python -m ibeis_cnn._plugin --exec-generate_species_background --db GZ_Master1 --species=zebra_grevys --save cnn_detect_results_gz.png --diskshow --clipwhite python -m ibeis_cnn._plugin --exec-generate_species_background --db PZ_Master1 --species=zebra_plains --save cnn_detect_results_pz.png --diskshow --clipwhite python -m ibeis_cnn._plugin --exec-generate_species_background --db PZ_Master1 --show python -m ibeis_cnn._plugin --exec-generate_species_background --db GZ_Master1 --show python -m ibeis_cnn._plugin --exec-generate_species_background --db GIRM_Master1 --show --species=giraffe_masai Example: >>> # ENABLE_DOCTEST >>> import ibeis_cnn >>> import ibeis >>> from ibeis_cnn._plugin import * # NOQA >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids()[0:8] >>> species = ut.get_argval('--species', type_=str, default=None) >>> config2_ = None >>> nInput = len(aid_list) >>> chip_iter = ibs.get_annot_chips(aid_list, verbose=True, config2_=config2_, eager=False) >>> mask_iter = generate_species_background(ibs, chip_iter, species=species, nInput=nInput) >>> mask_list = list(mask_iter) >>> ut.quit_if_noshow() >>> import plottool as pt >>> import vtool as vt >>> chip_list = ibs.get_annot_chips(aid_list, verbose=True, config2_=config2_, eager=True) >>> stacked_list = [vt.stack_images(chip, mask)[0] for chip, mask in zip(chip_list, mask_list)] >>> iteract_obj = pt.interact_multi_image.MultiImageInteraction(stacked_list, nPerPage=4) >>> #hough_cpath = ibs.get_annot_probchip_fpath(aid_list, config2_=config2_) >>> #iteract_obj2 = pt.interact_multi_image.MultiImageInteraction(hough_cpath, nPerPage=4) >>> #pt.imshow(mask_list[0]) >>> ut.show_if_requested() Ignore: #>>> from ibeis_cnn.draw_results import * # NOQA #>>> from ibeis_cnn import ingest_data #>>> data, labels = ingest_data.testdata_patchmatch2() #>>> flat_metadata = {'fs': np.arange(len(labels))} #>>> result = interact_siamsese_data_patches(labels, data, flat_metadata) #>>> ut.show_if_requested() """ return _plugin.generate_species_background( ibs, chip_list, species, nInput)
[docs] def fix_annot_species_viewpoint_quality_cnn(ibs, aid_list, min_conf=0.8): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids """ return _plugin.fix_annot_species_viewpoint_quality_cnn( ibs, aid_list, min_conf)
[docs] def detect_annot_species_viewpoint_cnn(ibs, aid_list): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: species_viewpoint_list CommandLine: python -m ibeis_cnn._plugin --exec-detect_annot_species_viewpoint_cnn Example: >>> # DISABLE_DOCTEST >>> from ibeis_cnn._plugin import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> species_viewpoint_list = detect_annot_species_viewpoint_cnn(ibs, aid_list) >>> result = ('species_viewpoint_list = %s' % (str(species_viewpoint_list),)) >>> print(result) """ return _plugin.detect_annot_species_viewpoint_cnn(ibs, aid_list)
[docs] def validate_annot_species_viewpoint_cnn(ibs, aid_list, verbose=False): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids verbose (bool): verbosity flag(default = False) Returns: tuple: (bad_species_list, bad_viewpoint_list) CommandLine: python -m ibeis_cnn._plugin --exec-validate_annot_species_viewpoint_cnn --db PZ_FlankHack python -m ibeis_cnn._plugin --exec-validate_annot_species_viewpoint_cnn --db GZ_Master1 Example: >>> # DISABLE_DOCTEST >>> from ibeis_cnn._plugin import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> verbose = False >>> (bad_species_list, bad_viewpoint_list) = validate_annot_species_viewpoint_cnn(ibs, aid_list, verbose) >>> print('bad_species_list = %s' % (bad_species_list,)) >>> print('bad_species_list = %s' % (bad_viewpoint_list,)) >>> print(result) Ignore: bad_viewpoint_list_ = [item for item in bad_viewpoint_list if item[2] is not None and item[0] > 1200] grouped_dict = ut.group_items(bad_viewpoint_list, ut.get_list_column(bad_viewpoint_list_, 3)) grouped_list = grouped_dict.values() regrouped_items = ut.flatten(ut.sortedby(grouped_list, map(len, grouped_list))) candidate_aid_list = ut.get_list_column(regrouped_items, 0) print('candidate_aid_list = %r' % (candidate_aid_list,)) """ return _plugin.validate_annot_species_viewpoint_cnn( ibs, aid_list, verbose)
[docs] def detect_yolo(ibs, gid_list): """ Args: ibs (IBEISController): ibeis controller object gid_list (int): list of image ids Returns: list: aid_list CommandLine: python -m ibeis_cnn._plugin --exec-detect_yolo Example: >>> # DISABLE_DOCTEST >>> from ibeis_cnn._plugin import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> gid_list = ibs.get_valid_gids() >>> aid_list = detect_yolo(ibs, gid_list) >>> print(aid_list) """ return _plugin.detect_yolo(ibs, gid_list)
[docs] def detect_image_cnn(ibs, gid, confidence=0.9, extraction=u'bing'): """ Args: ibs (IBEISController): ibeis controller object gid (?): confidence (float): (default = 0.9) extraction (str): (default = 'bing') CommandLine: python -m ibeis_cnn._plugin --exec-detect_image_cnn Example: >>> # DISABLE_DOCTEST >>> from ibeis_cnn._plugin import * # NOQA >>> from ibeis_cnn._plugin import _suggest_random_candidate_regions, _suggest_bing_candidate_regions # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> gid = 1 >>> confidence = 0.9 >>> extraction = 'bing' >>> result = detect_image_cnn(ibs, gid, confidence, extraction) >>> print(result) """ return _plugin.detect_image_cnn(ibs, gid, confidence, extraction)
def _get_all_annotmatch_rowids(ibs): """ all_annotmatch_rowids <- annotmatch.get_all_rowids() Returns: list_ (list): unfiltered annotmatch_rowids TemplateInfo: Tider_all_rowids tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> ibs._get_all_annotmatch_rowids() """ return _autogen_annotmatch_funcs._get_all_annotmatch_rowids(ibs)
[docs] def add_annotmatch( ibs, aid1_list, aid2_list, annotmatch_truth_list=None, annotmatch_confidence_list=None, annotmatch_tag_text_list=None, annotmatch_reviewed_list=None, annotmatch_reviewer_list=None, annotmatch_posixtime_modified_list=None, annotmatch_pairwise_prob_list=None, config_hashid_list=None): """ Returns: returns annotmatch_rowid_list of added (or already existing annotmatchs) TemplateInfo: Tadder_native tbl = annotmatch """ return _autogen_annotmatch_funcs.add_annotmatch( ibs, aid1_list, aid2_list, annotmatch_truth_list, annotmatch_confidence_list, annotmatch_tag_text_list, annotmatch_reviewed_list, annotmatch_reviewer_list, annotmatch_posixtime_modified_list, annotmatch_pairwise_prob_list, config_hashid_list)
[docs] def delete_annotmatch(ibs, annotmatch_rowid_list, config2_=None): """ annotmatch.delete(annotmatch_rowid_list) delete annotmatch rows Args: annotmatch_rowid_list Returns: int: num_deleted TemplateInfo: Tdeleter_native_tbl tbl = annotmatch Example: >>> # DISABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids()[:2] >>> num_deleted = ibs.delete_annotmatch(annotmatch_rowid_list) >>> print('num_deleted = %r' % (num_deleted,)) """ return _autogen_annotmatch_funcs.delete_annotmatch( ibs, annotmatch_rowid_list, config2_)
[docs] def get_annotmatch_aid1(*args, **kwargs): """ aid1_list <- annotmatch.aid1[annotmatch_rowid_list] gets data from the "native" column "aid1" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: aid1_list TemplateInfo: Tgetter_table_column col = aid1 tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> aid1_list = ibs.get_annotmatch_aid1(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(aid1_list) """ return _autogen_annotmatch_funcs.get_annotmatch_aid1(*args, **kwargs)
[docs] def get_annotmatch_aid2(*args, **kwargs): """ aid2_list <- annotmatch.aid2[annotmatch_rowid_list] gets data from the "native" column "aid2" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: aid2_list TemplateInfo: Tgetter_table_column col = aid2 tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> aid2_list = ibs.get_annotmatch_aid2(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(aid2_list) """ return _autogen_annotmatch_funcs.get_annotmatch_aid2(*args, **kwargs)
[docs] def get_annotmatch_confidence(*args, **kwargs): """ annotmatch_confidence_list <- annotmatch.annotmatch_confidence[annotmatch_rowid_list] gets data from the "native" column "annotmatch_confidence" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_confidence_list TemplateInfo: Tgetter_table_column col = annotmatch_confidence tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_confidence_list = ibs.get_annotmatch_confidence(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_confidence_list) """ return _autogen_annotmatch_funcs.get_annotmatch_confidence( *args, **kwargs)
[docs] def get_annotmatch_config_hashid(*args, **kwargs): """ config_hashid_list <- annotmatch.config_hashid[annotmatch_rowid_list] gets data from the "native" column "config_hashid" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: config_hashid_list TemplateInfo: Tgetter_table_column col = config_hashid tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> config_hashid_list = ibs.get_annotmatch_config_hashid(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(config_hashid_list) """ return _autogen_annotmatch_funcs.get_annotmatch_config_hashid( *args, **kwargs)
[docs] def get_annotmatch_pairwise_prob(*args, **kwargs): """ annotmatch_pairwise_prob_list <- annotmatch.annotmatch_pairwise_prob[annotmatch_rowid_list] gets data from the "native" column "annotmatch_pairwise_prob" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_pairwise_prob_list TemplateInfo: Tgetter_table_column col = annotmatch_pairwise_prob tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_pairwise_prob_list = ibs.get_annotmatch_pairwise_prob(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_pairwise_prob_list) """ return _autogen_annotmatch_funcs.get_annotmatch_pairwise_prob( *args, **kwargs)
[docs] def get_annotmatch_posixtime_modified(*args, **kwargs): """ annotmatch_posixtime_modified_list <- annotmatch.annotmatch_posixtime_modified[annotmatch_rowid_list] gets data from the "native" column "annotmatch_posixtime_modified" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_posixtime_modified_list TemplateInfo: Tgetter_table_column col = annotmatch_posixtime_modified tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_posixtime_modified_list = ibs.get_annotmatch_posixtime_modified(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_posixtime_modified_list) """ return _autogen_annotmatch_funcs.get_annotmatch_posixtime_modified( *args, **kwargs)
[docs] def get_annotmatch_reviewed(*args, **kwargs): """ annotmatch_reviewed_list <- annotmatch.annotmatch_reviewed[annotmatch_rowid_list] gets data from the "native" column "annotmatch_reviewed" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_reviewed_list TemplateInfo: Tgetter_table_column col = annotmatch_reviewed tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_reviewed_list = ibs.get_annotmatch_reviewed(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_reviewed_list) """ return _autogen_annotmatch_funcs.get_annotmatch_reviewed( *args, **kwargs)
[docs] def get_annotmatch_reviewer(*args, **kwargs): """ annotmatch_reviewer_list <- annotmatch.annotmatch_reviewer[annotmatch_rowid_list] gets data from the "native" column "annotmatch_reviewer" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_reviewer_list TemplateInfo: Tgetter_table_column col = annotmatch_reviewer tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_reviewer_list = ibs.get_annotmatch_reviewer(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_reviewer_list) """ return _autogen_annotmatch_funcs.get_annotmatch_reviewer( *args, **kwargs)
[docs] def get_annotmatch_rowid(*args, **kwargs): """ annotmatch_rowid_list <- annotmatch.annotmatch_rowid[annotmatch_rowid_list] gets data from the "native" column "annotmatch_rowid" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_rowid_list TemplateInfo: Tgetter_table_column col = annotmatch_rowid tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_rowid_list = ibs.get_annotmatch_rowid(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_rowid_list) """ return _autogen_annotmatch_funcs.get_annotmatch_rowid(*args, **kwargs)
[docs] def get_annotmatch_rowid_from_superkey( ibs, aid1_list, aid2_list, eager=True, nInput=None): """ annotmatch_rowid_list <- annotmatch[aid1_list, aid2_list] Args: superkey lists: aid1_list, aid2_list Returns: annotmatch_rowid_list TemplateInfo: Tgetter_native_rowid_from_superkey tbl = annotmatch """ return _autogen_annotmatch_funcs.get_annotmatch_rowid_from_superkey( ibs, aid1_list, aid2_list, eager, nInput)
[docs] def get_annotmatch_tag_text(*args, **kwargs): """ annotmatch_tag_text_list <- annotmatch.annotmatch_tag_text[annotmatch_rowid_list] gets data from the "native" column "annotmatch_tag_text" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_tag_text_list TemplateInfo: Tgetter_table_column col = annotmatch_tag_text tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_tag_text_list = ibs.get_annotmatch_tag_text(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_tag_text_list) """ return _autogen_annotmatch_funcs.get_annotmatch_tag_text( *args, **kwargs)
[docs] def get_annotmatch_truth(*args, **kwargs): """ annotmatch_truth_list <- annotmatch.annotmatch_truth[annotmatch_rowid_list] gets data from the "native" column "annotmatch_truth" in the "annotmatch" table Args: annotmatch_rowid_list (list): Returns: list: annotmatch_truth_list TemplateInfo: Tgetter_table_column col = annotmatch_truth tbl = annotmatch Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_annotmatch_funcs import * # NOQA >>> ibs, config2_ = testdata_annotmatch() >>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids() >>> eager = True >>> annotmatch_truth_list = ibs.get_annotmatch_truth(annotmatch_rowid_list, eager=eager) >>> assert len(annotmatch_rowid_list) == len(annotmatch_truth_list) """ return _autogen_annotmatch_funcs.get_annotmatch_truth(*args, **kwargs)
[docs] def set_annotmatch_confidence(*args, **kwargs): """ annotmatch_confidence_list -> annotmatch.annotmatch_confidence[annotmatch_rowid_list] Args: annotmatch_rowid_list annotmatch_confidence_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = annotmatch_confidence """ return _autogen_annotmatch_funcs.set_annotmatch_confidence( *args, **kwargs)
[docs] def set_annotmatch_config_hashid(*args, **kwargs): """ config_hashid_list -> annotmatch.config_hashid[annotmatch_rowid_list] Args: annotmatch_rowid_list config_hashid_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = config_hashid """ return _autogen_annotmatch_funcs.set_annotmatch_config_hashid( *args, **kwargs)
[docs] def set_annotmatch_pairwise_prob(*args, **kwargs): """ annotmatch_pairwise_prob_list -> annotmatch.annotmatch_pairwise_prob[annotmatch_rowid_list] Args: annotmatch_rowid_list annotmatch_pairwise_prob_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = annotmatch_pairwise_prob """ return _autogen_annotmatch_funcs.set_annotmatch_pairwise_prob( *args, **kwargs)
[docs] def set_annotmatch_posixtime_modified(*args, **kwargs): """ annotmatch_posixtime_modified_list -> annotmatch.annotmatch_posixtime_modified[annotmatch_rowid_list] Args: annotmatch_rowid_list annotmatch_posixtime_modified_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = annotmatch_posixtime_modified """ return _autogen_annotmatch_funcs.set_annotmatch_posixtime_modified( *args, **kwargs)
[docs] def set_annotmatch_reviewed(*args, **kwargs): """ annotmatch_reviewed_list -> annotmatch.annotmatch_reviewed[annotmatch_rowid_list] Args: annotmatch_rowid_list annotmatch_reviewed_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = annotmatch_reviewed """ return _autogen_annotmatch_funcs.set_annotmatch_reviewed( *args, **kwargs)
[docs] def set_annotmatch_reviewer(*args, **kwargs): """ annotmatch_reviewer_list -> annotmatch.annotmatch_reviewer[annotmatch_rowid_list] Args: annotmatch_rowid_list annotmatch_reviewer_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = annotmatch_reviewer """ return _autogen_annotmatch_funcs.set_annotmatch_reviewer( *args, **kwargs)
[docs] def set_annotmatch_tag_text(*args, **kwargs): """ annotmatch_tag_text_list -> annotmatch.annotmatch_tag_text[annotmatch_rowid_list] Args: annotmatch_rowid_list annotmatch_tag_text_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = annotmatch_tag_text """ return _autogen_annotmatch_funcs.set_annotmatch_tag_text( *args, **kwargs)
[docs] def set_annotmatch_truth(*args, **kwargs): """ annotmatch_truth_list -> annotmatch.annotmatch_truth[annotmatch_rowid_list] Args: annotmatch_rowid_list annotmatch_truth_list TemplateInfo: Tsetter_native_column tbl = annotmatch col = annotmatch_truth """ return _autogen_annotmatch_funcs.set_annotmatch_truth(*args, **kwargs)
[docs] def export_to_xml( ibs, offset=u'auto', enforce_yaw=False, target_size=500, purge=False): """ """ return detectfuncs.export_to_xml( ibs, offset, enforce_yaw, target_size, purge)
[docs] def imageset_train_test_split(ibs, train_split=0.8): """ """ return detectfuncs.imageset_train_test_split(ibs, train_split)
[docs] def detect_distributions(ibs): """ """ return detectfuncs.detect_distributions(ibs)
[docs] def detect_precision_recall_algo_display( ibs, min_overlap=0.7, figsize=(10, 6), **kwargs): """ """ return detectfuncs.detect_precision_recall_algo_display( ibs, min_overlap, figsize, **kwargs)
[docs] def classifier_precision_recall_algo(ibs, **kwargs): """ """ return detectfuncs.classifier_precision_recall_algo(ibs, **kwargs)
[docs] def classifier_precision_recall_algo_display( ibs, figsize=(21, 6), **kwargs): """ """ return detectfuncs.classifier_precision_recall_algo_display( ibs, figsize, **kwargs)
[docs] def detect_precision_recall_algo_display_animate(ibs, **kwargs): """ """ return detectfuncs.detect_precision_recall_algo_display_animate( ibs, **kwargs)
[docs] def detect_write_detection_all(ibs): """ """ return detectfuncs.detect_write_detection_all(ibs)
[docs] def redownload_detection_models(ibs): """ Args: ibs (IBEISController): CommandLine: python -c "from ibeis.algo.detect import grabmodels; grabmodels.redownload_models()" python -c "import utool, ibeis.algo; utool.view_directory(ibeis.algo.detect.grabmodels._expand_modeldir())" Example: >>> # DISABLE_DOCTEST >>> from ibeis.other.detectfuncs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> result = redownload_detection_models(ibs) >>> print(result) """ return detectfuncs.redownload_detection_models(ibs)
[docs] def view_model_dir(ibs): """ """ return detectfuncs.view_model_dir(ibs)
[docs] def fix_horizontal_bounding_boxes_to_orient(ibs, gid, bbox_list): """ """ return detectfuncs.fix_horizontal_bounding_boxes_to_orient( ibs, gid, bbox_list)
[docs] def get_recognition_query_aids(ibs, is_known, species=None): """ DEPCIRATE RESTful: Method: GET URL: /api/query/recognition_query_aids/ """ return apis_query.get_recognition_query_aids(ibs, is_known, species)
[docs] def query_chips_simple_dict(ibs, *args, **kwargs): """ Runs query_chips, but returns a json compatible dictionary Args: same as query_chips RESTful: Method: GET URL: /api/query/chips/simple_dict/ SeeAlso: query_chips CommandLine: python -m ibeis.web.apis_query --test-query_chips_simple_dict:0 python -m ibeis.web.apis_query --test-query_chips_simple_dict:1 python -m ibeis.web.apis_query --test-query_chips_simple_dict:0 --humpbacks Example: >>> # WEB_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> #qaid = ibs.get_valid_aids()[0:3] >>> qaids = ibs.get_valid_aids() >>> daids = ibs.get_valid_aids() >>> dict_list = ibs.query_chips_simple_dict(qaids, daids) >>> qgids = ibs.get_annot_image_rowids(qaids) >>> qnids = ibs.get_annot_name_rowids(qaids) >>> for dict_, qgid, qnid in zip(dict_list, qgids, qnids): >>> dict_['qgid'] = qgid >>> dict_['qnid'] = qnid >>> dict_['dgid_list'] = ibs.get_annot_image_rowids(dict_['daid_list']) >>> dict_['dnid_list'] = ibs.get_annot_name_rowids(dict_['daid_list']) >>> dict_['dgname_list'] = ibs.get_image_gnames(dict_['dgid_list']) >>> dict_['qgname'] = ibs.get_image_gnames(dict_['qgid']) >>> result = ut.list_str(dict_list, nl=2, precision=2, hack_liststr=True) >>> result = result.replace('u\'', '"').replace('\'', '"') >>> print(result) Example: >>> # WEB_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import time >>> import ibeis >>> import requests >>> # Start up the web instance >>> web_instance = ibeis.opendb_in_background(db='testdb1', web=True, browser=False) >>> time.sleep(.5) >>> baseurl = 'http://127.0.1.1:5000' >>> data = dict(qaid_list=[1]) >>> resp = requests.get(baseurl + '/api/query/chips/simple_dict/', data=data) >>> print(resp) >>> web_instance.terminate() >>> json_dict = resp.json() >>> cmdict_list = json_dict['response'] >>> assert 'score_list' in cmdict_list[0] """ return apis_query.query_chips_simple_dict(ibs, *args, **kwargs)
[docs] def query_chips_dict(ibs, *args, **kwargs): """ Runs query_chips, but returns a json compatible dictionary RESTful: Method: GET URL: /api/query/chips/dict/ """ return apis_query.query_chips_dict(ibs, *args, **kwargs)
[docs] def query_chips( ibs, qaid_list=None, daid_list=None, cfgdict=None, use_cache=None, use_bigcache=None, qreq_=None, return_request=False, verbose=False, save_qcache=None, prog_hook=None, return_cm_dict=False, return_cm_simple_dict=False): """ Submits a query request to the hotspotter recognition pipeline. Returns a list of QueryResult objects. Note: In the future the QueryResult objects will be replaced by ChipMatch objects Args: qaid_list (list): a list of annotation ids to be submitted as queries daid_list (list): a list of annotation ids used as the database that will be searched cfgdict (dict): dictionary of configuration options used to create a new QueryRequest if not already specified use_cache (bool): turns on/off chip match cache (default: True) use_bigcache (bool): turns one/off chunked chip match cache (default: True) qreq_ (QueryRequest): optional, a QueryRequest object that overrides all previous settings return_request (bool): returns the request which will be created if one is not already specified verbose (bool): default=False, turns on verbose printing Returns: list: a list of ChipMatch objects containing the matching annotations, scores, and feature matches Returns(2): tuple: (cm_list, qreq_) - a list of query results and optionally the QueryRequest object used RESTful: Method: PUT URL: /api/query/chips/ CommandLine: python -m ibeis.web.apis_query --test-query_chips # Test speed of single query python -m ibeis --tf IBEISController.query_chips --db PZ_Master1 \ -a default:qindex=0:1,dindex=0:500 --nocache-hs python -m ibeis --tf IBEISController.query_chips --db PZ_Master1 \ -a default:qindex=0:1,dindex=0:3000 --nocache-hs python -m ibeis.web.apis_query --test-query_chips:1 --show python -m ibeis.web.apis_query --test-query_chips:2 --show Example: >>> # SLOW_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import ibeis >>> qreq_ = ibeis.testdata_qreq_() >>> ibs = qreq_.ibs >>> cm_list = qreq_.execute() >>> cm = cm_list[0] >>> ut.quit_if_noshow() >>> cm.ishow_analysis(qreq_) >>> ut.show_if_requested() Example: >>> # SLOW_DOCTEST >>> #from ibeis.all_imports import * # NOQA >>> import ibeis >>> from ibeis.control.IBEISControl import * # NOQA >>> qaid_list = [1] >>> daid_list = [1, 2, 3, 4, 5] >>> ibs = ibeis.test_main(db='testdb1') >>> qreq_ = ibs.new_query_request(qaid_list, daid_list) >>> cm = ibs.query_chips(qaid_list, daid_list, use_cache=False, qreq_=qreq_)[0] >>> ut.quit_if_noshow() >>> cm.ishow_analysis(qreq_) >>> ut.show_if_requested() Example1: >>> # SLOW_DOCTEST >>> #from ibeis.all_imports import * # NOQA >>> import ibeis >>> from ibeis.control.IBEISControl import * # NOQA >>> qaid_list = [1] >>> daid_list = [1, 2, 3, 4, 5] >>> ibs = ibeis.test_main(db='testdb1') >>> cfgdict = {'pipeline_root':'BC_DTW'} >>> qreq_ = ibs.new_query_request(qaid_list, daid_list, cfgdict=cfgdict, verbose=True) >>> cm = ibs.query_chips(qaid_list, daid_list, use_cache=False, qreq_=qreq_)[0] >>> ut.quit_if_noshow() >>> cm.ishow_analysis(qreq_) >>> ut.show_if_requested() """ return apis_query.query_chips( ibs, qaid_list, daid_list, cfgdict, use_cache, use_bigcache, qreq_, return_request, verbose, save_qcache, prog_hook, return_cm_dict, return_cm_simple_dict)
def _get_all_known_lblannot_rowids(ibs, _lbltype): """ Returns: list_ (list): all nids of known animals (does not include unknown names) """ return manual_lbltype_funcs._get_all_known_lblannot_rowids( ibs, _lbltype)
[docs] def add_lbltype(*args, **kwargs): """ Adds a label type and its default value Should only be called at the begining of the program. """ return manual_lbltype_funcs.add_lbltype(*args, **kwargs)
[docs] def get_lbltype_rowid_from_text(*args, **kwargs): """ Returns: lbltype_rowid (list): lbltype_rowid where the lbltype_text is given """ return manual_lbltype_funcs.get_lbltype_rowid_from_text( *args, **kwargs)
[docs] def get_lbltype_default(*args, **kwargs): """ """ return manual_lbltype_funcs.get_lbltype_default(*args, **kwargs)
[docs] def get_lbltype_text(*args, **kwargs): """ """ return manual_lbltype_funcs.get_lbltype_text(*args, **kwargs)
[docs] def add_contributors(*args, **kwargs): """ Adds a list of contributors. Returns: contrib_id_list (list): contributor rowids RESTful: Method: POST URL: /api/contributor/ """ return manual_meta_funcs.add_contributors(*args, **kwargs)
[docs] def add_version(*args, **kwargs): """ Adds an algorithm / actor configuration as a string """ return manual_meta_funcs.add_version(*args, **kwargs)
[docs] def add_config(*args, **kwargs): """ Adds an algorithm / actor configuration as a string RESTful: Method: POST URL: /api/config/ Args: ibs (IBEISController): ibeis controller object cfgsuffix_list (list): contrib_rowid_list (list): (default = None) Returns: list: config_rowid_list CommandLine: python -m ibeis.control.manual_meta_funcs --exec-add_config Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_meta_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> cfgsuffix_list = ['_CHIP(sz450)'] >>> contrib_rowid_list = None >>> config_rowid_list = add_config(ibs, cfgsuffix_list, contrib_rowid_list) >>> result = ('config_rowid_list = %s' % (str(config_rowid_list),)) >>> print(result) """ return manual_meta_funcs.add_config(*args, **kwargs)
[docs] def ensure_config_rowid_from_suffix(*args, **kwargs): """ """ return manual_meta_funcs.ensure_config_rowid_from_suffix( *args, **kwargs)
[docs] def set_metadata_value(*args, **kwargs): """ Sets metadata key, value pairs RESTful: Method: PUT URL: /api/metadata/value/ """ return manual_meta_funcs.set_metadata_value(*args, **kwargs)
[docs] def set_database_version(ibs, db, version): """ Sets the specified database's version from the controller """ return manual_meta_funcs.set_database_version(ibs, db, version)
[docs] def set_config_contributor_rowid( ibs, config_rowid_list, contrib_rowid_list): """ Sets the config's contributor rowid RESTful: Method: PUT URL: /api/config/contributor_rowid/ """ return manual_meta_funcs.set_config_contributor_rowid( ibs, config_rowid_list, contrib_rowid_list)
[docs] def add_new_temp_contributor( ibs, user_prompt=False, offset=None, autolocate=False): """ RESTful: Method: POST URL: /api/contributor/new_temp/ """ return manual_meta_funcs.add_new_temp_contributor( ibs, user_prompt, offset, autolocate)
[docs] def ensure_contributor_rowids(ibs, user_prompt=False, autolocate=False): """ Args: ibs (IBEISController): ibeis controller object user_prompt (bool): Returns: list: CommandLine: python -m ibeis.control.manual_meta_funcs --test-ensure_contributor_rowids Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_meta_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb(db='testdb1') >>> gid_list = ibs.get_valid_gids() >>> ibs.delete_contributors(ibs.get_valid_contrib_rowids()) >>> contrib_rowid_list1 = ibs.get_image_contributor_rowid(gid_list) >>> assert ut.allsame(contrib_rowid_list1) >>> ut.assert_eq(contrib_rowid_list1[0], None) >>> user_prompt = ut.get_argflag('--user-prompt') >>> autolocate = ut.get_argflag('--user-prompt') >>> # execute function >>> result = ensure_contributor_rowids(ibs, user_prompt, autolocate) >>> # verify results >>> ibs.print_contributor_table() >>> print(result) >>> contrib_rowid_list2 = ibs.get_image_contributor_rowid(gid_list) >>> assert ut.allsame(contrib_rowid_list2) >>> ut.assert_eq(contrib_rowid_list2[0], 1) """ return manual_meta_funcs.ensure_contributor_rowids( ibs, user_prompt, autolocate)
[docs] def get_all_uncontributed_images(ibs): """ RESTful: Method: GET URL: /api/contributor/all_uncontributed_images/ """ return manual_meta_funcs.get_all_uncontributed_images(ibs)
[docs] def get_all_uncontributed_configs(ibs): """ RESTful: Method: GET URL: /api/contributor/all_uncontributed_configs/ """ return manual_meta_funcs.get_all_uncontributed_configs(ibs)
[docs] def set_config_contributor_unassigned(ibs, contrib_rowid): """ RESTful: Method: PUT URL: /api/config/contributor_unassigned/ """ return manual_meta_funcs.set_config_contributor_unassigned( ibs, contrib_rowid)
[docs] def ensure_imageset_configs_populated(ibs): """ """ return manual_meta_funcs.ensure_imageset_configs_populated(ibs)
[docs] def get_contributor_rowid_from_uuid(*args, **kwargs): """ Returns: contrib_rowid_list (list): a contributor RESTful: Method: GET URL: /api/contributor/rowid_from_uuid/ """ return manual_meta_funcs.get_contributor_rowid_from_uuid( *args, **kwargs)
[docs] def get_contributor_rowid_from_tag(*args, **kwargs): """ Returns: contrib_rowid_list (list): a contributor RESTful: Method: GET URL: /api/contributor/rowid_from_tag/ """ return manual_meta_funcs.get_contributor_rowid_from_tag( *args, **kwargs)
[docs] def get_contributor_uuid(*args, **kwargs): """ Returns: contrib_uuid_list (list): a contributor's uuid RESTful: Method: GET URL: /api/contributor/uuid/ """ return manual_meta_funcs.get_contributor_uuid(*args, **kwargs)
def _get_all_contributor_rowids(ibs): """ all_contributor_rowids <- contributor.get_all_rowids() Returns: list_ (list): unfiltered contributor_rowids TemplateInfo: Tider_all_rowids tbl = contributor Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_meta_funcs import * # NOQA >>> ibs, qreq_ = testdata_ibs() >>> ibs._get_all_contributor_rowids() """ return manual_meta_funcs._get_all_contributor_rowids(ibs)
[docs] def get_contributor_tag(*args, **kwargs): """ contributor_tag_list <- contributor.contributor_tag[contributor_rowid_list] gets data from the "native" column "contributor_tag" in the "contributor" table Args: contributor_rowid_list (list): Returns: list: contributor_tag_list - a contributor's tag TemplateInfo: Tgetter_table_column col = contributor_tag tbl = contributor CommandLine: python -m ibeis.templates.template_generator --key contributor --Tcfg with_api_cache=False with_deleters=False RESTful: Method: GET URL: /api/contributor/tag/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_meta_funcs import * # NOQA >>> ibs, qreq_ = testdata_ibs() >>> contributor_rowid_list = ibs._get_all_contributor_rowids() >>> eager = True >>> contributor_tag_list = ibs.get_contributor_tag(contributor_rowid_list, eager=eager) >>> assert len(contributor_rowid_list) == len(contributor_tag_list) """ return manual_meta_funcs.get_contributor_tag(*args, **kwargs)
[docs] def get_contributor_first_name(*args, **kwargs): """ Returns: contrib_name_first_list (list): a contributor's first name RESTful: Method: GET URL: /api/contributor/first_name/ """ return manual_meta_funcs.get_contributor_first_name(*args, **kwargs)
[docs] def get_contributor_last_name(*args, **kwargs): """ Returns: contrib_name_last_list (list): a contributor's last name RESTful: Method: GET URL: /api/contributor/last_name/ """ return manual_meta_funcs.get_contributor_last_name(*args, **kwargs)
[docs] def get_contributor_name_string(*args, **kwargs): """ Returns: contrib_name_list (list): a contributor's full name RESTful: Method: GET URL: /api/contributor/name_string/ """ return manual_meta_funcs.get_contributor_name_string(*args, **kwargs)
[docs] def get_contributor_city(*args, **kwargs): """ Returns: contrib_city_list (list): a contributor's location - city RESTful: Method: GET URL: /api/contributor/city/ """ return manual_meta_funcs.get_contributor_city(*args, **kwargs)
[docs] def get_contributor_state(*args, **kwargs): """ Returns: list_ (list): a contributor's location - state RESTful: Method: GET URL: /api/contributor/state/ """ return manual_meta_funcs.get_contributor_state(*args, **kwargs)
[docs] def get_contributor_country(*args, **kwargs): """ Returns: contrib_country_list (list): a contributor's location - country RESTful: Method: GET URL: /api/contributor/country/ """ return manual_meta_funcs.get_contributor_country(*args, **kwargs)
[docs] def get_contributor_zip(*args, **kwargs): """ Returns: contrib_zip_list (list): a contributor's location - zip RESTful: Method: GET URL: /api/contributor/zip/ """ return manual_meta_funcs.get_contributor_zip(*args, **kwargs)
[docs] def get_contributor_location_string(*args, **kwargs): """ Returns: contrib_list (list): a contributor's location RESTful: Method: GET URL: /api/contributor/location_string/ """ return manual_meta_funcs.get_contributor_location_string( *args, **kwargs)
[docs] def get_contributor_note(*args, **kwargs): """ Returns: contrib_note_list (list): a contributor's note RESTful: Method: GET URL: /api/contributor/note/ """ return manual_meta_funcs.get_contributor_note(*args, **kwargs)
[docs] def get_contributor_config_rowids(*args, **kwargs): """ Returns: config_rowid_list (list): config rowids for a contributor RESTful: Method: GET URL: /api/contributor/config_rowids/ """ return manual_meta_funcs.get_contributor_config_rowids(*args, **kwargs)
[docs] def get_contributor_imgsetids(*args, **kwargs): """ Returns: imgsetid_list (list): imgsetids for a contributor RESTful: Method: GET URL: /api/contributor/imgsetids/ """ return manual_meta_funcs.get_contributor_imgsetids(*args, **kwargs)
[docs] def get_contributor_gids(*args, **kwargs): """ TODO: Template 1_M reverse getter Returns: gid_list (list): gids for a contributor RESTful: Method: GET URL: /api/contributor/gids/ """ return manual_meta_funcs.get_contributor_gids(*args, **kwargs)
[docs] def get_config_rowid_from_suffix(*args, **kwargs): """ Gets an algorithm configuration as a string DEPRICATE RESTful: Method: GET URL: /api/contributor/config_rowid_from_suffix/ Args: ibs (IBEISController): ibeis controller object cfgsuffix_list (list): Returns: list: gid_list CommandLine: python -m ibeis.control.manual_meta_funcs --exec-get_config_rowid_from_suffix """ return manual_meta_funcs.get_config_rowid_from_suffix(*args, **kwargs)
[docs] def get_config_contributor_rowid(*args, **kwargs): """ Returns: cfgsuffix_list (list): contributor's rowid for algorithm configs RESTful: Method: GET URL: /api/contributor/config_rowid/ """ return manual_meta_funcs.get_config_contributor_rowid(*args, **kwargs)
[docs] def get_config_suffixes(*args, **kwargs): """ Returns: cfgsuffix_list (list): suffixes for algorithm configs RESTful: Method: GET URL: /api/contributor/config_suffixes/ """ return manual_meta_funcs.get_config_suffixes(*args, **kwargs)
[docs] def delete_contributors(*args, **kwargs): """ deletes contributors from the database and all information associated RESTful: Method: DELETE URL: /api/contributor/ """ return manual_meta_funcs.delete_contributors(*args, **kwargs)
def _get_all_contrib_rowids(ibs): """ Returns: list_ (list): all unfiltered contrib_rowid (contributor rowid) """ return manual_meta_funcs._get_all_contrib_rowids(ibs)
[docs] def get_valid_contrib_rowids(ibs): """ Returns: list_ (list): list of all contributor ids Returns: list: contrib_rowids_list CommandLine: python -m ibeis.control.manual_meta_funcs --test-get_valid_contrib_rowids RESTful: Method: GET URL: /api/contributor/valid_rowids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_meta_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> contrib_rowids_list = get_valid_contrib_rowids(ibs) >>> result = str(contrib_rowids_list) >>> print(result) """ return manual_meta_funcs.get_valid_contrib_rowids(ibs)
[docs] def get_metadata_value(*args, **kwargs): """ RESTful: Method: GET URL: /api/metadata/value/ """ return manual_meta_funcs.get_metadata_value(*args, **kwargs)
[docs] def get_metadata_rowid_from_metadata_key(*args, **kwargs): """ RESTful: Method: GET URL: /api/metadata/rowid_from_metadata_key/ """ return manual_meta_funcs.get_metadata_rowid_from_metadata_key( *args, **kwargs)
[docs] def get_database_version(ibs, db): """ Gets the specified database version from the controller RESTful: Method: GET URL: /api/core/dbversion/ """ return manual_meta_funcs.get_database_version(ibs, db)
[docs] def add_metadata(*args, **kwargs): """ Adds metadata Returns: metadata_rowid_list (list): metadata rowids RESTful: Method: POST URL: /api/metadata/ """ return manual_meta_funcs.add_metadata(*args, **kwargs)
[docs] def delete_configs(*args, **kwargs): """ deletes images from the database that belong to fids RESTful: Method: DELETE URL: /api/config/ """ return manual_meta_funcs.delete_configs(*args, **kwargs)
def _init_config(ibs): """ Loads the database's algorithm configuration TODO: per-species config """ return manual_meta_funcs._init_config(ibs) def _init_burned_in_species(ibs): """ """ return manual_meta_funcs._init_burned_in_species(ibs) def _load_named_config(ibs, cfgname=None): """ """ return manual_meta_funcs._load_named_config(ibs, cfgname) def _default_config(ibs, cfgname=None, new=True): """ Resets the databases's algorithm configuration Args: ibs (IBEISController): ibeis controller object cfgname (None): CommandLine: python -m ibeis.control.manual_meta_funcs --test-_default_config Example: >>> # ENABLE_DOCTEST >>> from ibeis.algo.Config import * # NOQA >>> from ibeis.control.manual_meta_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> assert not hasattr(ibs.cfg.query_cfg.flann_cfg, 'badparam') >>> ibs.cfg.query_cfg.flann_cfg.badparam = True >>> assert ibs.cfg.query_cfg.flann_cfg.cb_index == .4 >>> ibs.cfg.query_cfg.flann_cfg.cb_index = .5 >>> assert ibs.cfg.query_cfg.flann_cfg.cb_index == .5 >>> assert hasattr(ibs.cfg.query_cfg.flann_cfg, 'badparam') >>> # bad params is not initially removed but when you specify new it is >>> ibs._default_config(new=False) >>> assert ibs.cfg.query_cfg.flann_cfg.cb_index == .4 >>> assert hasattr(ibs.cfg.query_cfg.flann_cfg, 'badparam') >>> # bad param should be removed when config is defaulted >>> ibs._default_config(new=True) >>> assert not hasattr(ibs.cfg.query_cfg.flann_cfg, 'badparam') cfg = ibs.cfg """ return manual_meta_funcs._default_config(ibs, cfgname, new)
[docs] def update_query_cfg(ibs, **kwargs): """ Updates query config only. Configs needs a restructure very badly DEPRICATE RESTful: Method: PUT URL: /api/query/cfg/ """ return manual_meta_funcs.update_query_cfg(ibs, **kwargs)
[docs] def get_valid_configids(ibs): """ RESTful: Method: GET URL: /api/config/valid_rowids/ """ return manual_meta_funcs.get_valid_configids(ibs)
[docs] def new_query_request( ibs, qaid_list, daid_list, cfgdict=None, verbose=True, **kwargs): """ alias for ibeis.algo.hots.query_request.new_ibeis_query_request Args: qaid_list (list): daid_list (list): cfgdict (None): verbose (bool): Returns: QueryRequest: qreq_ - hyper-parameters CommandLine: python -m ibeis.control.manual_ibeiscontrol_funcs --test-new_query_request Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_ibeiscontrol_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> daid_list = ibs.get_valid_aids() >>> qaid_list = daid_list[0:2] >>> cfgdict = {} >>> verbose = True >>> qreq_ = new_query_request(ibs, qaid_list, daid_list, cfgdict, verbose) >>> qreq_.set_external_qaid_mask(qaid_list[1:2]) >>> print(qreq_.get_external_qaids()) >>> result = str(qreq_.get_query_hashid()) >>> print(result) _QSUUIDS((1)nozvwbdokngephfk) _QSUUIDS((1)nztoqb6&7apjltd1) """ return manual_ibeiscontrol_funcs.new_query_request( ibs, qaid_list, daid_list, cfgdict, verbose, **kwargs)
[docs] def new_query_params(ibs, cfgdict=None, **kwargs): """ convinience method while configs are still in a state of disarray. Converts ibs.cfg.query_cfg into a QueryParams object Args: ibs (IBEISController): ibeis controller object cfgdict (dict): (default = None) Returns: QueryParams: qparams - query hyper-parameters CommandLine: python -m ibeis.control.manual_ibeiscontrol_funcs --exec-new_query_params Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_ibeiscontrol_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> cfgdict = None >>> qparams = new_query_params(ibs, cfgdict) >>> result = ('qparams = %s' % (str(qparams),)) >>> print(result) """ return manual_ibeiscontrol_funcs.new_query_params( ibs, cfgdict, **kwargs)
[docs] def get_vocab_cfgstr(ibs, taids=None, qreq_=None): """ """ return manual_ibeiscontrol_funcs.get_vocab_cfgstr(ibs, taids, qreq_)
[docs] def get_vocab_words(ibs, taids=None, qreq_=None): """ Hackyish way of putting vocab generation into the controller. Ideally there would be a preproc_vocab in ibeis.algo.preproc and sql would store this under some config Example: >>> from ibeis.control.manual_ibeiscontrol_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() """ return manual_ibeiscontrol_funcs.get_vocab_words(ibs, taids, qreq_)
[docs] def get_annot_kpts_distinctiveness(ibs, aid_list, config2_=None, **kwargs): """ very hacky, but cute way to cache keypoint distinctivness Args: ibs (IBEISController): ibeis controller object aid_list (list): dstncvs_normer (None): Returns: list: dstncvs_list CommandLine: python -m ibeis.control.manual_ibeiscontrol_funcs --test-get_annot_kpts_distinctiveness Example: >>> # SLOW_DOCTEST >>> from ibeis.control.manual_ibeiscontrol_funcs import * # NOQA >>> from ibeis.algo.hots import distinctiveness_normalizer >>> import ibeis >>> import numpy as np >>> config2_ = None >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids(species=const.TEST_SPECIES.ZEB_PLAIN) >>> # execute function >>> aid_list1 = aid_list[::2] >>> aid_list2 = aid_list[1::3] >>> dstncvs_list1 = get_annot_kpts_distinctiveness(ibs, aid_list1) >>> dstncvs_list2 = get_annot_kpts_distinctiveness(ibs, aid_list2) >>> dstncvs_list = get_annot_kpts_distinctiveness(ibs, aid_list) >>> print(ut.depth_profile(dstncvs_list1)) >>> stats_dict = ut.dict_stack([ut.get_stats(dstncvs) for dstncvs in dstncvs_list]) >>> print(ut.dict_str(stats_dict)) >>> assert np.all(np.array(stats_dict['min']) >= 0), 'distinctiveness was out of bounds' >>> assert np.all(np.array(stats_dict['max']) <= 1), 'distinctiveness was out of bounds' """ return manual_ibeiscontrol_funcs.get_annot_kpts_distinctiveness( ibs, aid_list, config2_, **kwargs)
[docs] def show_annot(ibs, aid, *args, **kwargs): """ viz helper see ibeis.viz.viz_chip.show_chip """ return manual_ibeiscontrol_funcs.show_annot(ibs, aid, *args, **kwargs)
[docs] def show_annot_image(ibs, aid, *args, **kwargs): """ viz helper see ibeis.viz.viz_chip.show_chip """ return manual_ibeiscontrol_funcs.show_annot_image( ibs, aid, *args, **kwargs)
def _get_all_imageset_rowids(ibs): """ Returns: list_ (list): all unfiltered imgsetids (imageset rowids) """ return manual_imageset_funcs._get_all_imageset_rowids(ibs) def _get_all_imgsetids(ibs): """ alias """ return manual_imageset_funcs._get_all_imgsetids(ibs)
[docs] def get_valid_imgsetids(ibs, min_num_gids=0, processed=None, shipped=None): """ Returns: list_ (list): list of all imageset ids RESTful: Method: GET URL: /api/imageset/ """ return manual_imageset_funcs.get_valid_imgsetids( ibs, min_num_gids, processed, shipped)
[docs] def add_imagesets(*args, **kwargs): """ Adds a list of imagesets. Args: imagesettext_list (list): imageset_uuid_list (list): config_rowid_list (list): notes_list (list): Returns: imgsetid_list (list): added imageset rowids RESTful: Method: POST URL: /api/imageset/ """ return manual_imageset_funcs.add_imagesets(*args, **kwargs)
[docs] def set_imageset_text(*args, **kwargs): """ Sets names of imagesets (groups of animals) RESTful: Method: PUT URL: /api/imageset/text/ """ return manual_imageset_funcs.set_imageset_text(*args, **kwargs)
[docs] def get_imageset_num_imgs_reviewed(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/num_imgs_reviewed/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> # Reset and compute imagesets >>> ibs.delete_all_imagesets() >>> ibs.compute_occurrences() >>> imgsetid_list = ibs.get_valid_imgsetids() >>> num_reviwed_list = ibs.get_imageset_num_imgs_reviewed(imgsetid_list) >>> result = num_reviwed_list >>> print(result) [0, 0] """ return manual_imageset_funcs.get_imageset_num_imgs_reviewed( *args, **kwargs)
[docs] def get_imageset_num_annotmatch_reviewed(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/num_annotmatch_reviewed/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> imgsetid_list = ibs._get_all_imageset_rowids() >>> num_annots_reviewed_list = ibs.get_imageset_num_annotmatch_reviewed(imgsetid_list) """ return manual_imageset_funcs.get_imageset_num_annotmatch_reviewed( *args, **kwargs)
[docs] def get_imageset_num_names_with_exemplar(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/num_names_with_exemplar/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb1') >>> imgsetid_list = ibs._get_all_imageset_rowids() >>> num_annots_reviewed_list = ibs.get_imageset_num_annotmatch_reviewed(imgsetid_list) """ return manual_imageset_funcs.get_imageset_num_names_with_exemplar( *args, **kwargs)
[docs] def get_imageset_fraction_names_with_exemplar(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/fraction_names_with_exemplar/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> import ibeis # NOQA >>> ibs = ibeis.opendb('testdb2') >>> imgsetid_list = ibs._get_all_imageset_rowids() >>> fraction_exemplared_names_list = ibs.get_imageset_fraction_names_with_exemplar(imgsetid_list) """ return manual_imageset_funcs.get_imageset_fraction_names_with_exemplar( *args, **kwargs)
[docs] def get_imageset_fraction_annotmatch_reviewed(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/fraction_annotmatch_reviewed/ """ return manual_imageset_funcs.get_imageset_fraction_annotmatch_reviewed( *args, **kwargs)
[docs] def get_imageset_custom_filtered_aids(ibs, imgsetid_list): """ hacks to filter aids to only certain views and qualities RESTful: Method: GET URL: /api/imageset/custom_filtered_aids/ """ return manual_imageset_funcs.get_imageset_custom_filtered_aids( ibs, imgsetid_list)
[docs] def get_imageset_fraction_imgs_reviewed(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/fraction_imgs_reviewed/ """ return manual_imageset_funcs.get_imageset_fraction_imgs_reviewed( *args, **kwargs)
[docs] def get_imageset_percent_names_with_exemplar_str(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/percent_names_with_exemplar_str/ """ return manual_imageset_funcs.get_imageset_percent_names_with_exemplar_str( *args, **kwargs)
[docs] def get_imageset_percent_imgs_reviewed_str(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/percent_imgs_reviewed_str/ """ return manual_imageset_funcs.get_imageset_percent_imgs_reviewed_str( *args, **kwargs)
[docs] def get_imageset_percent_annotmatch_reviewed_str(*args, **kwargs): """ RESTful: Method: GET URL: /api/imageset/percent_annotmatch_reviewed_str/ """ return manual_imageset_funcs.get_imageset_percent_annotmatch_reviewed_str( *args, **kwargs)
[docs] def get_imageset_num_gids(*args, **kwargs): """ Returns: nGids_list (list): number of images in each imageset RESTful: Method: GET URL: /api/imageset/num_gids/ """ return manual_imageset_funcs.get_imageset_num_gids(*args, **kwargs)
[docs] def get_imageset_num_aids(*args, **kwargs): """ Returns: nGids_list (list): number of images in each imageset RESTful: Method: GET URL: /api/imageset/num_aids/ """ return manual_imageset_funcs.get_imageset_num_aids(*args, **kwargs)
[docs] def get_imageset_aids(*args, **kwargs): """ Returns: aids_list (list): a list of list of aids in each imageset RESTful: Method: GET URL: /api/imageset/aids/ Args: ibs (IBEISController): ibeis controller object imgsetid_list (list): Returns: list: aids_list CommandLine: python -m ibeis.control.manual_imageset_funcs --test-get_imageset_aids Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> ibs.delete_imagesets(ibs.get_valid_imgsetids()) >>> ibs.compute_occurrences() >>> imgsetid_list = ibs.get_valid_imgsetids() >>> aids_list = get_imageset_aids(ibs, imgsetid_list) >>> result = ('aids_list = %s' % (str(aids_list),)) >>> print(result) """ return manual_imageset_funcs.get_imageset_aids(*args, **kwargs)
[docs] def get_imageset_gids(*args, **kwargs): """ Returns: gids_list (list): a list of list of gids in each imageset RESTful: Method: GET URL: /api/imageset/gids/ """ return manual_imageset_funcs.get_imageset_gids(*args, **kwargs)
[docs] def get_imageset_gsgrids(ibs, imgsetid_list=None, gid_list=None): """ Returns: list_ (list): a list of imageset-image-relationship rowids for each encouterid RESTful: Method: GET URL: /api/imageset/gsgrids/ """ return manual_imageset_funcs.get_imageset_gsgrids( ibs, imgsetid_list, gid_list)
[docs] def get_imageset_nids(*args, **kwargs): """ Returns: list_ (list): a list of list of known nids in each imageset CommandLine: python -m ibeis.control.manual_imageset_funcs --test-get_imageset_nids RESTful: Method: GET URL: /api/imageset/nids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> ibs.delete_imagesets(ibs.get_valid_imgsetids()) >>> ibs.compute_occurrences() >>> imgsetid_list = ibs.get_valid_imgsetids() >>> nids_list = ibs.get_imageset_nids(imgsetid_list) >>> result = nids_list >>> print(result) [[1, 2, 3], [4, 5, 6, 7]] """ return manual_imageset_funcs.get_imageset_nids(*args, **kwargs)
[docs] def get_imageset_uuid(*args, **kwargs): """ Returns: list_ (list): imageset_uuid of each imgsetid in imgsetid_list RESTful: Method: GET URL: /api/imageset/uuid/ """ return manual_imageset_funcs.get_imageset_uuid(*args, **kwargs)
[docs] def get_imageset_configid(*args, **kwargs): """ Returns: list_ (list): config_rowid of each imgsetid in imgsetid_list RESTful: Method: GET URL: /api/imageset/configid/ """ return manual_imageset_funcs.get_imageset_configid(*args, **kwargs)
[docs] def get_imageset_text(*args, **kwargs): """ Returns: list_ (list): imageset_text of each imgsetid in imgsetid_list RESTful: Method: GET URL: /api/imageset/text/ """ return manual_imageset_funcs.get_imageset_text(*args, **kwargs)
[docs] def get_imageset_imgsetids_from_text(*args, **kwargs): """ Returns: list_ (list): a list of imgsetids corresponding to each imageset imagesettext #FIXME: make new naming scheme for non-primary-key-getters get_imageset_imgsetids_from_text_from_text RESTful: Method: GET URL: /api/imageset/imgsetids_from_text/ """ return manual_imageset_funcs.get_imageset_imgsetids_from_text( *args, **kwargs)
[docs] def get_imageset_note(*args, **kwargs): """ Returns: list_ (list): imageset_note of each imgsetid in imgsetid_list RESTful: Method: GET URL: /api/imageset/note/ """ return manual_imageset_funcs.get_imageset_note(*args, **kwargs)
[docs] def delete_imagesets(*args, **kwargs): """ Removes imagesets and thier relationships (images are not effected) RESTful: Method: DELETE URL: /api/imageset/ """ return manual_imageset_funcs.delete_imagesets(*args, **kwargs)
[docs] def get_imageset_end_time_posix(*args, **kwargs): """ imageset_end_time_posix_list <- imageset.imageset_end_time_posix[imageset_rowid_list] gets data from the "native" column "imageset_end_time_posix" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_end_time_posix_list TemplateInfo: Tgetter_table_column col = imageset_end_time_posix tbl = imageset RESTful: Method: GET URL: /api/imageset/end_time_posix/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_end_time_posix_list = ibs.get_imageset_end_time_posix(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_end_time_posix_list) """ return manual_imageset_funcs.get_imageset_end_time_posix( *args, **kwargs)
[docs] def get_imageset_gps_lats(*args, **kwargs): """ imageset_gps_lat_list <- imageset.imageset_gps_lat[imageset_rowid_list] gets data from the "native" column "imageset_gps_lat" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_gps_lat_list TemplateInfo: Tgetter_table_column col = imageset_gps_lat tbl = imageset RESTful: Method: GET URL: /api/imageset/gps_lats/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_gps_lat_list = ibs.get_imageset_gps_lats(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_gps_lat_list) """ return manual_imageset_funcs.get_imageset_gps_lats(*args, **kwargs)
[docs] def update_imageset_info(ibs, imageset_rowid_list): """ sets start and end time for imagesets FIXME: should not need to bulk update, should be handled as it goes RESTful: Method: PUT URL: /api/imageset/info/ Example: >>> # DOCTEST_DISABLE >>> imageset_rowid_list = ibs.get_valid_imgsetids() """ return manual_imageset_funcs.update_imageset_info( ibs, imageset_rowid_list)
[docs] def get_imageset_gps_lons(*args, **kwargs): """ imageset_gps_lon_list <- imageset.imageset_gps_lon[imageset_rowid_list] gets data from the "native" column "imageset_gps_lon" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_gps_lon_list TemplateInfo: Tgetter_table_column col = imageset_gps_lon tbl = imageset RESTful: Method: GET URL: /api/imageset/gps_lons/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_gps_lon_list = ibs.get_imageset_gps_lons(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_gps_lon_list) """ return manual_imageset_funcs.get_imageset_gps_lons(*args, **kwargs)
[docs] def get_imageset_notes(*args, **kwargs): """ imageset_note_list <- imageset.imageset_note[imageset_rowid_list] gets data from the "native" column "imageset_note" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_note_list TemplateInfo: Tgetter_table_column col = imageset_note tbl = imageset RESTful: Method: GET URL: /api/imageset/notes/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_note_list = ibs.get_imageset_notes(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_note_list) """ return manual_imageset_funcs.get_imageset_notes(*args, **kwargs)
[docs] def get_imageset_processed_flags(*args, **kwargs): """ imageset_processed_flag_list <- imageset.imageset_processed_flag[imageset_rowid_list] gets data from the "native" column "imageset_processed_flag" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_processed_flag_list TemplateInfo: Tgetter_table_column col = imageset_processed_flag tbl = imageset RESTful: Method: GET URL: /api/imageset/processed_flags/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_processed_flag_list = ibs.get_imageset_processed_flags(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_processed_flag_list) """ return manual_imageset_funcs.get_imageset_processed_flags( *args, **kwargs)
[docs] def get_imageset_shipped_flags(*args, **kwargs): """ imageset_shipped_flag_list <- imageset.imageset_shipped_flag[imageset_rowid_list] gets data from the "native" column "imageset_shipped_flag" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_shipped_flag_list TemplateInfo: Tgetter_table_column col = imageset_shipped_flag tbl = imageset RESTful: Method: GET URL: /api/imageset/shipped_flags/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_shipped_flag_list = ibs.get_imageset_shipped_flags(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_shipped_flag_list) """ return manual_imageset_funcs.get_imageset_shipped_flags( *args, **kwargs)
[docs] def get_imageset_start_time_posix(*args, **kwargs): """ imageset_start_time_posix_list <- imageset.imageset_start_time_posix[imageset_rowid_list] gets data from the "native" column "imageset_start_time_posix" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_start_time_posix_list TemplateInfo: Tgetter_table_column col = imageset_start_time_posix tbl = imageset RESTful: Method: GET URL: /api/imageset/start_time_posix/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_start_time_posix_list = ibs.get_imageset_start_time_posix(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_start_time_posix_list) """ return manual_imageset_funcs.get_imageset_start_time_posix( *args, **kwargs)
[docs] def get_imageset_duration(*args, **kwargs): """ gets the imageset's duration Args: imageset_rowid_list (list): Returns: list: imageset_duration RESTful: Method: GET URL: /api/imageset/duration/ """ return manual_imageset_funcs.get_imageset_duration(*args, **kwargs)
[docs] def set_imageset_end_time_posix(*args, **kwargs): """ imageset_end_time_posix_list -> imageset.imageset_end_time_posix[imageset_rowid_list] Args: imageset_rowid_list imageset_end_time_posix_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_end_time_posix RESTful: Method: PUT URL: /api/imageset/end_time_posix/ """ return manual_imageset_funcs.set_imageset_end_time_posix( *args, **kwargs)
[docs] def set_imageset_gps_lats(*args, **kwargs): """ imageset_gps_lat_list -> imageset.imageset_gps_lat[imageset_rowid_list] Args: imageset_rowid_list imageset_gps_lat_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_gps_lat RESTful: Method: PUT URL: /api/imageset/gps_lats/ """ return manual_imageset_funcs.set_imageset_gps_lats(*args, **kwargs)
[docs] def set_imageset_gps_lons(*args, **kwargs): """ imageset_gps_lon_list -> imageset.imageset_gps_lon[imageset_rowid_list] Args: imageset_rowid_list imageset_gps_lon_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_gps_lon RESTful: Method: PUT URL: /api/imageset/gps_lons/ """ return manual_imageset_funcs.set_imageset_gps_lons(*args, **kwargs)
[docs] def set_imageset_notes(*args, **kwargs): """ imageset_note_list -> imageset.imageset_note[imageset_rowid_list] Args: imageset_rowid_list imageset_note_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_note RESTful: Method: PUT URL: /api/imageset/notes/ """ return manual_imageset_funcs.set_imageset_notes(*args, **kwargs)
[docs] def set_imageset_processed_flags(*args, **kwargs): """ imageset_processed_flag_list -> imageset.imageset_processed_flag[imageset_rowid_list] Args: imageset_rowid_list imageset_processed_flag_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_processed_flag RESTful: Method: PUT URL: /api/imageset/processed_flags/ """ return manual_imageset_funcs.set_imageset_processed_flags( *args, **kwargs)
[docs] def set_imageset_shipped_flags(*args, **kwargs): """ imageset_shipped_flag_list -> imageset.imageset_shipped_flag[imageset_rowid_list] Args: imageset_rowid_list imageset_shipped_flag_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_shipped_flag RESTful: Method: PUT URL: /api/imageset/shipped_flags/ """ return manual_imageset_funcs.set_imageset_shipped_flags( *args, **kwargs)
[docs] def set_imageset_start_time_posix(*args, **kwargs): """ imageset_start_time_posix_list -> imageset.imageset_start_time_posix[imageset_rowid_list] Args: imageset_rowid_list imageset_start_time_posix_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_start_time_posix RESTful: Method: PUT URL: /api/imageset/start_time_posix/ """ return manual_imageset_funcs.set_imageset_start_time_posix( *args, **kwargs)
[docs] def get_imageset_smart_waypoint_ids(ibs, imageset_rowid_list): """ imageset_smart_waypoint_id_list <- imageset.imageset_smart_waypoint_id[imageset_rowid_list] gets data from the "native" column "imageset_smart_waypoint_id" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_smart_waypoint_id_list TemplateInfo: Tgetter_table_column col = imageset_smart_waypoint_id tbl = imageset RESTful: Method: GET URL: /api/imageset/smart_waypoint_ids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_smart_waypoint_id_list = ibs.get_imageset_smart_waypoint_ids(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_smart_waypoint_id_list) """ return manual_imageset_funcs.get_imageset_smart_waypoint_ids( ibs, imageset_rowid_list)
[docs] def get_imageset_smart_xml_fnames(ibs, imageset_rowid_list): """ imageset_smart_xml_fname_list <- imageset.imageset_smart_xml_fname[imageset_rowid_list] gets data from the "native" column "imageset_smart_xml_fname" in the "imageset" table Args: imageset_rowid_list (list): Returns: list: imageset_smart_xml_fname_list TemplateInfo: Tgetter_table_column col = imageset_smart_xml_fname tbl = imageset RESTful: Method: GET URL: /api/imageset/smart_xml_fnames/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_imageset_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> imageset_rowid_list = ibs._get_all_imageset_rowids() >>> imageset_smart_xml_fname_list = ibs.get_imageset_smart_xml_fnames(imageset_rowid_list) >>> assert len(imageset_rowid_list) == len(imageset_smart_xml_fname_list) """ return manual_imageset_funcs.get_imageset_smart_xml_fnames( ibs, imageset_rowid_list)
[docs] def set_imageset_smart_waypoint_ids( ibs, imageset_rowid_list, imageset_smart_waypoint_id_list): """ imageset_smart_waypoint_id_list -> imageset.imageset_smart_waypoint_id[imageset_rowid_list] Args: imageset_rowid_list imageset_smart_waypoint_id_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_smart_waypoint_id RESTful: Method: PUT URL: /api/imageset/smart_waypoint_ids/ """ return manual_imageset_funcs.set_imageset_smart_waypoint_ids( ibs, imageset_rowid_list, imageset_smart_waypoint_id_list)
[docs] def set_imageset_smart_xml_fnames( ibs, imageset_rowid_list, imageset_smart_xml_fname_list): """ imageset_smart_xml_fname_list -> imageset.imageset_smart_xml_fname[imageset_rowid_list] Args: imageset_rowid_list imageset_smart_xml_fname_list TemplateInfo: Tsetter_native_column tbl = imageset col = imageset_smart_xml_fname RESTful: Method: PUT URL: /api/imageset/smart_xml_fnames/ """ return manual_imageset_funcs.set_imageset_smart_xml_fnames( ibs, imageset_rowid_list, imageset_smart_xml_fname_list)
def _get_all_annotgroup_rowids(ibs): """ all_annotgroup_rowids <- annotgroup.get_all_rowids() Returns: list_ (list): unfiltered annotgroup_rowids TemplateInfo: Tider_all_rowids tbl = annotgroup Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annotgroup_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> ibs._get_all_annotgroup_rowids() """ return manual_annotgroup_funcs._get_all_annotgroup_rowids(ibs)
[docs] def add_annotgroup( ibs, annotgroup_uuid_list, annotgroup_text_list, annotgroup_note_list): """ Returns: returns annotgroup_rowid_list of added (or already existing annotgroups) TemplateInfo: Tadder_native tbl = annotgroup """ return manual_annotgroup_funcs.add_annotgroup( ibs, annotgroup_uuid_list, annotgroup_text_list, annotgroup_note_list)
[docs] def delete_annotgroup(ibs, annotgroup_rowid_list, config2_=None): """ annotgroup.delete(annotgroup_rowid_list) delete annotgroup rows Args: annotgroup_rowid_list Returns: int: num_deleted TemplateInfo: Tdeleter_native_tbl tbl = annotgroup Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_annotgroup_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> annotgroup_rowid_list = ibs._get_all_annotgroup_rowids()[:2] >>> num_deleted = ibs.delete_annotgroup(annotgroup_rowid_list) >>> print('num_deleted = %r' % (num_deleted,)) """ return manual_annotgroup_funcs.delete_annotgroup( ibs, annotgroup_rowid_list, config2_)
[docs] def get_annotgroup_gar_rowids(*args, **kwargs): """ Auto-docstr for 'get_annotgroup_gar_rowids' RESTful: Method: GET URL: /api/annotgroup/gar_rowids/ """ return manual_annotgroup_funcs.get_annotgroup_gar_rowids( *args, **kwargs)
[docs] def get_annotgroup_note(*args, **kwargs): """ annotgroup_note_list <- annotgroup.annotgroup_note[annotgroup_rowid_list] gets data from the "native" column "annotgroup_note" in the "annotgroup" table Args: annotgroup_rowid_list (list): Returns: list: annotgroup_note_list TemplateInfo: Tgetter_table_column col = annotgroup_note tbl = annotgroup Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annotgroup_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> annotgroup_rowid_list = ibs._get_all_annotgroup_rowids() >>> eager = True >>> annotgroup_note_list = ibs.get_annotgroup_note(annotgroup_rowid_list, eager=eager) >>> assert len(annotgroup_rowid_list) == len(annotgroup_note_list) """ return manual_annotgroup_funcs.get_annotgroup_note(*args, **kwargs)
[docs] def get_annotgroup_rowid_from_superkey( ibs, annotgroup_text_list, eager=True, nInput=None): """ annotgroup_rowid_list <- annotgroup[annotgroup_text_list] Args: superkey lists: annotgroup_text_list Returns: annotgroup_rowid_list TemplateInfo: Tgetter_native_rowid_from_superkey tbl = annotgroup """ return manual_annotgroup_funcs.get_annotgroup_rowid_from_superkey( ibs, annotgroup_text_list, eager, nInput)
[docs] def get_annotgroup_text(*args, **kwargs): """ annotgroup_text_list <- annotgroup.annotgroup_text[annotgroup_rowid_list] gets data from the "native" column "annotgroup_text" in the "annotgroup" table Args: annotgroup_rowid_list (list): Returns: list: annotgroup_text_list TemplateInfo: Tgetter_table_column col = annotgroup_text tbl = annotgroup Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annotgroup_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> annotgroup_rowid_list = ibs._get_all_annotgroup_rowids() >>> eager = True >>> annotgroup_text_list = ibs.get_annotgroup_text(annotgroup_rowid_list, eager=eager) >>> assert len(annotgroup_rowid_list) == len(annotgroup_text_list) """ return manual_annotgroup_funcs.get_annotgroup_text(*args, **kwargs)
[docs] def get_annotgroup_uuid(*args, **kwargs): """ annotgroup_uuid_list <- annotgroup.annotgroup_uuid[annotgroup_rowid_list] gets data from the "native" column "annotgroup_uuid" in the "annotgroup" table Args: annotgroup_rowid_list (list): Returns: list: annotgroup_uuid_list TemplateInfo: Tgetter_table_column col = annotgroup_uuid tbl = annotgroup Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annotgroup_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> annotgroup_rowid_list = ibs._get_all_annotgroup_rowids() >>> eager = True >>> annotgroup_uuid_list = ibs.get_annotgroup_uuid(annotgroup_rowid_list, eager=eager) >>> assert len(annotgroup_rowid_list) == len(annotgroup_uuid_list) """ return manual_annotgroup_funcs.get_annotgroup_uuid(*args, **kwargs)
[docs] def set_annotgroup_note(*args, **kwargs): """ annotgroup_note_list -> annotgroup.annotgroup_note[annotgroup_rowid_list] Args: annotgroup_rowid_list annotgroup_note_list TemplateInfo: Tsetter_native_column tbl = annotgroup col = annotgroup_note """ return manual_annotgroup_funcs.set_annotgroup_note(*args, **kwargs)
[docs] def set_annotgroup_uuid(*args, **kwargs): """ annotgroup_uuid_list -> annotgroup.annotgroup_uuid[annotgroup_rowid_list] Args: annotgroup_rowid_list annotgroup_uuid_list TemplateInfo: Tsetter_native_column tbl = annotgroup col = annotgroup_uuid """ return manual_annotgroup_funcs.set_annotgroup_uuid(*args, **kwargs)
def _get_all_gids(ibs): """ alias Returns: list_ (list): all unfiltered gids (image rowids) """ return manual_image_funcs._get_all_gids(ibs) def _get_all_image_rowids(ibs): """ all_image_rowids <- image.get_all_rowids() Returns: list_ (list): unfiltered image_rowids TemplateInfo: Tider_all_rowids tbl = image CommandLine: python -m ibeis.control.manual_image_funcs --test-_get_all_image_rowids Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> all_image_rowids = ibs._get_all_image_rowids() >>> result = str(all_image_rowids) >>> print(result) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] """ return manual_image_funcs._get_all_image_rowids(ibs)
[docs] def get_valid_gids( ibs, imgsetid=None, require_unixtime=False, require_gps=None, reviewed=None): """ Args: ibs (IBEISController): ibeis controller object imgsetid (None): require_unixtime (bool): reviewed (None): Returns: list: gid_list CommandLine: python -m ibeis.control.manual_image_funcs --test-get_valid_gids RESTful: Method: GET URL: /api/image/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> imgsetid = None >>> require_unixtime = False >>> reviewed = None >>> # execute function >>> gid_list = get_valid_gids(ibs, imgsetid, require_unixtime, reviewed) >>> # verify results >>> result = str(gid_list) >>> print(result) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] """ return manual_image_funcs.get_valid_gids( ibs, imgsetid, require_unixtime, require_gps, reviewed)
[docs] def image_base64_api(gid=None, thumbnail=False, fresh=False, **kwargs): """ Returns the base64 encoded image of image <gid> RESTful: Method: GET URL: /api/image/<gid>/ """ return manual_image_funcs.image_base64_api( gid, thumbnail, fresh, **kwargs)
[docs] def get_image_gid(*args, **kwargs): """ self verifier CommandLine: python -m ibeis.control.manual_image_funcs --exec-get_image_gid Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids() + [None, -1, 10434320432] >>> gid_list_ = ibs.get_image_gid(gid_list) >>> assert [r is None for r in gid_list_[-3:]] >>> assert [r is not None for r in gid_list_[0:-3]] >>> print('gid_list_ = %r' % (gid_list_,)) """ return manual_image_funcs.get_image_gid(*args, **kwargs)
[docs] def get_image_gids_with_aids(ibs, gid_list=None): """ """ return manual_image_funcs.get_image_gids_with_aids(ibs, gid_list)
[docs] def get_valid_image_rowids( ibs, imgsetid=None, require_unixtime=False, reviewed=None): """ alias RESTful: Method: GET URL: /api/image/valid_rowids/ """ return manual_image_funcs.get_valid_image_rowids( ibs, imgsetid, require_unixtime, reviewed)
[docs] def get_num_images(ibs, **kwargs): """ Number of valid images RESTful: Method: GET URL: /api/image/num/ """ return manual_image_funcs.get_num_images(ibs, **kwargs)
[docs] def add_images(*args, **kwargs): """ Adds a list of image paths to the database. Initially we set the image_uri to exactely the given gpath. Later we change the uri, but keeping it the same here lets us process images asychronously. Args: gpath_list (list): list of image paths to add params_list (list): metadata list for corresponding images that can either be specified outright or can be parsed from the image data directly if None as_annots (bool): if True, an annotation is automatically added for the entire image auto_localize (bool): if None uses the default specified in ibs.cfg ensure (bool): check to see if the images exist on a \*NIX system. Defaults to True Returns: gid_list (list of rowids): gids are image rowids RESTful: Method: POST URL: /api/image/path Example0: >>> # ENABLE_DOCTEST >>> # Test returns None on fail to add >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> gpath_list = ['doesnotexist.jpg'] >>> assert not ut.checkpath(gpath_list[0]) >>> gid_list = ibs.add_images(gpath_list) >>> assert len(gid_list) == len(gpath_list) >>> assert gid_list[0] is None Example1: >>> # ENABLE_DOCTSET >>> # test double add >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> new_gpath_list = [ut.grab_test_imgpath('carl.jpg')] >>> new_gids1 = ibs.add_images(new_gpath_list, auto_localize=False) >>> new_gids2 = ibs.add_images(new_gpath_list, auto_localize=False) >>> #new_gids2 = ibs.add_images(new_gpath_list, auto_localize=True) >>> assert new_gids1 == new_gids2, 'should be the same' >>> new_gpath_list2 = ibs.get_image_paths(new_gids1) >>> assert new_gpath_list == new_gpath_list2, 'should not move when autolocalize is False' >>> # Clean things up >>> ibs.delete_images(new_gids1) """ return manual_image_funcs.add_images(*args, **kwargs)
[docs] def localize_images(ibs, gid_list_=None): """ Moves the images into the ibeis image cache. Images are renamed to img_uuid.ext Args: ibs (IBEISController): ibeis controller object gid_list_ (list): CommandLine: python -m ibeis.control.manual_image_funcs --test-localize_images Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gpath_list = [ut.unixpath(ut.grab_test_imgpath('carl.jpg'))] >>> gid_list_ = ibs.add_images(gpath_list, auto_localize=False) >>> gpath_list2 = ibs.get_image_paths(gid_list_) >>> ut.assert_eq(gpath_list, gpath_list2, 'should not move when autolocalize is False') >>> # execute function >>> result = localize_images(ibs, gid_list_) >>> gpath_list3 = ibs.get_image_paths(gid_list_) >>> assert gpath_list3 != gpath_list2, 'should now be different gpath_list3=%r' % (gpath_list3,) >>> gpath3 = gpath_list3[0] >>> rel_gpath3 = ut.relpath_unix(gpath3, ibs.get_workdir()) >>> result = rel_gpath3 >>> print(result) >>> # Clean things up >>> ibs.delete_images(gid_list_) testdb1/_ibsdb/images/f498fa6f-6b24-b4fa-7932-2612144fedd5.jpg Ignore: ibs.vd() """ return manual_image_funcs.localize_images(ibs, gid_list_)
[docs] def set_image_uris(*args, **kwargs): """ Sets the image URIs to a new local path. This is used when localizing or unlocalizing images. An absolute path can either be on this machine or on the cloud A relative path is relative to the ibeis image cache on this machine. RESTful: Method: PUT URL: /api/image/uris/ """ return manual_image_funcs.set_image_uris(*args, **kwargs)
[docs] def set_image_uris_original(*args, **kwargs): """ Sets the (original) image URIs to a new local path. Args: overwrite (bool): If overwrite, replace the information in the database. This ensures that original uris cannot be accidentally overwritten. Defaults to False. RESTful: Method: PUT URL: /api/image/uris_original/ """ return manual_image_funcs.set_image_uris_original(*args, **kwargs)
[docs] def set_image_contributor_rowid(*args, **kwargs): """ Sets the image contributor rowid RESTful: Method: PUT URL: /api/image/contributor_rowid/ """ return manual_image_funcs.set_image_contributor_rowid(*args, **kwargs)
[docs] def set_image_reviewed(*args, **kwargs): """ Sets the image all instances found bit RESTful: Method: PUT URL: /api/image/reviewed/ """ return manual_image_funcs.set_image_reviewed(*args, **kwargs)
[docs] def set_image_enabled(*args, **kwargs): """ Sets the image all instances found bit RESTful: Method: PUT URL: /api/image/enabled/ """ return manual_image_funcs.set_image_enabled(*args, **kwargs)
[docs] def set_image_notes(*args, **kwargs): """ Sets the image all instances found bit RESTful: Method: PUT URL: /api/image/notes/ """ return manual_image_funcs.set_image_notes(*args, **kwargs)
[docs] def set_image_unixtime(*args, **kwargs): """ Sets the image unixtime (does not modify exif yet) alias for set_image_time_posix RESTful: Method: PUT URL: /api/image/unixtime/ """ return manual_image_funcs.set_image_unixtime(*args, **kwargs)
[docs] def set_image_time_posix( ibs, image_rowid_list, image_time_posix_list, duplicate_behavior='error'): """ image_time_posix_list -> image.image_time_posix[image_rowid_list] SeeAlso: set_image_unixtime Args: image_rowid_list image_time_posix_list TemplateInfo: Tsetter_native_column tbl = image col = image_time_posix RESTful: Method: PUT URL: /api/image/time_posix/ """ return manual_image_funcs.set_image_time_posix( ibs, image_rowid_list, image_time_posix_list, duplicate_behavior)
[docs] def set_image_imagesettext(*args, **kwargs): """ Sets the encoutertext of each image RESTful: Method: PUT URL: /api/image/imagesettext/ """ return manual_image_funcs.set_image_imagesettext(*args, **kwargs)
[docs] def set_image_imgsetids(*args, **kwargs): """ Sets the encoutertext of each image RESTful: Method: PUT URL: /api/image/imgsetids/ """ return manual_image_funcs.set_image_imgsetids(*args, **kwargs)
[docs] def set_image_gps(*args, **kwargs): """ see get_image_gps for how the gps_list should look. lat and lon should be given in degrees RESTful: Method: PUT URL: /api/image/gps/ """ return manual_image_funcs.set_image_gps(*args, **kwargs)
def _set_image_sizes(*args, **kwargs): """ """ return manual_image_funcs._set_image_sizes(*args, **kwargs)
[docs] def set_image_orientation(*args, **kwargs): """ RESTful: Method: PUT URL: /api/image/orientation/ """ return manual_image_funcs.set_image_orientation(*args, **kwargs)
[docs] def get_images(*args, **kwargs): """ Returns: list_ (list): a list of images in numpy matrix form by gid Args: ibs (IBEISController): ibeis controller object gid_list (list): Returns: list: image_list CommandLine: python -m ibeis.control.manual_image_funcs --test-get_images RESTful: Returns the base64 encoded image of image <gid> # Documented and routed in ibeis.web app.py Method: GET URL: /api/image/<gid> Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids()[0:1] >>> # execute function >>> image_list = get_images(ibs, gid_list) >>> # verify results >>> result = str(image_list[0].shape) >>> print(result) (715, 1047, 3) """ return manual_image_funcs.get_images(*args, **kwargs)
[docs] def get_image_thumbtup(*args, **kwargs): """ Returns: list: thumbtup_list - [(thumb_path, img_path, imgsize, bboxes, thetas)] RESTful: Method: GET URL: /api/image/thumbtup/ """ return manual_image_funcs.get_image_thumbtup(*args, **kwargs)
[docs] def get_image_thumbpath(*args, **kwargs): """ Returns: list_ (list): the thumbnail path of each gid RESTful: Method: GET URL: /api/image/thumbpath/ """ return manual_image_funcs.get_image_thumbpath(*args, **kwargs)
[docs] def get_image_uuids(*args, **kwargs): """ Returns: list_ (list): a list of image uuids by gid Args: ibs (IBEISController): ibeis controller object gid_list (list): Returns: list: image_uuid_list CommandLine: python -m ibeis.control.manual_image_funcs --test-get_image_uuids RESTful: Method: GET URL: /api/image/uuids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids() >>> # execute function >>> image_uuid_list = ibs.get_image_uuids(gid_list) >>> # verify results >>> result = ut.list_str(image_uuid_list) >>> print(result) [ UUID('66ec193a-1619-b3b6-216d-1784b4833b61'), UUID('d8903434-942f-e0f5-d6c2-0dcbe3137bf7'), UUID('b73b72f4-4acb-c445-e72c-05ce02719d3d'), UUID('0cd05978-3d83-b2ee-2ac9-798dd571c3b3'), UUID('0a9bc03d-a75e-8d14-0153-e2949502aba7'), UUID('2deeff06-5546-c752-15dc-2bd0fdb1198a'), UUID('a9b70278-a936-c1dd-8a3b-bc1e9a998bf0'), UUID('42fdad98-369a-2cbc-67b1-983d6d6a3a60'), UUID('c459d381-fd74-1d99-6215-e42e3f432ea9'), UUID('33fd9813-3a2b-774b-3fcc-4360d1ae151b'), UUID('97e8ea74-873f-2092-b372-f928a7be30fa'), UUID('588bc218-83a5-d400-21aa-d499832632b0'), UUID('163a890c-36f2-981e-3529-c552b6d668a3'), ] """ return manual_image_funcs.get_image_uuids(*args, **kwargs)
[docs] def get_image_contributor_rowid(*args, **kwargs): """ contributor_rowid_list <- image.contributor_rowid[image_rowid_list] gets data from the "native" column "contributor_rowid" in the "image" table Args: image_rowid_list (list): Returns: list: contributor_rowid_list - list of image contributor rowids by gid TemplateInfo: Tgetter_table_column col = contributor_rowid tbl = image RESTful: Method: GET URL: /api/image/contributor_rowid/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> image_rowid_list = ibs._get_all_image_rowids() >>> eager = True >>> contributor_rowid_list = ibs.get_image_contributor_rowid(image_rowid_list, eager=eager) >>> assert len(image_rowid_list) == len(contributor_rowid_list) """ return manual_image_funcs.get_image_contributor_rowid(*args, **kwargs)
[docs] def get_image_exts(*args, **kwargs): """ Returns: list_ (list): a list of image uuids by gid RESTful: Method: GET URL: /api/image/exts/ """ return manual_image_funcs.get_image_exts(*args, **kwargs)
[docs] def get_image_uris(*args, **kwargs): """ Returns: list_ (list): a list of image uris relative to the image dir by gid RESTful: Method: GET URL: /api/image/uris/ """ return manual_image_funcs.get_image_uris(*args, **kwargs)
[docs] def get_image_uris_original(*args, **kwargs): """ Returns: list_ (list): a list of (original) image uris relative to the image dir by gid RESTful: Method: GET URL: /api/image/uris_original/ """ return manual_image_funcs.get_image_uris_original(*args, **kwargs)
[docs] def get_image_gids_from_uuid(*args, **kwargs): """ Returns: list_ (list): a list of original image names RESTful: Method: GET URL: /api/image/gids_from_uuid/ """ return manual_image_funcs.get_image_gids_from_uuid(*args, **kwargs)
[docs] def get_image_missing_uuid(*args, **kwargs): """ Returns: list_ (list): a list of missing image uuids RESTful: Method: GET URL: /api/image/missing_uuid/ """ return manual_image_funcs.get_image_missing_uuid(*args, **kwargs)
[docs] def get_image_paths(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object gid_list (list): a list of image absolute paths to img_dir Returns: list: gpath_list CommandLine: python -m ibeis.control.manual_image_funcs --test-get_image_paths RESTful: Method: GET URL: /api/image/paths/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> #gid_list = ibs.get_valid_gids() >>> # execute function >>> #gpath_list = get_image_paths(ibs, gid_list) >>> new_gpath = ut.unixpath(ut.grab_test_imgpath('carl.jpg')) >>> gid_list = ibs.add_images([new_gpath], auto_localize=False) >>> new_gpath_list = get_image_paths(ibs, gid_list) >>> # verify results >>> ut.assert_eq(new_gpath, new_gpath_list[0]) >>> result = str(new_gpath_list) >>> # clean up the database! >>> ibs.delete_images(gid_list) >>> # ibs.delete_images(new_gids) >>> print(result) """ return manual_image_funcs.get_image_paths(*args, **kwargs)
[docs] def get_image_detectpaths(*args, **kwargs): """ Returns: list_ (list): a list of image paths resized to a constant area for detection RESTful: Method: GET URL: /api/image/detectpaths/ """ return manual_image_funcs.get_image_detectpaths(*args, **kwargs)
[docs] def get_image_gnames(*args, **kwargs): """ Args: gid_list (list): Returns: list: gname_list - a list of original image names CommandLine: python -m ibeis.control.manual_image_funcs --test-get_image_gnames RESTful: Method: GET URL: /api/image/gnames/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids() >>> # execute function >>> gname_list = get_image_gnames(ibs, gid_list) >>> # verify results >>> result = ut.list_str(gname_list) >>> print(result) [ 'easy1.JPG', 'easy2.JPG', 'easy3.JPG', 'hard1.JPG', 'hard2.JPG', 'hard3.JPG', 'jeff.png', 'lena.jpg', 'occl1.JPG', 'occl2.JPG', 'polar1.jpg', 'polar2.jpg', 'zebra.jpg', ] """ return manual_image_funcs.get_image_gnames(*args, **kwargs)
[docs] def get_image_sizes(*args, **kwargs): """ Returns: list_ (list): a list of (width, height) tuples RESTful: Method: GET URL: /api/image/sizes/ """ return manual_image_funcs.get_image_sizes(*args, **kwargs)
[docs] def get_image_widths(*args, **kwargs): """ Returns: list_ (list): a list of (width, height) tuples RESTful: Method: GET URL: /api/image/widths/ """ return manual_image_funcs.get_image_widths(*args, **kwargs)
[docs] def get_image_heights(*args, **kwargs): """ Returns: list_ (list): a list of (width, height) tuples RESTful: Method: GET URL: /api/image/heights/ """ return manual_image_funcs.get_image_heights(*args, **kwargs)
[docs] def get_image_unixtime(self, input_, *args, **kwargs): """ Returns: list_ (list): a list of times that the images were taken by gid. Returns: list_ (list): -1 if no timedata exists for a given gid RESTful: Method: GET URL: /api/image/unixtime/ """ return manual_image_funcs.get_image_unixtime( self, input_, *args, **kwargs)
[docs] def get_image_datetime(*args, **kwargs): """ """ return manual_image_funcs.get_image_datetime(*args, **kwargs)
[docs] def get_image_gps(*args, **kwargs): """ Returns: gps_list (list): -1 if no timedata exists for a given gid RESTful: Method: GET URL: /api/image/gps/ """ return manual_image_funcs.get_image_gps(*args, **kwargs)
[docs] def get_image_lat(*args, **kwargs): """ RESTful: Method: GET URL: /api/image/lat/ """ return manual_image_funcs.get_image_lat(*args, **kwargs)
[docs] def get_image_lon(*args, **kwargs): """ RESTful: Method: GET URL: /api/image/lon/ """ return manual_image_funcs.get_image_lon(*args, **kwargs)
[docs] def get_image_orientation(*args, **kwargs): """ RESTful: Method: GET URL: /api/image/orientation/ """ return manual_image_funcs.get_image_orientation(*args, **kwargs)
[docs] def get_image_orientation_str(*args, **kwargs): """ RESTful: Method: GET URL: /api/image/orientation_str/ """ return manual_image_funcs.get_image_orientation_str(*args, **kwargs)
[docs] def get_image_enabled(*args, **kwargs): """ Returns: list_ (list): "Image Enabled" flag, true if the image is enabled RESTful: Method: GET URL: /api/image/enabled/ """ return manual_image_funcs.get_image_enabled(*args, **kwargs)
[docs] def get_image_reviewed(*args, **kwargs): """ Returns: list_ (list): "All Instances Found" flag, true if all objects of interest (animals) have an ANNOTATION in the image RESTful: Method: GET URL: /api/image/reviewed/ """ return manual_image_funcs.get_image_reviewed(*args, **kwargs)
[docs] def get_image_detect_confidence(*args, **kwargs): """ Returns: list_ (list): image detection confidence as the max of ANNOTATION confidences RESTful: Method: GET URL: /api/image/detect_confidence/ """ return manual_image_funcs.get_image_detect_confidence(*args, **kwargs)
[docs] def get_image_notes(*args, **kwargs): """ Returns: list_ (list): image notes RESTful: Method: GET URL: /api/image/notes/ """ return manual_image_funcs.get_image_notes(*args, **kwargs)
[docs] def get_image_nids(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object gid_list (list): Returns: list: nids_list - the name ids associated with an image id CommandLine: python -m ibeis.control.manual_image_funcs --test-get_image_nids RESTful: Method: GET URL: /api/image/nids/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_valid_gids() >>> # execute function >>> nids_list = ibs.get_image_nids(gid_list) >>> # verify results >>> result = str(nids_list) >>> print(result) """ return manual_image_funcs.get_image_nids(*args, **kwargs)
[docs] def get_image_species_rowids(*args, **kwargs): """ Returns: list_ (list): the name ids associated with an image id RESTful: Method: GET URL: /api/image/species_rowids/ """ return manual_image_funcs.get_image_species_rowids(*args, **kwargs)
[docs] def get_image_imgsetids(*args, **kwargs): """ Returns: list_ (list): a list of imageset ids for each image by gid RESTful: Method: GET URL: /api/image/imgsetids/ """ return manual_image_funcs.get_image_imgsetids(*args, **kwargs)
[docs] def get_image_imagesettext(*args, **kwargs): """ Returns: list_ (list): a list of imagesettexts for each image by gid RESTful: Method: GET URL: /api/image/imagesettext/ """ return manual_image_funcs.get_image_imagesettext(*args, **kwargs)
[docs] def get_image_aids(*args, **kwargs): """ Returns: list_ (list): a list of aids for each image by gid Args: ibs (IBEISController): ibeis controller object gid_list (list): Returns: list: aids_list CommandLine: python -m ibeis.control.manual_image_funcs --test-get_image_aids RESTful: Method: GET URL: /api/image/aids/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> gid_list = ibs.get_annot_gids(ibs.get_valid_aids()) >>> gid_list = gid_list + gid_list[::5] >>> # execute function >>> aids_list = get_image_aids(ibs, gid_list) >>> # verify results >>> result = str(aids_list) >>> print(result) [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [1], [6], [11]] Ignore: print('len(gid_list) = %r' % (len(gid_list),)) print('len(input_list) = %r' % (len(input_list),)) print('len(pair_list) = %r' % (len(pair_list),)) print('len(aidscol) = %r' % (len(aidscol),)) print('len(gidscol) = %r' % (len(gidscol),)) print('len(unique_gids) = %r' % (len(unique_gids),)) """ return manual_image_funcs.get_image_aids(*args, **kwargs)
[docs] def get_image_aids_of_species(*args, **kwargs): """ Returns: list_ (list): a list of aids for each image by gid filtered by species RESTful: Method: GET URL: /api/image/aids_of_species/ """ return manual_image_funcs.get_image_aids_of_species(*args, **kwargs)
[docs] def get_image_num_annotations(*args, **kwargs): """ Returns: list_ (list): the number of chips in each image RESTful: Method: GET URL: /api/image/num_annotations/ """ return manual_image_funcs.get_image_num_annotations(*args, **kwargs)
[docs] def delete_images(*args, **kwargs): """ deletes images from the database that belong to gids RESTful: Method: DELETE URL: /api/image/ Example: >>> # UNPORTED_DOCTEST >>> gpath_list = grabdata.get_test_gpaths(ndata=None)[0:4] >>> gid_list = ibs.add_images(gpath_list) >>> bbox_list = [(0, 0, 100, 100)] * len(gid_list) >>> name_list = ['a', 'b', 'a', 'd'] >>> aid_list = ibs.add_annots(gid_list, bbox_list=bbox_list, name_list=name_list) >>> gid = gid_list[0] >>> assert gid is not None, "gid is None" >>> aid_list = ibs.get_image_aids(gid) >>> assert len(aid_list) == 1, "Length of aid_list=%r" % (len(aid_list),) >>> aid = aid_list[0] >>> assert aid is not None, "aid is None" >>> cid = ibs.get_annot_chip_rowids(aid, ensure=False) >>> fid = ibs.get_annot_feat_rowids(aid, ensure=False) >>> assert cid is None, "cid=%r should be None" % (cid,) >>> assert fid is None, "fid=%r should be None" % (fid,) >>> cid = ibs.get_annot_chip_rowids(aid, ensure=True) >>> fid = ibs.get_annot_feat_rowids(aid, ensure=True) >>> assert cid is not None, "cid should be computed" >>> assert fid is not None, "fid should be computed" >>> gthumbpath = ibs.get_image_thumbpath(gid) >>> athumbpath = ibs.get_annot_chip_thumbpath(aid) >>> ibs.delete_images(gid) >>> all_gids = ibs.get_valid_gids() >>> all_aids = ibs.get_valid_aids() >>> all_cids = ibs.get_valid_cids() >>> all_fids = ibs.get_valid_fids() >>> assert gid not in all_gids, "gid still exists" >>> assert aid not in all_aids, "rid %r still exists" % aid >>> assert fid not in all_fids, "fid %r still exists" % fid >>> assert cid not in all_cids, "cid %r still exists" % cid >>> assert not utool.checkpath(gthumbpath), "Thumbnail still exists" >>> assert not utool.checkpath(athumbpath), "ANNOTATION Thumbnail still exists" """ return manual_image_funcs.delete_images(*args, **kwargs)
[docs] def delete_image_thumbs(*args, **kwargs): """ Removes image thumbnails from disk RESTful: Method: DELETE URL: /api/image/thumbs/ Example: >>> # UNPORTED_DOCTEST >>> gpath_list = grabdata.get_test_gpaths(ndata=None)[0:4] >>> gid_list = ibs.add_images(gpath_list) >>> bbox_list = [(0, 0, 100, 100)] * len(gid_list) >>> name_list = ['a', 'b', 'a', 'd'] >>> aid_list = ibs.add_annots(gid_list, bbox_list=bbox_list, name_list=name_list) >>> assert len(aid_list) != 0, "No annotations added" >>> thumbpath_list = ibs.get_image_thumbpath(gid_list) >>> gpath_list = ibs.get_image_paths(gid_list) >>> ibs.delete_image_thumbs(gid_list) >>> assert utool.is_list(thumbpath_list), "thumbpath_list is not a list" >>> assert utool.is_list(gpath_list), "gpath_list is not a list" >>> for path in thumbpath_list: >>> assert not utool.checkpath(path), "Thumbnail not deleted" >>> for path in gpath_list: >>> utool.assertpath(path) """ return manual_image_funcs.delete_image_thumbs(*args, **kwargs)
[docs] def get_image_timedelta_posix(ibs, image_rowid_list, eager=True): """ image_timedelta_posix_list <- image.image_timedelta_posix[image_rowid_list] # TODO: INTEGRATE THIS FUNCTION. CURRENTLY OFFSETS ARE ENCODIED DIRECTLY IN UNIXTIME gets data from the "native" column "image_timedelta_posix" in the "image" table Args: image_rowid_list (list): Returns: list: image_timedelta_posix_list TemplateInfo: Tgetter_table_column col = image_timedelta_posix tbl = image RESTful: Method: GET URL: /api/image/timedelta_posix/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> image_rowid_list = ibs._get_all_image_rowids() >>> eager = True >>> image_timedelta_posix_list = ibs.get_image_timedelta_posix(image_rowid_list, eager=eager) >>> assert len(image_rowid_list) == len(image_timedelta_posix_list) """ return manual_image_funcs.get_image_timedelta_posix( ibs, image_rowid_list, eager)
[docs] def set_image_timedelta_posix( ibs, image_rowid_list, image_timedelta_posix_list, duplicate_behavior='error'): """ image_timedelta_posix_list -> image.image_timedelta_posix[image_rowid_list] Args: image_rowid_list image_timedelta_posix_list TemplateInfo: Tsetter_native_column tbl = image col = image_timedelta_posix RESTful: Method: PUT URL: /api/image/timedelta_posix/ """ return manual_image_funcs.set_image_timedelta_posix( ibs, image_rowid_list, image_timedelta_posix_list, duplicate_behavior)
[docs] def get_image_location_codes(ibs, image_rowid_list, eager=True): """ image_location_code_list <- image.image_location_code[image_rowid_list] gets data from the "native" column "image_location_code" in the "image" table Args: image_rowid_list (list): Returns: list: image_location_code_list TemplateInfo: Tgetter_table_column col = image_location_code tbl = image RESTful: Method: GET URL: /api/image/location_codes/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> image_rowid_list = ibs._get_all_image_rowids() >>> eager = True >>> image_location_code_list = ibs.get_image_location_codes(image_rowid_list, eager=eager) >>> assert len(image_rowid_list) == len(image_location_code_list) """ return manual_image_funcs.get_image_location_codes( ibs, image_rowid_list, eager)
[docs] def set_image_location_codes( ibs, image_rowid_list, image_location_code_list, duplicate_behavior='error'): """ image_location_code_list -> image.image_location_code[image_rowid_list] Args: image_rowid_list image_location_code_list TemplateInfo: Tsetter_native_column tbl = image col = image_location_code RESTful: Method: PUT URL: /api/image/location_codes/ """ return manual_image_funcs.set_image_location_codes( ibs, image_rowid_list, image_location_code_list, duplicate_behavior)
[docs] def get_image_party_rowids(*args, **kwargs): """ party_rowid_list <- image.party_rowid[image_rowid_list] gets data from the "native" column "party_rowid" in the "image" table Args: image_rowid_list (list): Returns: list: party_rowid_list TemplateInfo: Tgetter_table_column col = party_rowid tbl = image RESTful: Method: GET URL: /api/image/party_rowids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> image_rowid_list = ibs._get_all_image_rowids() >>> eager = True >>> party_rowid_list = ibs.get_image_party_rowids(image_rowid_list, eager=eager) >>> assert len(image_rowid_list) == len(party_rowid_list) """ return manual_image_funcs.get_image_party_rowids(*args, **kwargs)
[docs] def get_image_party_tag(*args, **kwargs): """ party_tag_list <- image.party_tag[image_rowid_list] Args: image_rowid_list (list): Returns: list: party_tag_list TemplateInfo: Tgetter_extern tbl = image externtbl = party externcol = party_tag RESTful: Method: GET URL: /api/image/party_tag/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> image_rowid_list = ibs._get_all_image_rowids() >>> eager = True >>> party_tag_list = ibs.get_image_party_tag(image_rowid_list, eager=eager) >>> assert len(image_rowid_list) == len(party_tag_list) """ return manual_image_funcs.get_image_party_tag(*args, **kwargs)
[docs] def set_image_party_rowids(*args, **kwargs): """ party_rowid_list -> image.party_rowid[image_rowid_list] Args: image_rowid_list party_rowid_list TemplateInfo: Tsetter_native_column tbl = image col = party_rowid RESTful: Method: PUT URL: /api/image/party_rowids/ """ return manual_image_funcs.set_image_party_rowids(*args, **kwargs)
[docs] def get_image_contributor_tag(*args, **kwargs): """ contributor_tag_list <- image.contributor_tag[image_rowid_list] Args: image_rowid_list (list): Returns: list: contributor_tag_list TemplateInfo: Tgetter_extern tbl = image externtbl = contributor externcol = contributor_tag RESTful: Method: GET URL: /api/image/contributor_tag/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_image_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> image_rowid_list = ibs._get_all_image_rowids() >>> eager = True >>> contributor_tag_list = ibs.get_image_contributor_tag(image_rowid_list, eager=eager) >>> assert len(image_rowid_list) == len(contributor_tag_list) """ return manual_image_funcs.get_image_contributor_tag(*args, **kwargs)
[docs] def filter_annots_general( ibs, aid_list=None, filter_kw={}, verbose=False, **kwargs): """ Args: ibs (IBEISController): ibeis controller object aid_list (list): list of annotation rowids filter_kw (?): KWargs:: has_none_annotmatch, any_match_annotmatch, has_all, is_known, any_match_annot, logic_annot, none_match_annotmatch, max_num_annotmatch, any_startswith_annot, has_any, require_quality, species, any_match, view_ext, has_any_annotmatch, view_pername, max_num_annot, min_timedelta, any_startswith, max_numfeat, any_startswith_annotmatch, been_adjusted, any_endswith_annot, require_viewpoint, logic, has_any_annot, min_num_annotmatch, min_num, min_num_annot, has_all_annot, has_none, min_pername, any_endswith_annotmatch, any_endswith, require_timestamp, none_match, contrib_contains, has_all_annotmatch, logic_annotmatch, min_numfeat, none_match_annot, view_ext1, view_ext2, max_num, has_none_annot, minqual, view CommandLine: python -m ibeis --tf filter_annots_general python -m ibeis --tf filter_annots_general --db PZ_Master1 \ --has_any=[needswork,correctable,mildviewpoint] \ --has_none=[viewpoint,photobomb,error:viewpoint,quality] --show python -m ibeis --tf filter_annots_general --db=GZ_Master1 \ --max-numfeat=300 --show --minqual=junk --species=None python -m ibeis --tf filter_annots_general --db=lynx \ --been_adjusted=True Example: >>> # DISABLE_DOCTEST >>> from ibeis.init.filter_annots import * # NOQA >>> import ibeis >>> filter_kw = ut.argparse_dict(get_default_annot_filter_form(), >>> type_hint=ut.ddict(list, has_any=list, >>> has_none=list, >>> logic=str)) >>> print('filter_kw = %s' % (ut.dict_str(filter_kw),)) >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> #filter_kw = dict(is_known=True, min_num=1, has_any='viewpoint') >>> #filter_kw = dict(is_known=True, min_num=1, any_match='.*error.*') >>> aid_list_ = filter_annots_general(ibs, aid_list, filter_kw) >>> print('len(aid_list_) = %r' % (len(aid_list_),)) >>> all_tags = ut.flatten(ibs.get_annot_all_tags(aid_list_)) >>> filtered_tag_hist = ut.dict_hist(all_tags) >>> ut.print_dict(filtered_tag_hist, key_order_metric='val') >>> ut.print_dict(ibs.get_annot_stats_dict(aid_list_), 'annot_stats') >>> ut.quit_if_noshow() >>> import ibeis.viz.interact >>> ibeis.viz.interact.interact_chip.interact_multichips(ibs, aid_list_) >>> ut.show_if_requested() """ return filter_annots.filter_annots_general( ibs, aid_list, filter_kw, verbose, **kwargs)
[docs] def sample_annots_general( ibs, aid_list=None, filter_kw={}, verbose=False, **kwargs): """ filter + sampling """ return filter_annots.sample_annots_general( ibs, aid_list, filter_kw, verbose, **kwargs)
[docs] def get_annot_tag_filterflags( ibs, aid_list, filter_kw, request_defaultkw=False): """ Filters annotations by tags including those that is belongs to in a pair """ return filter_annots.get_annot_tag_filterflags( ibs, aid_list, filter_kw, request_defaultkw)
[docs] def filterannots_by_tags(ibs, aid_list, filter_kw): """ Args: ibs (IBEISController): ibeis controller object aid_list (list): list of annotation rowids CommandLine: python -m ibeis --tf filterannots_by_tags utprof.py -m ibeis --tf filterannots_by_tags SeeAlso: filter_annotmatch_by_tags Example: >>> # DISABLE_DOCTEST >>> from ibeis.init.filter_annots import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_Master1') >>> aid_list = ibs.get_valid_aids() >>> has_any = ut.get_argval('--tags', type_=list, >>> default=['SceneryMatch', 'Photobomb']) >>> min_num = ut.get_argval('--min_num', type_=int, default=1) >>> filter_kw = dict(has_any=has_any, min_num=1) >>> aid_list_ = filterannots_by_tags(ibs, aid_list, filter_kw) >>> print('aid_list_ = %r' % (aid_list_,)) >>> ut.quit_if_noshow() >>> pass >>> # TODO: show special annot group in GUI """ return filter_annots.filterannots_by_tags(ibs, aid_list, filter_kw)
[docs] def filter_annots_independent( ibs, avail_aids, aidcfg, prefix=u'', verbose=False, withpre=False): """ Filtering that doesn't have to do with a reference set of aids TODO make filterflags version Args: ibs (IBEISController): ibeis controller object avail_aids (list): aidcfg (dict): prefix (str): (default = '') verbose (bool): verbosity flag(default = False) Returns: list: avail_aids CommandLine: python -m ibeis --tf filter_annots_independent --veryverbtd Example: >>> # DISABLE_DOCTEST >>> from ibeis.init.filter_annots import * # NOQA >>> import ibeis >>> from ibeis.expt import annotation_configs >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> avail_aids = input_aids = ibs.get_valid_aids() >>> aidcfg = annotation_configs.default['dcfg'] >>> aidcfg['require_timestamp'] = True >>> aidcfg['require_quality'] = False >>> aidcfg['is_known'] = True >>> prefix = '' >>> verbose = True >>> avail_aids = filter_annots_independent(ibs, avail_aids, aidcfg, >>> prefix, verbose) >>> result = ('avail_aids = %s' % (str(avail_aids),)) >>> print(result) Ignore: # Testing tag features python -m ibeis --tf draw_rank_cdf --db PZ_Master1 --show -t best \ -a timectrl:qhas_any=\(needswork,correctable,mildviewpoint\),qhas_none=\(viewpoint,photobomb,error:viewpoint,quality\) \ ---acfginfo --veryverbtd """ return filter_annots.filter_annots_independent( ibs, avail_aids, aidcfg, prefix, verbose, withpre)
def _get_all_party_rowids(ibs): """ all_party_rowids <- party.get_all_rowids() Returns: list_ (list): unfiltered party_rowids TemplateInfo: Tider_all_rowids tbl = party Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_party_funcs import * # NOQA >>> ibs, qreq_ = testdata_ibs() >>> ibs._get_all_party_rowids() """ return _autogen_party_funcs._get_all_party_rowids(ibs)
[docs] def add_party(ibs, party_tag_list): """ Returns: returns party_rowid_list of added (or already existing partys) TemplateInfo: Tadder_native tbl = party RESTful: Method: POST URL: /api/autogen/ """ return _autogen_party_funcs.add_party(ibs, party_tag_list)
[docs] def get_party_rowid_from_superkey( ibs, party_tag_list, eager=True, nInput=None): """ party_rowid_list <- party[party_tag_list] Args: superkey lists: party_tag_list Returns: party_rowid_list TemplateInfo: Tgetter_native_rowid_from_superkey tbl = party RESTful: Method: GET URL: /api/autogen/party_rowid_from_superkey/ """ return _autogen_party_funcs.get_party_rowid_from_superkey( ibs, party_tag_list, eager, nInput)
[docs] def get_party_tag(ibs, party_rowid_list, eager=True, nInput=None): """ party_tag_list <- party.party_tag[party_rowid_list] gets data from the "native" column "party_tag" in the "party" table Args: party_rowid_list (list): Returns: list: party_tag_list TemplateInfo: Tgetter_table_column col = party_tag tbl = party RESTful: Method: GET URL: /api/autogen/party_tag/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control._autogen_party_funcs import * # NOQA >>> ibs, qreq_ = testdata_ibs() >>> party_rowid_list = ibs._get_all_party_rowids() >>> eager = True >>> party_tag_list = ibs.get_party_tag(party_rowid_list, eager=eager) >>> assert len(party_rowid_list) == len(party_tag_list) """ return _autogen_party_funcs.get_party_tag( ibs, party_rowid_list, eager, nInput)
[docs] def filter_annots_by_tags(ibs, aid_list=None, **kwargs): """ Filter / Find / Search for annotations with particular tags CommandLine: python -m ibeis.tag_funcs --exec-filter_annots_by_tags --helpx python -m ibeis.tag_funcs --exec-filter_annots_by_tags --db GZ_Master1 python -m ibeis.tag_funcs --exec-filter_annots_by_tags --db GZ_Master1 --min_num=1 python -m ibeis.tag_funcs --exec-filter_annots_by_tags --db GZ_Master1 --has_any=lighting --has_all=lighting:underexposed --show SeeAlso: python -m ibeis.init.filter_annots --exec-filter_annots_general Example: >>> # ENABLE_DOCTEST >>> from ibeis.tag_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> kwargs = ut.argparse_dict(ut.get_kwdefaults2(filterflags_general_tags), type_hint=ut.ddict(list, logic=str)) >>> ut.print_dict(kwargs, 'filter args') >>> aid_list = ibs.filter_annots_by_tags(aid_list, **kwargs) >>> print('len(aid_list) = %r' % (len(aid_list),)) >>> # print results >>> all_tags = ut.flatten(ibs.get_annot_all_tags(aid_list)) >>> filtered_tag_hist = ut.dict_hist(all_tags) >>> ut.print_dict(filtered_tag_hist, key_order_metric='val') >>> print('len(aid_list) = %r' % (len(aid_list),)) >>> print('sum(tags) = %r' % (sum(filtered_tag_hist.values()),)) >>> ut.quit_if_noshow() >>> import ibeis.viz.interact >>> ibeis.viz.interact.interact_chip.interact_multichips(ibs, aid_list) >>> ut.show_if_requested() """ return tag_funcs.filter_annots_by_tags(ibs, aid_list, **kwargs)
[docs] def filterflags_annot_tags(ibs, aid_list, **kwargs): """ Filter / Find / Search for annotations with particular tags """ return tag_funcs.filterflags_annot_tags(ibs, aid_list, **kwargs)
[docs] def filter_aidpairs_by_tags( ibs, has_any=None, has_all=None, min_num=None, max_num=None): """ list(zip(aid_pairs, undirected_tags)) """ return tag_funcs.filter_aidpairs_by_tags( ibs, has_any, has_all, min_num, max_num)
[docs] def get_annotmatch_case_tags(ibs, annotmatch_rowids): """ Args: ibs (IBEISController): ibeis controller object annotmatch_rowids (?): Returns: list: filtered_aid_list CommandLine: python -m ibeis.tag_funcs --exec-get_annotmatch_case_tags Example: >>> # DISABLE_DOCTEST >>> from ibeis.tag_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_Master1') >>> annotmatch_rowids = ibs._get_all_annotmatch_rowids() >>> tags_list = get_annotmatch_case_tags(ibs, annotmatch_rowids) >>> result = ('tags_list = %s' % (str(tags_list),)) >>> print(result) tags_list = [[u'occlusion', u'pose', 'Hard', 'NonDistinct'], [], ['Hard']] """ return tag_funcs.get_annotmatch_case_tags(ibs, annotmatch_rowids)
[docs] def get_annotmatch_prop(ibs, prop, annotmatch_rowids): """ hacky getter for dynamic properties of annotmatches using notes table Args: prop (str): annotmatch_rowids (?): Returns: list: filtered_aid_list CommandLine: python -m ibeis.tag_funcs --exec-get_annotmatch_prop Example: >>> # DISABLE_DOCTEST >>> # Test setting and getting standard keys >>> from ibeis.tag_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> prop = 'hard' >>> annotmatch_rowids = ibs._get_all_annotmatch_rowids() >>> flag_list = get_annotmatch_prop(ibs, prop, annotmatch_rowids) >>> flag_list = ('filtered_aid_list = %s' % (str(flag_list),)) >>> subset_rowids = annotmatch_rowids[::2] >>> set_annotmatch_prop(ibs, prop, subset_rowids, [True] * len(subset_rowids)) >>> flag_list2 = get_annotmatch_prop(ibs, prop, annotmatch_rowids) >>> print('flag_list2 = %r' % (flag_list2,)) Example: >>> # DISABLE_DOCTEST >>> # Test setting and getting non-standard keys >>> from ibeis.tag_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> prop = 'occlusion' >>> annotmatch_rowids = ibs._get_all_annotmatch_rowids() >>> flag_list = get_annotmatch_prop(ibs, prop, annotmatch_rowids) >>> flag_list = ('filtered_aid_list = %s' % (str(flag_list),)) >>> subset_rowids = annotmatch_rowids[1::2] >>> subset_rowids1 = annotmatch_rowids[::2] >>> set_annotmatch_prop(ibs, prop, subset_rowids1, [True] * len(subset_rowids)) >>> set_annotmatch_prop(ibs, 'pose', subset_rowids1, [True] * len(subset_rowids)) >>> flag_list2 = get_annotmatch_prop(ibs, prop, annotmatch_rowids) >>> print('flag_list2 = %r' % (flag_list2,)) """ return tag_funcs.get_annotmatch_prop(ibs, prop, annotmatch_rowids)
[docs] def set_annotmatch_prop(ibs, prop, annotmatch_rowids, flags): """ hacky setter for dynamic properties of annotmatches using notes table """ return tag_funcs.set_annotmatch_prop( ibs, prop, annotmatch_rowids, flags)
[docs] def set_annot_prop(ibs, prop, aid_list, flags): """ sets nonstandard properties using the notes column http://localhost:5000/group_review/?aid_list=1,2,3,4 """ return tag_funcs.set_annot_prop(ibs, prop, aid_list, flags)
[docs] def append_annot_case_tags(ibs, aid_list, tag_list): """ Generally appends tags to annotations. Careful not to introduce too many random tags. Maybe we should just let that happen and introduce tag-aliases Note: this is more of a set add rather than a list append TODO: remove """ return tag_funcs.append_annot_case_tags(ibs, aid_list, tag_list)
[docs] def get_annot_case_tags(ibs, aid_list): """ returns list of tags. Use instead of get_annot_tag_text Args: ibs (IBEISController): ibeis controller object aid_list (list): list of annotation rowids Returns: list: tags_list CommandLine: python -m ibeis.tag_funcs --exec-get_annot_case_tags Example: >>> # ENABLE_DOCTEST >>> from ibeis.tag_funcs import * # NOQA >>> from ibeis.tag_funcs import _parse_note # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> tags_list = get_annot_case_tags(ibs, aid_list) >>> result = ('tags_list = %s' % (str(tags_list),)) >>> print(result) Ignore: # FIXME incorrporate old tag notes aid_list = ibs.get_valid_aids() notes_list = ibs.get_annot_notes(aid_list) flags = [len(notes) > 0 for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags) import re notes_list = [note.replace('rfdetect', '') for note in notes_list] notes_list = [note.replace('<COMMA>', ';') for note in notes_list] notes_list = [note.replace('jpg', '') for note in notes_list] notes_list = [note.replace('<HARDCASE>', '') for note in notes_list] notes_list = [note.strip() for note in notes_list] notes_list = [re.sub(';;*', ';', note) for note in notes_list] notes_list = [note.strip(';') for note in notes_list] notes_list = [note.strip(':') for note in notes_list] notes_list = [note.strip() for note in notes_list] flags = [len(notes) < 70 and len(notes) > 0 for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags) flags = ['M;' not in notes and 'F;' not in notes and 'H1' not in notes for notes in notes_list] flags = [ 'M;' not in notes and 'F;' not in notes and 'H1' not in notes for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags) flags = ['aliases' not in notes for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags) #flags = [not re.match(';\d*;', note) for note in notes_list] flags = [not re.match(r'\d\d*', note) for note in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags) flags = [not notes.startswith('Foal;') for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags) old_tags_list = [_parse_note(note) for note in notes_list] old_tags = list(set(ut.flatten(old_tags_list))) old_tags = sorted([tag for tag in old_tags if not re.match(r'\d\d*', tag)]) old_to_new = { 'gash': None, 'pose': 'novelpose', 'vocalizing': 'novelpose' 'occlusion': 'occlusion', } Ignore: python -m ibeis.tag_funcs --exec-filter_annotmatch_by_tags --show --db PZ_Master1 --tags viewpoint """ return tag_funcs.get_annot_case_tags(ibs, aid_list)
[docs] def get_annot_annotmatch_tags(ibs, aid_list): """ Args: ibs (IBEISController): ibeis controller object aid_list (list): list of annotation rowids Returns: list: annotmatch_tags_list CommandLine: python -m ibeis.tag_funcs --exec-get_annot_annotmatch_tags --db GZ_Master1 Example: >>> # ENABLE_DOCTEST >>> from ibeis.tag_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> all_tags = ut.flatten(get_annot_annotmatch_tags(ibs, aid_list)) >>> tag_hist = ut.dict_hist(all_tags) >>> ut.print_dict(tag_hist) """ return tag_funcs.get_annot_annotmatch_tags(ibs, aid_list)
[docs] def get_annot_all_tags(ibs, aid_list=None): """ CommandLine: python -m ibeis.tag_funcs --exec-get_annot_all_tags --db GZ_Master1 Example: >>> # ENABLE_DOCTEST >>> from ibeis.tag_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> all_tags = ut.flatten(ibs.get_annot_all_tags(aid_list)) >>> tag_hist = ut.dict_hist(all_tags) >>> ut.print_dict(tag_hist) """ return tag_funcs.get_annot_all_tags(ibs, aid_list)
def _get_all_gar_rowids(ibs): """ all_gar_rowids <- gar.get_all_rowids() Returns: list_ (list): unfiltered gar_rowids TemplateInfo: Tider_all_rowids tbl = gar Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_garelate_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> ibs._get_all_gar_rowids() """ return manual_garelate_funcs._get_all_gar_rowids(ibs)
[docs] def add_gar(ibs, annotgroup_rowid_list, aid_list): """ Returns: returns gar_rowid_list of added (or already existing gars) TemplateInfo: Tadder_native tbl = gar """ return manual_garelate_funcs.add_gar( ibs, annotgroup_rowid_list, aid_list)
[docs] def delete_gar(ibs, gar_rowid_list, config2_=None): """ gar.delete(gar_rowid_list) delete gar rows Args: gar_rowid_list Returns: int: num_deleted TemplateInfo: Tdeleter_native_tbl tbl = gar Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_garelate_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> gar_rowid_list = ibs._get_all_gar_rowids()[:2] >>> num_deleted = ibs.delete_gar(gar_rowid_list) >>> print('num_deleted = %r' % (num_deleted,)) """ return manual_garelate_funcs.delete_gar(ibs, gar_rowid_list, config2_)
[docs] def get_gar_aid(*args, **kwargs): """ aid_list <- gar.aid[gar_rowid_list] gets data from the "native" column "aid" in the "gar" table Args: gar_rowid_list (list): Returns: list: aid_list TemplateInfo: Tgetter_table_column col = aid tbl = gar Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_garelate_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> gar_rowid_list = ibs._get_all_gar_rowids() >>> eager = True >>> aid_list = ibs.get_gar_aid(gar_rowid_list, eager=eager) >>> assert len(gar_rowid_list) == len(aid_list) """ return manual_garelate_funcs.get_gar_aid(*args, **kwargs)
[docs] def get_gar_annotgroup_rowid(*args, **kwargs): """ annotgroup_rowid_list <- gar.annotgroup_rowid[gar_rowid_list] gets data from the "native" column "annotgroup_rowid" in the "gar" table Args: gar_rowid_list (list): Returns: list: annotgroup_rowid_list TemplateInfo: Tgetter_table_column col = annotgroup_rowid tbl = gar Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_garelate_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> gar_rowid_list = ibs._get_all_gar_rowids() >>> eager = True >>> annotgroup_rowid_list = ibs.get_gar_annotgroup_rowid(gar_rowid_list, eager=eager) >>> assert len(gar_rowid_list) == len(annotgroup_rowid_list) """ return manual_garelate_funcs.get_gar_annotgroup_rowid(*args, **kwargs)
[docs] def get_gar_rowid_from_superkey( ibs, annotgroup_rowid_list, aid_list, eager=True, nInput=None): """ gar_rowid_list <- gar[annotgroup_rowid_list, aid_list] Args: superkey lists: annotgroup_rowid_list, aid_list Returns: gar_rowid_list TemplateInfo: Tgetter_native_rowid_from_superkey tbl = gar """ return manual_garelate_funcs.get_gar_rowid_from_superkey( ibs, annotgroup_rowid_list, aid_list, eager, nInput)
[docs] def initialize_job_manager(ibs): """ Run from the webserver Example: >>> # DISABLE_DOCTEST >>> from ibeis.web.apis_engine import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') Example: >>> # WEB_DOCTEST >>> from ibeis.web.apis_engine import * # NOQA >>> import ibeis >>> web_instance = ibeis.opendb_bg_web(db='testdb1', wait=10) >>> baseurl = 'http://127.0.1.1:5000' >>> _payload = {'image_attrs_list': [], 'annot_attrs_list': []} >>> payload = ut.map_dict_vals(ut.to_json, _payload) >>> #resp = requests.post(baseurl + '/api/test/helloworld/?f=b', data=payload) >>> resp = requests.post(baseurl + '/api/image/json/', data=payload) >>> print(resp) >>> web_instance.terminate() >>> json_dict = resp.json() >>> text = json_dict['response'] >>> print(text) """ return apis_engine.initialize_job_manager(ibs)
[docs] def web_check_uuids( ibs, image_uuid_list=[], qannot_uuid_list=[], dannot_uuid_list=[]): """ Args: ibs (ibeis.IBEISController): image analysis api image_uuid_list (list): (default = []) qannot_uuid_list (list): (default = []) dannot_uuid_list (list): (default = []) CommandLine: python -m ibeis.web.apis_engine --exec-web_check_uuids --show Example: >>> # DISABLE_DOCTEST >>> from ibeis.web.apis_engine import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> image_uuid_list = [] >>> qannot_uuid_list = ibs.get_annot_uuids([1, 1, 2, 3, 2, 4]) >>> dannot_uuid_list = ibs.get_annot_uuids([1, 2, 3]) >>> try: >>> web_check_uuids(ibs, image_uuid_list, qannot_uuid_list, >>> dannot_uuid_list) >>> except controller_inject.DuplicateUUIDException: >>> pass >>> else: >>> raise AssertionError('Should have gotten DuplicateUUIDException') >>> try: >>> web_check_uuids(ibs, [1, 2, 3], qannot_uuid_list, >>> dannot_uuid_list) >>> except controller_inject.WebMissingUUIDException as ex: >>> pass >>> else: >>> raise AssertionError('Should have gotten WebMissingUUIDException') >>> print('Successfully reported errors') """ return apis_engine.web_check_uuids( ibs, image_uuid_list, qannot_uuid_list, dannot_uuid_list)
[docs] def close_job_manager(ibs): """ """ return apis_engine.close_job_manager(ibs)
[docs] def start_identify_annots( ibs, qannot_uuid_list, dannot_uuid_list=None, pipecfg={}, callback_url=None): """ REST: Method: GET URL: /api/engine/start_identify_annots/ Args: qannot_uuid_list (list) : specifies the query annotations to identify. dannot_uuid_list (list) : specifies the annotations that the algorithm is allowed to use for identification. If not specified all annotations are used. (default=None) pipecfg (dict) : dictionary of pipeline configuration arguments (default=None) CommandLine: # Run as main process python -m ibeis.web.apis_engine --exec-start_identify_annots:0 # Run using server process python -m ibeis.web.apis_engine --exec-start_identify_annots:1 # Split into multiple processes python -m ibeis.web.apis_engine --main --bg python -m ibeis.web.apis_engine --exec-start_identify_annots:1 --fg python -m ibeis.web.apis_engine --exec-start_identify_annots:1 --domain http://52.33.105.88 python -m ibeis.web.apis_engine --exec-start_identify_annots:1 --duuids=[] python -m ibeis.web.apis_engine --exec-start_identify_annots:1 --domain http://52.33.105.88 --duuids=03a17411-c226-c960-d180-9fafef88c880 Example: >>> # DISABLE_DOCTEST >>> from ibeis.web.apis_engine import * # NOQA >>> from ibeis.web import apis_engine >>> import ibeis >>> ibs, qaids, daids = ibeis.testdata_expanded_aids( >>> defaultdb='PZ_MTEST', a=['default:qsize=2,dsize=10']) >>> qannot_uuid_list = ibs.get_annot_uuids(qaids) >>> dannot_uuid_list = ibs.get_annot_uuids(daids) >>> pipecfg = {} >>> ibs.initialize_job_manager() >>> jobid = ibs.start_identify_annots(qannot_uuid_list, dannot_uuid_list, pipecfg) >>> result = ibs.wait_for_job_result(jobid, timeout=None, freq=2) >>> print(result) >>> import utool as ut >>> print(ut.to_json(result)) >>> ibs.close_job_manager() Example: >>> # WEB_DOCTEST >>> from ibeis.web.apis_engine import * # NOQA >>> import ibeis >>> web_ibs = ibeis.opendb_bg_web('testdb1', wait=3) # , domain='http://52.33.105.88') >>> aids = web_ibs.send_ibeis_request('/api/annot/', 'get')[0:10] >>> uuid_list = web_ibs.send_ibeis_request('/api/annot/uuids/', aid_list=aids) >>> quuid_list = ut.get_argval('--quuids', type_=list, default=uuid_list) >>> duuid_list = ut.get_argval('--duuids', type_=list, default=uuid_list) >>> data = dict( >>> qannot_uuid_list=quuid_list, dannot_uuid_list=duuid_list, >>> pipecfg={}, >>> callback_url='http://127.0.1.1:5832' >>> ) >>> # Start callback server >>> bgserver = ensure_simple_server() >>> # -- >>> jobid = web_ibs.send_ibeis_request('/api/engine/start_identify_annots/', **data) >>> waittime = 1 >>> while True: >>> print('jobid = %s' % (jobid,)) >>> response1 = web_ibs.send_ibeis_request('/api/engine/job/status/', jobid=jobid) >>> if response1['jobstatus'] == 'completed': >>> break >>> time.sleep(waittime) >>> waittime = 10 >>> print('response1 = %s' % (response1,)) >>> response2 = web_ibs.send_ibeis_request('/api/engine/job/result/', jobid=jobid) >>> print('response2 = %s' % (response2,)) >>> cmdict = ut.from_json(response2['json_result'])[0] >>> print('Finished test') >>> web_ibs.terminate2() >>> bgserver.terminate2() Ignore: qaids = daids = ibs.get_valid_aids() http://127.0.1.1:5000/api/engine/start_identify_annots/' jobid = ibs.start_identify_annots(**payload) """ return apis_engine.start_identify_annots( ibs, qannot_uuid_list, dannot_uuid_list, pipecfg, callback_url)
[docs] def start_detect_image(ibs, image_uuid_list, callback_url=None): """ REST: Method: GET URL: /api/engine/detect/cnn/yolo/ Args: image_uuid_list (list) : list of image uuids to detect on. callback_url (url) : url that will be called when detection succeeds or fails """ return apis_engine.start_detect_image( ibs, image_uuid_list, callback_url)
[docs] def get_job_status(ibs, jobid): """ Web call that returns the status of a job CommandLine: # Run Everything together python -m ibeis.web.apis_engine --exec-get_job_status # Start job queue in its own process python -m ibeis.web.apis_engine --main --bg # Start web server in its own process ./dev.py --web pass # Run foreground process python -m ibeis.web.apis_engine --exec-get_job_status:0 --fg Example: >>> # WEB_DOCTEST >>> from ibeis.web.apis_engine import * # NOQA >>> import ibeis >>> web_ibs = ibeis.opendb_bg_web('testdb1', wait=3) # , domain='http://52.33.105.88') >>> # Test get status of a job id that does not exist >>> response = web_ibs.send_ibeis_request('/api/engine/job/status/', jobid='badjob') >>> web_ibs.terminate2() """ return apis_engine.get_job_status(ibs, jobid)
[docs] def get_job_result(ibs, jobid): """ Web call that returns the result of a job """ return apis_engine.get_job_result(ibs, jobid)
[docs] def wait_for_job_result(ibs, jobid, timeout=10, freq=0.1): """ """ return apis_engine.wait_for_job_result(ibs, jobid, timeout, freq)
[docs] def get_annotmatch_rowids_from_aid1( ibs, aid1_list, eager=True, nInput=None): """ TODO autogenerate Returns a list of the aids that were reviewed as candidate matches to the input aid aid_list = ibs.get_valid_aids() Args: ibs (IBEISController): ibeis controller object aid1_list (list): eager (bool): (default = True) nInput (None): (default = None) Returns: list: annotmatch_rowid_list """ return annotmatch_funcs.get_annotmatch_rowids_from_aid1( ibs, aid1_list, eager, nInput)
[docs] def get_annotmatch_rowids_from_aid2( ibs, aid2_list, eager=True, nInput=None, force_method=None): """ # This one is slow because aid2 is the second part of the index TODO autogenerate Returns a list of the aids that were reviewed as candidate matches to the input aid aid_list = ibs.get_valid_aids() CommandLine: python -m ibeis.annotmatch_funcs --exec-get_annotmatch_rowids_from_aid2 --show Example2: >>> # TIME TEST >>> # setup_pzmtest_subgraph() >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_Master1') >>> aid2_list = ibs.get_valid_aids() >>> func_list = [ >>> partial(ibs.get_annotmatch_rowids_from_aid2, force_method=1), >>> partial(ibs.get_annotmatch_rowids_from_aid2, force_method=2), >>> ] >>> num_list = [1, 10, 50, 100, 300, 325, 350, 400, 500] >>> def args_list(count, aid2_list=aid2_list, num_list=num_list): >>> return (aid2_list[0:num_list[count]],) >>> searchkw = dict( >>> func_labels=['sql', 'numpy'], >>> count_to_xtick=lambda count, args: len(args[0]), >>> title='Timings of get_annotmatch_rowids_from_aid2', >>> ) >>> niters = len(num_list) >>> time_result = ut.gridsearch_timer(func_list, args_list, niters, **searchkw) >>> time_result['plot_timings']() >>> ut.show_if_requested() """ return annotmatch_funcs.get_annotmatch_rowids_from_aid2( ibs, aid2_list, eager, nInput, force_method)
[docs] def get_annotmatch_rowids_from_aid( ibs, aid_list, eager=True, nInput=None, force_method=None): """ Undirected version TODO autogenerate Returns a list of the aids that were reviewed as candidate matches to the input aid aid_list = ibs.get_valid_aids() CommandLine: python -m ibeis.annotmatch_funcs --exec-get_annotmatch_rowids_from_aid python -m ibeis.annotmatch_funcs --exec-get_annotmatch_rowids_from_aid:1 --show Example: >>> # DISABLE_DOCTEST >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> # setup_pzmtest_subgraph() >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> aid_list = ibs.get_valid_aids()[0:4] >>> eager = True >>> nInput = None >>> annotmatch_rowid_list = get_annotmatch_rowids_from_aid(ibs, aid_list, >>> eager, nInput) >>> result = ('annotmatch_rowid_list = %s' % (str(annotmatch_rowid_list),)) >>> print(result) Example2: >>> # TIME TEST >>> # setup_pzmtest_subgraph() >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_Master1') >>> aid_list = ibs.get_valid_aids() >>> from functools import partial >>> func_list = [ >>> partial(ibs.get_annotmatch_rowids_from_aid), >>> partial(ibs.get_annotmatch_rowids_from_aid, force_method=1), >>> partial(ibs.get_annotmatch_rowids_from_aid, force_method=2), >>> ] >>> num_list = [1, 10, 50, 100, 300, 325, 350, 400, 500] >>> def args_list(count, aid_list=aid_list, num_list=num_list): >>> return (aid_list[0:num_list[count]],) >>> searchkw = dict( >>> func_labels=['combo', 'sql', 'numpy'], >>> count_to_xtick=lambda count, args: len(args[0]), >>> title='Timings of get_annotmatch_rowids_from_aid', >>> ) >>> niters = len(num_list) >>> time_result = ut.gridsearch_timer(func_list, args_list, niters, **searchkw) >>> time_result['plot_timings']() >>> ut.show_if_requested() """ return annotmatch_funcs.get_annotmatch_rowids_from_aid( ibs, aid_list, eager, nInput, force_method)
[docs] def set_annot_pair_as_reviewed(ibs, aid1, aid2): """ denote that this match was reviewed and keep whatever status it is given """ return annotmatch_funcs.set_annot_pair_as_reviewed(ibs, aid1, aid2)
[docs] def set_annot_pair_as_positive_match( ibs, aid1, aid2, dryrun=False, on_nontrivial_merge=None): """ Safe way to perform links. Errors on invalid operations. TODO: ELEVATE THIS FUNCTION Change into make_task_set_annot_pair_as_positive_match and it returns what needs to be done. Need to test several cases: uknown, unknown knownA, knownA knownB, knownA unknown, knownA knownA, unknown Args: ibs (IBEISController): ibeis controller object aid1 (int): query annotation id aid2 (int): matching annotation id CommandLine: python -m ibeis.annotmatch_funcs --test-set_annot_pair_as_positive_match Example: >>> # ENABLE_DOCTEST >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid1, aid2 = ibs.get_valid_aids()[0:2] >>> dryrun = True >>> status = set_annot_pair_as_positive_match(ibs, aid1, aid2, dryrun) >>> # verify results >>> print(status) """ return annotmatch_funcs.set_annot_pair_as_positive_match( ibs, aid1, aid2, dryrun, on_nontrivial_merge)
[docs] def set_annot_pair_as_negative_match( ibs, aid1, aid2, dryrun=False, on_nontrivial_split=None): """ TODO: ELEVATE THIS FUNCTION Args: ibs (IBEISController): ibeis controller object aid1 (int): annotation id aid2 (int): annotation id dryrun (bool): CommandLine: python -m ibeis.annotmatch_funcs --test-set_annot_pair_as_negative_match Example: >>> # ENABLE_DOCTEST >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid1, aid2 = ibs.get_valid_aids()[0:2] >>> dryrun = True >>> # execute function >>> result = set_annot_pair_as_negative_match(ibs, aid1, aid2, dryrun) >>> # verify results >>> print(result) """ return annotmatch_funcs.set_annot_pair_as_negative_match( ibs, aid1, aid2, dryrun, on_nontrivial_split)
[docs] def set_annot_pair_as_unknown_match( ibs, aid1, aid2, dryrun=False, on_nontrivial_merge=None): """ """ return annotmatch_funcs.set_annot_pair_as_unknown_match( ibs, aid1, aid2, dryrun, on_nontrivial_merge)
[docs] def get_annot_pair_timdelta(ibs, aid_list1, aid_list2): """ Args: ibs (IBEISController): ibeis controller object aid_list1 (int): list of annotation ids aid_list2 (int): list of annotation ids Returns: list: timedelta_list CommandLine: python -m ibeis.annotmatch_funcs --test-get_annot_pair_timdelta Example: >>> # ENABLE_DOCTEST >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('PZ_MTEST') >>> aid_list = ibs.get_valid_aids(hasgt=True) >>> unixtimes = ibs.get_annot_image_unixtimes(aid_list) >>> aid_list = ut.compress(aid_list, np.array(unixtimes) != -1) >>> gt_aids_list = ibs.get_annot_groundtruth(aid_list, daid_list=aid_list) >>> aid_list1 = [aid for aid, gt_aids in zip(aid_list, gt_aids_list) if len(gt_aids) > 0][0:5] >>> aid_list2 = [gt_aids[0] for gt_aids in gt_aids_list if len(gt_aids) > 0][0:5] >>> timedelta_list = ibs.get_annot_pair_timdelta(aid_list1, aid_list2) >>> result = ut.numpy_str(timedelta_list, precision=2) >>> print(result) np.array([ 7.57e+07, 7.57e+07, 2.41e+06, 1.98e+08, 9.69e+07], dtype=np.float64) """ return annotmatch_funcs.get_annot_pair_timdelta( ibs, aid_list1, aid_list2)
[docs] def get_annot_has_reviewed_matching_aids( ibs, aid_list, eager=True, nInput=None): """ """ return annotmatch_funcs.get_annot_has_reviewed_matching_aids( ibs, aid_list, eager, nInput)
[docs] def get_annot_num_reviewed_matching_aids( ibs, aid1_list, eager=True, nInput=None): """ Args: aid_list (int): list of annotation ids eager (bool): nInput (None): Returns: list: num_annot_reviewed_list CommandLine: python -m ibeis.annotmatch_funcs --test-get_annot_num_reviewed_matching_aids Example: >>> # DISABLE_DOCTEST >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb2') >>> aid1_list = ibs.get_valid_aids() >>> eager = True >>> nInput = None >>> # execute function >>> num_annot_reviewed_list = get_annot_num_reviewed_matching_aids(ibs, aid_list, eager, nInput) >>> # verify results >>> result = str(num_annot_reviewed_list) >>> print(result) """ return annotmatch_funcs.get_annot_num_reviewed_matching_aids( ibs, aid1_list, eager, nInput)
[docs] def get_annot_reviewed_matching_aids( ibs, aid_list, eager=True, nInput=None): """ Returns a list of the aids that were reviewed as candidate matches to the input aid aid_list = ibs.get_valid_aids() """ return annotmatch_funcs.get_annot_reviewed_matching_aids( ibs, aid_list, eager, nInput)
[docs] def get_annot_pair_truth(ibs, aid1_list, aid2_list): """ CAREFUL: uses annot match table for truth, so only works if reviews have happend """ return annotmatch_funcs.get_annot_pair_truth(ibs, aid1_list, aid2_list)
[docs] def get_annot_pair_is_reviewed(ibs, aid1_list, aid2_list): """ Args: aid1_list (list): aid2_list (list): Returns: list: annotmatch_reviewed_list CommandLine: python -m ibeis.annotmatch_funcs --test-get_annot_pair_is_reviewed Example: >>> # DISABLE_DOCTEST >>> from ibeis.annotmatch_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb2') >>> aid_list = ibs.get_valid_aids() >>> pairs = list(ut.product(aid_list, aid_list)) >>> aid1_list = ut.get_list_column(pairs, 0) >>> aid2_list = ut.get_list_column(pairs, 1) >>> # execute function >>> annotmatch_reviewed_list = get_annot_pair_is_reviewed(ibs, aid1_list, aid2_list) >>> # verify results >>> reviewed_pairs = ut.compress(pairs, annotmatch_reviewed_list) >>> result = len(reviewed_pairs) >>> print(result) 104 """ return annotmatch_funcs.get_annot_pair_is_reviewed( ibs, aid1_list, aid2_list)
[docs] def get_annot_chip_fpath(*args, **kwargs): """ Returns the cached chip uri based off of the current configuration. Returns: chip_fpath_list (list): cfpaths defined by ANNOTATIONs RESTful: Method: GET URL: /api/annot_chip/fpath/ """ return manual_chip_funcs.get_annot_chip_fpath(*args, **kwargs)
[docs] def get_annot_chips(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids ensure (bool): eager evaluation if True config2_ (QueryRequest): query request object with hyper-parameters Returns: list: chip_list CommandLine: python -m ibeis.control.manual_chip_funcs --test-get_annot_chips python -m ibeis.templates.template_generator --key chip --funcname-filter '\<get_annot_chips\>' RESTful: Method: GET URL: /api/annot_chip/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_chip_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:5] >>> config2_ = {'dim_size': 450, 'resize_dim': 'area'} >>> chip_list = get_annot_chips(ibs, aid_list, config2_) >>> chip_sum_list = list(map(np.sum, chip_list)) >>> ut.assert_almost_eq(chip_sum_list, [96053500, 65152954, 67223241, 109358624, 73995960], 2000) >>> print(chip_sum_list) """ return manual_chip_funcs.get_annot_chips(*args, **kwargs)
[docs] def get_annot_chip_sizes(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids ensure (bool): eager evaluation if True Returns: list: chipsz_list - the (width, height) of computed annotation chips. CommandLine: python -m ibeis.control.manual_chip_funcs --test-get_annot_chip_sizes RESTful: Method: GET URL: /api/annot_chip/sizes/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_chip_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:3] >>> ensure = True >>> config2_ = {'dim_size': 450, 'resize_dim': 'area'} >>> # execute function >>> chipsz_list = get_annot_chip_sizes(ibs, aid_list, ensure, config2_=config2_) >>> # verify results >>> result = str(chipsz_list) >>> print(result) [(545, 372), (603, 336), (520, 390)] """ return manual_chip_funcs.get_annot_chip_sizes(*args, **kwargs)
[docs] def get_annot_chip_dlensqrd(ibs, aid_list, config2_=None): """ Args: ibs (IBEISController): ibeis controller object aid_list (list): Returns: list: topx2_dlen_sqrd CommandLine: python -m ibeis.control.manual_chip_funcs --test-get_annot_chip_dlensqrd RESTful: Method: GET URL: /api/annot_chip/dlensqrd/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_chip_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> config2_ = {'dim_size': 450, 'resize_dim': 'area'} >>> topx2_dlen_sqrd = ibs.get_annot_chip_dlensqrd(aid_list, config2_=config2_) >>> result = str(topx2_dlen_sqrd) >>> print(result) [435409, 476505, 422500, 422500, 422500, 437924, 405000, 405000, 447805, 420953, 405008, 406265, 512674] """ return manual_chip_funcs.get_annot_chip_dlensqrd( ibs, aid_list, config2_)
[docs] def get_annot_chip_thumbpath(*args, **kwargs): """ just constructs the path. does not compute it. that is done by api_thumb_delegate RESTful: Method: GET URL: /api/annot_chip/thumbpath/ """ return manual_chip_funcs.get_annot_chip_thumbpath(*args, **kwargs)
[docs] def get_annot_chip_thumbtup(*args, **kwargs): """ get chip thumb info The return type of this is interpreted and computed in ~/code/guitool/guitool/api_thumb_delegate.py Args: aid_list (list): thumbsize (int): Returns: list: thumbtup_list - [(thumb_path, img_path, imgsize, bboxes, thetas)] CommandLine: python -m ibeis.control.manual_chip_funcs --test-get_annot_chip_thumbtup RESTful: Method: GET URL: /api/annot_chip/thumbtup/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_chip_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> thumbsize = 128 >>> result = get_annot_chip_thumbtup(ibs, aid_list, thumbsize) >>> print(result) """ return manual_chip_funcs.get_annot_chip_thumbtup(*args, **kwargs)
[docs] def delete_annot_chips(*args, **kwargs): """ Clears annotation data (does not remove the annotation) RESTful: Method: DELETE URL: /api/annot_chip/ """ return manual_chip_funcs.delete_annot_chips(*args, **kwargs)
def _get_all_aids(ibs): """ Returns: list_ (list): all unfiltered aids (annotation rowids) """ return manual_annot_funcs._get_all_aids(ibs)
[docs] def get_num_annotations(ibs, **kwargs): """ Number of valid annotations RESTful: Method: GET URL: /api/annot/numations/ """ return manual_annot_funcs.get_num_annotations(ibs, **kwargs)
[docs] def get_valid_aids( ibs, imgsetid=None, include_only_gid_list=None, yaw=u'no-filter', is_exemplar=None, species=None, is_known=None, hasgt=None, minqual=None, has_timestamp=None, min_timedelta=None): """ High level function for getting all annotation ids according a set of filters. Note: The yaw value cannot be None as a default because None is used as a filtering value Args: ibs (IBEISController): ibeis controller object imgsetid (int): imageset id (default = None) include_only_gid_list (list): if specified filters annots not in these gids (default = None) yaw (str): (default = 'no-filter') is_exemplar (bool): if specified filters annots to either be or not be exemplars (default = None) species (str): (default = None) is_known (bool): (default = None) min_timedelta (int): minimum timedelta between annots of known individuals hasgt (bool): (default = None) Returns: list: aid_list - a list of valid ANNOTATION unique ids CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_valid_aids Ignore: ibs.print_annotation_table() RESTful: Method: GET URL: /api/annot/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> from ibeis import constants as const >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> imgsetid = 1 >>> ibs.delete_all_imagesets() >>> ibs.compute_occurrences() >>> include_only_gid_list = None >>> yaw = 'no-filter' >>> is_exemplar = None >>> species = const.TEST_SPECIES.ZEB_PLAIN >>> is_known = False >>> # execute function >>> aid_list = get_valid_aids(ibs, imgsetid, include_only_gid_list, yaw, is_exemplar, species, is_known) >>> ut.assert_eq(ibs.get_annot_names(aid_list), [const.UNKNOWN] * 2, 'bad name') >>> ut.assert_eq(ibs.get_annot_species(aid_list), [species] * 2, 'bad species') >>> ut.assert_eq(ibs.get_annot_exemplar_flags(aid_list), [False] * 2, 'bad exemplar') >>> # verify results >>> result = str(aid_list) >>> print(result) [1, 4] Example1: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> # execute function >>> aid_list1 = get_valid_aids(ibs, is_exemplar=True) >>> aid_list2 = get_valid_aids(ibs, is_exemplar=False) >>> intersect_aids = set(aid_list1).intersection(aid_list2) >>> ut.assert_eq(len(aid_list1), 9) >>> ut.assert_eq(len(aid_list2), 4) >>> ut.assert_eq(len(intersect_aids), 0) Ignore: import utool as ut setup = ut.codeblock( ''' import ibeis ibs = ibeis.opendb('PZ_Master1') ''' ) stmt_list = [ ut.codeblock( ''' ibs.db.get_all_rowids_where(ibs.const.ANNOTATION_TABLE, ibeis.control.DB_SCHEMA.ANNOT_PARENT_ROWID + " IS NULL", tuple()) '''), ut.codeblock( ''' ibs.db.get_all_rowids(ibs.const.ANNOTATION_TABLE) '''), ] iterations = 100 verbose = True _ = ut.timeit_compare(stmt_list, setup=setup, iterations=iterations, verbose=verbose) """ return manual_annot_funcs.get_valid_aids( ibs, imgsetid, include_only_gid_list, yaw, is_exemplar, species, is_known, hasgt, minqual, has_timestamp, min_timedelta)
[docs] def annotation_src_api(aid=None): """ Returns the base64 encoded image of annotation <aid> RESTful: Method: GET URL: /api/annot/<aid>/ """ return manual_annot_funcs.annotation_src_api(aid)
[docs] def get_annot_aid(*args, **kwargs): """ self verifier Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() + [None, -1, 10434320432] >>> aid_list_ = ibs.get_annot_aid(aid_list) >>> assert [r is None for r in aid_list_[-3:]] >>> assert [r is not None for r in aid_list_[0:-3]] """ return manual_annot_funcs.get_annot_aid(*args, **kwargs)
[docs] def add_annots(*args, **kwargs): """ Adds an annotation to images Args: gid_list (list): image rowids to add annotation to bbox_list (list): of [x, y, w, h] bounding boxes for each image (supply verts instead) theta_list (list): orientations of annotations species_list (list): nid_list (list): name_list (list): detect_confidence_list (list): notes_list (list): vert_list (list): alternative to bounding box annot_uuid_list (list): yaw_list (list): annot_visual_uuid_list (list): annot_semantic_uuid_list (list): quiet_delete_thumbs (bool): Returns: list: aid_list CommandLine: python -m ibeis.control.manual_annot_funcs --test-add_annots python -m ibeis.control.manual_annot_funcs --test-add_annots --verbose --print-caller Ignore: theta_list = None species_list = None nid_list = None name_list = None detect_confidence_list = None notes_list = None vert_list = None annot_uuid_list = None yaw_list = None quiet_delete_thumbs = False prevent_visual_duplicates = False RESTful: Method: POST URL: /api/annot/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> prevalid = ibs.get_valid_aids() >>> num_add = 2 >>> gid_list = ibs.get_valid_gids()[0:num_add] >>> bbox_list = [(int(w * .1), int(h * .6), int(w * .5), int(h * .3)) ... for (w, h) in ibs.get_image_sizes(gid_list)] >>> # Add a test annotation >>> print('Testing add_annots') >>> aid_list = ibs.add_annots(gid_list, bbox_list=bbox_list) >>> bbox_list2 = ibs.get_annot_bboxes(aid_list) >>> vert_list2 = ibs.get_annot_verts(aid_list) >>> theta_list2 = ibs.get_annot_thetas(aid_list) >>> name_list2 = ibs.get_annot_names(aid_list) >>> print('Ensure=False. Should get back None chip fpaths') >>> chip_fpaths2 = ibs.get_annot_chip_fpath(aid_list, ensure=False) >>> assert [fpath is None for fpath in chip_fpaths2], 'should not have fpaths' >>> print('Ensure=True. Should get back None chip fpaths') >>> chip_fpaths = ibs.get_annot_chip_fpath(aid_list, ensure=True) >>> assert all([ut.checkpath(fpath, verbose=True) for fpath in chip_fpaths]), 'paths should exist' >>> ut.assert_eq(len(aid_list), num_add) >>> ut.assert_eq(len(vert_list2[0]), 4) >>> assert bbox_list2 == bbox_list, 'bboxes are unequal' >>> # Be sure to remove test annotation >>> # if this test fails a resetdbs might be nessary >>> result = '' >>> visual_uuid_list = ibs.get_annot_visual_uuids(aid_list) >>> semantic_uuid_list = ibs.get_annot_semantic_uuids(aid_list) >>> result += str(visual_uuid_list) + '\n' >>> result += str(semantic_uuid_list) + '\n' >>> print('Cleaning up. Removing added annotations') >>> ibs.delete_annots(aid_list) >>> assert not any([ut.checkpath(fpath, verbose=True) for fpath in chip_fpaths]) >>> postvalid = ibs.get_valid_aids() >>> assert prevalid == postvalid >>> result += str(postvalid) >>> print(result) [UUID('30f7639b-5161-a561-2c4f-41aed64e5b65'), UUID('5ccbb26d-104f-e655-cf2b-cf92e0ad2fd2')] [UUID('3e3e9c98-e47c-f153-7101-f3d4fdadfb90'), UUID('dbf3b1a2-2188-75b4-07d4-0ef7e4787d23')] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] # semantic uuids change when hashing is different [UUID('30f7639b-5161-a561-2c4f-41aed64e5b65'), UUID('5ccbb26d-104f-e655-cf2b-cf92e0ad2fd2')] [UUID('68160c90-4b82-dc96-dafa-b12948739577'), UUID('03e74d19-1bf7-bc43-a291-8ee06a44da2e')] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] Example2: >>> # Test with prevent_visual_duplicates on >>> # ENABLE_DOCTEST >>> from ibeis.control.IBEISControl import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> prevalid = ibs.get_valid_aids() >>> num_add = 1 >>> gid_list = ibs.get_valid_gids()[0:1] * num_add >>> bbox_list = [(int(w * .1), int(h * .6), int(w * .5), int(h * .3)) ... for (w, h) in ibs.get_image_sizes(gid_list)] >>> bbox_list2 = [(int(w * .2), int(h * .6), int(w * .5), int(h * .3)) ... for (w, h) in ibs.get_image_sizes(gid_list)] >>> # Add a test annotation >>> print('Testing add_annots') >>> aid_list1 = ibs.add_annots(gid_list, bbox_list=bbox_list, prevent_visual_duplicates=True) >>> aid_list2 = ibs.add_annots(gid_list, bbox_list=bbox_list, prevent_visual_duplicates=True) >>> aid_list3 = ibs.add_annots(gid_list, bbox_list=bbox_list2, prevent_visual_duplicates=True) >>> assert aid_list1 == aid_list2 >>> assert aid_list1 != aid_list3 >>> aid_list_new = aid_list1 + aid_list3 >>> result = aid_list_new >>> print('Cleaning up. Removing added annotations') >>> ibs.delete_annots(aid_list_new) >>> print(result) [14, 15] """ return manual_annot_funcs.add_annots(*args, **kwargs)
[docs] def get_annot_rows(ibs, aid_list): """ Auto-docstr for 'get_annot_rows' RESTful: Method: GET URL: /api/annot/rows/ """ return manual_annot_funcs.get_annot_rows(ibs, aid_list)
[docs] def delete_annot_nids(*args, **kwargs): """ Remove name assocation from the list of input aids. Does this by setting each annotations nid to the UNKNOWN name rowid RESTful: Method: DELETE URL: /api/annot/nids/ """ return manual_annot_funcs.delete_annot_nids(*args, **kwargs)
[docs] def delete_annot_speciesids(*args, **kwargs): """ Deletes nids of a list of annotations RESTful: Method: DELETE URL: /api/annot/speciesids/ """ return manual_annot_funcs.delete_annot_speciesids(*args, **kwargs)
[docs] def delete_annots(*args, **kwargs): """ deletes annotations from the database RESTful: Method: DELETE URL: /api/annot/ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids CommandLine: python -m ibeis.control.manual_annot_funcs --test-delete_annots python -m ibeis.control.manual_annot_funcs --test-delete_annots --debug-api-cache python -m ibeis.control.manual_annot_funcs --test-delete_annots SeeAlso: back.delete_annot Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> ibs.delete_empty_nids() >>> # Add some annotations to delete >>> num_add = 2 >>> gid_list = ibs.get_valid_gids()[0:num_add] >>> nid = ibs.make_next_nids(1)[0] >>> nid_list = [nid] * num_add >>> bbox_list = [(int(w * .1), int(h * .6), int(w * .5), int(h * .3)) ... for (w, h) in ibs.get_image_sizes(gid_list)] >>> new_aid_list = ibs.add_annots(gid_list, bbox_list=bbox_list, nid_list=nid_list) >>> ibs.get_annot_nids(new_aid_list) >>> ut.assert_lists_eq(ibs.get_annot_nids(new_aid_list), nid_list) >>> assert ibs.get_name_aids(nid) == new_aid_list, 'annots should all have same name' >>> assert new_aid_list == ibs.get_name_aids(nid), 'inverse name mapping should work' >>> before_gids = ibs.get_image_aids(gid_list) >>> print('BEFORE gids: ' + str(before_gids)) >>> result = ibs.delete_annots(new_aid_list) >>> assert ibs.get_name_aids(nid) == [], 'annots should be removed' >>> after_gids = ibs.get_image_aids(gid_list) >>> assert after_gids != before_gids, 'the invalidators must have bugs' >>> print('AFTER gids: ' + str(after_gids)) >>> valid_aids = ibs.get_valid_aids() >>> assert [aid not in valid_aids for aid in new_aid_list], 'should no longer be valid aids' >>> print(result) >>> ibs.delete_empty_nids() """ return manual_annot_funcs.delete_annots(*args, **kwargs)
[docs] def get_annot_aids_from_semantic_uuid(*args, **kwargs): """ Args: semantic_uuid_list (list): Returns: list: annot rowids RESTful: Method: GET URL: /api/annot/aids_from_semantic_uuid/ """ return manual_annot_funcs.get_annot_aids_from_semantic_uuid( *args, **kwargs)
[docs] def get_annot_aids_from_uuid(*args, **kwargs): """ Returns: list_ (list): annot rowids RESTful: Method: GET URL: /api/annot/aids_from_uuid/ """ return manual_annot_funcs.get_annot_aids_from_uuid(*args, **kwargs)
[docs] def get_annot_missing_uuid(*args, **kwargs): """ Returns: list_ (list): a list of missing annot uuids RESTful: Method: GET URL: /api/annot/missing_uuid/ """ return manual_annot_funcs.get_annot_missing_uuid(*args, **kwargs)
[docs] def get_annot_aids_from_visual_uuid(*args, **kwargs): """ Args: visual_uuid_list (list): Returns: list: annot rowids RESTful: Method: GET URL: /api/annot/aids_from_visual_uuid/ """ return manual_annot_funcs.get_annot_aids_from_visual_uuid( *args, **kwargs)
[docs] def get_annot_bboxes(self, input_, *args, **kwargs): """ Returns: bbox_list (list): annotation bounding boxes in image space RESTful: Method: GET URL: /api/annot/bboxes/ """ return manual_annot_funcs.get_annot_bboxes( self, input_, *args, **kwargs)
[docs] def get_annot_class_labels(ibs, aid_list): """ DEPRICATE? Returns: list of tuples: identifying animal name and view RESTful: Method: GET URL: /api/annot/class_labels/ """ return manual_annot_funcs.get_annot_class_labels(ibs, aid_list)
[docs] def get_annot_detect_confidence(*args, **kwargs): """ Returns: list_ (list): a list confidences that the annotations is a valid detection RESTful: Method: GET URL: /api/annot/detect_confidence/ """ return manual_annot_funcs.get_annot_detect_confidence(*args, **kwargs)
[docs] def get_annot_exemplar_flags(*args, **kwargs): """ returns if an annotation is an exemplar Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: annot_exemplar_flag_list - True if annotation is an exemplar CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_exemplar_flags RESTful: Method: GET URL: /api/annot/exemplar_flags/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> # execute function >>> gid_list = get_annot_exemplar_flags(ibs, aid_list) >>> # verify results >>> result = str(gid_list) >>> print(result) """ return manual_annot_funcs.get_annot_exemplar_flags(*args, **kwargs)
[docs] def get_annot_gids(self, input_, *args, **kwargs): """ Get parent image rowids of annotations Args: aid_list (list): Returns: gid_list (list): image rowids RESTful: Method: GET URL: /api/annot/gids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> result = get_annot_gids(ibs, aid_list) >>> print(result) """ return manual_annot_funcs.get_annot_gids(self, input_, *args, **kwargs)
[docs] def get_annot_image_rowids(ibs, aid_list): """ """ return manual_annot_funcs.get_annot_image_rowids(ibs, aid_list)
[docs] def get_annot_imgsetids(self, input_, *args, **kwargs): """ Get parent image rowids of annotations Args: aid_list (list): Returns: imgsetid_list (list): imageset rowids RESTful: Method: GET URL: /api/annot/imgsetids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> result = get_annot_gids(ibs, aid_list) >>> print(result) """ return manual_annot_funcs.get_annot_imgsetids( self, input_, *args, **kwargs)
[docs] def get_annot_gar_rowids(*args, **kwargs): """ Auto-docstr for 'get_annot_gar_rowids' RESTful: Method: GET URL: /api/annot/gar_rowids/ """ return manual_annot_funcs.get_annot_gar_rowids(*args, **kwargs)
[docs] def get_annot_otherimage_aids(*args, **kwargs): """ Auto-docstr for 'get_annot_otherimage_aids' RESTful: Method: GET URL: /api/annot/otherimage_aids/ """ return manual_annot_funcs.get_annot_otherimage_aids(*args, **kwargs)
[docs] def get_annot_contact_aids(*args, **kwargs): """ Returns the other aids that appear in the same image that this annotation is from. Args: ibs (IBEISController): ibeis controller object aid_list (list): CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_contact_aids;1 RESTful: Method: GET URL: /api/annot/contact_aids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> # execute function >>> contact_aids = ibs.get_annot_contact_aids(aid_list) >>> # verify results >>> contact_gids = ibs.unflat_map(ibs.get_annot_gids, contact_aids) >>> gid_list = ibs.get_annot_gids(aid_list) >>> for gids, gid, aids, aid in zip(contact_gids, gid_list, contact_aids, aid_list): ... assert ut.allsame(gids), 'annots should be from same image' ... assert len(gids) == 0 or gids[0] == gid, 'and same image as parent annot' ... assert aid not in aids, 'should not include self' Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb2') >>> aid_list = ibs.get_valid_aids() >>> # execute function >>> contact_aids = ibs.get_annot_contact_aids(aid_list) >>> # verify results >>> contact_gids = ibs.unflat_map(ibs.get_annot_gids, contact_aids) >>> gid_list = ibs.get_annot_gids(aid_list) >>> print('contact_aids = %r' % (contact_aids,)) >>> for gids, gid, aids, aid in zip(contact_gids, gid_list, contact_aids, aid_list): ... assert ut.allsame(gids), 'annots should be from same image' ... assert len(gids) == 0 or gids[0] == gid, 'and same image as parent annot' ... assert aid not in aids, 'should not include self' """ return manual_annot_funcs.get_annot_contact_aids(*args, **kwargs)
[docs] def get_annot_num_contact_aids(*args, **kwargs): """ Auto-docstr for 'get_annot_num_contact_aids' RESTful: Method: GET URL: /api/annot/num_contact_aids/ """ return manual_annot_funcs.get_annot_num_contact_aids(*args, **kwargs)
[docs] def get_annot_groundfalse(*args, **kwargs): """ gets all annotations with different names Returns: groundfalse_list (list): a list of aids which are known to be different for each #Example: # >>> # ENABLE_DOCTEST # >>> import ibeis # >>> ibs = ibeis.opendb('PZ_MTEST') # >>> aid_list = ibs.get_valid_aids() # >>> is_exemplar, noself, daid_list = None, True, None # >>> groundfalse_list = ibs.get_annot_groundfalse(aid_list) # >>> result = str(groundtruth_list) # >>> print(result) RESTful: Method: GET URL: /api/annot/groundfalse/ """ return manual_annot_funcs.get_annot_groundfalse(*args, **kwargs)
[docs] def get_annot_groundtruth(*args, **kwargs): """ gets all annotations with the same names Args: aid_list (list): list of annotation rowids to get groundtruth of is_exemplar (None): noself (bool): daid_list (list): Returns: groundtruth_list (list): a list of aids with the same name foreach aid in aid_list. a set of aids belonging to the same name is called a groundtruth. A list of these is called a groundtruth_list. CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_groundtruth:0 python -m ibeis.control.manual_annot_funcs --test-get_annot_groundtruth:1 python -m ibeis.control.manual_annot_funcs --test-get_annot_groundtruth:2 python -m --tf get_annot_groundtruth:0 --db=PZ_Master0 --aids=97 --exec-mode RESTful: Method: GET URL: /api/annot/groundtruth/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ut.get_argval('--aids', list, ibs.get_valid_aids()) >>> is_exemplar, noself, daid_list = None, True, None >>> groundtruth_list = ibs.get_annot_groundtruth(aid_list, is_exemplar, noself, daid_list) >>> result = 'groundtruth_list = ' + str(groundtruth_list) >>> print(result) groundtruth_list = [[], [3], [2], [], [6], [5], [], [], [], [], [], [], []] Example1: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> is_exemplar, noself, daid_list = True, True, None >>> groundtruth_list = ibs.get_annot_groundtruth(aid_list, is_exemplar, noself, daid_list) >>> result = str(groundtruth_list) >>> print(result) [[], [3], [2], [], [6], [5], [], [], [], [], [], [], []] Example2: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> is_exemplar, noself, daid_list = False, False, aid_list >>> groundtruth_list = ibs.get_annot_groundtruth(aid_list, is_exemplar, noself, daid_list) >>> result = str(groundtruth_list) >>> print(result) [[1], [], [], [4], [], [], [], [], [9], [], [11], [], []] """ return manual_annot_funcs.get_annot_groundtruth(*args, **kwargs)
[docs] def get_annot_has_groundtruth(*args, **kwargs): """ Args: aid_list (list): is_exemplar (None): noself (bool): daid_list (list): Returns: list: has_gt_list CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_has_groundtruth RESTful: Method: GET URL: /api/annot/has_groundtruth/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> is_exemplar = None >>> noself = True >>> daid_list = None >>> has_gt_list = get_annot_has_groundtruth(ibs, aid_list, is_exemplar, noself, daid_list) >>> result = str(has_gt_list) >>> print(result) """ return manual_annot_funcs.get_annot_has_groundtruth(*args, **kwargs)
[docs] def get_annot_hashid_uuid(ibs, aid_list, prefix=u''): """ builds an aggregate random hash id for a list of aids RESTful: Method: GET URL: /api/annot/hashid_uuid/ """ return manual_annot_funcs.get_annot_hashid_uuid(ibs, aid_list, prefix)
[docs] def get_annot_hashid_visual_uuid( ibs, aid_list, prefix=u'', pathsafe=False): """ builds an aggregate visual hash id for a list of aids Args: _new (bool): Eventually we will change the hashing scheme and all old data will be invalidated. (default=False) RESTful: Method: GET URL: /api/annot/hashid_visual_uuid/ """ return manual_annot_funcs.get_annot_hashid_visual_uuid( ibs, aid_list, prefix, pathsafe)
[docs] def get_annot_hashid_semantic_uuid( ibs, aid_list, prefix=u'', pathsafe=False): """ builds an aggregate semantic hash id for a list of aids Args: ibs (ibeis.IBEISController): ibeis controller object aid_list (list): list of annotation rowids prefix (str): (default = '') _new (bool): Eventually we will change the hashing scheme and all old data will be invalidated. (default=False) Returns: str: semantic_uuid_hashid RESTful: Method: GET URL: /api/annot/hashid_semantic_uuid/ CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_hashid_semantic_uuid Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids()[0:2] >>> prefix = '' >>> semantic_uuid_hashid = get_annot_hashid_semantic_uuid(ibs, aid_list, prefix) >>> result = ut.list_str(ibs.get_annot_semantic_uuids(aid_list)) + '\n' >>> result += ('semantic_uuid_hashid = %s' % (str(semantic_uuid_hashid),)) >>> print(result) [ UUID('bf774bf3-582d-dbce-6ca6-329adeb086a6'), UUID('60f10a02-1bd1-c2b4-75bb-a34c0a4b6867'), ] semantic_uuid_hashid = _SUUIDS((2)biovwevqycuemoik) """ return manual_annot_funcs.get_annot_hashid_semantic_uuid( ibs, aid_list, prefix, pathsafe)
[docs] def get_annot_thetas(*args, **kwargs): """ Returns: theta_list (list): a list of floats describing the angles of each chip CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_thetas RESTful: Method: GET URL: /api/annot/thetas/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('NAUT_test') >>> aid_list = ibs.get_valid_aids() >>> result = get_annot_thetas(ibs, aid_list) >>> print(result) [2.75742, 0.792917, 2.53605, 2.67795, 0.946773, 2.56729] """ return manual_annot_funcs.get_annot_thetas(*args, **kwargs)
[docs] def get_annot_uuids(*args, **kwargs): """ Returns: list: annot_uuid_list a list of image uuids by aid RESTful: Method: GET URL: /api/annot/uuids/ """ return manual_annot_funcs.get_annot_uuids(*args, **kwargs)
[docs] def get_annot_semantic_uuids(*args, **kwargs): """ annot_semantic_uuid_list <- annot.annot_semantic_uuid[aid_list] gets data from the "native" column "annot_semantic_uuid" in the "annot" table Args: aid_list (list): Returns: list: annot_semantic_uuid_list CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_semantic_uuids RESTful: Method: GET URL: /api/annot/semantic_uuids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> ibs, qreq_ = testdata_ibs() >>> aid_list = ibs._get_all_aids()[0:1] >>> annot_semantic_uuid_list = ibs.get_annot_semantic_uuids(aid_list) >>> assert len(aid_list) == len(annot_semantic_uuid_list) >>> result = annot_semantic_uuid_list [UUID('bf774bf3-582d-dbce-6ca6-329adeb086a6')] [UUID('215ab5f9-fe53-d7d1-59b8-d6b5ce7e6ca6')] """ return manual_annot_funcs.get_annot_semantic_uuids(*args, **kwargs)
[docs] def get_annot_visual_uuids(*args, **kwargs): """ The image uuid, annotation verticies, are theta is hashted together to compute the visual uuid. The visual uuid does not include name or species information. annot_visual_uuid_list <- annot.annot_visual_uuid[aid_list] gets data from the "native" column "annot_visual_uuid" in the "annot" table Args: aid_list (list): Returns: list: annot_visual_uuid_list CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_visual_uuids RESTful: Method: GET URL: /api/annot/visual_uuids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> ibs, qreq_ = testdata_ibs() >>> aid_list = ibs._get_all_aids()[0:1] >>> annot_visual_uuid_list = ibs.get_annot_visual_uuids(aid_list) >>> assert len(aid_list) == len(annot_visual_uuid_list) >>> result = annot_visual_uuid_list [UUID('8687dcb6-1f1f-fdd3-8b72-8f36f9f41905')] [UUID('76de0416-7c92-e1b3-4a17-25df32e9c2b4')] """ return manual_annot_funcs.get_annot_visual_uuids(*args, **kwargs)
[docs] def get_annot_verts(*args, **kwargs): """ Returns: vert_list (list): the vertices that form the polygon of each chip RESTful: Method: GET URL: /api/annot/verts/ """ return manual_annot_funcs.get_annot_verts(*args, **kwargs)
[docs] def get_annot_rotated_verts(*args, **kwargs): """ Returns: rotated_vert_list (list): verticies after rotation by theta. RESTful: Method: GET URL: /api/annot/rotated_verts/ """ return manual_annot_funcs.get_annot_rotated_verts(*args, **kwargs)
[docs] def get_annot_yaws(*args, **kwargs): """ A yaw is the yaw of the annotation in radians Viewpoint yaw is inverted. Will be fixed soon. The following views have these angles of yaw: left side - 0.50 tau radians front side - 0.25 tau radians right side - 0.00 tau radians back side - 0.75 tau radians tau = 2 * pi SeeAlso: ibies.const.VIEWTEXT_TO_YAW_RADIANS Returns: yaw_list (list): the yaw (in radians) for the annotation CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_yaws RESTful: Method: GET URL: /api/annot/yaws/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[::3] >>> result = get_annot_yaws(ibs, aid_list) >>> print(result) [None, None, None, None, None] """ return manual_annot_funcs.get_annot_yaws(*args, **kwargs)
[docs] def get_annot_yaws_asfloat(*args, **kwargs): """ Ensures that Nones are returned as nans """ return manual_annot_funcs.get_annot_yaws_asfloat(*args, **kwargs)
[docs] def set_annot_yaws(*args, **kwargs): """ Sets the yaw of a list of chips by aid A yaw is the yaw of the annotation in radians Viewpoint yaw is inverted. Will be fixed soon. Note: The following views have these angles of yaw: left side - 0.00 tau radians front side - 0.25 tau radians right side - 0.50 tau radians back side - 0.75 tau radians (tau = 2 * pi) SeeAlso: ibies.const.VIEWTEXT_TO_YAW_RADIANS References: http://upload.wikimedia.org/wikipedia/commons/7/7e/Rollpitchyawplain.png RESTful: Method: PUT URL: /api/annot/yaws/ """ return manual_annot_funcs.set_annot_yaws(*args, **kwargs)
[docs] def get_annot_notes(*args, **kwargs): """ Returns: annotation_notes_list (list): a list of annotation notes RESTful: Method: GET URL: /api/annot/notes/ """ return manual_annot_funcs.get_annot_notes(*args, **kwargs)
[docs] def get_annot_num_groundtruth(*args, **kwargs): """ Returns: list_ (list): number of other chips with the same name RESTful: Method: GET URL: /api/annot/num_groundtruth/ CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_num_groundtruth python -m ibeis.control.manual_annot_funcs --test-get_annot_num_groundtruth:0 python -m ibeis.control.manual_annot_funcs --test-get_annot_num_groundtruth:1 Example1: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> noself = True >>> result = get_annot_num_groundtruth(ibs, aid_list, noself=noself) >>> print(result) [0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0] Example2: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> noself = False >>> result = get_annot_num_groundtruth(ibs, aid_list, noself=noself) >>> print(result) [1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1] """ return manual_annot_funcs.get_annot_num_groundtruth(*args, **kwargs)
[docs] def get_annot_num_verts(*args, **kwargs): """ Returns: nVerts_list (list): the number of vertices that form the polygon of each chip RESTful: Method: GET URL: /api/annot/num_verts/ """ return manual_annot_funcs.get_annot_num_verts(*args, **kwargs)
[docs] def get_annot_parent_aid(*args, **kwargs): """ Returns: list_ (list): a list of parent (in terms of parts) annotation rowids. RESTful: Method: GET URL: /api/annot/parent_aid/ """ return manual_annot_funcs.get_annot_parent_aid(*args, **kwargs)
[docs] def get_annot_name_rowids(self, input_, *args, **kwargs): """ Returns: list_ (list): the name id of each annotation. RESTful: Method: GET URL: /api/annot/name_rowids/ CommandLine: python -m ibeis.control.manual_annot_funcs --exec-get_annot_name_rowids Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> from ibeis import constants as const >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> distinguish_unknowns = True >>> nid_arr1 = np.array(ibs.get_annot_name_rowids(aid_list, distinguish_unknowns=distinguish_unknowns)) >>> nid_arr2 = np.array(ibs.get_annot_name_rowids(aid_list, distinguish_unknowns=False)) >>> nid_arr2 = np.array(ibs.get_annot_name_rowids(None, distinguish_unknowns=True)) >>> assert const.UNKNOWN_LBLANNOT_ROWID == 0 >>> assert np.all(nid_arr1[np.where(const.UNKNOWN_LBLANNOT_ROWID == nid_arr2)[0]] < 0) """ return manual_annot_funcs.get_annot_name_rowids( self, input_, *args, **kwargs)
[docs] def get_annot_nids(ibs, aid_list, distinguish_unknowns=True): """ alias RESTful: Method: GET URL: /api/annot/nids/ """ return manual_annot_funcs.get_annot_nids( ibs, aid_list, distinguish_unknowns)
[docs] def get_annot_names(*args, **kwargs): """ alias RESTful: Method: GET URL: /api/annot/names/ """ return manual_annot_funcs.get_annot_names(*args, **kwargs)
[docs] def get_annot_name_texts(*args, **kwargs): """ Args: aid_list (list): Returns: list or strs: name_list. e.g: ['fred', 'sue', ...] for each annotation identifying the individual RESTful: Method: GET URL: /api/annot/name_texts/ CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_name_texts Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[::2] >>> result = ut.list_str(get_annot_name_texts(ibs, aid_list), nl=False) >>> print(result) ['____', 'easy', 'hard', 'jeff', '____', '____', 'zebra'] """ return manual_annot_funcs.get_annot_name_texts(*args, **kwargs)
[docs] def get_annot_species(*args, **kwargs): """ alias RESTful: Method: GET URL: /api/annot/species/ """ return manual_annot_funcs.get_annot_species(*args, **kwargs)
[docs] def get_annot_species_texts(*args, **kwargs): """ Args: aid_list (list): Returns: list : species_list - a list of strings ['plains_zebra', 'grevys_zebra', ...] for each annotation identifying the species CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_species_texts Example1: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[1::3] >>> result = ut.list_str(get_annot_species_texts(ibs, aid_list), nl=False) >>> print(result) ['zebra_plains', 'zebra_plains', '____', 'bear_polar'] Example2: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('PZ_MTEST') >>> aid_list = ibs.get_valid_aids() >>> species_list = get_annot_species_texts(ibs, aid_list) >>> result = ut.list_str(list(set(species_list)), nl=False) >>> print(result) ['zebra_plains'] RESTful: Method: GET URL: /api/annot/species_texts/ """ return manual_annot_funcs.get_annot_species_texts(*args, **kwargs)
[docs] def get_annot_species_rowids(self, input_, *args, **kwargs): """ species_rowid_list <- annot.species_rowid[aid_list] gets data from the "native" column "species_rowid" in the "annot" table Args: aid_list (list): Returns: list: species_rowid_list RESTful: Method: GET URL: /api/annot/species_rowids/ """ return manual_annot_funcs.get_annot_species_rowids( self, input_, *args, **kwargs)
[docs] def get_annot_image_names(*args, **kwargs): """ Args: aid_list (list): Returns: list of strs: gname_list the image names of each annotation RESTful: Method: GET URL: /api/annot/image_names/ """ return manual_annot_funcs.get_annot_image_names(*args, **kwargs)
[docs] def get_annot_image_unixtimes(*args, **kwargs): """ Args: aid_list (list): Returns: list: unixtime_list RESTful: Method: GET URL: /api/annot/image_unixtimes/ """ return manual_annot_funcs.get_annot_image_unixtimes(*args, **kwargs)
[docs] def get_annot_image_unixtimes_asfloat(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object aid_list (list): list of annotation rowids Returns: list: unixtime_list CommandLine: python -m ibeis.control.manual_annot_funcs --exec-get_annot_image_unixtimes_asfloat --show --db PZ_MTEST Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs.get_valid_aids() >>> unixtime_list = get_annot_image_unixtimes_asfloat(ibs, aid_list) >>> result = ('unixtime_list = %s' % (str(unixtime_list),)) >>> print(result) >>> ut.quit_if_noshow() >>> import plottool as pt >>> ut.show_if_requested() """ return manual_annot_funcs.get_annot_image_unixtimes_asfloat( *args, **kwargs)
[docs] def get_annot_image_datetime(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object aid_list (int): list of annotation ids Returns: list: datetime_list CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_image_datetime Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> # execute function >>> datetime_list = get_annot_image_datetime(ibs, aid_list) >>> # verify results >>> result = str(datetime_list) >>> print(result) """ return manual_annot_funcs.get_annot_image_datetime(*args, **kwargs)
[docs] def get_annot_image_gps(*args, **kwargs): """ Args: aid_list (list): Returns: list: unixtime_list RESTful: Method: GET URL: /api/annot/image_gps/ """ return manual_annot_funcs.get_annot_image_gps(*args, **kwargs)
[docs] def get_annot_image_paths(*args, **kwargs): """ Args: aid_list (list): Returns: list of strs: gpath_list the image paths of each annotation RESTful: Method: GET URL: /api/annot/image_paths/ """ return manual_annot_funcs.get_annot_image_paths(*args, **kwargs)
[docs] def get_annot_image_uuids(*args, **kwargs): """ Args: aid_list (list): Returns: list: image_uuid_list CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_image_uuids --enableall RESTful: Method: GET URL: /api/annot/image_uuids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:1] >>> result = get_annot_image_uuids(ibs, aid_list) >>> print(result) [UUID('66ec193a-1619-b3b6-216d-1784b4833b61')] """ return manual_annot_funcs.get_annot_image_uuids(*args, **kwargs)
[docs] def get_annot_images(*args, **kwargs): """ Args: aid_list (list): Returns: list of ndarrays: the images of each annotation CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_images RESTful: Method: GET URL: /api/annot/images/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:1] >>> image_list = ibs.get_annot_images(aid_list) >>> result = str(map(np.shape, image_list)) >>> print(result) [(715, 1047, 3)] """ return manual_annot_funcs.get_annot_images(*args, **kwargs)
[docs] def get_annot_visual_uuid_info(ibs, aid_list): """ Returns information used to compute annotation UUID. The image uuid, annotation verticies, are theta is hashted together to compute the visual uuid. The visual uuid does not include name or species information. get_annot_visual_uuid_info Args: aid_list (list): Returns: tuple: visual_infotup (image_uuid_list, verts_list, theta_list) SeeAlso: get_annot_visual_uuids get_annot_semantic_uuid_info CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_visual_uuid_info RESTful: Method: GET URL: /api/annot/visual_uuid_info/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.algo.preproc.preproc_annot import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:2] >>> visual_infotup = ibs.get_annot_visual_uuid_info(aid_list) >>> result = str(list(zip(*visual_infotup))[0]) >>> print(result) (UUID('66ec193a-1619-b3b6-216d-1784b4833b61'), ((0, 0), (1047, 0), (1047, 715), (0, 715)), 0.0) """ return manual_annot_funcs.get_annot_visual_uuid_info(ibs, aid_list)
[docs] def get_annot_semantic_uuid_info(ibs, aid_list, _visual_infotup=None): """ Semenatic uuids are made up of visual and semantic information. Semantic information is name, species, viewpoint. Visual info is image uuid, verts, and theta Args: aid_list (list): _visual_infotup (tuple) : internal use only Returns: tuple: semantic_infotup (image_uuid_list, verts_list, theta_list, yaw_list, name_list, species_list) CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annot_semantic_uuid_info RESTful: Method: GET URL: /api/annot/semantic_uuid_info/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.algo.preproc.preproc_annot import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:2] >>> semantic_infotup = ibs.get_annot_semantic_uuid_info(aid_list) >>> result = str(list(zip(*semantic_infotup))[1]) >>> print(result) (UUID('d8903434-942f-e0f5-d6c2-0dcbe3137bf7'), ((0, 0), (1035, 0), (1035, 576), (0, 576)), 0.0, None, u'easy', u'zebra_plains') """ return manual_annot_funcs.get_annot_semantic_uuid_info( ibs, aid_list, _visual_infotup)
[docs] def update_annot_semantic_uuids(ibs, aid_list, _visual_infotup=None): """ Ensures that annots have the proper semantic uuids RESTful: Method: PUT URL: /api/annot/semantic_uuids/ """ return manual_annot_funcs.update_annot_semantic_uuids( ibs, aid_list, _visual_infotup)
[docs] def update_annot_visual_uuids(ibs, aid_list): """ Ensures that annots have the proper visual uuids Args: ibs (IBEISController): ibeis controller object aid_list (list): list of annotation rowids RESTful: Method: PUT URL: /api/annot/visual_uuids/ CommandLine: python -m ibeis.control.manual_annot_funcs --exec-update_annot_visual_uuids --db PZ_Master1 python -m ibeis --tf update_annot_visual_uuids --db PZ_Master1 python -m ibeis --tf update_annot_visual_uuids --db PZ_Master0 python -m ibeis --tf update_annot_visual_uuids --db PZ_MTEST Example: >>> # SCRIPT >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='testdb1') >>> aid_list = ibs._get_all_aids() >>> update_annot_visual_uuids(ibs, aid_list) """ return manual_annot_funcs.update_annot_visual_uuids(ibs, aid_list)
[docs] def set_annot_bboxes(*args, **kwargs): """ Sets bboxes of a list of annotations by aid, Args: aid_list (list of rowids): list of annotation rowids bbox_list (list of (x, y, w, h)): new bounding boxes for each aid Note: set_annot_bboxes is a proxy for set_annot_verts RESTful: Method: PUT URL: /api/annot/bboxes/ """ return manual_annot_funcs.set_annot_bboxes(*args, **kwargs)
[docs] def set_annot_detect_confidence(*args, **kwargs): """ Sets annotation notes RESTful: Method: PUT URL: /api/annot/detect_confidence/ """ return manual_annot_funcs.set_annot_detect_confidence(*args, **kwargs)
[docs] def set_annot_exemplar_flags(*args, **kwargs): """ Sets if an annotation is an exemplar RESTful: Method: PUT URL: /api/annot/exemplar_flags/ """ return manual_annot_funcs.set_annot_exemplar_flags(*args, **kwargs)
[docs] def set_annot_name_rowids(*args, **kwargs): """ name_rowid_list -> annot.name_rowid[aid_list] Sets names/nids of a list of annotations. Args: aid_list (list): name_rowid_list (list): RESTful: Method: PUT URL: /api/annot/name_rowids/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:2] >>> # check clean state >>> ut.assert_eq(ibs.get_annot_names(aid_list), ['____', 'easy']) >>> ut.assert_eq(ibs.get_annot_exemplar_flags(aid_list), [0, 1]) >>> # run function >>> name_list = ['easy', '____'] >>> name_rowid_list = ibs.get_name_rowids_from_text(name_list) >>> ibs.set_annot_name_rowids(aid_list, name_rowid_list) >>> # check results >>> ut.assert_eq(ibs.get_annot_names(aid_list), ['easy', '____']) >>> ut.assert_eq(ibs.get_annot_exemplar_flags(aid_list), [0, 0]) >>> # restore database state >>> ibs.set_annot_names(aid_list, ['____', 'easy']) >>> ibs.set_annot_exemplar_flags(aid_list, [0, 1]) >>> ut.assert_eq(ibs.get_annot_names(aid_list), ['____', 'easy']) >>> ut.assert_eq(ibs.get_annot_exemplar_flags(aid_list), [0, 1]) """ return manual_annot_funcs.set_annot_name_rowids(*args, **kwargs)
[docs] def set_annot_names(*args, **kwargs): """ Sets the attrlbl_value of type(INDIVIDUAL_KEY) Sets names/nids of a list of annotations. CommandLine: python -m ibeis.control.manual_annot_funcs --test-set_annot_names --enableall RESTful: Method: PUT URL: /api/annot/names/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids() >>> name_list1 = get_annot_names(ibs, aid_list) >>> name_list2 = [name + '_TESTAUG' for name in name_list1] >>> set_annot_names(ibs, aid_list, name_list2) >>> name_list3 = get_annot_names(ibs, aid_list) >>> set_annot_names(ibs, aid_list, name_list1) >>> name_list4 = get_annot_names(ibs, aid_list) >>> assert name_list2 == name_list3 >>> assert name_list4 == name_list1 >>> assert name_list4 != name_list2 >>> print(result) """ return manual_annot_funcs.set_annot_names(*args, **kwargs)
[docs] def set_annot_name_texts(*args, **kwargs): """ alias RESTful: Method: GET URL: /api/annot/names/ """ return manual_annot_funcs.set_annot_name_texts(*args, **kwargs)
[docs] def set_annot_species(*args, **kwargs): """ Sets species/speciesids of a list of annotations. Convenience function for set_annot_lblannot_from_value RESTful: Method: PUT URL: /api/annot/species/ """ return manual_annot_funcs.set_annot_species(*args, **kwargs)
[docs] def set_annot_species_and_notify(*args, **kwargs): """ """ return manual_annot_funcs.set_annot_species_and_notify(*args, **kwargs)
[docs] def set_annot_species_rowids(*args, **kwargs): """ species_rowid_list -> annot.species_rowid[aid_list] Sets species/speciesids of a list of annotations. Args: aid_list species_rowid_list RESTful: Method: PUT URL: /api/annot/species_rowids/ """ return manual_annot_funcs.set_annot_species_rowids(*args, **kwargs)
[docs] def set_annot_notes(*args, **kwargs): """ Sets annotation notes RESTful: Method: PUT URL: /api/annot/notes/ """ return manual_annot_funcs.set_annot_notes(*args, **kwargs)
[docs] def set_annot_parent_rowid(*args, **kwargs): """ Sets the annotation's parent aid. TODO DEPRICATE IN FAVOR OF SEPARATE PARTS TABLE RESTful: Method: PUT URL: /api/annot/parent_rowid/ """ return manual_annot_funcs.set_annot_parent_rowid(*args, **kwargs)
[docs] def set_annot_thetas(*args, **kwargs): """ Sets thetas of a list of chips by aid RESTful: Method: PUT URL: /api/annot/thetas/ """ return manual_annot_funcs.set_annot_thetas(*args, **kwargs)
[docs] def set_annot_verts(*args, **kwargs): """ Sets the vertices [(x, y), ...] of a list of chips by aid RESTful: Method: PUT URL: /api/annot/verts/ """ return manual_annot_funcs.set_annot_verts(*args, **kwargs)
[docs] def get_annot_probchip_fpath(*args, **kwargs): """ Returns paths to probability images. Args: ibs (IBEISController): ibeis controller object aid_list (list): list of annotation rowids config2_ (dict): (default = None) RESTful: Method: GET URL: /api/annot/probchip_fpath/ Returns: list: probchip_fpath_list CommandLine: python -m ibeis.control.manual_annot_funcs --exec-get_annot_probchip_fpath --show Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb(defaultdb='PZ_MTEST') >>> aid_list = ibs.get_valid_aids()[0:10] >>> config2_ = ibs.new_query_params({'fw_detector': 'cnn'}) >>> probchip_fpath_list = get_annot_probchip_fpath(ibs, aid_list, config2_) >>> result = ('probchip_fpath_list = %s' % (str(probchip_fpath_list),)) >>> print(result) >>> ut.quit_if_noshow() >>> import plottool as pt >>> iteract_obj = pt.interact_multi_image.MultiImageInteraction(probchip_fpath_list, nPerPage=4) >>> iteract_obj.start() >>> ut.show_if_requested() """ return manual_annot_funcs.get_annot_probchip_fpath(*args, **kwargs)
[docs] def get_annot_qualities(*args, **kwargs): """ annot_quality_list <- annot.annot_quality[aid_list] gets data from the "native" column "annot_quality" in the "annot" table Args: aid_list (list): Returns: list: annot_quality_list TemplateInfo: Tgetter_table_column col = annot_quality tbl = annot SeeAlso: ibeis.const.QUALITY_INT_TO_TEXT RESTful: Method: GET URL: /api/annot/qualities/ Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> ibs, qreq_ = testdata_ibs() >>> aid_list = ibs._get_all_aids() >>> eager = True >>> annot_quality_list = ibs.get_annot_qualities(aid_list, eager=eager) >>> print('annot_quality_list = %r' % (annot_quality_list,)) >>> assert len(aid_list) == len(annot_quality_list) """ return manual_annot_funcs.get_annot_qualities(*args, **kwargs)
[docs] def set_annot_qualities(*args, **kwargs): """ annot_quality_list -> annot.annot_quality[aid_list] A quality is an integer representing the following types: Args: aid_list annot_quality_list SeeAlso: ibeis.const.QUALITY_INT_TO_TEXT RESTful: Method: PUT URL: /api/annot/qualities/ """ return manual_annot_funcs.set_annot_qualities(*args, **kwargs)
[docs] def get_annot_quality_texts(*args, **kwargs): """ Auto-docstr for 'get_annot_quality_texts' RESTful: Method: GET URL: /api/annot/quality_texts/ """ return manual_annot_funcs.get_annot_quality_texts(*args, **kwargs)
[docs] def get_annot_isjunk(*args, **kwargs): """ Auto-docstr for 'get_annot_isjunk' RESTful: Method: GET URL: /api/annot/isjunk/ """ return manual_annot_funcs.get_annot_isjunk(*args, **kwargs)
[docs] def get_annot_yaw_texts(*args, **kwargs): """ Auto-docstr for 'get_annot_yaw_texts' RESTful: Method: GET URL: /api/annot/yaw_texts/ """ return manual_annot_funcs.get_annot_yaw_texts(*args, **kwargs)
[docs] def set_annot_quality_texts(ibs, aid_list, quality_text_list): """ Auto-docstr for 'set_annot_quality_texts' RESTful: Method: PUT URL: /api/annot/quality_texts/ """ return manual_annot_funcs.set_annot_quality_texts( ibs, aid_list, quality_text_list)
[docs] def set_annot_yaw_texts(ibs, aid_list, yaw_text_list): """ Auto-docstr for 'set_annot_yaw_texts' RESTful: Method: PUT URL: /api/annot/yaw_texts/ """ return manual_annot_funcs.set_annot_yaw_texts( ibs, aid_list, yaw_text_list)
[docs] def get_annot_sex(ibs, aid_list, eager=True, nInput=None): """ Auto-docstr for 'get_annot_sex' RESTful: Method: GET URL: /api/annot/sex/ """ return manual_annot_funcs.get_annot_sex(ibs, aid_list, eager, nInput)
[docs] def get_annot_sex_texts(ibs, aid_list, eager=True, nInput=None): """ Auto-docstr for 'get_annot_sex_texts' RESTful: Method: GET URL: /api/annot/sex_texts/ """ return manual_annot_funcs.get_annot_sex_texts( ibs, aid_list, eager, nInput)
[docs] def set_annot_sex(ibs, aid_list, name_sex_list, eager=True, nInput=None): """ Auto-docstr for 'set_annot_sex' RESTful: Method: PUT URL: /api/annot/sex/ """ return manual_annot_funcs.set_annot_sex( ibs, aid_list, name_sex_list, eager, nInput)
[docs] def set_annot_sex_texts( ibs, aid_list, name_sex_text_list, eager=True, nInput=None): """ Auto-docstr for 'set_annot_sex_texts' RESTful: Method: PUT URL: /api/annot/sex_texts/ """ return manual_annot_funcs.set_annot_sex_texts( ibs, aid_list, name_sex_text_list, eager, nInput)
[docs] def get_annot_age_months_est_min(ibs, aid_list, eager=True, nInput=None): """ annot_age_months_est_min_list <- annot.annot_age_months_est_min[aid_list] gets data from the "native" column "annot_age_months_est_min" in the "annot" table Args: aid_list (list): Returns: list: annot_age_months_est_min_list RESTful: Method: GET URL: /api/annot/age_months_est_min/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> aid_list = ibs._get_all_aids() >>> eager = True >>> annot_age_months_est_min_list = ibs.get_annot_age_months_est_min(aid_list, eager=eager) >>> assert len(aid_list) == len(annot_age_months_est_min_list) """ return manual_annot_funcs.get_annot_age_months_est_min( ibs, aid_list, eager, nInput)
[docs] def get_annot_age_months_est_max(ibs, aid_list, eager=True, nInput=None): """ annot_age_months_est_max_list <- annot.annot_age_months_est_max[aid_list] gets data from the "native" column "annot_age_months_est_max" in the "annot" table Args: aid_list (list): Returns: list: annot_age_months_est_max_list RESTful: Method: GET URL: /api/annot/age_months_est_max/ Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> aid_list = ibs._get_all_aids() >>> eager = True >>> annot_age_months_est_max_list = ibs.get_annot_age_months_est_max(aid_list, eager=eager) >>> assert len(aid_list) == len(annot_age_months_est_max_list) """ return manual_annot_funcs.get_annot_age_months_est_max( ibs, aid_list, eager, nInput)
[docs] def get_annot_age_months_est(ibs, aid_list, eager=True, nInput=None): """ annot_age_months_est_list <- annot.annot_age_months_est[aid_list] gets data from the annotation's native age in months Args: aid_list (list): Returns: list: annot_age_months_est_list RESTful: Method: GET URL: /api/annot/age_months_est/ """ return manual_annot_funcs.get_annot_age_months_est( ibs, aid_list, eager, nInput)
[docs] def get_annot_age_months_est_min_texts( ibs, aid_list, eager=True, nInput=None): """ annot_age_months_est_min_texts_list <- annot.annot_age_months_est_min_texts[aid_list] gets string versions of the annotation's native min age in months Args: aid_list (list): Returns: list: annot_age_months_est_min_list RESTful: Method: GET URL: /api/annot/age_months_est_min_texts/ """ return manual_annot_funcs.get_annot_age_months_est_min_texts( ibs, aid_list, eager, nInput)
[docs] def get_annot_age_months_est_max_texts( ibs, aid_list, eager=True, nInput=None): """ annot_age_months_est_max_texts_list <- annot.annot_age_months_est_max_texts[aid_list] gets string versions of the annotation's native max age in months Args: aid_list (list): Returns: list: annot_age_months_est_max_list RESTful: Method: GET URL: /api/annot/age_months_est_max_texts/ """ return manual_annot_funcs.get_annot_age_months_est_max_texts( ibs, aid_list, eager, nInput)
[docs] def get_annot_age_months_est_texts(ibs, aid_list, eager=True, nInput=None): """ annot_age_months_est_texts_list <- annot.annot_age_months_est_texts[aid_list] gets string versions of the annotation's native combined age in months Args: aid_list (list): Returns: list: annot_age_months_est_text_list RESTful: Method: GET URL: /api/annot/age_months_est_texts/ """ return manual_annot_funcs.get_annot_age_months_est_texts( ibs, aid_list, eager, nInput)
[docs] def set_annot_age_months_est_min( ibs, aid_list, annot_age_months_est_min_list, duplicate_behavior=u'error'): """ annot_age_months_est_min_list -> annot.annot_age_months_est_min[aid_list] Args: aid_list annot_age_months_est_min_list TemplateInfo: Tsetter_native_column tbl = annot col = annot_age_months_est_min RESTful: Method: PUT URL: /api/annot/age_months_est_min/ """ return manual_annot_funcs.set_annot_age_months_est_min( ibs, aid_list, annot_age_months_est_min_list, duplicate_behavior)
[docs] def set_annot_age_months_est_max( ibs, aid_list, annot_age_months_est_max_list, duplicate_behavior=u'error'): """ annot_age_months_est_max_list -> annot.annot_age_months_est_max[aid_list] Args: aid_list annot_age_months_est_max_list TemplateInfo: Tsetter_native_column tbl = annot col = annot_age_months_est_max RESTful: Method: PUT URL: /api/annot/age_months_est_max/ """ return manual_annot_funcs.set_annot_age_months_est_max( ibs, aid_list, annot_age_months_est_max_list, duplicate_behavior)
[docs] def get_annot_image_contributor_tag(*args, **kwargs): """ Auto-docstr for 'get_annot_image_contributor_tag' RESTful: Method: GET URL: /api/annot/image_contributor_tag/ """ return manual_annot_funcs.get_annot_image_contributor_tag( *args, **kwargs)
[docs] def get_annot_rowids_from_partial_vuuids(*args, **kwargs): """ Args: ibs (IBEISController): ibeis controller object partial_uuid_list (list): CommandLine: python -m ibeis.control.manual_annot_funcs --test-get_annots_from_partial_uuids Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[::2] >>> vuuids = ibs.get_annot_visual_uuids(aid_list) >>> partial_vuuid_strs = [u[0:4] for u in map(str, vuuids)] >>> aids_list = get_annot_rowids_from_partial_vuuids(ibs, partial_uuid_list) >>> print(result) [[1], [3], [5], [7], [9], [11], [13]] """ return manual_annot_funcs.get_annot_rowids_from_partial_vuuids( *args, **kwargs)
[docs] def get_annot_tag_text(*args, **kwargs): """ annot_tags_list <- annot.annot_tags[aid_list] gets data from the "native" column "annot_tags" in the "annot" table Args: aid_list (list): Returns: list: annot_tags_list Example: >>> # DISABLE_DOCTEST >>> from ibeis.control.manual_annot_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> aid_list = ibs._get_all_aids() >>> eager = True >>> annot_tags_list = ibs.get_annot_tag_text(aid_list, eager=eager) >>> assert len(aid_list) == len(annot_tags_list) """ return manual_annot_funcs.get_annot_tag_text(*args, **kwargs)
[docs] def set_annot_tag_text(*args, **kwargs): """ annot_tags_list -> annot.annot_tags[aid_list] Args: aid_list annot_tags_list """ return manual_annot_funcs.set_annot_tag_text(*args, **kwargs)
[docs] def delete_annot_feats(*args, **kwargs): """ annot.feat.delete(aid_list) Args: aid_list TemplateInfo: Tdeleter_rl_depenant root = annot leaf = feat CommandLine: python -m ibeis.control.manual_feat_funcs --test-delete_annot_feats python -m ibeis.control.manual_feat_funcs --test-delete_annot_feats --verb-control Example: >>> # ENABLE_DOCTEST >>> from ibeis.control.manual_feat_funcs import * # NOQA >>> ibs, config2_ = testdata_ibs() >>> aid_list = ibs._get_all_aids()[:1] >>> fids_list = ibs.get_annot_feat_rowids(aid_list, config2_=config2_, ensure=True) >>> num_deleted1 = ibs.delete_annot_feats(aid_list, config2_=config2_) >>> ut.assert_eq(num_deleted1, len(fids_list)) >>> num_deleted2 = ibs.delete_annot_feats(aid_list, config2_=config2_) >>> ut.assert_eq(num_deleted2, 0) """ return manual_feat_funcs.delete_annot_feats(*args, **kwargs)
[docs] def get_annot_feat_rowids(*args, **kwargs): """ """ return manual_feat_funcs.get_annot_feat_rowids(*args, **kwargs)
[docs] def get_annot_kpts(self, input_, *args, **kwargs): """ Args: aid_list (int): list of annotation ids ensure (bool): eager evaluation if True eager (bool): nInput (None): config2_ (QueryRequest): query request object with hyper-parameters Returns: kpts_list (list): annotation descriptor keypoints CommandLine: python -m ibeis.control.manual_feat_funcs --test-get_annot_kpts --show python -m ibeis.control.manual_feat_funcs --test-get_annot_kpts --show --darken .9 python -m ibeis.control.manual_feat_funcs --test-get_annot_kpts --show --darken .9 --verbose python -m ibeis.control.manual_feat_funcs --test-get_annot_kpts --show --darken .9 --verbose --no-affine-invariance python -m ibeis.control.manual_feat_funcs --test-get_annot_kpts --show --darken .9 --verbose --no-affine-invariance --scale_max=20 python -m ibeis.control.manual_feat_funcs --test-get_annot_kpts --show --feat_type=hesaff+siam128 ipython -i -- --show --feat_type=hesaff+siam128 Example: >>> # SLOW_DOCTEST >>> from ibeis.control.manual_feat_funcs import * # NOQA >>> import vtool as vt >>> import numpy as np >>> import ibeis >>> import ibeis.viz.interact >>> # build test data >>> qreq1_ = ibeis.testdata_qreq_(defaultdb='testdb1', p=['default:RI=True']) >>> qreq2_ = ibeis.testdata_qreq_(defaultdb='testdb1', p=['default:RI=False']) >>> ibs = qreq1_.ibs >>> aid_list = qreq1_.get_external_qaids() >>> with ut.Indenter('[TEST_GET_ANNOT_KPTS]'): ... print('qreq1 params: ' + qreq1_.qparams.feat_cfgstr) ... print('qreq2 params: ' + qreq2_.qparams.feat_cfgstr) ... print('id(qreq1): ' + str(id(qreq1_))) ... print('id(qreq2): ' + str(id(qreq2_))) ... #print('feat_config_rowid1 = %r' % (ibs.get_feat_config_rowid(config2_=qreq1_.get_external_query_config2()),)) ... #print('feat_config_rowid2 = %r' % (ibs.get_feat_config_rowid(config2_=qreq2_.get_external_query_config2()),)) >>> # Force recomputation of features >>> with ut.Indenter('[DELETE1]'): ... ibs.delete_annot_feats(aid_list, config2_=qreq1_.get_external_query_config2()) >>> with ut.Indenter('[DELETE2]'): ... ibs.delete_annot_feats(aid_list, config2_=qreq2_.get_external_query_config2()) >>> eager, ensure, nInput = True, True, None >>> # execute function >>> with ut.Indenter('[GET1]'): ... kpts1_list = get_annot_kpts(ibs, aid_list, ensure, eager, nInput, qreq1_.get_external_query_config2()) >>> with ut.Indenter('[GET2]'): ... kpts2_list = get_annot_kpts(ibs, aid_list, ensure, eager, nInput, qreq2_.get_external_query_config2()) >>> # verify results >>> assert not np.all(vt.get_oris(kpts1_list[0]) == 0) >>> assert np.all(vt.get_oris(kpts2_list[0]) == 0) >>> ut.quit_if_noshow() >>> #ibeis.viz.viz_chip.show_chip(ibs, aid_list[0], config2_=qreq1_, ori=True) >>> ibeis.viz.interact.interact_chip.ishow_chip(ibs, aid_list[0], config2_=qreq1_.get_external_query_config2(), ori=True, fnum=1) >>> ibeis.viz.interact.interact_chip.ishow_chip(ibs, aid_list[0], config2_=qreq2_.get_external_query_config2(), ori=True, fnum=2) >>> ut.show_if_requested() """ return manual_feat_funcs.get_annot_kpts(self, input_, *args, **kwargs)
[docs] def get_annot_vecs(*args, **kwargs): """ Returns: vecs_list (list): annotation descriptor vectors """ return manual_feat_funcs.get_annot_vecs(*args, **kwargs)
[docs] def get_annot_num_feats(*args, **kwargs): """ Args: aid_list (list): Returns: nFeats_list (list): num descriptors per annotation CommandLine: python -m ibeis.control.manual_feat_funcs --test-get_annot_num_feats Example: >>> # ENABLE_DOCTEST >>> # this test might fail on different machines due to >>> # determenism bugs in hesaff maybe? or maybe jpeg... >>> # in which case its hopeless >>> from ibeis.control.manual_feat_funcs import * # NOQA >>> import ibeis >>> ibs = ibeis.opendb('testdb1') >>> aid_list = ibs.get_valid_aids()[0:3] >>> config2_ = {'dim_size': 450, 'resize_dim': 'area'} >>> nFeats_list = get_annot_num_feats(ibs, aid_list, ensure=True, config2_=config2_) >>> print('nFeats_list = %r' % (nFeats_list,)) >>> assert len(nFeats_list) == 3 >>> ut.assert_inbounds(nFeats_list[0], 1200, 1258) >>> ut.assert_inbounds(nFeats_list[1], 900, 922) >>> ut.assert_inbounds(nFeats_list[2], 1300, 1343) """ return manual_feat_funcs.get_annot_num_feats(*args, **kwargs)
[docs] def get_glr_confidence(*args, **kwargs): """ Returns: list_ (list): confidence in an image relationship """ return manual_lblimage_funcs.get_glr_confidence(*args, **kwargs)
[docs] def get_glr_lblimage_rowids(*args, **kwargs): """ get the lblimage_rowid belonging to each relationship """ return manual_lblimage_funcs.get_glr_lblimage_rowids(*args, **kwargs)
[docs] def get_glr_image_rowids(*args, **kwargs): """ get the image_rowid belonging to each relationship """ return manual_lblimage_funcs.get_glr_image_rowids(*args, **kwargs)
[docs] def get_glr_config_rowid(*args, **kwargs): """ Returns: list_ (list): config_rowid in an image relationship """ return manual_lblimage_funcs.get_glr_config_rowid(*args, **kwargs)
[docs] def add_lblimages(*args, **kwargs): """ Adds new lblimages (labels of imageations) creates a new uuid for any new pair(type, value) #TODO: reverse order of rowid_list value_list in input """ return manual_lblimage_funcs.add_lblimages(*args, **kwargs)
[docs] def get_lblimage_rowid_from_superkey(*args, **kwargs): """ Returns: list_ (list): lblimage_rowid_list from the superkey (lbltype, value) """ return manual_lblimage_funcs.get_lblimage_rowid_from_superkey( *args, **kwargs)
[docs] def get_lblimage_rowid_from_uuid(*args, **kwargs): """ Returns: list_ (list): lblimage_rowid_list from the superkey (lbltype, value) """ return manual_lblimage_funcs.get_lblimage_rowid_from_uuid( *args, **kwargs)
[docs] def get_lblimage_uuids(*args, **kwargs): """ """ return manual_lblimage_funcs.get_lblimage_uuids(*args, **kwargs)
[docs] def get_lblimage_lbltypes_rowids(*args, **kwargs): """ """ return manual_lblimage_funcs.get_lblimage_lbltypes_rowids( *args, **kwargs)
[docs] def get_lblimage_notes(*args, **kwargs): """ """ return manual_lblimage_funcs.get_lblimage_notes(*args, **kwargs)
[docs] def get_lblimage_values(*args, **kwargs): """ Returns: list_ (list): text lblimages """ return manual_lblimage_funcs.get_lblimage_values(*args, **kwargs)
[docs] def get_lblimage_gids(ibs, lblimage_rowid_list): """ """ return manual_lblimage_funcs.get_lblimage_gids( ibs, lblimage_rowid_list)
[docs] def add_image_relationship_one(*args, **kwargs): """ Adds a relationship between images and lblimages (imageations and labels of imageations) """ return manual_lblimage_funcs.add_image_relationship_one( *args, **kwargs)
[docs] def get_glrid_from_superkey(*args, **kwargs): """ Args: gid_list (list): list of image row-ids lblimage_rowid_list (list): list of lblimage row-ids config_rowid_list (list): list of config row-ids Returns: glrid_list (list): image-label relationship id list """ return manual_lblimage_funcs.get_glrid_from_superkey(*args, **kwargs)
[docs] def get_image_glrids(*args, **kwargs): """ FIXME: __name__ Get all the relationship ids belonging to the input images if lblimage lbltype is specified the relationship ids are filtered to be only of a specific lbltype/category/type """ return manual_lblimage_funcs.get_image_glrids(*args, **kwargs)
[docs] def get_annot_featweight_rowids( ibs, aid_list, config2_=None, ensure=True, eager=True, nInput=None): """ """ return manual_featweight_funcs.get_annot_featweight_rowids( ibs, aid_list, config2_, ensure, eager, nInput)
[docs] def get_annot_fgweights(ibs, aid_list, config2_=None, ensure=True): """ """ return manual_featweight_funcs.get_annot_fgweights( ibs, aid_list, config2_, ensure)