# -*- 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 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_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_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 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 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 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)
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_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)