wbia.control package

Submodules

wbia.control.DB_SCHEMA module

Module Licence and docstring

TODO: ideally the wbia.constants module would not be used here and each function would use its own constant variables that are suffixed with the last version number that they existed in

Todo

Add a table for original_image_path Add column for image exif orientation

CommandLine:
python -m wbia.control.DB_SCHEMA –test-autogen_db_schema
wbia.control.DB_SCHEMA.VALID_VERSIONS = {'0.0.0': (None, None, None), '1.0.0': (None, <function update_1_0_0>, <function post_1_0_0>), '1.0.1': (None, <function update_1_0_1>, None), '1.0.2': (None, <function update_1_0_2>, None), '1.1.0': (None, <function update_1_1_0>, None), '1.1.1': (None, <function update_1_1_1>, None), '1.2.0': (None, <function update_1_2_0>, <function post_1_2_0>), '1.2.1': (None, <function update_1_2_1>, <function post_1_2_1>), '1.3.0': (None, <function update_1_3_0>, None), '1.3.1': (<function pre_1_3_1>, <function update_1_3_1>, None), '1.3.2': (None, <function update_1_3_2>, None), '1.3.3': (None, <function update_1_3_3>, None), '1.3.4': (None, <function update_1_3_4>, <function post_1_3_4>), '1.3.5': (None, <function update_1_3_5>, None), '1.3.6': (None, <function update_1_3_6>, None), '1.3.7': (None, <function update_1_3_7>, None), '1.3.8': (None, <function update_1_3_8>, None), '1.3.9': (None, <function update_1_3_9>, None), '1.4.0': (None, <function update_1_4_0>, None), '1.4.1': (None, <function update_1_4_1>, None), '1.4.2': (None, <function update_1_4_2>, None), '1.4.3': (None, <function update_1_4_3>, None), '1.4.4': (None, <function update_1_4_4>, None), '1.4.5': (None, <function update_1_4_5>, None), '1.4.6': (None, <function update_1_4_6>, None), '1.4.7': (None, <function update_1_4_7>, <function post_1_4_7>), '1.4.8': (<function pre_1_4_8>, <function update_1_4_8>, None), '1.4.9': (<function pre_1_4_9>, <function update_1_4_9>, <function post_1_4_9>), '1.5.0': (None, <function update_1_5_0>, None), '1.5.1': (None, <function update_1_5_1>, None), '1.5.2': (None, <function update_1_5_2>, <function post_1_5_2>), '1.5.3': (None, <function update_1_5_3>, None), '1.5.4': (None, <function update_1_5_4>, None), '1.5.5': (None, <function update_1_5_5>, None), '1.6.0': (None, <function update_1_6_0>, None), '1.6.1': (None, <function update_1_6_1>, <function post_1_6_1>), '1.6.2': (None, <function update_1_6_2>, None), '1.6.3': (None, <function update_1_6_3>, None), '1.6.4': (None, <function update_1_6_4>, <function post_1_6_4>), '1.6.5': (None, <function update_1_6_5>, None), '1.6.6': (None, <function update_1_6_6>, None), '1.6.7': (None, <function update_1_6_7>, None), '1.6.8': (None, <function update_1_6_8>, None), '1.6.9': (None, <function update_1_6_9>, None), '1.7.0': (None, <function update_1_7_0>, <function post_1_7_0>), '1.7.1': (None, <function update_1_7_1>, None), '1.8.0': (None, <function update_1_8_0>, None), '1.8.1': (None, <function update_1_8_1>, None), '1.8.2': (None, <function update_1_8_2>, None), '1.8.3': (None, <function update_1_8_3>, None), '2.0.0': (None, <function update_2_0_0>, None)}

When updating versions need to test and modify in IBEISController._init_sqldbcore

Type:SeeAlso
wbia.control.DB_SCHEMA.autogen_db_schema()[source]
CommandLine:
python -m wbia.control.DB_SCHEMA –test-autogen_db_schema python -m wbia.control.DB_SCHEMA –test-autogen_db_schema –diff=1 python -m wbia.control.DB_SCHEMA –test-autogen_db_schema -n=-1 python -m wbia.control.DB_SCHEMA –test-autogen_db_schema -n=0 python -m wbia.control.DB_SCHEMA –test-autogen_db_schema -n=1 python -m wbia.control.DB_SCHEMA –force-incremental-db-update python -m wbia.control.DB_SCHEMA –test-autogen_db_schema –write python -m wbia.control.DB_SCHEMA –test-autogen_db_schema –force-incremental-db-update –dump-autogen-schema python -m wbia.control.DB_SCHEMA –test-autogen_db_schema –force-incremental-db-update

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.DB_SCHEMA import *  # NOQA
>>> autogen_db_schema()
wbia.control.DB_SCHEMA.dump_schema_sql()[source]
CommandLine:
python -m wbia.control.DB_SCHEMA dump_schema_sql
wbia.control.DB_SCHEMA.post_1_0_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.post_1_2_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.post_1_2_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.post_1_3_4(db, ibs=None)[source]
wbia.control.DB_SCHEMA.post_1_4_7(db, ibs=None)[source]
wbia.control.DB_SCHEMA.post_1_4_9(db, ibs=None)[source]
wbia.control.DB_SCHEMA.post_1_5_2(db, ibs=None, verbose=False)[source]
wbia.control.DB_SCHEMA.post_1_6_1(db, ibs=None, verbose=False)[source]
wbia.control.DB_SCHEMA.post_1_6_4(db, ibs=None)[source]
wbia.control.DB_SCHEMA.post_1_7_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.pre_1_3_1(db, ibs=None)[source]

need to ensure that visual uuid columns are unique before we add that constaint to sql. This will remove any annotations that are not unique

wbia.control.DB_SCHEMA.pre_1_4_8(db, ibs=None)[source]
Parameters:ibs (wbia.IBEISController) –
wbia.control.DB_SCHEMA.pre_1_4_9(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_0_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_0_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_0_2(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_1_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_1_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_2_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_2_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_3_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_3_1(db, ibs=None)[source]

update the visual_uuid to be a superkey by adding a constraint

wbia.control.DB_SCHEMA.update_1_3_2(db, ibs=None)[source]

for SMART DATA

wbia.control.DB_SCHEMA.update_1_3_3(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_3_4(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_3_5(db, ibs=None)[source]

expand datasets to use new quality measures

wbia.control.DB_SCHEMA.update_1_3_6(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_3_7(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_3_8(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_3_9(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_2(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_3(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_4(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_5(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_6(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_7(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_4_8(db, ibs=None)[source]

change notes to tag_text_data add configuration that made the match add the score of the match add concept of: DEFINIATELY MATCHES, DOES NOT MATCH, CAN NOT DECIDE

Probably want a separate table for the config_rowid matching results because the primary key needs to be (config_rowid, aid1, aid2) OR just (config_rowid, annotmatch_rowid)

wbia.control.DB_SCHEMA.update_1_4_9(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_5_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_5_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_5_2(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_5_3(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_5_4(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_5_5(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_2(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_3(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_4(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_5(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_6(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_7(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_8(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_6_9(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_7_0(db, ibs=None)[source]
Ignore:
import wbia ibs = wbia.opendb(‘testdb1’) ibs.annots().yaws ibs.annots().viewpoint_int codes = ibs.annots().viewpoint_code texts = [‘unknown’ if y is None else y for y in ibs.annots().yaw_texts] assert codes == texts
wbia.control.DB_SCHEMA.update_1_7_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_8_0(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_8_1(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_8_2(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_1_8_3(db, ibs=None)[source]
wbia.control.DB_SCHEMA.update_2_0_0(db, ibs=None)[source]

wbia.control.DB_SCHEMA_CURRENT module

AUTOGENERATED ON 10:14:54 2019/07/09 AutogenCommandLine:

python -m wbia.control.DB_SCHEMA –test-autogen_db_schema –force-incremental-db-update –write python -m wbia.control.DB_SCHEMA –test-autogen_db_schema –force-incremental-db-update –diff=1 python -m wbia.control.DB_SCHEMA –test-autogen_db_schema –force-incremental-db-update
wbia.control.DB_SCHEMA_CURRENT.update_current(db, ibs=None)[source]

wbia.control.IBEISControl module

This module contains the definition of IBEISController. This object allows access to a single database. Construction of this object should be done using wbia.opendb().

Todo

Module Licence and docstring

load plugin logic:
  • known plugin list - plugin_register.txt / dirs/symlinks in plugin folder
  • disabled flags
  • try import && register
  • except flag errored
  • init db
  • check versioning / update
  • (determine plugin import ordering?)
  • inject and initialize plugins

Note

There are functions that are injected into the controller that are not
defined in this module.
Functions in the IBEISController have been split up into several
submodules.
look at the modules listed in autogenmodname_list to see the full list of
functions that will be injected into an IBEISController object
Recently, these functions have been enumerated in
wbia.control._autogen_explicit_controller.py, and explicitly added to the

controller using subclassing. This submodule only provides function headers, the source code still

resides in the injected modules.
class wbia.control.IBEISControl.IBEISController(dbdir=None, ensure=True, wbaddr=None, verbose=True, request_dbversion=None, request_stagingversion=None, force_serial=None)[source]

Bases: object

IBEISController docstring

NameingConventions:
chip - cropped region of interest in an image, maps to one animal cid - chip unique id gid - image unique id (could just be the relative file path) name - name unique id imgsetid - imageset unique id aid - region of interest unique id annot - an annotation i.e. region of interest for a chip theta - angle of rotation for a chip
backup_database()[source]
base_uri

Base database URI without a specific database name

cleanup()[source]

call on del?

clear_table_cache(tablename=None)[source]
clone_handle(**kwargs)[source]
copy_database(dest_dbdir)[source]
daily_backup_database()[source]
disconnect_sqldatabase()[source]
dump_database_csv()[source]
ensure_directories()[source]

Makes sure the core directores for the controller exist

get_big_cachedir()[source]
Returns:
database directory where aggregate results are
stored
Return type:bigcachedir (str)
get_cachedir()[source]

database directory of all cached files

get_cachestats_str()[source]

Returns info about the underlying SQL cache memory

get_chipdir()[source]
get_current_log_text()[source]

Example

>>> # xdoctest: +REQUIRES(--web-tests)
>>> import wbia
>>> with wbia.opendb_with_web('testdb1') as (ibs, client):
...     resp = client.get('/log/current/')
>>> resp.json
{'status': {'success': True, 'code': 200, 'message': '', 'cache': -1}, 'response': None}
get_database_icon(max_dsize=(None, 192), aid=None)[source]
Parameters:max_dsize (tuple) – (default = (None, 192))
Returns:None
Return type:None
CommandLine:
python -m wbia.control.IBEISControl –exec-get_database_icon –show python -m wbia.control.IBEISControl –exec-get_database_icon –show –db Oxford

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> icon = self.get_database_icon()
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> pt.imshow(icon)
>>> ut.show_if_requested()
get_db_cache_path()[source]
get_db_core_path()[source]
get_db_init_uuid()[source]
Returns:The SQLDatabaseController’s initialization UUID
Return type:UUID
RESTful:
Method: GET URL: /api/core/db/uuid/init/
get_db_name()[source]

Alias for self.get_dbname().

get_db_numbers()[source]
get_db_staging_path()[source]
get_dbdir()[source]

database dir with ibs internal directory

get_dbinfo()[source]
get_dbname()[source]
Returns:database name
Return type:list_ (list)
RESTful:
Method: GET URL: /api/core/db/name/
get_detect_modeldir()[source]
get_detectimg_cachedir()[source]
Returns:
database directory of image resized for
detections
Return type:detectimgdir (str)
get_fig_dir()[source]

ibs internal directory

get_flann_cachedir()[source]
Returns:
database directory where the FLANN KD-Tree is
stored
Return type:flanndir (str)
get_ibsdir()[source]

ibs internal directory

get_imgdir()[source]

ibs internal directory

get_logdir_global(local=False)[source]
get_logdir_local()[source]
get_match_thumbdir()[source]
get_neighbor_cachedir()[source]
get_probchip_dir()[source]
get_qres_cachedir()[source]
Returns:database directory where query results are stored
Return type:qresdir (str)
get_shelves_path()[source]
get_smart_patrol_dir(ensure=True)[source]
Parameters:ensure (bool) –
Returns:str smart_patrol_dpath
CommandLine:
python -m wbia.control.IBEISControl –test-get_smart_patrol_dir

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> ensure = True
>>> # execute function
>>> smart_patrol_dpath = ibs.get_smart_patrol_dir(ensure)
>>> # verify results
>>> ut.assertpath(smart_patrol_dpath, verbose=True)
get_thumbdir()[source]

database directory where thumbnails are cached

get_trashdir()[source]
get_uploadsdir()[source]

ibs internal directory

get_wbia_resource_dir()[source]

returns the global resource dir in .config or AppData or whatever

get_web_port_via_scan(url_base='127.0.0.1', port_base=5000, scan_limit=100, verbose=True)[source]
get_workdir()[source]

directory where databases are saved to

is_using_postgres_db

Indicates whether this controller is using postgres as the database

load_plugin_module(module)[source]
make_cache_db_uri(name)[source]

Given a name of the cache produce a database connection URI

notify_observers()[source]
predict_ws_injury_interim_svm(aids)[source]
print_cachestats_str()[source]
register_controller()[source]

registers controller with global list

register_observer(observer)[source]
remove_observer(observer)[source]
reset_table_cache()[source]
rrr(verbose=True, reload_module=True)

special class reloading function This function is often injected as rrr of classes

show_depc_annot_graph(*args, **kwargs)[source]
CommandLine:
python -m wbia.control.IBEISControl –test-show_depc_annot_graph –show python -m wbia.control.IBEISControl –test-show_depc_annot_graph –show –reduced

Example

>>> # SCRIPT
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia  # NOQA
>>> ibs = wbia.opendb('testdb1')
>>> reduced = ut.get_argflag('--reduced')
>>> ibs.show_depc_annot_graph(reduced=reduced)
>>> ut.show_if_requested()
show_depc_annot_table_input(tablename, *args, **kwargs)[source]
CommandLine:
python -m wbia.control.IBEISControl –test-show_depc_annot_table_input –show –tablename=vsone python -m wbia.control.IBEISControl –test-show_depc_annot_table_input –show –tablename=neighbor_index python -m wbia.control.IBEISControl –test-show_depc_annot_table_input –show –tablename=feat_neighbs –testmode

Example

>>> # SCRIPT
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia  # NOQA
>>> ibs = wbia.opendb('testdb1')
>>> tablename = ut.get_argval('--tablename')
>>> ibs.show_depc_annot_table_input(tablename)
>>> ut.show_if_requested()
show_depc_graph(depc, reduced=False)[source]
show_depc_image_graph(**kwargs)[source]
CommandLine:
python -m wbia.control.IBEISControl –test-show_depc_image_graph –show python -m wbia.control.IBEISControl –test-show_depc_image_graph –show –reduced

Example

>>> # SCRIPT
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia  # NOQA
>>> ibs = wbia.opendb('testdb1')
>>> reduced = ut.get_argflag('--reduced')
>>> ibs.show_depc_image_graph(reduced=reduced)
>>> ut.show_if_requested()
unregister_controller()[source]
wbia.control.IBEISControl.request_IBEISController(dbdir=None, ensure=True, wbaddr=None, verbose=False, use_cache=True, request_dbversion=None, request_stagingversion=None, force_serial=False, asproxy=None, check_hsdb=True)[source]

Alternative to directory instantiating a new controller object. Might return a memory cached object

Parameters:
  • dbdir (str) – databse directory
  • ensure (bool) –
  • wbaddr (None) –
  • verbose (bool) –
  • use_cache (bool) – use the global wbia controller cache. Make sure this is false if calling from a Thread. (default=True)
  • request_dbversion (str) – developer flag. Do not use.
  • request_stagingversion (str) – developer flag. Do not use.
Returns:

ibs

Return type:

IBEISController

CommandLine:
python -m wbia.control.IBEISControl –test-request_IBEISController

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.IBEISControl import *  # NOQA
>>> from wbia.init.sysres import get_workdir
>>> dbdir = '/'.join([get_workdir(), 'testdb1'])
>>> ensure = True
>>> wbaddr = None
>>> verbose = True
>>> use_cache = False
>>> ibs = request_IBEISController(dbdir, ensure, wbaddr, verbose,
>>>                               use_cache)
>>> result = str(ibs)
>>> print(result)

wbia.control.STAGING_SCHEMA module

Module Licence and docstring

TODO: ideally the wbia.constants module would not be used here and each function would use its own constant variables that are suffixed with the last version number that they existed in

CommandLine:
python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema
wbia.control.STAGING_SCHEMA.VALID_VERSIONS = {'0.0.0': (None, None, None), '1.0.0': (None, <function update_1_0_0>, None), '1.0.1': (None, <function update_1_0_1>, None), '1.0.2': (None, <function update_1_0_2>, <function post_1_0_2>), '1.0.3': (None, <function update_1_0_3>, None), '1.1.0': (None, <function update_1_1_0>, None), '1.1.1': (None, <function update_1_1_1>, None), '1.2.0': (None, <function update_1_2_0>, None)}

When updating versions need to test and modify in IBEISController._init_sqldbcore

Type:SeeAlso
wbia.control.STAGING_SCHEMA.autogen_staging_schema()[source]
CommandLine:
python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema –diff=1 python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema -n=-1 python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema -n=0 python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema -n=1 python -m wbia.control.STAGING_SCHEMA –force-incremental-db-update python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema –write python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema –force-incremental-db-update –dump-autogen-schema python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema –force-incremental-db-update

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.STAGING_SCHEMA import *  # NOQA
>>> autogen_staging_schema()
wbia.control.STAGING_SCHEMA.post_1_0_2(db, ibs=None)[source]
wbia.control.STAGING_SCHEMA.update_1_0_0(db, ibs=None)[source]
wbia.control.STAGING_SCHEMA.update_1_0_1(db, ibs=None)[source]
wbia.control.STAGING_SCHEMA.update_1_0_2(db, ibs=None)[source]
wbia.control.STAGING_SCHEMA.update_1_0_3(db, ibs=None)[source]
wbia.control.STAGING_SCHEMA.update_1_1_0(db, ibs=None)[source]
wbia.control.STAGING_SCHEMA.update_1_1_1(db, ibs=None)[source]
wbia.control.STAGING_SCHEMA.update_1_2_0(db, ibs=None)[source]

wbia.control.STAGING_SCHEMA_CURRENT module

AUTOGENERATED ON 10:10:32 2019/05/29 AutogenCommandLine:

python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema –force-incremental-db-update –write python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema –force-incremental-db-update –diff=1 python -m wbia.control.STAGING_SCHEMA –test-autogen_staging_schema –force-incremental-db-update
wbia.control.STAGING_SCHEMA_CURRENT.update_current(db, ibs=None)[source]

wbia.control._autogen_party_funcs module

Autogenerated IBEISController functions

TemplateInfo:
autogen_time = 15:14:53 2015/03/11 autogen_key = party
ToRegenerate:
python -m wbia.templates.template_generator –key party –Tcfg with_api_cache=False with_web_api=False with_deleters=False –diff python -m wbia.templates.template_generator –key party –Tcfg with_api_cache=False with_web_api=False with_deleters=False –write
wbia.control._autogen_party_funcs.add_party(ibs, party_tag_list)[source]
Returns:returns party_rowid_list of added (or already existing partys)
TemplateInfo:
Tadder_native tbl = party
RESTful:
Method: POST URL: /api/autogen/
wbia.control._autogen_party_funcs.get_party_rowid_from_superkey(ibs, party_tag_list, eager=True, nInput=None)[source]

party_rowid_list <- party[party_tag_list]

Parameters:lists (superkey) – 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/
wbia.control._autogen_party_funcs.get_party_tag(ibs, party_rowid_list, eager=True, nInput=None)[source]

party_tag_list <- party.party_tag[party_rowid_list]

gets data from the “native” column “party_tag” in the “party” table

Parameters:party_rowid_list (list) –
Returns:party_tag_list
Return type:list
TemplateInfo:
Tgetter_table_column col = party_tag tbl = party
RESTful:
Method: GET URL: /api/autogen/party/tag/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control._autogen_party_funcs.testdata_ibs(defaultdb='testdb1')[source]

Auto-docstr for ‘testdata_ibs’

wbia.control._sql_helpers module

wbia.control._sql_helpers.autogenerate_nth_schema_version(schema_spec, n=-1)[source]

dumps, prints, or diffs autogen schema based on command line

Parameters:n (int) –
CommandLine:
python -m wbia.control._sql_helpers –test-autogenerate_nth_schema_version

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control._sql_helpers import *  # NOQA
>>> from wbia.control import DB_SCHEMA
>>> # build test data
>>> schema_spec = DB_SCHEMA
>>> n = 1
>>> # execute function
>>> tablename = autogenerate_nth_schema_version(schema_spec, n)
>>> # verify results
>>> result = str(tablename)
>>> print(result)
wbia.control._sql_helpers.compare_string_versions(a, b)[source]

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control._sql_helpers import *  # NOQA
>>> a = '1.1.1'
>>> b = '1.0.0'
>>> result1 = compare_string_versions(a, b)
>>> result2 = compare_string_versions(b, a)
>>> result3 = compare_string_versions(a, a)
>>> result = ', '.join(map(str, [result1, result2, result3]))
>>> print(result)
1, -1, 0
wbia.control._sql_helpers.copy_database(src_fpath, dst_fpath)[source]
wbia.control._sql_helpers.database_backup(db_dir, db_fname, backup_dir, max_keep=2048, manual=True)[source]
>>> db_dir = ibs.get_ibsdir()
>>> db_fname = ibs.sqldb_fname
>>> backup_dir = ibs.backupdir
>>> max_keep = MAX_KEEP
>>> manual = False
wbia.control._sql_helpers.ensure_correct_version(ibs, db, version_expected, schema_spec, dobackup=True, verbose=True)[source]

FIXME: AN SQL HELPER FUNCTION SHOULD BE AGNOSTIC TO CONTROLER OBJECTS

ensure_correct_version

Parameters:
  • ibs (IBEISController) –
  • db (SQLController) –
  • version_expected (str) – version you want to be at
  • schema_spec (module) – schema module
  • dobackup (bool) –

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control._sql_helpers import *  # NOQA
>>> ibs = '?'
>>> db = ibs.db
>>> version_expected = ibs.db_version_expected
>>> schema_spec = DB_SCHEMA
>>> dobackup = True
>>> result = ensure_correct_version(ibs, db, version_expected, schema_spec, dobackup)
>>> print(result)
Parameters:schema_spec (module) – module of schema specifications
wbia.control._sql_helpers.ensure_daily_database_backup(db_dir, db_fname, backup_dir, max_keep=2048)[source]
wbia.control._sql_helpers.fix_metadata_consistency(db)[source]

duct tape function

db.print_table_csv(‘metadata’)

wbia.control._sql_helpers.get_backup_fpaths(ibs)[source]
wbia.control._sql_helpers.get_backupdir(db_dir, db_fname)[source]
CommandLine:
python -m _sql_helpers get_backupdir –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control._sql_helpers import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> db_dir = ibs.get_ibsdir()
>>> db_fname = ibs.sqldb_fname
>>> backup_dir = ibs.backupdir
>>> result = get_backupdir(db_dir, db_fname)
wbia.control._sql_helpers.get_nth_test_schema_version(schema_spec, n=-1)[source]

Gets a fresh and empty test version of a schema

Parameters:
  • schema_spec (module) – schema module to get nth version of
  • n (int) – version index (-1 is the latest)
wbia.control._sql_helpers.remove_old_backups(backup_dir, ext, max_keep)[source]
wbia.control._sql_helpers.revert_to_backup(ibs)[source]
Parameters:db_dir
CommandLine:
python -m wbia.control._sql_helpers –exec-revert_to_backup

Example

>>> # SCRIPT
>>> from wbia.control._sql_helpers import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='elephants')
>>> result = revert_to_backup(ibs)
>>> print(result)
wbia.control._sql_helpers.update_schema_version(ibs, db, schema_spec, version, version_target, dobackup=True, clearbackup=False)[source]

version_target = version_expected clearbackup = False FIXME: AN SQL HELPER FUNCTION SHOULD BE AGNOSTIC TO CONTROLER OBJECTS

wbia.control.accessor_decors module

wbia.control.accessor_decors.adder(func)[source]
wbia.control.accessor_decors.cache_getter(tblname, colname=None, cfgkeys=None, force=False, debug=False)[source]

Creates a getter cacher the class must have a table_cache property varargs are currently unallowed

Parameters:
  • tblname (str) –
  • colname (str) –
Returns:

closure_getter_cacher

Return type:

function

CommandLine:
python -m wbia.control.accessor_decors –test-cache_getter

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.accessor_decors import *  # NOQA
>>> import wbia
>>> from wbia import constants as const
>>> ibs = wbia.opendb('testdb1')
>>> #ibs = wbia.opendb('PZ_MTEST')
>>> valid_nids = ibs.get_valid_nids()
>>> tblname = const.NAME_TABLE
>>> colname = 'annot_rowid'
>>> rowid_list = valid_nids
>>> rowid_list1 = rowid_list[::2]
>>> rowid_list2 = rowid_list[::3]
>>> rowid_list3 = rowid_list[1::2]
>>> kwargs = {}
>>> getter_func = ut.get_method_func(ibs.get_name_aids)
>>> wrp_getter_cacher = cache_getter(tblname, colname, force=True, debug=False)(getter_func)
>>> ### Test Getter (caches)
>>> val_list1 = getter_func(ibs, rowid_list1)
>>> val_list2 = wrp_getter_cacher(ibs, rowid_list1)
>>> print(ut.repr2(ibs.table_cache))
>>> val_list3 = wrp_getter_cacher(ibs, rowid_list1)
>>> val_list4 = wrp_getter_cacher(ibs, rowid_list2)
>>> print(ut.repr2(ibs.table_cache))
>>> val_list5 = wrp_getter_cacher(ibs, rowid_list3)
>>> val_list  = wrp_getter_cacher(ibs, rowid_list)
>>> ut.assert_eq(val_list1, val_list2, 'run1')
>>> ut.assert_eq(val_list1, val_list2, 'run2')
>>> print(ut.repr2(ibs.table_cache))
>>> ### Test Setter (invalidates)
>>> setter_func = ibs.set_name_texts
>>> wrp_cache_invalidator = cache_invalidator(tblname, force=True)(lambda *a: None)
>>> wrp_cache_invalidator(ibs, rowid_list1)
>>> print(ut.repr2(ibs.table_cache))

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.accessor_decors import *  # NOQA
>>> import wbia
>>> from wbia import constants as const
>>> from wbia.control.manual_feat_funcs import FEAT_KPTS
>>> ibs = wbia.opendb('testdb1')
>>> tblname = const.FEATURE_TABLE,
>>> colname = FEAT_KPTS
>>> aid_list = ibs.get_valid_aids()[0:1]
>>> # Check that config2 actually gets you different vectors in the cache
>>> qreq_ = ibs.new_query_request(aid_list, aid_list, cfgdict={'affine_invariance': False})
>>> config2_ = qreq_.extern_query_config2
>>> kpts_list1 = ibs.get_annot_kpts(aid_list, config2_=None)
>>> kpts_list2 = ibs.get_annot_kpts(aid_list, config2_=config2_)
>>> kp1 = kpts_list1[0][0:1]
>>> kp2 = kpts_list2[0][0:1]
>>> assert kp1.T[3] != 0
>>> assert kp2.T[3] == 0
>>> assert kp2.T[2] == kp2.T[4]
Ignore:
%timeit getter_func(ibs, rowid_list) %timeit wrp_getter_cacher(ibs, rowid_list)
wbia.control.accessor_decors.cache_invalidator(tblname, colnames=None, rowidx=None, force=False)[source]

cacher decorator

Parameters:
  • tablename (str) – the table that the owns the underlying cache
  • colnames (list) – the list of cached column that this function will invalidate
  • rowidx (int) – the position (not including self) of the invalidated table’s native rowid in the writer function’s argument signature. If this does not exist you should use None. (default=None)
wbia.control.accessor_decors.deleter(func)[source]
wbia.control.accessor_decors.dev_cache_getter(tblname, colname, *args, **kwargs)[source]

cache getter for when the database is gaurenteed not to change

wbia.control.accessor_decors.getter(func)[source]

Getter decorator for functions which takes as the first input a unique id list and returns a heterogeous list of values

wbia.control.accessor_decors.getter_1to1(func)

Getter decorator for functions which takes as the first input a unique id list and returns a heterogeous list of values

wbia.control.accessor_decors.getter_1toM(func)

Getter decorator for functions which takes as the first input a unique id list and returns a homogenous list of values

wbia.control.accessor_decors.getter_numpy(func)[source]

Getter decorator for functions which takes as the first input a unique id list and returns a heterogeous list of values

wbia.control.accessor_decors.getter_numpy_vector_output(func)[source]

Getter decorator for functions which takes as the first input a unique id list and returns a heterogeous list of values

wbia.control.accessor_decors.getter_vector_output(func)[source]

Getter decorator for functions which takes as the first input a unique id list and returns a homogenous list of values

wbia.control.accessor_decors.ider(func)[source]

This function takes returns ids subject to conditions

wbia.control.accessor_decors.init_tablecache()[source]
Returns:tablecache
Return type:defaultdict
CommandLine:
python -m wbia.control.accessor_decors –test-init_tablecache

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.accessor_decors import *  # NOQA
>>> result = init_tablecache()
>>> print(result)
wbia.control.accessor_decors.setter(func)[source]

wbia.control.autowrap_api_decorators module

wbia.control.autowrap_api_decorators.get_decorator(submodule, func, method)[source]
wbia.control.autowrap_api_decorators.get_func(line)[source]
wbia.control.autowrap_api_decorators.get_parts(line, sub)[source]
wbia.control.autowrap_api_decorators.process_file(filename, sub)[source]

wbia.control.controller_inject module

Todo

Move flask registering into another file. Should also make the actual flask registration lazy. It should only be executed if a web instance is being started.

python -c “import wbia”

exception wbia.control.controller_inject.WebDuplicateUUIDException(qdup_pos_map={}, ddup_pos_map={})[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebException(message, rawreturn=None, code=400)[source]

Bases: utool.util_dev.NiceRepr, Exception

get_rawreturn(debug_stack_trace=False)[source]
exception wbia.control.controller_inject.WebInvalidInput(message, key=None, value=None, image=False)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebInvalidMatchException(qaid_list, daid_list)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebInvalidUUIDException(invalid_image_uuid_list=[], invalid_annot_uuid_list=[])[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebMatchThumbException(reference, qannot_uuid, dannot_uuid, version, message)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebMissingInput(message, key=None)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebMissingUUIDException(missing_image_uuid_list=[], missing_annot_uuid_list=[])[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebMultipleNamedDuplicateException(bad_dict)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebReviewFinishedException(query_uuid)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebReviewNotReadyException(query_uuid)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebRuntimeException(message)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebUnavailableUUIDException(unavailable_annot_uuid_list, query_uuid)[source]

Bases: wbia.control.controller_inject.WebException

exception wbia.control.controller_inject.WebUnknownUUIDException(unknown_uuid_type_list, unknown_uuid_list)[source]

Bases: wbia.control.controller_inject.WebException

wbia.control.controller_inject.api_remote_wbia(remote_wbia_url, remote_api_func, remote_wbia_port=5001, **kwargs)[source]
wbia.control.controller_inject.authenticate(username, **kwargs)[source]
wbia.control.controller_inject.authenticated()[source]
wbia.control.controller_inject.authentication_challenge()[source]

Sends a 401 response that enables basic auth.

wbia.control.controller_inject.authentication_either(func)[source]

authenticated by either hash or user

wbia.control.controller_inject.authentication_hash_only(func)[source]
wbia.control.controller_inject.authentication_hash_validate()[source]

This function is called to check if a username / password combination is valid.

wbia.control.controller_inject.authentication_user_only(func)[source]
wbia.control.controller_inject.authentication_user_validate()[source]

This function is called to check if a username / password combination is valid.

wbia.control.controller_inject.create_key()[source]
wbia.control.controller_inject.crossdomain(origin=None, methods=None, headers=None, max_age=21600, attach_to_all=True, automatic_options=True)[source]
wbia.control.controller_inject.deauthenticate()[source]
wbia.control.controller_inject.dev_autogen_explicit_imports()[source]
CommandLine:
python -m wbia –tf dev_autogen_explicit_imports

Example

>>> # SCRIPT
>>> from wbia.control.controller_inject import *  # NOQA
>>> dev_autogen_explicit_imports()
wbia.control.controller_inject.dev_autogen_explicit_injects()[source]
CommandLine:
python -m wbia –tf dev_autogen_explicit_injects

Example

>>> # SCRIPT
>>> from wbia.control.controller_inject import *  # NOQA
>>> dev_autogen_explicit_injects()
wbia.control.controller_inject.get_flask_app(templates_auto_reload=True)[source]
wbia.control.controller_inject.get_signature(key, message)[source]
wbia.control.controller_inject.get_url_authorization(url)[source]
wbia.control.controller_inject.get_user(username=None, name=None, organization=None)[source]
wbia.control.controller_inject.get_wbia_flask_api(__name__, DEBUG_PYTHON_STACK_TRACE_JSON_RESPONSE=False)[source]

For function calls that resolve to api calls and return json.

wbia.control.controller_inject.get_wbia_flask_route(__name__)[source]

For function calls that resolve to webpages and return html.

wbia.control.controller_inject.login_required_session(function)[source]
wbia.control.controller_inject.make_ibs_register_decorator(modname)[source]

builds variables and functions that controller injectable modules need.

wbia.control.controller_inject.remote_api_wrapper(func)[source]
wbia.control.controller_inject.translate_wbia_webcall(func, *args, **kwargs)[source]

Called from flask request context

Parameters:func (function) – live python function
Returns:(output, True, 200, None, jQuery_callback)
Return type:tuple

Example

>>> # xdoctest: +REQUIRES(--web-tests)
>>> from wbia.control.controller_inject import *  # NOQA
>>> import wbia
>>> with wbia.opendb_with_web('testdb1') as (ibs, client):
...     aids = client.get('/api/annot/').json
...     failrsp = client.post('/api/annot/uuids/')
...     failrsp2 = client.get('/api/query/chips/simple_dict//', data={'qaid_list': [0], 'daid_list': [0]})
...     log_text = client.get('/api/query/chips/simple_dict/', data={'qaid_list': [0], 'daid_list': [0]})
>>> print('\n---\nfailrsp =\n%s' % (failrsp.data,))
>>> print('\n---\nfailrsp2 =\n%s' % (failrsp2.data,))
>>> print('Finished test')
Finished test
wbia.control.controller_inject.translate_wbia_webreturn(rawreturn, success=True, code=None, message=None, jQuery_callback=None, cache=None, __skip_microsoft_validation__=False)[source]

wbia.control.docker_control module

wbia.control.docker_control.docker_check_container(ibs, container_name, clone=None, retry_count=20, retry_timeout=15)[source]
wbia.control.docker_control.docker_container_IP_port_options(ibs, container)[source]
wbia.control.docker_control.docker_container_clone_name(container_name, clone=None)[source]
wbia.control.docker_control.docker_container_status(ibs, container_name, clone=None)[source]
wbia.control.docker_control.docker_container_status_dict(ibs)[source]
wbia.control.docker_control.docker_container_urls(ibs, container, docker_get_config)[source]
wbia.control.docker_control.docker_container_urls_from_name(ibs, container_name, clone=None)[source]
wbia.control.docker_control.docker_ensure(ibs, container_name, check_container=True, clone=None)[source]
wbia.control.docker_control.docker_ensure_image(ibs, image_name)[source]
wbia.control.docker_control.docker_get_config(ibs, container_name)[source]
wbia.control.docker_control.docker_get_container(ibs, container_name, clone=None)[source]
wbia.control.docker_control.docker_get_image(ibs, image_name)[source]
wbia.control.docker_control.docker_image_list(ibs)[source]
wbia.control.docker_control.docker_image_run(ibs, port=6000, volumes=None)[source]
wbia.control.docker_control.docker_login(ibs)[source]
wbia.control.docker_control.docker_pull_image(ibs, image_name)[source]

The process of logging into the Azure Container Registry is arcane and complex. In the meantime we’ll assume that any image we need in the ACR has been downloaded by a logged-in user.

Host: wildme.azurecr.io Username: example@example.com Password: asecurepassword

Login Script:

Install Azure CLI

https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest

az logout

Logout of any user you may already be using with az-cli

az login

Follow instructions to https://microsoft.com/devicelogin, input the code

Login as example@example.com with password above

az acr login –name wildme

Login to the Azure Container Registry (ACR) for Docker

Verify login with “cat ~/.docker/config.json | jq “.auths” and look for “wildme.azurecr.io”

docker pull wildme.azurecr.io/wbia/example-image:latest

Pull latest nightly image

wbia.control.docker_control.docker_register_config(ibs, container_name, image_name, container_check_func=None, run_args={}, ensure_new=False)[source]
wbia.control.docker_control.docker_run(ibs, image_name, container_name, override_run_args, clone=None, ensure_new=False)[source]
wbia.control.docker_control.find_open_port(base=5000, blacklist=[])[source]
wbia.control.docker_control.is_local_port_open(port)[source]
Parameters:port (int) –
Returns:
Return type:bool

References

http://stackoverflow.com/questions/7436801/identifying-listening-ports-using-python

CommandLine:
python -m utool.util_web is_local_port_open –show

Example

>>> # DISABLE_DOCTEST
>>> from utool.util_web import *  # NOQA
>>> port = 32183
>>> assert is_local_port_open(80) is False, 'port 80 should always be closed'
>>> assert is_local_port_open(port) is True, 'maybe this port is actually used?'

wbia.control.manual_annot_funcs module

Autogen:
python -c “import utool as ut; ut.write_modscript_alias(‘Tgen.sh’, ‘wbia.templates.template_generator’)” # NOQA sh Tgen.sh –key annot –invert –Tcfg with_getters=True with_setters=True –modfname manual_annot_funcs –funcname-filter=age_m # NOQA sh Tgen.sh –key annot –invert –Tcfg with_getters=True with_setters=True –modfname manual_annot_funcs –funcname-filter=is_ # NOQA sh Tgen.sh –key annot –invert –Tcfg with_getters=True with_setters=True –modfname manual_annot_funcs –funcname-filter=is_ –diff # NOQA
wbia.control.manual_annot_funcs.add_annots(ibs, gid_list, bbox_list=None, theta_list=None, species_list=None, nid_list=None, name_list=None, vert_list=None, annot_uuid_list=None, yaw_list=None, viewpoint_list=None, quality_list=None, multiple_list=None, interest_list=None, canonical_list=None, detect_confidence_list=None, notes_list=None, annot_visual_uuid_list=None, annot_semantic_uuid_list=None, species_rowid_list=None, staged_uuid_list=None, staged_user_id_list=None, quiet_delete_thumbs=False, prevent_visual_duplicates=True, skip_cleaning=False, delete_thumb=True, **kwargs)[source]

Adds an annotation to images

# TODO:
remove annot_visual_uuid_list and annot_semantic_uuid_list They are always inferred
Parameters:
  • 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:

aid_list

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –test-add_annots python -m wbia.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 wbia.control.IBEISControl import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]), 'chip paths'
>>> postvalid = ibs.get_valid_aids()
>>> assert prevalid == postvalid, 'prevalid != postvalid'
>>> result += str(postvalid)
>>> print(result)
[UUID('30f7639b-5161-a561-2c4f-41aed64e5b65'), UUID('5ccbb26d-104f-e655-cf2b-cf92e0ad2fd2')]
[UUID('58905a72-dd31-c42b-d5b5-2312adfc7cba'), UUID('dd58665a-2a8b-8e84-4919-038c80bd9be0')]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

Example

>>> # Test with prevent_visual_duplicates on
>>> # ENABLE_DOCTEST
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia
>>> ibs = wbia.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, 'aid_list1 == aid_list2'
>>> assert aid_list1 != aid_list3, '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)
wbia.control.manual_annot_funcs.annotation_src_api(rowid=None)[source]

Returns the base64 encoded image of annotation <aid>

RESTful:
Method: GET URL: /api/annot/<aid>/
wbia.control.manual_annot_funcs.compute_annot_visual_semantic_uuids(ibs, gid_list, include_preprocess=False, **kwargs)[source]
wbia.control.manual_annot_funcs.delete_annot_imgthumbs(ibs, aid_list)[source]
wbia.control.manual_annot_funcs.delete_annot_nids(ibs, aid_list)[source]

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/name/rowid/
wbia.control.manual_annot_funcs.delete_annot_speciesids(ibs, aid_list)[source]

Deletes nids of a list of annotations

RESTful:
Method: DELETE URL: /api/annot/species/rowid/
wbia.control.manual_annot_funcs.delete_annots(ibs, aid_list)[source]

deletes annotations from the database

RESTful:
Method: DELETE URL: /api/annot/
Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (int) – list of annotation ids
CommandLine:
python -m wbia.control.manual_annot_funcs –test-delete_annots python -m wbia.control.manual_annot_funcs –test-delete_annots –debug-api-cache python -m wbia.control.manual_annot_funcs –test-delete_annots
SeeAlso:
back.delete_annot

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> from os.path import exists
>>> import wbia
>>> ibs = wbia.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'
>>> #thumpaths = ibs.get_image_thumbpath(gid_list, ensure_paths=True, **{'thumbsize': 221})
>>> #assert any(ut.lmap(exists, thumpaths)), 'thumbs should be there'
>>> before_aids = ibs.get_image_aids(gid_list)
>>> print('BEFORE gids: ' + str(before_aids))
>>> result = ibs.delete_annots(new_aid_list)
>>> assert ibs.get_name_aids(nid) == [], 'annots should be removed'
>>> after_aids = ibs.get_image_aids(gid_list)
>>> #thumpaths = ibs.get_image_thumbpath(gid_list, ensure_paths=False, **{'thumbsize': 221})
>>> #assert not any(ut.lmap(exists, thumpaths)), 'thumbs should be gone'
>>> assert after_aids != before_aids, 'the invalidators must have bugs'
>>> print('AFTER gids: ' + str(after_aids))
>>> 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()
wbia.control.manual_annot_funcs.filter_annotation_set(ibs, aid_list, include_only_gid_list=None, yaw='no-filter', is_exemplar=None, is_staged=False, species=None, is_known=None, hasgt=None, minqual=None, has_timestamp=None, sort=False, is_canonical=None, min_timedelta=None)[source]
wbia.control.manual_annot_funcs.get_annot_age_months_est(ibs, aid_list, eager=True, nInput=None)[source]

annot_age_months_est_list <- annot.annot_age_months_est[aid_list]

gets data from the annotation’s native age in months

Parameters:aid_list (list) –
Returns:annot_age_months_est_list
Return type:list
RESTful:
Method: GET URL: /api/annot/age/months/
wbia.control.manual_annot_funcs.get_annot_age_months_est_max(ibs, aid_list, eager=True, nInput=None)[source]

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

Parameters:aid_list (list) –
Returns:annot_age_months_est_max_list
Return type:list
RESTful:
Method: GET URL: /api/annot/age/months/max/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_annot_funcs.get_annot_age_months_est_max_texts(ibs, aid_list, eager=True, nInput=None)[source]

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

Parameters:aid_list (list) –
Returns:annot_age_months_est_max_list
Return type:list
RESTful:
Method: GET URL: /api/annot/age/months/max/text/
wbia.control.manual_annot_funcs.get_annot_age_months_est_min(ibs, aid_list, eager=True, nInput=None)[source]

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

Parameters:aid_list (list) –
Returns:annot_age_months_est_min_list
Return type:list
RESTful:
Method: GET URL: /api/annot/age/months/min/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_annot_funcs.get_annot_age_months_est_min_texts(ibs, aid_list, eager=True, nInput=None)[source]

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

Parameters:aid_list (list) –
Returns:annot_age_months_est_min_list
Return type:list
RESTful:
Method: GET URL: /api/annot/age/months/min/text/
wbia.control.manual_annot_funcs.get_annot_age_months_est_texts(ibs, aid_list, eager=True, nInput=None)[source]

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

Parameters:aid_list (list) –
Returns:annot_age_months_est_text_list
Return type:list
RESTful:
Method: GET URL: /api/annot/age/months/text/
wbia.control.manual_annot_funcs.get_annot_aid(ibs, aid_list, eager=True, nInput=None)[source]

self verifier .. rubric:: Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]]
wbia.control.manual_annot_funcs.get_annot_aids_from_semantic_uuid(ibs, semantic_uuid_list)[source]
Parameters:semantic_uuid_list (list) –
Returns:annot rowids
Return type:list
wbia.control.manual_annot_funcs.get_annot_aids_from_uuid(ibs, uuid_list)[source]
Returns:annot rowids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/annot/rowid/uuid/
wbia.control.manual_annot_funcs.get_annot_aids_from_visual_uuid(ibs, visual_uuid_list)[source]
Parameters:visual_uuid_list (list) –
Returns:annot rowids
Return type:list
wbia.control.manual_annot_funcs.get_annot_bboxes(ibs, aid_list)[source]
Returns:annotation bounding boxes in image space
Return type:bbox_list (list)
RESTful:
Method: GET URL: /api/annot/bbox/
wbia.control.manual_annot_funcs.get_annot_canonical(ibs, aid_list, default_none_to_false=True)[source]
RESTful:
Method: GET URL: /api/annot/canonical/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> flag_list = get_annot_canonical(ibs, aid_list)
>>> result = ('flag_list = %s' % (ut.repr2(flag_list),))
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_class_labels(ibs, aid_list)[source]

DEPRICATE?

Returns:identifying animal name and view
Return type:list of tuples
wbia.control.manual_annot_funcs.get_annot_contact_aids(ibs, aid_list, daid_list=None, check_isect=False, assume_unique=False)[source]

Returns the other aids that appear in the same image that this annotation is from.

Parameters:
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_contact_aids;1

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> contact_aids = ibs.get_annot_contact_aids(aid_list)
>>> contact_gids = ibs.unflat_map(ibs.get_annot_gids, contact_aids)
>>> gid_list = ibs.get_annot_gids(aid_list)
>>> for gids, gid, aids, aid in zip(contact_gids, gid_list, contact_aids, aid_list):
...     assert ut.allsame(gids), 'annots should be from same image'
...     assert len(gids) == 0 or gids[0] == gid, 'and same image as parent annot'
...     assert aid not in aids, 'should not include self'

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb2')
>>> aid_list = ibs.get_valid_aids()
>>> contact_aids = ibs.get_annot_contact_aids(aid_list)
>>> contact_gids = ibs.unflat_map(ibs.get_annot_gids, contact_aids)
>>> gid_list = ibs.get_annot_gids(aid_list)
>>> print('contact_aids = %r' % (contact_aids,))
>>> for gids, gid, aids, aid in zip(contact_gids, gid_list, contact_aids, aid_list):
...     assert ut.allsame(gids), 'annots should be from same image'
...     assert len(gids) == 0 or gids[0] == gid, 'and same image as parent annot'
...     assert aid not in aids, 'should not include self'
wbia.control.manual_annot_funcs.get_annot_detect_confidence(ibs, aid_list)[source]
Returns:a list confidences that the annotations is a valid detection
Return type:list_ (list)
RESTful:
Method: GET URL: /api/annot/detect/confidence/
wbia.control.manual_annot_funcs.get_annot_exemplar_flags(ibs, aid_list)[source]

returns if an annotation is an exemplar

Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (int) – list of annotation ids
Returns:

annot_exemplar_flag_list - True if annotation is an exemplar

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_exemplar_flags
RESTful:
Method: GET URL: /api/annot/exemplar/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> gid_list = get_annot_exemplar_flags(ibs, aid_list)
>>> result = str(gid_list)
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_gar_rowids(ibs, aid_list)[source]

Auto-docstr for ‘get_annot_gar_rowids’

wbia.control.manual_annot_funcs.get_annot_gids(ibs, aid_list, assume_unique=False)[source]

Get parent image rowids of annotations

Parameters:aid_list (list) –
Returns:image rowids
Return type:gid_list (list)
RESTful:
Method: GET URL: /api/annot/image/rowid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> result = get_annot_gids(ibs, aid_list)
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_groundfalse(ibs, aid_list, valid_aids=None, filter_unknowns=True, daid_list=None)[source]

gets all annotations with different names

Returns:a list of aids which are known to be different for each
Return type:groundfalse_list (list)

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> groundfalse_list = get_annot_groundfalse(ibs, aid_list)
>>> result = str(groundfalse_list)
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_groundtruth(ibs, aid_list, is_exemplar=None, noself=True, daid_list=None)[source]

gets all annotations with the same names

Parameters:
  • aid_list (list) – list of annotation rowids to get groundtruth of
  • is_exemplar (None) –
  • noself (bool) –
  • daid_list (list) –
Returns:

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.

Return type:

groundtruth_list (list)

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_groundtruth:0 python -m wbia.control.manual_annot_funcs –test-get_annot_groundtruth:1 python -m wbia.control.manual_annot_funcs –test-get_annot_groundtruth:2 python -m –tf get_annot_groundtruth:0 –db=PZ_Master0 –aids=97 –exec-mode

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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], [], [], [], [], [], [], []]

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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], [], [], [], [], [], [], []]

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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], [], []]
wbia.control.manual_annot_funcs.get_annot_has_groundtruth(ibs, aid_list, is_exemplar=None, noself=True, daid_list=None)[source]
Parameters:
  • aid_list (list) –
  • is_exemplar (None) –
  • noself (bool) –
  • daid_list (list) –
Returns:

has_gt_list

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_has_groundtruth

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
wbia.control.manual_annot_funcs.get_annot_hashid_semantic_uuid(ibs, aid_list, prefix='')[source]

builds an aggregate semantic hash id for a list of aids

Parameters:
  • ibs (wbia.IBEISController) – wbia 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:

semantic_uuid_hashid

Return type:

str

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_hashid_semantic_uuid

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> annots = ibs.annots()
>>> prefix = ''
>>> semantic_uuid_hashid = get_annot_hashid_semantic_uuid(ibs, aid_list, prefix)
>>> result = ut.repr2(annots.semantic_uuids[0:2], nl=1) + '\n'
>>> result += ('semantic_uuid_hashid = ' + str(semantic_uuid_hashid))
>>> print(result)
[
    UUID('...'),
    UUID('...'),
]
semantic_uuid_hashid = SUUIDS-13-...
wbia.control.manual_annot_funcs.get_annot_hashid_uuid(ibs, aid_list, prefix='')[source]

builds an aggregate random hash id for a list of aids

RESTful:
Method: GET URL: /api/annot/uuid/hashid/
wbia.control.manual_annot_funcs.get_annot_hashid_visual_uuid(ibs, aid_list, prefix='', pathsafe=False)[source]

builds an aggregate visual hash id for a list of aids

Parameters:_new (bool) – Eventually we will change the hashing scheme and all old data will be invalidated. (default=False)
wbia.control.manual_annot_funcs.get_annot_image_contributor_tag(ibs, aid_list)[source]

Auto-docstr for ‘get_annot_image_contributor_tag’

wbia.control.manual_annot_funcs.get_annot_image_datetime_str(ibs, aid_list)[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (int) – list of annotation ids
Returns:

datetime_list

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_image_datetime_str

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> datetime_list = get_annot_image_datetime_str(ibs, aid_list)
>>> result = str(datetime_list)
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_image_gps(ibs, aid_list)[source]
Parameters:aid_list (list) –
Returns:unixtime_list
Return type:list
RESTful:
Method: GET URL: /api/annot/image/gps/
wbia.control.manual_annot_funcs.get_annot_image_gps2(ibs, aid_list)[source]

fixes the (-1, -1) issue. returns nan instead.

wbia.control.manual_annot_funcs.get_annot_image_names(ibs, aid_list)[source]
Parameters:aid_list (list) –
Returns:gname_list the image names of each annotation
Return type:list of strs
RESTful:
Method: GET URL: /api/annot/image/name/
wbia.control.manual_annot_funcs.get_annot_image_paths(ibs, aid_list)[source]
Parameters:aid_list (list) –
Returns:gpath_list the image paths of each annotation
Return type:list of strs
RESTful:
Method: GET URL: /api/annot/image/file/path/
wbia.control.manual_annot_funcs.get_annot_image_rowids(ibs, aid_list)[source]
wbia.control.manual_annot_funcs.get_annot_image_set_texts(ibs, aid_list)[source]

Auto-docstr for ‘get_annot_image_contributor_tag’

RESTful:
Method: GET URL: /api/annot/imageset/text/
wbia.control.manual_annot_funcs.get_annot_image_unixtimes(ibs, aid_list, **kwargs)[source]
Parameters:aid_list (list) –
Returns:unixtime_list
Return type:list
RESTful:
Method: GET URL: /api/annot/image/unixtime/
wbia.control.manual_annot_funcs.get_annot_image_unixtimes_asfloat(ibs, aid_list)[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (list) – list of annotation rowids
Returns:

unixtime_list

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –exec-get_annot_image_unixtimes_asfloat –show –db PZ_MTEST

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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 wbia.plottool as pt
>>> ut.show_if_requested()
wbia.control.manual_annot_funcs.get_annot_image_uuids(ibs, aid_list)[source]
Parameters:aid_list (list) –
Returns:image_uuid_list
Return type:list
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_image_uuids –enableall
RESTful:
Method: GET URL: /api/annot/image/uuid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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')]
wbia.control.manual_annot_funcs.get_annot_images(ibs, aid_list)[source]
Parameters:aid_list (list) –
Returns:the images of each annotation
Return type:list of ndarrays
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_images

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[0:1]
>>> image_list = ibs.get_annot_images(aid_list)
>>> result = str(list(map(np.shape, image_list)))
>>> print(result)
[(715, 1047, 3)]
wbia.control.manual_annot_funcs.get_annot_imgset_uuids(ibs, aid_list)[source]

Get parent image rowids of annotations

Parameters:aid_list (list) –
Returns:imageset uuids
Return type:imgset_uuid_list (list)
RESTful:
Method: GET URL: /api/annot/imageset/uuid/
wbia.control.manual_annot_funcs.get_annot_imgsetids(ibs, aid_list)[source]

Get parent image rowids of annotations

Parameters:aid_list (list) –
Returns:imageset rowids
Return type:imgsetid_list (list)
RESTful:
Method: GET URL: /api/annot/imageset/rowid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> result = get_annot_gids(ibs, aid_list)
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_interest(ibs, aid_list)[source]
RESTful:
Method: GET URL: /api/annot/interest/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> flag_list = get_annot_interest(ibs, aid_list)
>>> result = ('flag_list = %s' % (ut.repr2(flag_list),))
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_isjunk(ibs, aid_list)[source]

Auto-docstr for ‘get_annot_isjunk’

wbia.control.manual_annot_funcs.get_annot_metadata(ibs, aid_list, return_raw=False)[source]
Returns:annot metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/annot/metadata/
wbia.control.manual_annot_funcs.get_annot_missing_uuid(ibs, uuid_list)[source]
Returns:a list of missing annot uuids
Return type:list_ (list)
wbia.control.manual_annot_funcs.get_annot_multiple(ibs, aid_list)[source]
RESTful:
Method: GET URL: /api/annot/multiple/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> flag_list = get_annot_multiple(ibs, aid_list)
>>> result = ('flag_list = %s' % (ut.repr2(flag_list),))
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_name_rowids(ibs, aid_list, distinguish_unknowns=True, assume_unique=False)[source]
Returns:the name id of each annotation.
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_annot_funcs –exec-get_annot_name_rowids

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> from wbia import constants as const
>>> import wbia
>>> ibs = wbia.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)
wbia.control.manual_annot_funcs.get_annot_name_texts(ibs, aid_list, distinguish_unknowns=False)[source]
Parameters:aid_list (list) –
Returns:
name_list. e.g: [‘fred’, ‘sue’, …]
for each annotation identifying the individual
Return type:list or strs
RESTful:
Method: GET URL: /api/annot/name/text/
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_name_texts

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[::2]
>>> result = ut.repr2(get_annot_name_texts(ibs, aid_list), nl=False)
>>> print(result)
['____', 'easy', 'hard', 'jeff', '____', '____', 'zebra']

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[::2]
>>> result = ut.repr2(get_annot_name_texts(ibs, aid_list, True), nl=False)
>>> print(result)
['____1', 'easy', 'hard', 'jeff', '____9', '____11', 'zebra']
wbia.control.manual_annot_funcs.get_annot_name_uuids(ibs, aid_list, **kwargs)[source]

alias

RESTful:
Method: GET URL: /api/annot/name/uuid/
wbia.control.manual_annot_funcs.get_annot_names(ibs, aid_list, distinguish_unknowns=False)[source]

alias

wbia.control.manual_annot_funcs.get_annot_nids(ibs, aid_list, distinguish_unknowns=True)[source]

alias

RESTful:
Method: GET URL: /api/annot/name/rowid/
wbia.control.manual_annot_funcs.get_annot_notes(ibs, aid_list)[source]
Returns:a list of annotation notes
Return type:annotation_notes_list (list)
RESTful:
Method: GET URL: /api/annot/note/
wbia.control.manual_annot_funcs.get_annot_num_contact_aids(ibs, aid_list)[source]

Auto-docstr for ‘get_annot_num_contact_aids’

wbia.control.manual_annot_funcs.get_annot_num_groundtruth(ibs, aid_list, is_exemplar=None, noself=True, daid_list=None)[source]
Returns:number of other chips with the same name
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_num_groundtruth python -m wbia.control.manual_annot_funcs –test-get_annot_num_groundtruth:0 python -m wbia.control.manual_annot_funcs –test-get_annot_num_groundtruth:1

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]
wbia.control.manual_annot_funcs.get_annot_num_verts(ibs, aid_list)[source]
Returns:the number of vertices that form the polygon of each chip
Return type:nVerts_list (list)
RESTful:
Method: GET URL: /api/annot/num/vert/
wbia.control.manual_annot_funcs.get_annot_otherimage_aids(ibs, aid_list, daid_list=None, assume_unique=False)[source]

Auto-docstr for ‘get_annot_otherimage_aids’

wbia.control.manual_annot_funcs.get_annot_parent_aid(ibs, aid_list)[source]
Returns:a list of parent (in terms of parts) annotation rowids.
Return type:list_ (list)
wbia.control.manual_annot_funcs.get_annot_part_rowids(ibs, aid_list, is_staged=False)[source]
Returns:

a list of part rowids for each image by aid

Return type:

list_ (list)

Parameters:
Returns:

part_rowids_list

Return type:

list

RESTful:
Method: GET URL: /api/annot/part/rowid/
wbia.control.manual_annot_funcs.get_annot_probchip_fpath(ibs, aid_list, config2_=None)[source]

Returns paths to probability images.

Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (list) – list of annotation rowids
  • config2 (dict) – (default = None)
Returns:

probchip_fpath_list

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –exec-get_annot_probchip_fpath –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='PZ_MTEST')
>>> aid_list = ibs.get_valid_aids()[0:10]
>>> config2_ = {'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 wbia.plottool as pt
>>> iteract_obj = pt.interact_multi_image.MultiImageInteraction(probchip_fpath_list, nPerPage=4)
>>> iteract_obj.start()
>>> ut.show_if_requested()
wbia.control.manual_annot_funcs.get_annot_qualities(ibs, aid_list, eager=True)[source]

annot_quality_list <- annot.annot_quality[aid_list]

gets data from the “native” column “annot_quality” in the “annot” table

Parameters:aid_list (list) –
Returns:annot_quality_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annot_quality tbl = annot
SeeAlso:
wbia.const.QUALITY_INT_TO_TEXT
RESTful:
Method: GET URL: /api/annot/quality/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_annot_funcs.get_annot_quality_int(ibs, aid_list, eager=True)[source]

new alias

wbia.control.manual_annot_funcs.get_annot_quality_texts(ibs, aid_list)[source]

Auto-docstr for ‘get_annot_quality_texts’

RESTful:
Method: GET URL: /api/annot/quality/text/
wbia.control.manual_annot_funcs.get_annot_reviewed(ibs, aid_list)[source]
Returns:“All Instances Found” flag, true if all objects of interest
Return type:list_ (list)

(animals) have an ANNOTATION in the annot

RESTful:
Method: GET URL: /api/annot/reviewed/
wbia.control.manual_annot_funcs.get_annot_rotated_verts(ibs, aid_list)[source]
Returns:verticies after rotation by theta.
Return type:rotated_vert_list (list)
RESTful:
Method: GET URL: /api/annot/vert/rotated/
wbia.control.manual_annot_funcs.get_annot_rowids_from_partial_vuuids(ibs, partial_vuuid_strs)[source]
Parameters:
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annots_from_partial_uuids

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]]
wbia.control.manual_annot_funcs.get_annot_rowids_from_visual_uuid(ibs, visual_uuid_list)
Parameters:visual_uuid_list (list) –
Returns:annot rowids
Return type:list
wbia.control.manual_annot_funcs.get_annot_rows(ibs, aid_list)[source]

Auto-docstr for ‘get_annot_rows’

wbia.control.manual_annot_funcs.get_annot_semantic_uuid_info(ibs, aid_list, _visual_infotup=None)[source]

Semenatic uuids are made up of visual and semantic information. Semantic information is name, species, yaw. Visual info is image uuid, verts, and theta

Parameters:
  • aid_list (list) –
  • _visual_infotup (tuple) – internal use only
Returns:

semantic_infotup (image_uuid_list, verts_list, theta_list, yaw_list, name_list, species_list)

Return type:

tuple

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_semantic_uuid_info

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[0:2]
>>> semantic_infotup = ibs.get_annot_semantic_uuid_info(aid_list)
>>> result = ut.repr2(list(zip(*semantic_infotup))[1])
>>> print(result)
(UUID('d8903434-942f-e0f5-d6c2-0dcbe3137bf7'), ((0, 0), (1035, 0), (1035, 576), (0, 576)), 0.0, 'left', 'easy', 'zebra_plains')
wbia.control.manual_annot_funcs.get_annot_semantic_uuids(ibs, aid_list)[source]

annot_semantic_uuid_list <- annot.annot_semantic_uuid[aid_list]

gets data from the “native” column “annot_semantic_uuid” in the “annot” table

Parameters:aid_list (list) –
Returns:annot_semantic_uuid_list
Return type:list
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_semantic_uuids

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
>>> print(annot_semantic_uuid_list)
[UUID('9acc1a8e-b35f-11b5-f844-9e8fd5dd7ad9')]
wbia.control.manual_annot_funcs.get_annot_sex(ibs, aid_list, eager=True, nInput=None)[source]

Auto-docstr for ‘get_annot_sex’

RESTful:
Method: GET URL: /api/annot/sex/
wbia.control.manual_annot_funcs.get_annot_sex_texts(ibs, aid_list, eager=True, nInput=None)[source]

Auto-docstr for ‘get_annot_sex_texts’

RESTful:
Method: GET URL: /api/annot/sex/text/
wbia.control.manual_annot_funcs.get_annot_species(ibs, aid_list)[source]

alias

RESTful:
Method: GET URL: /api/annot/species/
wbia.control.manual_annot_funcs.get_annot_species_rowids(ibs, aid_list)[source]

species_rowid_list <- annot.species_rowid[aid_list]

gets data from the “native” column “species_rowid” in the “annot” table

Parameters:aid_list (list) –
Returns:species_rowid_list
Return type:list
RESTful:
Method: GET URL: /api/annot/species/rowid/
wbia.control.manual_annot_funcs.get_annot_species_texts(ibs, aid_list)[source]
Parameters:aid_list (list) –
Returns:species_list - a list of strings [‘plains_zebra’, ‘grevys_zebra’, …] for each annotation identifying the species
Return type:list
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_species_texts

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[1::3]
>>> result = ut.repr2(get_annot_species_texts(ibs, aid_list), nl=False)
>>> print(result)
['zebra_plains', 'zebra_plains', '____', 'bear_polar']

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('PZ_MTEST')
>>> aid_list = ibs.get_valid_aids()
>>> species_list = get_annot_species_texts(ibs, aid_list)
>>> result = ut.repr2(list(set(species_list)), nl=False)
>>> print(result)
['zebra_plains']
RESTful:
Method: GET URL: /api/annot/species/text/
wbia.control.manual_annot_funcs.get_annot_species_uuids(ibs, aid_list)[source]

species_rowid_list <- annot.species_rowid[aid_list]

Parameters:aid_list (list) –
Returns:species_uuid_list
Return type:list
RESTful:
Method: GET URL: /api/annot/species/uuid/
wbia.control.manual_annot_funcs.get_annot_staged_flags(ibs, aid_list)[source]

returns if an annotation is staged

Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (int) – list of annotation ids
Returns:

annot_staged_flag_list - True if annotation is staged

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_staged_flags
RESTful:
Method: GET URL: /api/annot/staged/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> gid_list = get_annot_staged_flags(ibs, aid_list)
>>> result = str(gid_list)
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_staged_metadata(ibs, aid_list, return_raw=False)[source]
Returns:annot metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/annot/staged/metadata/
wbia.control.manual_annot_funcs.get_annot_staged_user_ids(ibs, aid_list)[source]

returns if an annotation is staged

Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (int) – list of annotation ids
Returns:

annot_staged_user_id_list - True if annotation is staged

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_staged_user_ids
RESTful:
Method: GET URL: /api/annot/staged/user/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> gid_list = get_annot_staged_user_ids(ibs, aid_list)
>>> result = str(gid_list)
>>> print(result)
wbia.control.manual_annot_funcs.get_annot_staged_uuids(ibs, aid_list)[source]
Returns:annot_uuid_list a list of image uuids by aid
Return type:list
RESTful:
Method: GET URL: /api/annot/staged/uuid/
wbia.control.manual_annot_funcs.get_annot_static_encounter(ibs, aids)[source]
wbia.control.manual_annot_funcs.get_annot_tag_text(ibs, aid_list, eager=True, nInput=None)[source]

annot_tags_list <- annot.annot_tags[aid_list]

gets data from the “native” column “annot_tags” in the “annot” table

Parameters:aid_list (list) –
Returns:annot_tags_list
Return type:list

Example

>>> # DISABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_annot_funcs.get_annot_thetas(ibs, aid_list)[source]
Returns:a list of floats describing the angles of each chip
Return type:theta_list (list)
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_thetas
RESTful:
Method: GET URL: /api/annot/theta/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]
wbia.control.manual_annot_funcs.get_annot_uuids(ibs, aid_list)[source]
Returns:annot_uuid_list a list of image uuids by aid
Return type:list
RESTful:
Method: GET URL: /api/annot/uuid/
wbia.control.manual_annot_funcs.get_annot_verts(ibs, aid_list)[source]
Returns:the vertices that form the polygon of each chip
Return type:vert_list (list)
RESTful:
Method: GET URL: /api/annot/vert/
wbia.control.manual_annot_funcs.get_annot_viewpoint_code(ibs, aids)[source]
Doctest:
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[::3]
>>> result = get_annot_viewpoint_code(ibs, aid_list)
>>> print(result)
['left', 'left', 'unknown', 'left', 'unknown']
wbia.control.manual_annot_funcs.get_annot_viewpoint_int(ibs, aids, assume_unique=False)[source]
wbia.control.manual_annot_funcs.get_annot_viewpoints(ibs, aid_list, assume_unique=False)[source]
Returns:the viewpoint for the annotation
Return type:viewpoint_text (list)
RESTful:
Method: GET URL: /api/annot/viewpoint/
wbia.control.manual_annot_funcs.get_annot_visual_uuid_info(ibs, aid_list)[source]

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

Parameters:aid_list (list) –
Returns:visual_infotup (image_uuid_list, verts_list, theta_list)
Return type:tuple
SeeAlso:
get_annot_visual_uuids get_annot_semantic_uuid_info
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_visual_uuid_info

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
wbia.control.manual_annot_funcs.get_annot_visual_uuids(ibs, aid_list)[source]

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

Parameters:aid_list (list) –
Returns:annot_visual_uuid_list
Return type:list
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_visual_uuids

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
>>> print(annot_visual_uuid_list)
[UUID('8687dcb6-1f1f-fdd3-8b72-8f36f9f41905')]

[UUID(‘76de0416-7c92-e1b3-4a17-25df32e9c2b4’)]

wbia.control.manual_annot_funcs.get_annot_yaw_texts(ibs, aid_list, assume_unique=False)[source]

Auto-docstr for ‘get_annot_yaw_texts’

DEPRICATE

RESTful:
Method: GET URL: /api/annot/yaw/text/
wbia.control.manual_annot_funcs.get_annot_yaws(ibs, aid_list, assume_unique=False)[source]

A yaw is the yaw of the annotation in radians yaw is inverted. Will be fixed soon.

DEPRICATE

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:
wbia.const.VIEWTEXT_TO_YAW_RADIANS
Returns:the yaw (in radians) for the annotation
Return type:yaw_list (list)
CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_annot_yaws
RESTful:
Method: GET URL: /api/annot/yaw/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[::3]
>>> result = get_annot_yaws(ibs, aid_list)
>>> print(result)
[3.141592653589793, 3.141592653589793, None, 3.141592653589793, None]
wbia.control.manual_annot_funcs.get_annot_yaws_asfloat(ibs, aid_list)[source]

Ensures that Nones are returned as nans

DEPRICATE

wbia.control.manual_annot_funcs.get_num_annotations(ibs, **kwargs)[source]

Number of valid annotations

wbia.control.manual_annot_funcs.get_valid_aids(ibs, imgsetid=None, include_only_gid_list=None, yaw='no-filter', is_exemplar=None, is_staged=False, species=None, is_known=None, hasgt=None, minqual=None, has_timestamp=None, min_timedelta=None)[source]

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
Parameters:
  • ibs (IBEISController) – wbia 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:

aid_list - a list of valid ANNOTATION unique ids

Return type:

list

CommandLine:
python -m wbia.control.manual_annot_funcs –test-get_valid_aids
Ignore:
ibs.print_annotation_table()
RESTful:
Method: GET URL: /api/annot/

Example

>>> # FIXME failing-test (22-Jul-2020) This test is failing and it's not clear how to fix it
>>> # xdoctest: +SKIP
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> ut.exec_funckw(get_valid_aids, globals())
>>> imgsetid = 1
>>> yaw = 'no-filter'
>>> species = ibs.const.TEST_SPECIES.ZEB_PLAIN
>>> is_known = False
>>> ibs.delete_all_imagesets()
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> aid_list = get_valid_aids(ibs, imgsetid=imgsetid, species=species, is_known=is_known)
>>> ut.assert_eq(ibs.get_annot_names(aid_list), [ibs.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')
>>> result = str(aid_list)
>>> print(result)

[1, 4]

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> 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 wbia ibs = wbia.opendb(‘PZ_Master1’) ‘’’

) stmt_list = [

ut.codeblock(
‘’’ ibs.db.get_all_rowids_where(ibs.const.ANNOTATION_TABLE, wbia.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)

wbia.control.manual_annot_funcs.get_valid_annot_uuids(ibs)[source]
Returns:annot_uuid_list a list of image uuids for all valid aids
Return type:list
wbia.control.manual_annot_funcs.set_annot_age_months_est_max(ibs, aid_list, annot_age_months_est_max_list, duplicate_behavior='error')[source]

annot_age_months_est_max_list -> annot.annot_age_months_est_max[aid_list]

Parameters:
  • 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/max/
wbia.control.manual_annot_funcs.set_annot_age_months_est_min(ibs, aid_list, annot_age_months_est_min_list, duplicate_behavior='error')[source]

annot_age_months_est_min_list -> annot.annot_age_months_est_min[aid_list]

Parameters:
  • 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/min/
wbia.control.manual_annot_funcs.set_annot_bboxes(ibs, aid_list, bbox_list, delete_thumbs=True, **kwargs)[source]

Sets bboxes of a list of annotations by aid,

Parameters:
  • 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/bbox/
wbia.control.manual_annot_funcs.set_annot_canonical(ibs, aid_list, flag_list)[source]

Sets the annot all instances found bit

RESTful:
Method: PUT URL: /api/annot/canonical/
wbia.control.manual_annot_funcs.set_annot_detect_confidence(ibs, aid_list, confidence_list)[source]

Sets annotation notes

RESTful:
Method: PUT URL: /api/annot/detect/confidence/
wbia.control.manual_annot_funcs.set_annot_exemplar_flags(ibs, aid_list, flag_list)[source]

Sets if an annotation is an exemplar

RESTful:
Method: PUT URL: /api/annot/exemplar/
wbia.control.manual_annot_funcs.set_annot_interest(ibs, aid_list, flag_list, quiet_delete_thumbs=False, delete_thumbs=True)[source]

Sets the annot all instances found bit

RESTful:
Method: PUT URL: /api/annot/interest/
wbia.control.manual_annot_funcs.set_annot_metadata(ibs, aid_list, metadata_dict_list)[source]

Sets the annot’s metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/annot/metadata/
CommandLine:
python -m wbia.control.manual_annot_funcs –test-set_annot_metadata

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[0:1]
>>> metadata_dict_list = [
>>>     {'test': random.uniform(0.0, 1.0)},
>>> ]
>>> print(ut.repr2(metadata_dict_list))
>>> ibs.set_annot_metadata(aid_list, metadata_dict_list)
>>> # verify results
>>> metadata_dict_list_ = ibs.get_annot_metadata(aid_list)
>>> print(ut.repr2(metadata_dict_list_))
>>> assert metadata_dict_list == metadata_dict_list_
>>> metadata_str_list = [ut.to_json(metadata_dict) for metadata_dict in metadata_dict_list]
>>> print(ut.repr2(metadata_str_list))
>>> metadata_str_list_ = ibs.get_annot_metadata(aid_list, return_raw=True)
>>> print(ut.repr2(metadata_str_list_))
>>> assert metadata_str_list == metadata_str_list_
wbia.control.manual_annot_funcs.set_annot_multiple(ibs, aid_list, flag_list)[source]

Sets the annot all instances found bit

RESTful:
Method: PUT URL: /api/annot/multiple/
wbia.control.manual_annot_funcs.set_annot_name_rowids(ibs, aid_list, name_rowid_list, notify_wildbook=True, assert_wildbook=False)[source]

name_rowid_list -> annot.name_rowid[aid_list]

Sets names/nids of a list of annotations.

Parameters:
  • aid_list (list) –
  • name_rowid_list (list) –

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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])
wbia.control.manual_annot_funcs.set_annot_name_texts(ibs, aid_list, name_list)[source]

alias

RESTful:
Method: GET URL: /api/annot/name/
wbia.control.manual_annot_funcs.set_annot_names(ibs, aid_list, name_list, **kwargs)[source]

Sets the attrlbl_value of type(INDIVIDUAL_KEY) Sets names/nids of a list of annotations.

CommandLine:
python -m wbia.control.manual_annot_funcs –test-set_annot_names –enableall
RESTful:
Method: PUT URL: /api/annot/name/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
wbia.control.manual_annot_funcs.set_annot_notes(ibs, aid_list, notes_list)[source]

Sets annotation notes

RESTful:
Method: PUT URL: /api/annot/note/
wbia.control.manual_annot_funcs.set_annot_parent_rowid(ibs, aid_list, parent_aid_list)[source]

Sets the annotation’s parent aid. TODO DEPRICATE IN FAVOR OF SEPARATE PARTS TABLE

RESTful:
Method: PUT URL: /api/annot/parent/rowid/
wbia.control.manual_annot_funcs.set_annot_qualities(ibs, aid_list, annot_quality_list)[source]

annot_quality_list -> annot.annot_quality[aid_list]

A quality is an integer representing the following types:

Parameters:
  • aid_list
  • annot_quality_list
SeeAlso:
wbia.const.QUALITY_INT_TO_TEXT
RESTful:
Method: PUT URL: /api/annot/quality/
wbia.control.manual_annot_funcs.set_annot_quality_texts(ibs, aid_list, quality_text_list)[source]

Auto-docstr for ‘set_annot_quality_texts’

RESTful:
Method: PUT URL: /api/annot/quality/text/
wbia.control.manual_annot_funcs.set_annot_reviewed(ibs, aid_list, reviewed_list)[source]

Sets the annot all instances found bit

RESTful:
Method: PUT URL: /api/annot/reviewed/
wbia.control.manual_annot_funcs.set_annot_sex(ibs, aid_list, name_sex_list, eager=True, nInput=None)[source]

Auto-docstr for ‘set_annot_sex’

RESTful:
Method: PUT URL: /api/annot/sex/
wbia.control.manual_annot_funcs.set_annot_sex_texts(ibs, aid_list, name_sex_text_list, eager=True, nInput=None)[source]

Auto-docstr for ‘set_annot_sex_texts’

RESTful:
Method: PUT URL: /api/annot/sex/text/
wbia.control.manual_annot_funcs.set_annot_species(ibs, aid_list, species_text_list, **kwargs)[source]

Sets species/speciesids of a list of annotations. Convenience function for set_annot_lblannot_from_value

RESTful:
Method: PUT URL: /api/annot/species/
wbia.control.manual_annot_funcs.set_annot_species_and_notify(ibs, *args, **kwargs)[source]
wbia.control.manual_annot_funcs.set_annot_species_rowids(ibs, aid_list, species_rowid_list)[source]

species_rowid_list -> annot.species_rowid[aid_list]

Sets species/speciesids of a list of annotations.

Parameters:
  • aid_list
  • species_rowid_list
RESTful:
Method: PUT URL: /api/annot/species/rowid/
wbia.control.manual_annot_funcs.set_annot_staged_metadata(ibs, aid_list, metadata_dict_list)[source]

Sets the annot’s staged metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/annot/staged/metadata/
CommandLine:
python -m wbia.control.manual_annot_funcs –test-set_annot_metadata

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[0:1]
>>> metadata_dict_list = [
>>>     {'test': random.uniform(0.0, 1.0)},
>>> ]
>>> print(ut.repr2(metadata_dict_list))
>>> ibs.set_annot_metadata(aid_list, metadata_dict_list)
>>> # verify results
>>> metadata_dict_list_ = ibs.get_annot_metadata(aid_list)
>>> print(ut.repr2(metadata_dict_list_))
>>> assert metadata_dict_list == metadata_dict_list_
>>> metadata_str_list = [ut.to_json(metadata_dict) for metadata_dict in metadata_dict_list]
>>> print(ut.repr2(metadata_str_list))
>>> metadata_str_list_ = ibs.get_annot_metadata(aid_list, return_raw=True)
>>> print(ut.repr2(metadata_str_list_))
>>> assert metadata_str_list == metadata_str_list_
wbia.control.manual_annot_funcs.set_annot_staged_user_ids(ibs, aid_list, user_id_list)[source]

Sets the staged annotation user id

RESTful:
Method: PUT URL: /api/annot/staged/user/
wbia.control.manual_annot_funcs.set_annot_staged_uuids(ibs, aid_list, annot_uuid_list)[source]
Returns:all nids of known animals (does not include unknown names)
Return type:list_ (list)
wbia.control.manual_annot_funcs.set_annot_static_encounter(ibs, aids, vals)[source]
wbia.control.manual_annot_funcs.set_annot_tag_text(ibs, aid_list, annot_tags_list, duplicate_behavior='error')[source]

annot_tags_list -> annot.annot_tags[aid_list]

Parameters:
  • aid_list
  • annot_tags_list
wbia.control.manual_annot_funcs.set_annot_thetas(ibs, aid_list, theta_list, delete_thumbs=True, update_visual_uuids=True, notify_root=True)[source]

Sets thetas of a list of chips by aid

RESTful:
Method: PUT URL: /api/annot/theta/
wbia.control.manual_annot_funcs.set_annot_verts(ibs, aid_list, verts_list, theta_list=None, interest_list=None, canonical_list=None, delete_thumbs=True, update_visual_uuids=True, notify_root=True)[source]

Sets the vertices [(x, y), …] of a list of chips by aid

RESTful:
Method: PUT URL: /api/annot/vert/
wbia.control.manual_annot_funcs.set_annot_viewpoint_code(ibs, aids, view_codes, _code_update=True)[source]
wbia.control.manual_annot_funcs.set_annot_viewpoint_int(ibs, aids, view_ints, _code_update=True)[source]
wbia.control.manual_annot_funcs.set_annot_viewpoints(ibs, aid_list, viewpoint_list, purge_cache=True, only_allow_known=True, _yaw_update=False, _code_update=True)[source]

Sets the viewpoint of the annotation

RESTful:
Method: PUT URL: /api/annot/viewpoint/
wbia.control.manual_annot_funcs.set_annot_yaw_texts(ibs, aid_list, yaw_text_list)[source]

Auto-docstr for ‘set_annot_yaw_texts’

DEPRICATE

RESTful:
Method: PUT URL: /api/annot/yaw/text/
wbia.control.manual_annot_funcs.set_annot_yaws(ibs, aid_list, yaw_list, input_is_degrees=False)[source]

Sets the yaw of a list of chips by aid

DEPRICATE

A yaw is the yaw of the annotation in radians 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:
wbia.const.VIEWTEXT_TO_YAW_RADIANS

References

http://upload.wikimedia.org/wikipedia/commons/7/7e/Rollpitchyawplain.png

RESTful:
Method: PUT URL: /api/annot/yaw/
wbia.control.manual_annot_funcs.testdata_ibs()[source]

Auto-docstr for ‘testdata_ibs’

wbia.control.manual_annot_funcs.update_annot_rotate_90(ibs, aid_list, direction)[source]
wbia.control.manual_annot_funcs.update_annot_rotate_left_90(ibs, aid_list)[source]
wbia.control.manual_annot_funcs.update_annot_rotate_right_90(ibs, aid_list)[source]
wbia.control.manual_annot_funcs.update_annot_semantic_uuids(ibs, aid_list, _visual_infotup=None)[source]

Ensures that annots have the proper semantic uuids

wbia.control.manual_annot_funcs.update_annot_visual_uuids(ibs, aid_list)[source]

Ensures that annots have the proper visual uuids

Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (list) – list of annotation rowids
CommandLine:
python -m wbia.control.manual_annot_funcs update_annot_visual_uuids –db PZ_Master1 python -m wbia.control.manual_annot_funcs update_annot_visual_uuids python -m wbia update_annot_visual_uuids –db PZ_Master1 python -m wbia update_annot_visual_uuids –db PZ_Master0 python -m wbia update_annot_visual_uuids –db PZ_MTEST

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annot_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs._get_all_aids()[0:1]
>>> update_annot_visual_uuids(ibs, aid_list)
>>> result = ibs.get_annot_visual_uuids(aid_list)[0]
>>> print(result)
8687dcb6-1f1f-fdd3-8b72-8f36f9f41905

wbia.control.manual_annotgroup_funcs module

Autogenerated IBEISController functions

TemplateInfo:
autogen_time = 13:31:28 2015/04/28 autogen_key = annotgroup
ToRegenerate:
python -m wbia.templates.template_generator –key annotgroup –Tcfg with_web_api=True with_api_cache=False with_deleters=True no_extern_deleters=True –diff python -m wbia.templates.template_generator –key annotgroup –Tcfg with_web_api=True with_api_cache=False with_deleters=True no_extern_deleters=True –write
wbia.control.manual_annotgroup_funcs.add_annotgroup(ibs, annotgroup_uuid_list, annotgroup_text_list, annotgroup_note_list)[source]
Returns:returns annotgroup_rowid_list of added (or already existing annotgroups)
TemplateInfo:
Tadder_native tbl = annotgroup
wbia.control.manual_annotgroup_funcs.delete_annotgroup(ibs, annotgroup_rowid_list, config2_=None)[source]

annotgroup.delete(annotgroup_rowid_list)

delete annotgroup rows

Parameters:annotgroup_rowid_list
Returns:num_deleted
Return type:int
TemplateInfo:
Tdeleter_native_tbl tbl = annotgroup

Example

>>> # DISABLE_DOCTEST
>>> from wbia.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,))
wbia.control.manual_annotgroup_funcs.get_annotgroup_gar_rowids(ibs, annotgroup_rowid_list, eager=True, nInput=None)[source]

Auto-docstr for ‘get_annotgroup_gar_rowids’

RESTful:
Method: GET URL: /api/annotgroup/gar/rowids/
wbia.control.manual_annotgroup_funcs.get_annotgroup_note(ibs, annotgroup_rowid_list, eager=True, nInput=None)[source]

annotgroup_note_list <- annotgroup.annotgroup_note[annotgroup_rowid_list]

gets data from the “native” column “annotgroup_note” in the “annotgroup” table

Parameters:annotgroup_rowid_list (list) –
Returns:annotgroup_note_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotgroup_note tbl = annotgroup

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_annotgroup_funcs.get_annotgroup_rowid_from_superkey(ibs, annotgroup_text_list, eager=True, nInput=None)[source]

annotgroup_rowid_list <- annotgroup[annotgroup_text_list]

Parameters:lists (superkey) – annotgroup_text_list
Returns:annotgroup_rowid_list
TemplateInfo:
Tgetter_native_rowid_from_superkey tbl = annotgroup
wbia.control.manual_annotgroup_funcs.get_annotgroup_text(ibs, annotgroup_rowid_list, eager=True, nInput=None)[source]

annotgroup_text_list <- annotgroup.annotgroup_text[annotgroup_rowid_list]

gets data from the “native” column “annotgroup_text” in the “annotgroup” table

Parameters:annotgroup_rowid_list (list) –
Returns:annotgroup_text_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotgroup_text tbl = annotgroup

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_annotgroup_funcs.get_annotgroup_uuid(ibs, annotgroup_rowid_list, eager=True, nInput=None)[source]

annotgroup_uuid_list <- annotgroup.annotgroup_uuid[annotgroup_rowid_list]

gets data from the “native” column “annotgroup_uuid” in the “annotgroup” table

Parameters:annotgroup_rowid_list (list) –
Returns:annotgroup_uuid_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotgroup_uuid tbl = annotgroup

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_annotgroup_funcs.set_annotgroup_note(ibs, annotgroup_rowid_list, annotgroup_note_list, duplicate_behavior='error')[source]

annotgroup_note_list -> annotgroup.annotgroup_note[annotgroup_rowid_list]

Parameters:
  • annotgroup_rowid_list
  • annotgroup_note_list
TemplateInfo:
Tsetter_native_column tbl = annotgroup col = annotgroup_note
wbia.control.manual_annotgroup_funcs.set_annotgroup_uuid(ibs, annotgroup_rowid_list, annotgroup_uuid_list, duplicate_behavior='error')[source]

annotgroup_uuid_list -> annotgroup.annotgroup_uuid[annotgroup_rowid_list]

Parameters:
  • annotgroup_rowid_list
  • annotgroup_uuid_list
TemplateInfo:
Tsetter_native_column tbl = annotgroup col = annotgroup_uuid
wbia.control.manual_annotgroup_funcs.testdata_ibs(defaultdb='testdb1')[source]

wbia.control.manual_annotmatch_funcs module

Autogenerated IBEISController functions

TemplateInfo:
autogen_time = 11:34:25 2016/01/05 autogen_key = annotmatch
ToRegenerate:
python -m wbia.templates.template_generator –key annotmatch –Tcfg with_web_api=False with_api_cache=False with_deleters=True no_extern_deleters=True –diff python -m wbia.templates.template_generator –key annotmatch –Tcfg with_web_api=False with_api_cache=False with_deleters=True no_extern_deleters=True –write
wbia.control.manual_annotmatch_funcs.add_annotmatch(ibs, aid1_list, aid2_list, annotmatch_evidence_decision_list=None, annotmatch_meta_decision_list=None, annotmatch_confidence_list=None, annotmatch_tag_text_list=None, annotmatch_reviewer_list=None, annotmatch_posixtime_modified_list=None, anotmatch_count_list=None)[source]
Returns:returns annotmatch_rowid_list of added (or already existing annotmatchs)
TemplateInfo:
Tadder_native tbl = annotmatch
wbia.control.manual_annotmatch_funcs.delete_annotmatch(ibs, annotmatch_rowid_list)[source]

annotmatch.delete(annotmatch_rowid_list)

delete annotmatch rows

Parameters:annotmatch_rowid_list
Returns:num_deleted
Return type:int
TemplateInfo:
Tdeleter_native_tbl tbl = annotmatch

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_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,))
wbia.control.manual_annotmatch_funcs.get_annotmatch_aid1(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

aid1_list <- annotmatch.aid1[annotmatch_rowid_list]

gets data from the “native” column “aid1” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:aid1_list
Return type:list
TemplateInfo:
Tgetter_table_column col = aid1 tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_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)
wbia.control.manual_annotmatch_funcs.get_annotmatch_aid2(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

aid2_list <- annotmatch.aid2[annotmatch_rowid_list]

gets data from the “native” column “aid2” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:aid2_list
Return type:list
TemplateInfo:
Tgetter_table_column col = aid2 tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_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)
wbia.control.manual_annotmatch_funcs.get_annotmatch_confidence(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

annotmatch_confidence_list <- annotmatch.annotmatch_confidence[annotmatch_rowid_list]

gets data from the “native” column “annotmatch_confidence” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:annotmatch_confidence_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotmatch_confidence tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_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)
wbia.control.manual_annotmatch_funcs.get_annotmatch_count(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]
wbia.control.manual_annotmatch_funcs.get_annotmatch_evidence_decision(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

gets data from the “native” column “annotmatch_evidence_decision” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:annotmatch_evidence_decision_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotmatch_evidence_decision tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_annotmatch_funcs import *  # NOQA
>>> ibs, config2_ = testdata_annotmatch()
>>> annotmatch_rowid_list = ibs._get_all_annotmatch_rowids()
>>> eager = True
>>> decisions = ibs.get_annotmatch_evidence_decision(annotmatch_rowid_list, eager=eager)
>>> assert len(annotmatch_rowid_list) == len(decisions)
wbia.control.manual_annotmatch_funcs.get_annotmatch_meta_decision(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]
wbia.control.manual_annotmatch_funcs.get_annotmatch_posixtime_modified(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

annotmatch_posixtime_modified_list <- annotmatch.annotmatch_posixtime_modified[annotmatch_rowid_list]

gets data from the “native” column “annotmatch_posixtime_modified” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:annotmatch_posixtime_modified_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotmatch_posixtime_modified tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_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)
wbia.control.manual_annotmatch_funcs.get_annotmatch_reviewer(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

annotmatch_reviewer_list <- annotmatch.annotmatch_reviewer[annotmatch_rowid_list]

gets data from the “native” column “annotmatch_reviewer” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:annotmatch_reviewer_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotmatch_reviewer tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_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)
wbia.control.manual_annotmatch_funcs.get_annotmatch_rowid(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

annotmatch_rowid_list <- annotmatch.annotmatch_rowid[annotmatch_rowid_list]

gets data from the “native” column “annotmatch_rowid” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:annotmatch_rowid_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotmatch_rowid tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_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)
wbia.control.manual_annotmatch_funcs.get_annotmatch_rowid_from_superkey(ibs, aid1_list, aid2_list, eager=True, nInput=None)[source]

annotmatch_rowid_list <- annotmatch[aid1_list, aid2_list]

Parameters:lists (superkey) – aid1_list, aid2_list
Returns:annotmatch_rowid_list
TemplateInfo:
Tgetter_native_rowid_from_superkey tbl = annotmatch
wbia.control.manual_annotmatch_funcs.get_annotmatch_tag_text(ibs, annotmatch_rowid_list, eager=True, nInput=None)[source]

annotmatch_tag_text_list <- annotmatch.annotmatch_tag_text[annotmatch_rowid_list]

gets data from the “native” column “annotmatch_tag_text” in the “annotmatch” table

Parameters:annotmatch_rowid_list (list) –
Returns:annotmatch_tag_text_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotmatch_tag_text tbl = annotmatch

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_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)
wbia.control.manual_annotmatch_funcs.set_annotmatch_confidence(ibs, annotmatch_rowid_list, annotmatch_confidence_list, duplicate_behavior='error')[source]

annotmatch_confidence_list -> annotmatch.annotmatch_confidence[annotmatch_rowid_list]

Parameters:
  • annotmatch_rowid_list
  • annotmatch_confidence_list
TemplateInfo:
Tsetter_native_column tbl = annotmatch col = annotmatch_confidence
wbia.control.manual_annotmatch_funcs.set_annotmatch_count(ibs, annotmatch_rowid_list, annotmatch_count_list, duplicate_behavior='error')[source]
wbia.control.manual_annotmatch_funcs.set_annotmatch_evidence_decision(ibs, annotmatch_rowid_list, annotmatch_evidence_decision_list, duplicate_behavior='error')[source]
wbia.control.manual_annotmatch_funcs.set_annotmatch_meta_decision(ibs, annotmatch_rowid_list, annotmatch_meta_decision_list, duplicate_behavior='error')[source]
wbia.control.manual_annotmatch_funcs.set_annotmatch_posixtime_modified(ibs, annotmatch_rowid_list, annotmatch_posixtime_modified_list, duplicate_behavior='error')[source]

annotmatch_posixtime_modified_list -> annotmatch.annotmatch_posixtime_modified[annotmatch_rowid_list]

Parameters:
  • annotmatch_rowid_list
  • annotmatch_posixtime_modified_list
TemplateInfo:
Tsetter_native_column tbl = annotmatch col = annotmatch_posixtime_modified
wbia.control.manual_annotmatch_funcs.set_annotmatch_reviewer(ibs, annotmatch_rowid_list, annotmatch_reviewer_list, duplicate_behavior='error')[source]

annotmatch_reviewer_list -> annotmatch.annotmatch_reviewer[annotmatch_rowid_list]

Parameters:
  • annotmatch_rowid_list
  • annotmatch_reviewer_list
TemplateInfo:
Tsetter_native_column tbl = annotmatch col = annotmatch_reviewer
wbia.control.manual_annotmatch_funcs.set_annotmatch_tag_text(ibs, annotmatch_rowid_list, annotmatch_tag_text_list, duplicate_behavior='error')[source]

annotmatch_tag_text_list -> annotmatch.annotmatch_tag_text[annotmatch_rowid_list]

Parameters:
  • annotmatch_rowid_list
  • annotmatch_tag_text_list
TemplateInfo:
Tsetter_native_column tbl = annotmatch col = annotmatch_tag_text
wbia.control.manual_annotmatch_funcs.testdata_annotmatch(defaultdb='testdb1')[source]

wbia.control.manual_chip_funcs module

wbia.control.manual_chip_funcs.delete_annot_chips(ibs, aid_list, config2_=None, fallback=True)[source]

Clears annotation data (does not remove the annotation)

RESTful:
Method: DELETE URL: /api/chip/
wbia.control.manual_chip_funcs.delete_part_chips(ibs, part_rowid_list, config2_=None)[source]

Clears part data

RESTful:
Method: DELETE URL: /api/pchip/
wbia.control.manual_chip_funcs.get_annot_chip_dlensqrd(ibs, aid_list, config2_=None)[source]
Parameters:
Returns:

topx2_dlen_sqrd

Return type:

list

CommandLine:
python -m wbia.control.manual_chip_funcs get_annot_chip_dlensqrd
RESTful:
Method: GET URL: /api/chip/dlensqrd/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_chip_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]
wbia.control.manual_chip_funcs.get_annot_chip_fpath(ibs, aid_list, ensure=True, config2_=None, check_external_storage=False, num_retries=1)[source]

Returns the cached chip uri based off of the current configuration.

Returns:cfpaths defined by ANNOTATIONs
Return type:chip_fpath_list (list)
RESTful:
Method: GET URL: /api/chip/fpath/
wbia.control.manual_chip_funcs.get_annot_chip_sizes(ibs, aid_list, ensure=True, config2_=None)[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (int) – list of annotation ids
  • ensure (bool) – eager evaluation if True
Returns:

chipsz_list - the (width, height) of computed annotation chips.

Return type:

list

CommandLine:
python -m wbia.control.manual_chip_funcs get_annot_chip_sizes

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_chip_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.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)]
wbia.control.manual_chip_funcs.get_annot_chip_thumb_path2(ibs, aid_list, thumbsize=None, config=None)[source]

get chip thumb info The return type of this is interpreted and computed in ~/code/guitool/guitool/api_thumb_delegate.py

Parameters:
  • aid_list (list) –
  • thumbsize (int) –
Returns:

thumbtup_list - [(thumb_path, img_path, imgsize, bboxes, thetas)]

Return type:

list

CommandLine:
python -m wbia.control.manual_chip_funcs –test-get_annot_chip_thumbtup
RESTful:
Method: GET URL: /api/chip/thumbtup/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_chip_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[1:2]
>>> thumbsize = 128
>>> result = get_annot_chip_thumbtup(ibs, aid_list, thumbsize)
>>> print(result)
wbia.control.manual_chip_funcs.get_annot_chip_thumbpath(ibs, aid_list, thumbsize=None, config2_=None)[source]

just constructs the path. does not compute it. that is done by api_thumb_delegate

RESTful:
Method: GET URL: /api/chip/thumbpath/
wbia.control.manual_chip_funcs.get_annot_chip_thumbtup(ibs, aid_list, thumbsize=None, config2_=None)[source]

get chip thumb info The return type of this is interpreted and computed in ~/code/guitool/guitool/api_thumb_delegate.py

Parameters:
  • aid_list (list) –
  • thumbsize (int) –
Returns:

thumbtup_list - [(thumb_path, img_path, imgsize, bboxes, thetas)]

Return type:

list

CommandLine:
python -m wbia.control.manual_chip_funcs –test-get_annot_chip_thumbtup
RESTful:
Method: GET URL: /api/chip/thumbtup/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_chip_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[1:2]
>>> thumbsize = 128
>>> result = get_annot_chip_thumbtup(ibs, aid_list, thumbsize)
>>> print(result)
wbia.control.manual_chip_funcs.get_annot_chips(ibs, aid_list, config2_=None, ensure=True, verbose=False, eager=True)[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • aid_list (int) – list of annotation ids
  • ensure (bool) – eager evaluation if True
  • config2 (QueryRequest) – query request object with hyper-parameters
Returns:

chip_list

Return type:

list

CommandLine:
python -m wbia.control.manual_chip_funcs get_annot_chips
RESTful:
Method: GET URL: /api/chip/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_chip_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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 = [chip.sum() for chip in chip_list]
>>> target = [96053684, 65140000, 67223205, 109367378, 73995663]
>>> ut.assert_almost_eq(chip_sum_list, target, 15000)
>>> print(chip_sum_list)
wbia.control.manual_chip_funcs.get_part_chips(ibs, part_rowid_list, config2_=None, ensure=True, verbose=False, eager=True)[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • part_rowid_list (int) – list of part ids
  • ensure (bool) – eager evaluation if True
  • config2 (QueryRequest) – query request object with hyper-parameters
Returns:

chip_list

Return type:

list

CommandLine:
python -m wbia.control.manual_chip_funcs get_part_chips
RESTful:
Method: GET URL: /api/pchip/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_chip_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> aid_list = aid_list[:10]
>>> bbox_list = ibs.get_annot_bboxes(aid_list)
>>> bbox_list = [
>>>     (xtl + 100, ytl + 100, w - 100, h - 100)
>>>     for xtl, ytl, w, h in bbox_list
>>> ]
>>> part_rowid_list = ibs.add_parts(aid_list, bbox_list=bbox_list)
>>> config2_ = {'dim_size': 450, 'resize_dim': 'area'}
>>> chip_list = get_part_chips(ibs, part_rowid_list, config2_)
>>> chip_sum_list = [chip.sum() for chip in chip_list]
>>> target = [86765003, 62005000, 61333186, 111424764, 63590900, 51397198, 139395045, 84100000, 41254190, 89657450]
>>> ut.assert_almost_eq(chip_sum_list, target, 50000)
>>> print(chip_sum_list)
wbia.control.manual_chip_funcs.testdata_ibs()[source]

wbia.control.manual_feat_funcs module

python -c “import utool as ut; ut.write_modscript_alias(‘Tgen.sh’, ‘wbia.templates.template_generator’)” sh Tgen.sh –key feat –Tcfg with_setters=False with_getters=True with_adders=True –modfname manual_feat_funcs sh Tgen.sh –key feat –Tcfg with_deleters=True –autogen_modname manual_feat_funcs

wbia.control.manual_feat_funcs.delete_annot_feats(ibs, aid_list, config2_=None)[source]

annot.feat.delete(aid_list)

Parameters:aid_list
TemplateInfo:
Tdeleter_rl_depenant root = annot leaf = feat
CommandLine:
python -m wbia.control.manual_feat_funcs –test-delete_annot_feats python -m wbia.control.manual_feat_funcs –test-delete_annot_feats –verb-control

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_feat_funcs.get_annot_feat_rowids(ibs, aid_list, ensure=True, eager=True, nInput=None, config2_=None, num_retries=1)[source]
CommandLine:
python -m wbia.control.manual_feat_funcs get_annot_feat_rowids –show

Example

>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.query_request import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aids = ibs.get_valid_aids()[0:3]
>>> config2_ = {}
>>> ibs.delete_annot_feats(aids, config2_=config2_)  # Remove the chips
>>> ut.remove_file_list(ibs.get_annot_chip_fpath(aids, config2_=config2_))
>>> qfids = ibs.get_annot_feat_rowids(aids, ensure=True, config2_=config2_)
wbia.control.manual_feat_funcs.get_annot_kpts(ibs, aid_list, ensure=True, eager=True, nInput=None, config2_=None)[source]
Parameters:
  • 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:

annotation descriptor keypoints

Return type:

kpts_list (list)

CommandLine:
python -m wbia.control.manual_feat_funcs –test-get_annot_kpts –show python -m wbia.control.manual_feat_funcs –test-get_annot_kpts –show –darken .9 python -m wbia.control.manual_feat_funcs –test-get_annot_kpts –show –darken .9 –verbose python -m wbia.control.manual_feat_funcs –test-get_annot_kpts –show –darken .9 –verbose –no-affine-invariance python -m wbia.control.manual_feat_funcs –test-get_annot_kpts –show –darken .9 –verbose –no-affine-invariance –scale_max=20 python -m wbia.control.manual_feat_funcs –test-get_annot_kpts –show –feat_type=hesaff+siam128 ipython -i – –show –feat_type=hesaff+siam128

Example

>>> # SLOW_DOCTEST
>>> # xdoctest: +SKIP
>>> from wbia.control.manual_feat_funcs import *  # NOQA
>>> import vtool as vt
>>> import numpy as np
>>> import wbia
>>> import wbia.viz.interact
>>> # build test data
>>> qreq1_ = wbia.testdata_qreq_(defaultdb='testdb1', p=['default:RI=True'])
>>> qreq2_ = wbia.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_.extern_query_config2),))
...     #print('feat_config_rowid2 = %r' % (ibs.get_feat_config_rowid(config2_=qreq2_.extern_query_config2),))
>>> # Force recomputation of features
>>> with ut.Indenter('[DELETE1]'):
...     ibs.delete_annot_feats(aid_list, config2_=qreq1_.extern_query_config2)
>>> with ut.Indenter('[DELETE2]'):
...     ibs.delete_annot_feats(aid_list, config2_=qreq2_.extern_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_.extern_query_config2)
>>> with ut.Indenter('[GET2]'):
...     kpts2_list = get_annot_kpts(ibs, aid_list, ensure, eager, nInput, qreq2_.extern_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()
>>> #wbia.viz.viz_chip.show_chip(ibs, aid_list[0], config2_=qreq1_, ori=True)
>>> wbia.viz.interact.interact_chip.ishow_chip(ibs, aid_list[0], config2_=qreq1_.extern_query_config2, ori=True, fnum=1)
>>> wbia.viz.interact.interact_chip.ishow_chip(ibs, aid_list[0], config2_=qreq2_.extern_query_config2, ori=True, fnum=2)
>>> ut.show_if_requested()
wbia.control.manual_feat_funcs.get_annot_num_feats(ibs, aid_list, ensure=True, eager=True, nInput=None, config2_=None, _debug=False)[source]
Parameters:aid_list (list) –
Returns:num descriptors per annotation
Return type:nFeats_list (list)
CommandLine:
python -m wbia.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 wbia.control.manual_feat_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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_, _debug=True)
>>> print('nFeats_list = %r' % (nFeats_list,))
>>> assert len(nFeats_list) == 3
>>> ut.assert_inbounds(nFeats_list[0], 1200, 1263)
>>> ut.assert_inbounds(nFeats_list[1],  900,  923)
>>> ut.assert_inbounds(nFeats_list[2], 1300, 1344)
Ignore:
depc = ibs.depc_annot tablename = ‘feat’ input_rowids = aid_list colnames = ‘num_feats’ config = config2_
wbia.control.manual_feat_funcs.get_annot_vecs(ibs, aid_list, ensure=True, eager=True, nInput=None, config2_=None)[source]
Returns:annotation descriptor vectors
Return type:vecs_list (list)
wbia.control.manual_feat_funcs.testdata_ibs()[source]

wbia.control.manual_featweight_funcs module

wbia.control.manual_featweight_funcs.get_annot_fgweight_rowids(ibs, aid_list, config2_=None, ensure=True)[source]
Parameters:
  • ibs (wbia.IBEISController) – image analysis api
  • aid_list (list) – list of annotation rowids
  • config2 (dict) – (default = None)
  • ensure (bool) – eager evaluation if True(default = True)
CommandLine:
python -m wbia.control.manual_featweight_funcs get_annot_fgweight_rowids
wbia.control.manual_featweight_funcs.get_annot_fgweights(ibs, aid_list, config2_=None, ensure=True)[source]
Parameters:
  • ibs (wbia.IBEISController) – image analysis api
  • aid_list (list) – list of annotation rowids
  • config2 (dict) – (default = None)
  • ensure (bool) – eager evaluation if True(default = True)
CommandLine:
python -m wbia.control.manual_featweight_funcs get_annot_fgweights

Example

>>> # xdoctest: +REQUIRES(module:wbia_cnn)
>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_featweight_funcs import *  # NOQA
>>> import wbia
>>> import numpy as np
>>> ibs = wbia.opendb(defaultdb='PZ_MTEST')
>>> aid_list = [1, 2]
>>> config2_ = None
>>> ensure = True
>>> fgws_list = get_annot_fgweights(ibs, aid_list, config2_, ensure)
>>> depth = ut.depth_profile(fgws_list)
>>> assert np.all(np.array(depth) > [1200, 1400])
>>> percent_ = (fgws_list[0] > .5).sum() / len(fgws_list[0])
>>> print('Calculated percent = %0.04f' % (percent_, ))
>>> assert percent_ > .6 and percent_ < .8, 'should be around 0.7472'

wbia.control.manual_garelate_funcs module

Autogenerated IBEISController functions

TemplateInfo:
autogen_time = 13:34:34 2015/04/28 autogen_key = gar
ToRegenerate:
python -m wbia.templates.template_generator –key gar –Tcfg with_web_api=True with_api_cache=False with_deleters=True no_extern_deleters=True –diff python -m wbia.templates.template_generator –key gar –Tcfg with_web_api=True with_api_cache=False with_deleters=True no_extern_deleters=True –write
wbia.control.manual_garelate_funcs.add_gar(ibs, annotgroup_rowid_list, aid_list)[source]
Returns:returns gar_rowid_list of added (or already existing gars)
TemplateInfo:
Tadder_native tbl = gar
wbia.control.manual_garelate_funcs.delete_gar(ibs, gar_rowid_list, config2_=None)[source]

gar.delete(gar_rowid_list)

delete gar rows

Parameters:gar_rowid_list
Returns:num_deleted
Return type:int
TemplateInfo:
Tdeleter_native_tbl tbl = gar

Example

>>> # DISABLE_DOCTEST
>>> from wbia.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,))
wbia.control.manual_garelate_funcs.get_gar_aid(ibs, gar_rowid_list, eager=True, nInput=None)[source]

aid_list <- gar.aid[gar_rowid_list]

gets data from the “native” column “aid” in the “gar” table

Parameters:gar_rowid_list (list) –
Returns:aid_list
Return type:list
TemplateInfo:
Tgetter_table_column col = aid tbl = gar

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_garelate_funcs.get_gar_annotgroup_rowid(ibs, gar_rowid_list, eager=True, nInput=None)[source]

annotgroup_rowid_list <- gar.annotgroup_rowid[gar_rowid_list]

gets data from the “native” column “annotgroup_rowid” in the “gar” table

Parameters:gar_rowid_list (list) –
Returns:annotgroup_rowid_list
Return type:list
TemplateInfo:
Tgetter_table_column col = annotgroup_rowid tbl = gar

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_garelate_funcs.get_gar_rowid_from_superkey(ibs, annotgroup_rowid_list, aid_list, eager=True, nInput=None)[source]

gar_rowid_list <- gar[annotgroup_rowid_list, aid_list]

Parameters:lists (superkey) – annotgroup_rowid_list, aid_list
Returns:gar_rowid_list
TemplateInfo:
Tgetter_native_rowid_from_superkey tbl = gar
wbia.control.manual_garelate_funcs.testdata_ibs(defaultdb='testdb1')[source]

wbia.control.manual_gsgrelate_funcs module

CommandLine:
# Autogenerate ImageSet Functions # key should be the table name # the write flag makes a file, but dont use that python -m wbia.templates.template_generator –key imageset_image_relationship –onlyfn
wbia.control.manual_gsgrelate_funcs.add_image_relationship(ibs, gid_list, imgsetid_list)[source]

Adds a relationship between an image and and imageset

wbia.control.manual_gsgrelate_funcs.delete_empty_imgsetids(ibs)[source]

Removes imagesets without images

Parameters:ibs (IBEISController) – wbia controller object
CommandLine:
python -m wbia.control.manual_gsgrelate_funcs –test-delete_empty_imgsetids

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_gsgrelate_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> # execute function
>>> result = ibs.delete_empty_imgsetids()
>>> # verify results
>>> print(result)
wbia.control.manual_gsgrelate_funcs.delete_gsgr_image_relations(ibs, gid_list)[source]

Removes relationship between input images and all imagesets

wbia.control.manual_gsgrelate_funcs.delete_gsgr_imageset_relations(ibs, imgsetid_list)[source]

Removes relationship between input imagesets and all images

wbia.control.manual_gsgrelate_funcs.get_gsgr_rowid_from_superkey(ibs, gid_list, imgsetid_list)[source]
Returns:eg-relate-ids from info constrained to be unique (imgsetid, gid)
Return type:gsgrid_list (list)
wbia.control.manual_gsgrelate_funcs.get_image_gsgrids(ibs, gid_list)[source]
Returns:a list of imageset-image-relationship rowids for each imageid
Return type:list_ (list)
wbia.control.manual_gsgrelate_funcs.unrelate_images_and_imagesets(ibs, gid_list, imgsetid_list)[source]

Seems to unrelate specific image imageset pairs

Parameters:
Returns:

gids_list

Return type:

list

CommandLine:
python -m wbia.control.manual_gsgrelate_funcs –test-unrelate_images_and_imagesets python -c “import utool; print(utool.auto_docstr(‘wbia.control.manual_gsgrelate_funcs’, ‘delete_gsgr_image_relations’))”

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_gsgrelate_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> # Reset and compute imagesets
>>> ibs.delete_all_imagesets()
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> imgsetid_list = ibs.get_valid_imgsetids()
>>> gids_list = ibs.get_imageset_gids(imgsetid_list)
>>> assert len(imgsetid_list) == 2, 'bad len %r' % (len(imgsetid_list),)
>>> assert len(gids_list) == 2, 'bad len %r' % (len(gids_list),)
>>> assert len(gids_list[0]) == 7, 'bad len %r' % (len(gids_list[0]),)
>>> assert len(gids_list[1]) == 6, 'bad len %r' % (len(gids_list[1]),)
>>> # 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], 'imgset2_gids should now only be in imageset1'
>>> assert imgset2_gids[0] not in gids_list_[1], 'imgset2_gids should now only be in imageset1'

wbia.control.manual_image_funcs module

Functions for images and encoutners that will be injected into an IBEISController instance.

CommandLine:

# Autogenerate ImageSet Functions # key should be the table name # the write flag makes a file, but dont use that python -m wbia.templates.template_generator –key image –onlyfn python -m wbia.templates.template_generator –key image –fnfilt timedelta_posix –modfname manual_image_funcs # NOQA python -m wbia.templates.template_generator –key image –fnfilt location –modfname manual_image_funcs # NOQA python -m wbia.templates.template_generator –key image –fnfilt set_.*time –modfname manual_image_funcs # NOQA

image_timedelta_posix

wbia.control.manual_image_funcs.add_images(ibs, gpath_list, params_list=None, as_annots=False, auto_localize=None, location_for_names=None, ensure_unique=False, ensure_loadable=True, ensure_exif=True, **kwargs)[source]

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.

Parameters:
  • 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:

gids are image rowids

Return type:

gid_list (list of rowids)

RESTful:
Method: POST URL: /api/image/
CommandLine:
python -m wbia.control.manual_image_funcs –test-add_images
Doctest:
>>> # Test returns None on fail to add
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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
Doctest:
>>> # FIXME failing-test (22-Jul-2020) This test is failing and it's not clear how to fix it
>>> # xdoctest: +SKIP
>>> # test double add
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
wbia.control.manual_image_funcs.compute_image_uuids(ibs, gpath_list, **kwargs)[source]
wbia.control.manual_image_funcs.delete_image_thumbs(ibs, gid_list, **config2_)[source]

Removes image thumbnails from disk

RESTful:
Method: DELETE URL: /api/image/thumb/
Ignore:
>>> # UNPORTED_DOCTEST
>>> gpath_list = ut.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)
wbia.control.manual_image_funcs.delete_images(ibs, gid_list, trash_images=True)[source]

deletes images from the database that belong to gids

RESTful:
Method: DELETE URL: /api/image/
Ignore:
>>> # UNPORTED_DOCTEST
>>> gpath_list = ut.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"
wbia.control.manual_image_funcs.get_image_aids(ibs, gid_list, is_staged=False)[source]
Returns:

a list of aids for each image by gid

Return type:

list_ (list)

Parameters:
Returns:

aids_list

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_aids
RESTful:
Method: GET URL: /api/image/annot/rowid/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.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:
logger.info(‘len(gid_list) = %r’ % (len(gid_list),)) logger.info(‘len(input_list) = %r’ % (len(input_list),)) logger.info(‘len(pair_list) = %r’ % (len(pair_list),)) logger.info(‘len(aidscol) = %r’ % (len(aidscol),)) logger.info(‘len(gidscol) = %r’ % (len(gidscol),)) logger.info(‘len(unique_gids) = %r’ % (len(unique_gids),))
wbia.control.manual_image_funcs.get_image_aids_of_species(ibs, gid_list, species=None)[source]
Returns:a list of aids for each image by gid filtered by species
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/annot/rowid/species/
wbia.control.manual_image_funcs.get_image_annot_uuids(ibs, gid_list)[source]
wbia.control.manual_image_funcs.get_image_annot_uuids_of_species(ibs, gid_list, **kwargs)[source]
wbia.control.manual_image_funcs.get_image_cameratrap(ibs, gid_list)[source]
wbia.control.manual_image_funcs.get_image_contributor_rowid(ibs, gid_list, eager=True, nInput=None)[source]

contributor_rowid_list <- image.contributor_rowid[gid_list]

gets data from the “native” column “contributor_rowid” in the “image” table

Parameters:gid_list (list) –
Returns:contributor_rowid_list - list of image contributor rowids by gid
Return type:list
TemplateInfo:
Tgetter_table_column col = contributor_rowid tbl = image

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> gid_list = ibs._get_all_image_rowids()
>>> eager = True
>>> contributor_rowid_list = ibs.get_image_contributor_rowid(gid_list, eager=eager)
>>> assert len(gid_list) == len(contributor_rowid_list)
wbia.control.manual_image_funcs.get_image_contributor_tag(ibs, gid_list, eager=True, nInput=None)[source]

contributor_tag_list <- image.contributor_tag[gid_list]

Parameters:gid_list (list) –
Returns:contributor_tag_list
Return type:list
TemplateInfo:
Tgetter_extern tbl = image externtbl = contributor externcol = contributor_tag

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> gid_list = ibs._get_all_image_rowids()
>>> eager = True
>>> contributor_tag_list = ibs.get_image_contributor_tag(gid_list, eager=eager)
>>> assert len(gid_list) == len(contributor_tag_list)
wbia.control.manual_image_funcs.get_image_datetime(ibs, gid_list, **kwargs)[source]
wbia.control.manual_image_funcs.get_image_datetime_str(ibs, gid_list, **kwargs)[source]
wbia.control.manual_image_funcs.get_image_detect_confidence(ibs, gid_list)[source]
Returns:image detection confidence as the max of ANNOTATION confidences
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/detect/confidence/
wbia.control.manual_image_funcs.get_image_detectpaths(ibs, gid_list)[source]
Returns:a list of image paths resized to a constant area for detection
Return type:list_ (list)
wbia.control.manual_image_funcs.get_image_enabled(ibs, gid_list)[source]
Returns:“Image Enabled” flag, true if the image is enabled
Return type:list_ (list)
wbia.control.manual_image_funcs.get_image_exif_original(ibs, gid_list)[source]
wbia.control.manual_image_funcs.get_image_exts(ibs, gid_list)[source]
Returns:a list of image uuids by gid
Return type:list_ (list)
wbia.control.manual_image_funcs.get_image_gid(ibs, gid_list, eager=True, nInput=None)[source]

self verifier

CommandLine:
python -m wbia.control.manual_image_funcs –exec-get_image_gid

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.IBEISControl import *  # NOQA
>>> import wbia
>>> ibs = wbia.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_,))
wbia.control.manual_image_funcs.get_image_gids_from_uuid(ibs, uuid_list)[source]
Returns:a list of original image names
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/rowid/uuid/
wbia.control.manual_image_funcs.get_image_gids_with_aids(ibs, gid_list=None)[source]
wbia.control.manual_image_funcs.get_image_gnames(ibs, gid_list)[source]
Parameters:gid_list (list) –
Returns:gname_list - a list of original image names
Return type:list
CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_gnames
RESTful:
Method: GET URL: /api/image/file/name/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> gid_list = ibs.get_valid_gids()
>>> # execute function
>>> gname_list = get_image_gnames(ibs, gid_list)
>>> # verify results
>>> result = ut.repr2(gname_list, nl=1)
>>> 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',
]
wbia.control.manual_image_funcs.get_image_gps(ibs, gid_list)[source]
Returns:-1 if no timedata exists for a given gid
Return type:gps_list (list)
RESTful:
Method: GET URL: /api/image/gps/
wbia.control.manual_image_funcs.get_image_gps2(ibs, gid_list)[source]

Like get_image_gps, but fixes the SQL problem where -1 indicates a nan value.

Returns:-1 if no timedata exists for a given gid
Return type:gps_list (list)
RESTful:
Method: GET URL: /api/image/gps/
wbia.control.manual_image_funcs.get_image_hash(ibs, gid_list=None, algo='md5')[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • gid_list (list) – a list of image absolute paths to img_dir
Returns:

hash_list

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_hash
RESTful:
Method: GET URL: /api/image/file/hash/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> gid_list = ibs.get_valid_gids()[:1]
>>> image_path = ibs.get_image_paths(gid_list)
>>> print('Hashing: %r' % (image_path, ))
>>> hash_list = ibs.get_image_hash(gid_list, algo='md5')
>>> assert hash_list[0] in ['56498e54b5ebbcbbcff60c91a135e8a3', 'ab31dc5e1355247a0ea5ec940802a468'], 'Found %r' % (hash_list, )
>>> hash_list = ibs.get_image_hash(gid_list, algo='sha1')
>>> assert hash_list[0] in ['277e8dac1e5929c097f3fcbca2c77d92e1401d5f', '66ec193a1619b3b6216d1784b4833b6194b13384'], 'Found %r' % (hash_list, )
>>> hash_list = ibs.get_image_hash(gid_list, algo='sha256')
>>> assert hash_list[0] in ['ca03a0d7427c3d2f02e62e157e8d8ea5b7284be67ca67fc391a5747368d3ab0e', 'fd09d22ec18c32d9db2cd026a9511ab228aadf0e5f7271760413448ddd16d483'], 'Found %r' % (hash_list, )
>>> hash_list = ibs.get_image_hash(gid_list, algo='sha512')
>>> assert hash_list[0] in ['7b43dbc709a8cf903170b414f48a0bb7b569b703d9393c20a2cff95c42fd252ed2098bc56cba8eed393bcdf3388e55eee917908c6b0d1b4bc78cf76b1e918d99', '81d1d8ee4c8640b9aad26e4cc03536ed30a43b69e166748ec940a8f00e4776be93f4ac6367a06d92b772a9a60dc104c6f999e7197c2584fdc4cffcac2da71506'], 'Found %r' % (hash_list, )
wbia.control.manual_image_funcs.get_image_heights(ibs, gid_list)[source]
Returns:a list of (width, height) tuples
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/height/
wbia.control.manual_image_funcs.get_image_imagesettext(ibs, gid_list)[source]
Returns:a list of imagesettexts for each image by gid
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/imageset/text/
wbia.control.manual_image_funcs.get_image_imgdata(ibs, gid_list, ignore_orient=False, **kwargs)[source]

alias for get_images with standardized name

wbia.control.manual_image_funcs.get_image_imgset_uuids(ibs, gid_list)[source]
wbia.control.manual_image_funcs.get_image_imgsetids(ibs, gid_list)[source]
Returns:a list of imageset ids for each image by gid
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/imageset/rowid/
wbia.control.manual_image_funcs.get_image_lat(ibs, gid_list)[source]
RESTful:
Method: GET URL: /api/image/lat/
wbia.control.manual_image_funcs.get_image_location_codes(ibs, gid_list, eager=True)[source]

image_location_code_list <- image.image_location_code[gid_list]

gets data from the “native” column “image_location_code” in the “image” table

Parameters:gid_list (list) –
Returns:image_location_code_list
Return type:list
TemplateInfo:
Tgetter_table_column col = image_location_code tbl = image
RESTful:
Method: GET URL: /api/image/location/code/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> gid_list = ibs._get_all_image_rowids()
>>> eager = True
>>> image_location_code_list = ibs.get_image_location_codes(gid_list, eager=eager)
>>> assert len(gid_list) == len(image_location_code_list)
wbia.control.manual_image_funcs.get_image_lon(ibs, gid_list)[source]
RESTful:
Method: GET URL: /api/image/lon/
wbia.control.manual_image_funcs.get_image_metadata(ibs, gid_list, return_raw=False)[source]
Returns:image metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/metadata/
wbia.control.manual_image_funcs.get_image_missing_uuid(ibs, uuid_list)[source]
Returns:a list of missing image uuids
Return type:list_ (list)
wbia.control.manual_image_funcs.get_image_name_uuids(ibs, gid_list)[source]
Parameters:
Returns:

name_uuids_list - the name uuids associated with an image id

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_nids
RESTful:
Method: GET URL: /api/image/name/uuid/
wbia.control.manual_image_funcs.get_image_nids(ibs, gid_list)[source]
Parameters:
Returns:

nids_list - the name ids associated with an image id

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_nids
RESTful:
Method: GET URL: /api/image/name/rowid/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.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)
wbia.control.manual_image_funcs.get_image_notes(ibs, gid_list)[source]
Returns:image notes
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/note/
wbia.control.manual_image_funcs.get_image_num_annotations(ibs, gid_list)[source]
Returns:the number of chips in each image
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/num/annot/
wbia.control.manual_image_funcs.get_image_orientation(ibs, gid_list)[source]
RESTful:
Method: GET URL: /api/image/orientation/
wbia.control.manual_image_funcs.get_image_orientation_str(ibs, gid_list)[source]
RESTful:
Method: GET URL: /api/image/orientation/str/
wbia.control.manual_image_funcs.get_image_party_rowids(ibs, gid_list, eager=True, nInput=None)[source]

party_rowid_list <- image.party_rowid[gid_list]

gets data from the “native” column “party_rowid” in the “image” table

Parameters:gid_list (list) –
Returns:party_rowid_list
Return type:list
TemplateInfo:
Tgetter_table_column col = party_rowid tbl = image

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> gid_list = ibs._get_all_image_rowids()
>>> eager = True
>>> party_rowid_list = ibs.get_image_party_rowids(gid_list, eager=eager)
>>> assert len(gid_list) == len(party_rowid_list)
wbia.control.manual_image_funcs.get_image_party_tag(ibs, gid_list, eager=True, nInput=None)[source]

party_tag_list <- image.party_tag[gid_list]

Parameters:gid_list (list) –
Returns:party_tag_list
Return type:list
TemplateInfo:
Tgetter_extern tbl = image externtbl = party externcol = party_tag

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> gid_list = ibs._get_all_image_rowids()
>>> eager = True
>>> party_tag_list = ibs.get_image_party_tag(gid_list, eager=eager)
>>> assert len(gid_list) == len(party_tag_list)
wbia.control.manual_image_funcs.get_image_paths(ibs, gid_list)[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • gid_list (list) – a list of image absolute paths to img_dir
Returns:

gpath_list

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_paths
RESTful:
Method: GET URL: /api/image/file/path/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> #gid_list = ibs.get_valid_gids()
>>> #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)
>>> ut.assert_eq(new_gpath, new_gpath_list[0])
>>> result = str(new_gpath_list)
>>> ibs.delete_images(gid_list)
>>> print(result)
wbia.control.manual_image_funcs.get_image_reviewed(ibs, gid_list)[source]
Returns:“All Instances Found” flag, true if all objects of interest
Return type:list_ (list)

(animals) have an ANNOTATION in the image

RESTful:
Method: GET URL: /api/image/reviewed/
wbia.control.manual_image_funcs.get_image_sizes(ibs, gid_list)[source]
Returns:a list of (width, height) tuples
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/size/
wbia.control.manual_image_funcs.get_image_species_rowids(ibs, gid_list)[source]
Returns:the name ids associated with an image id
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/species/rowid/
wbia.control.manual_image_funcs.get_image_species_uuids(ibs, gid_list)[source]
Returns:the name ids associated with an image id
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/species/uuid/
wbia.control.manual_image_funcs.get_image_thumbnail(ibs, gid_list, **config)[source]
Returns:the thumbnail path of each gid
Return type:list_ (list)
wbia.control.manual_image_funcs.get_image_thumbpath(ibs, gid_list, ensure_paths=False, **config)[source]
Returns:the thumbnail path of each gid
Return type:list_ (list)
wbia.control.manual_image_funcs.get_image_thumbtup(ibs, gid_list, **kwargs)[source]
Returns:thumbtup_list - [(thumb_path, img_path, imgsize, bboxes, thetas)]
Return type:list
wbia.control.manual_image_funcs.get_image_timedelta_posix(ibs, gid_list, eager=True)[source]

image_timedelta_posix_list <- image.image_timedelta_posix[gid_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

Parameters:gid_list (list) –
Returns:image_timedelta_posix_list
Return type:list
TemplateInfo:
Tgetter_table_column col = image_timedelta_posix tbl = image
RESTful:
Method: GET URL: /api/image/timedelta/posix/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> gid_list = ibs._get_all_image_rowids()
>>> eager = True
>>> image_timedelta_posix_list = ibs.get_image_timedelta_posix(gid_list, eager=eager)
>>> assert len(gid_list) == len(image_timedelta_posix_list)
wbia.control.manual_image_funcs.get_image_unixtime(ibs, gid_list, timedelta_correction=True)[source]
Returns:a list of times that the images were taken by gid.
Return type:list_ (list)
Returns:-1 if no timedata exists for a given gid
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/unixtime/
wbia.control.manual_image_funcs.get_image_unixtime2(ibs, gid_list, **kwargs)[source]

alias for get_image_unixtime_asfloat

wbia.control.manual_image_funcs.get_image_unixtime_asfloat(ibs, gid_list, **kwargs)[source]
Returns:a list of times that the images were taken by gid.
Return type:list_ (list)
Returns:np.nan if no timedata exists for a given gid
Return type:list_ (list)
wbia.control.manual_image_funcs.get_image_uris(ibs, gid_list)[source]
Returns:a list of image uris relative to the image dir by gid
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/uri/
wbia.control.manual_image_funcs.get_image_uris_original(ibs, gid_list)[source]
Returns:a list of (original) image uris relative to the image dir by gid
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/uri/original/
wbia.control.manual_image_funcs.get_image_uuids(ibs, gid_list)[source]
Returns:

a list of image uuids by gid

Return type:

list_ (list)

Parameters:
Returns:

image_uuid_list

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_uuids
RESTful:
Method: GET URL: /api/image/uuid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> gid_list = ibs.get_valid_gids()
>>> # execute function
>>> image_uuid_list = ibs.get_image_uuids(gid_list)
>>> # verify results
>>> result = ut.repr2(image_uuid_list, nl=1)
>>> 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('68ca272d-26f7-1dbb-76e9-08d192c1a4a7'),
    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'),
]
wbia.control.manual_image_funcs.get_image_widths(ibs, gid_list)[source]
Returns:a list of (width, height) tuples
Return type:list_ (list)
RESTful:
Method: GET URL: /api/image/width/
wbia.control.manual_image_funcs.get_images(ibs, gid_list, ignore_orient=False, **kwargs)[source]
Returns:

a list of images in numpy matrix form by gid

Return type:

list_ (list)

Parameters:
Returns:

image_list

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_images

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.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)
wbia.control.manual_image_funcs.get_num_images(ibs, **kwargs)[source]

Number of valid images

wbia.control.manual_image_funcs.get_valid_gids(ibs, imgsetid=None, imgsetid_list=(), require_unixtime=False, require_gps=None, reviewed=None, **kwargs)[source]
Parameters:
Returns:

gid_list

Return type:

list

CommandLine:
python -m wbia.control.manual_image_funcs –test-get_valid_gids
RESTful:
Method: GET URL: /api/image/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.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]
wbia.control.manual_image_funcs.get_valid_image_rowids(ibs, imgsetid=None, require_unixtime=False, reviewed=None)[source]

alias

wbia.control.manual_image_funcs.get_valid_image_uuids(ibs)[source]
Returns:a list of image uuids for all valid gids
Return type:list_ (list)
Parameters:ibs (IBEISController) – wbia controller object
Returns:image_uuid_list
Return type:list
CommandLine:
python -m wbia.control.manual_image_funcs –test-get_image_uuids
wbia.control.manual_image_funcs.image_base64_api(rowid=None, thumbnail=False, fresh=False, **kwargs)[source]

Returns the base64 encoded image of image <rowid>

RESTful:
Method: GET URL: /api/image/<rowid>/
wbia.control.manual_image_funcs.localize_images(ibs, gid_list_=None, cache_uri_dict=None, cleanup=True)[source]

Moves the images into the wbia image cache. Images are renamed to img_uuid.ext

Parameters:
CommandLine:
python -m wbia.control.manual_image_funcs –test-localize_images

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> import os
>>> # build test data
>>> ibs = wbia.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
>>> paths = ibs.get_image_paths(gid_list_)
>>> ibs.delete_images(gid_list_)
>>> for path in paths:
>>>     assert not os.path.exists(path)
Ignore:
ibs.vd()
wbia.control.manual_image_funcs.set_image_cameratrap(ibs, gid_list, cameratrap_list)[source]

Sets the image all instances found bit

wbia.control.manual_image_funcs.set_image_contributor_rowid(ibs, gid_list, contributor_rowid_list, **kwargs)[source]

Sets the image contributor rowid

wbia.control.manual_image_funcs.set_image_enabled(ibs, gid_list, enabled_list)[source]

Sets the image all instances found bit

wbia.control.manual_image_funcs.set_image_gps(ibs, gid_list, gps_list=None, lat_list=None, lon_list=None)[source]
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/
wbia.control.manual_image_funcs.set_image_gps_str(ibs, gid_list, gps_str_list)[source]
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/
wbia.control.manual_image_funcs.set_image_imagesettext(ibs, gid_list, imagesettext_list)[source]

Sets the encoutertext of each image

RESTful:
Method: PUT URL: /api/image/imageset/text/
wbia.control.manual_image_funcs.set_image_imgsetids(ibs, gid_list, imgsetid_list)[source]

Sets the encoutertext of each image

RESTful:
Method: PUT URL: /api/image/imageset/rowid/
wbia.control.manual_image_funcs.set_image_location_codes(ibs, gid_list, image_location_code_list, duplicate_behavior='error')[source]

image_location_code_list -> image.image_location_code[gid_list]

Parameters:
  • gid_list
  • image_location_code_list
TemplateInfo:
Tsetter_native_column tbl = image col = image_location_code
RESTful:
Method: PUT URL: /api/image/location/code/
wbia.control.manual_image_funcs.set_image_metadata(ibs, gid_list, metadata_dict_list)[source]

Sets the image’s metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/image/metadata/
CommandLine:
python -m wbia.control.manual_image_funcs –test-set_image_metadata

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> gid_list = ibs.get_valid_gids()[0:1]
>>> metadata_dict_list = [
>>>     {'test': random.uniform(0.0, 1.0)},
>>> ]
>>> print(ut.repr2(metadata_dict_list))
>>> ibs.set_image_metadata(gid_list, metadata_dict_list)
>>> # verify results
>>> metadata_dict_list_ = ibs.get_image_metadata(gid_list)
>>> print(ut.repr2(metadata_dict_list_))
>>> assert metadata_dict_list == metadata_dict_list_
>>> metadata_str_list = [ut.to_json(metadata_dict) for metadata_dict in metadata_dict_list]
>>> print(ut.repr2(metadata_str_list))
>>> metadata_str_list_ = ibs.get_image_metadata(gid_list, return_raw=True)
>>> print(ut.repr2(metadata_str_list_))
>>> assert metadata_str_list == metadata_str_list_
wbia.control.manual_image_funcs.set_image_notes(ibs, gid_list, notes_list)[source]

Sets the image all instances found bit

RESTful:
Method: PUT URL: /api/image/note/
wbia.control.manual_image_funcs.set_image_orientation(ibs, gid_list, orientation_list)[source]
RESTful:
Method: PUT URL: /api/image/orientation/
wbia.control.manual_image_funcs.set_image_party_rowids(ibs, gid_list, party_rowid_list, duplicate_behavior='error')[source]

party_rowid_list -> image.party_rowid[gid_list]

Parameters:
  • gid_list
  • party_rowid_list
TemplateInfo:
Tsetter_native_column tbl = image col = party_rowid
wbia.control.manual_image_funcs.set_image_reviewed(ibs, gid_list, reviewed_list)[source]

Sets the image all instances found bit

RESTful:
Method: PUT URL: /api/image/reviewed/
wbia.control.manual_image_funcs.set_image_time_posix(ibs, gid_list, image_time_posix_list, duplicate_behavior='error')[source]

image_time_posix_list -> image.image_time_posix[gid_list]

SeeAlso:
set_image_unixtime
Parameters:
  • gid_list
  • image_time_posix_list
TemplateInfo:
Tsetter_native_column tbl = image col = image_time_posix
RESTful:
Method: PUT URL: /api/image/time/posix/
wbia.control.manual_image_funcs.set_image_timedelta_posix(ibs, gid_list, image_timedelta_posix_list, duplicate_behavior='error')[source]

image_timedelta_posix_list -> image.image_timedelta_posix[gid_list]

Parameters:
  • gid_list
  • image_timedelta_posix_list
TemplateInfo:
Tsetter_native_column tbl = image col = image_timedelta_posix
RESTful:
Method: PUT URL: /api/image/timedelta/posix/
wbia.control.manual_image_funcs.set_image_unixtime(ibs, gid_list, unixtime_list, duplicate_behavior='error')[source]
Sets the image unixtime (does not modify exif yet)
alias for set_image_time_posix
RESTful:
Method: PUT URL: /api/image/unixtime/
CommandLine:
python -m wbia.control.manual_image_funcs –test-set_image_unixtime

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> import time
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> gid_list = ibs.get_valid_gids()[0:5]
>>> unixtime_list = [
>>>     random.randint(1, int(time.time()))
>>>     for _ in gid_list
>>> ]
>>> print(ut.repr2(unixtime_list))
>>> ibs.set_image_unixtime(gid_list, unixtime_list)
>>> # verify results
>>> unixtime_list_ = ibs.get_image_unixtime(gid_list)
>>> print(ut.repr2(unixtime_list_))
>>> assert unixtime_list == unixtime_list_

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> import time
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> gid_list = ibs.get_valid_gids()[0:5]
>>> gid_list = gid_list + gid_list
>>> unixtime_list = [
>>>     random.randint(1, int(time.time()))
>>>     for _ in gid_list
>>> ]
>>> try:
>>>     print(ut.repr2(unixtime_list))
>>>     ibs.set_image_unixtime(gid_list, unixtime_list)
>>> except AssertionError:
>>>     pass

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_image_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> import time
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> gid_list = ibs.get_valid_gids()[0:5]
>>> unixtime_list = [
>>>     random.randint(1, int(time.time()))
>>>     for _ in gid_list
>>> ]
>>> gid_list = gid_list + gid_list
>>> unixtime_list = unixtime_list + unixtime_list
>>> print(ut.repr2(unixtime_list))
>>> ibs.set_image_unixtime(gid_list, unixtime_list)
>>> # verify results
>>> unixtime_list_ = ibs.get_image_unixtime(gid_list)
>>> print(ut.repr2(unixtime_list_))
>>> assert unixtime_list == unixtime_list_
wbia.control.manual_image_funcs.set_image_uris(ibs, gid_list, new_gpath_list)[source]

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 wbia image cache on this machine.

RESTful:
Method: PUT URL: /api/image/uri/
wbia.control.manual_image_funcs.set_image_uris_original(ibs, gid_list, new_gpath_list, overwrite=False)[source]

Sets the (original) image URIs to a new local path.

Parameters: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/uri/original/
wbia.control.manual_image_funcs.testdata_ibs()[source]
wbia.control.manual_image_funcs.update_image_rotate_180(ibs, gid_list)[source]
wbia.control.manual_image_funcs.update_image_rotate_90(ibs, gid_list, direction)[source]
wbia.control.manual_image_funcs.update_image_rotate_left_90(ibs, gid_list)[source]
wbia.control.manual_image_funcs.update_image_rotate_right_90(ibs, gid_list)[source]

wbia.control.manual_imageset_funcs module

wbia.control.manual_imageset_funcs.add_imagesets(ibs, imagesettext_list, imageset_uuid_list=None, notes_list=None, occurence_flag_list=None)[source]

Adds a list of imagesets.

Parameters:
  • imagesettext_list (list) –
  • imageset_uuid_list (list) –
  • notes_list (list) –
Returns:

added imageset rowids

Return type:

imgsetid_list (list)

RESTful:
Method: POST URL: /api/imageset/
wbia.control.manual_imageset_funcs.delete_imagesets(ibs, imgsetid_list)[source]

Removes imagesets and thier relationships (images are not effected)

RESTful:
Method: DELETE URL: /api/imageset/
wbia.control.manual_imageset_funcs.get_imageset_aids(ibs, imgsetid_list)[source]
Returns:a list of list of aids in each imageset
Return type:aids_list (list)
RESTful:
Method: GET URL: /api/imageset/annot/rowid/
Parameters:
Returns:

aids_list

Return type:

list

CommandLine:
python -m wbia.control.manual_imageset_funcs –test-get_imageset_aids

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> ibs.delete_imagesets(ibs.get_valid_imgsetids())
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> imgsetid_list = ibs.get_valid_imgsetids()
>>> aids_list = get_imageset_aids(ibs, imgsetid_list)
>>> result = ('aids_list = %s' % (str(aids_list),))
>>> print(result)
wbia.control.manual_imageset_funcs.get_imageset_custom_filtered_aids(ibs, imgsetid_list)[source]

hacks to filter aids to only certain views and qualities

wbia.control.manual_imageset_funcs.get_imageset_duration(ibs, imageset_rowid_list)[source]

gets the imageset’s duration

Parameters:imageset_rowid_list (list) –
Returns:imageset_duration
Return type:list
RESTful:
Method: GET URL: /api/imageset/duration/
wbia.control.manual_imageset_funcs.get_imageset_end_time_posix(ibs, imageset_rowid_list)[source]

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

Parameters:imageset_rowid_list (list) –
Returns:imageset_end_time_posix_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_end_time_posix tbl = imageset
RESTful:
Method: GET URL: /api/imageset/time/posix/end/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_fraction_annotmatch_reviewed(ibs, imgsetid_list)[source]
wbia.control.manual_imageset_funcs.get_imageset_fraction_imgs_reviewed(ibs, imgsetid_list)[source]
wbia.control.manual_imageset_funcs.get_imageset_fraction_names_with_exemplar(ibs, imgsetid_list)[source]

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> import wbia  # NOQA
>>> ibs = wbia.opendb('testdb2')
>>> imgsetid_list = ibs._get_all_imageset_rowids()
>>> fraction_exemplared_names_list = ibs.get_imageset_fraction_names_with_exemplar(imgsetid_list)
wbia.control.manual_imageset_funcs.get_imageset_gids(ibs, imgsetid_list)[source]
Returns:a list of list of gids in each imageset
Return type:gids_list (list)
RESTful:
Method: GET URL: /api/imageset/image/rowid/
wbia.control.manual_imageset_funcs.get_imageset_gps_lats(ibs, imageset_rowid_list)[source]

imageset_gps_lat_list <- imageset.imageset_gps_lat[imageset_rowid_list]

gets data from the “native” column “imageset_gps_lat” in the “imageset” table

Parameters:imageset_rowid_list (list) –
Returns:imageset_gps_lat_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_gps_lat tbl = imageset
RESTful:
Method: GET URL: /api/imageset/gps/lat/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_gps_lons(ibs, imageset_rowid_list)[source]

imageset_gps_lon_list <- imageset.imageset_gps_lon[imageset_rowid_list]

gets data from the “native” column “imageset_gps_lon” in the “imageset” table

Parameters:imageset_rowid_list (list) –
Returns:imageset_gps_lon_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_gps_lon tbl = imageset
RESTful:
Method: GET URL: /api/imageset/gps/lon/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_gsgrids(ibs, imgsetid_list=None, gid_list=None)[source]
Returns:a list of imageset-image-relationship rowids for each encouterid
Return type:list_ (list)
wbia.control.manual_imageset_funcs.get_imageset_image_uuids(ibs, imgsetid_list)[source]
Returns:a list of list of gids in each imageset
Return type:gids_list (list)
RESTful:
Method: GET URL: /api/imageset/image/uuid/
wbia.control.manual_imageset_funcs.get_imageset_imgsetids_from_text(ibs, imagesettext_list, ensure=True)[source]
Returns:a list of imgsetids corresponding to each imageset imagesettext
Return type:list_ (list)

#FIXME: make new naming scheme for non-primary-key-getters get_imageset_imgsetids_from_text_from_text

RESTful:
Method: GET URL: /api/imageset/rowid/text/
wbia.control.manual_imageset_funcs.get_imageset_imgsetids_from_uuid(ibs, uuid_list)[source]
Returns:a list of imgsetids corresponding to each imageset imagesettext
Return type:list_ (list)

#FIXME: make new naming scheme for non-primary-key-getters get_imageset_imgsetids_from_text_from_text

RESTful:
Method: GET URL: /api/imageset/rowid/uuid/
wbia.control.manual_imageset_funcs.get_imageset_metadata(ibs, imageset_rowid_list, return_raw=False)[source]
Returns:imageset metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/imageset/metadata/
wbia.control.manual_imageset_funcs.get_imageset_name_uuids(ibs, imgsetid_list)[source]
Returns:a list of list of known name uuids in each imageset
Return type:name_uuid_list (list)
CommandLine:
python -m wbia.control.manual_imageset_funcs –test-get_imageset_name_uuids
RESTful:
Method: GET URL: /api/imageset/name/uuid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> ibs.delete_imagesets(ibs.get_valid_imgsetids())
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> 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]]
wbia.control.manual_imageset_funcs.get_imageset_nids(ibs, imgsetid_list)[source]
Returns:a list of list of known nids in each imageset
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_imageset_funcs –test-get_imageset_nids
RESTful:
Method: GET URL: /api/imageset/name/rowid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> ibs.delete_imagesets(ibs.get_valid_imgsetids())
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> 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]]
wbia.control.manual_imageset_funcs.get_imageset_note(ibs, imgsetid_list)[source]
Returns:imageset_note of each imgsetid in imgsetid_list
Return type:list_ (list)
RESTful:
Method: GET URL: /api/imageset/note/
wbia.control.manual_imageset_funcs.get_imageset_notes(ibs, imageset_rowid_list)[source]

imageset_note_list <- imageset.imageset_note[imageset_rowid_list]

gets data from the “native” column “imageset_note” in the “imageset” table

Parameters:imageset_rowid_list (list) –
Returns:imageset_note_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_note tbl = imageset

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_num_aids(ibs, imgsetid_list)[source]
Returns:number of images in each imageset
Return type:nGids_list (list)
RESTful:
Method: GET URL: /api/imageset/num/annot/
wbia.control.manual_imageset_funcs.get_imageset_num_annotmatch_reviewed(ibs, imgsetid_list)[source]
RESTful:
Method: GET URL: /api/imageset/num/annotmatch/reviewed/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> import wbia  # NOQA
>>> ibs = wbia.opendb('testdb1')
>>> imgsetid_list = ibs._get_all_imageset_rowids()
>>> num_annots_reviewed_list = ibs.get_imageset_num_annotmatch_reviewed(imgsetid_list)
wbia.control.manual_imageset_funcs.get_imageset_num_annots_reviewed(ibs, imgsetid_list)[source]
RESTful:
Method: GET URL: /api/imageset/num/annot/reviewed/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> # Reset and compute imagesets
>>> ibs.delete_all_imagesets()
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> 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]
wbia.control.manual_imageset_funcs.get_imageset_num_gids(ibs, imgsetid_list)[source]
Returns:number of images in each imageset
Return type:nGids_list (list)
RESTful:
Method: GET URL: /api/imageset/num/image/
wbia.control.manual_imageset_funcs.get_imageset_num_imgs_reviewed(ibs, imgsetid_list)[source]
RESTful:
Method: GET URL: /api/imageset/num/image/reviewed/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> # Reset and compute imagesets
>>> ibs.delete_all_imagesets()
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> 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]
wbia.control.manual_imageset_funcs.get_imageset_num_names_with_exemplar(ibs, imgsetid_list)[source]
RESTful:
Method: GET URL: /api/imageset/num/name/exemplar/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> import wbia  # NOQA
>>> ibs = wbia.opendb('testdb1')
>>> imgsetid_list = ibs._get_all_imageset_rowids()
>>> num_annots_reviewed_list = ibs.get_imageset_num_annotmatch_reviewed(imgsetid_list)
wbia.control.manual_imageset_funcs.get_imageset_occurrence_flags(ibs, imageset_rowid_list)[source]

imageset_occurrence_flag_list <- imageset.imageset_occurrence_flag[imageset_rowid_list]

gets data from the “native” column “imageset_occurrence_flag” in the “imageset” table

Parameters:imageset_rowid_list (list) –
Returns:imageset_occurrence_flag_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_occurrence_flag tbl = imageset
RESTful:
Method: GET URL: /api/imageset/occurrence/
CommandLine:
python -m wbia.control.manual_imageset_funcs –test-get_imageset_occurrence_flags

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> imageset_rowid_list = ibs._get_all_imageset_rowids()
>>> imageset_occurrence_flag_list = ibs.get_imageset_occurrence_flags(imageset_rowid_list)
>>> assert len(imageset_rowid_list) == len(imageset_occurrence_flag_list)
wbia.control.manual_imageset_funcs.get_imageset_percent_annotmatch_reviewed_str(ibs, imgsetid_list)[source]
wbia.control.manual_imageset_funcs.get_imageset_percent_imgs_reviewed_str(ibs, imgsetid_list)[source]
wbia.control.manual_imageset_funcs.get_imageset_percent_names_with_exemplar_str(ibs, imgsetid_list)[source]
wbia.control.manual_imageset_funcs.get_imageset_processed_flags(ibs, imageset_rowid_list)[source]

imageset_processed_flag_list <- imageset.imageset_processed_flag[imageset_rowid_list]

gets data from the “native” column “imageset_processed_flag” in the “imageset” table

Parameters:imageset_rowid_list (list) –
Returns:imageset_processed_flag_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_processed_flag tbl = imageset
RESTful:
Method: GET URL: /api/imageset/processed/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_shipped_flags(ibs, imageset_rowid_list)[source]

imageset_shipped_flag_list <- imageset.imageset_shipped_flag[imageset_rowid_list]

gets data from the “native” column “imageset_shipped_flag” in the “imageset” table

Parameters:imageset_rowid_list (list) –
Returns:imageset_shipped_flag_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_shipped_flag tbl = imageset
RESTful:
Method: GET URL: /api/imageset/shipped/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_smart_waypoint_ids(ibs, imageset_rowid_list)[source]

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

Parameters:imageset_rowid_list (list) –
Returns:imageset_smart_waypoint_id_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_smart_waypoint_id tbl = imageset
RESTful:
Method: GET URL: /api/imageset/smart/waypoint/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_smart_xml_contents(ibs, imageset_rowid_list)[source]
wbia.control.manual_imageset_funcs.get_imageset_smart_xml_fnames(ibs, imageset_rowid_list)[source]

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

Parameters:imageset_rowid_list (list) –
Returns:imageset_smart_xml_fname_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_smart_xml_fname tbl = imageset
RESTful:
Method: GET URL: /api/imageset/smart/xml/file/name/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_start_time_posix(ibs, imageset_rowid_list)[source]

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

Parameters:imageset_rowid_list (list) –
Returns:imageset_start_time_posix_list
Return type:list
TemplateInfo:
Tgetter_table_column col = imageset_start_time_posix tbl = imageset
RESTful:
Method: GET URL: /api/imageset/time/posix/start/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_imageset_funcs.get_imageset_text(ibs, imgsetid_list)[source]
Returns:imageset_text of each imgsetid in imgsetid_list
Return type:list_ (list)
RESTful:
Method: GET URL: /api/imageset/text/
wbia.control.manual_imageset_funcs.get_imageset_uuid(ibs, imgsetid_list)[source]
Returns:imageset_uuid of each imgsetid in imgsetid_list
Return type:list_ (list)
RESTful:
Method: GET URL: /api/imageset/uuid/
wbia.control.manual_imageset_funcs.get_imageset_uuids(ibs, imgsetid_list)[source]
Parameters:
Returns:

annot_uuids_list

Return type:

list

RESTful:
Method: GET URL: /api/imageset/annot/uuid/
CommandLine:
python -m wbia.control.manual_imageset_funcs –test-get_imageset_aids

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_imageset_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> ibs.delete_imagesets(ibs.get_valid_imgsetids())
>>> ibs.compute_occurrences(config={'use_gps': False, 'seconds_thresh': 600})
>>> imgsetid_list = ibs.get_valid_imgsetids()
>>> aids_list = get_imageset_aids(ibs, imgsetid_list)
>>> result = ('aids_list = %s' % (str(aids_list),))
>>> print(result)
wbia.control.manual_imageset_funcs.get_valid_imgsetids(ibs, min_num_gids=0, processed=None, shipped=None, is_occurrence=None, is_special=None)[source]

FIX NAME imgagesetids

Returns:list of all imageset ids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/imageset/
wbia.control.manual_imageset_funcs.is_special_imageset(ibs, imgsetid_list)[source]
wbia.control.manual_imageset_funcs.set_imageset_end_time_posix(ibs, imageset_rowid_list, imageset_end_time_posix_list)[source]

imageset_end_time_posix_list -> imageset.imageset_end_time_posix[imageset_rowid_list]

Parameters:
  • 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/time/posix/end/
wbia.control.manual_imageset_funcs.set_imageset_gps_lats(ibs, imageset_rowid_list, imageset_gps_lat_list)[source]

imageset_gps_lat_list -> imageset.imageset_gps_lat[imageset_rowid_list]

Parameters:
  • imageset_rowid_list
  • imageset_gps_lat_list
TemplateInfo:
Tsetter_native_column tbl = imageset col = imageset_gps_lat
RESTful:
Method: PUT URL: /api/imageset/gps/lat/
wbia.control.manual_imageset_funcs.set_imageset_gps_lons(ibs, imageset_rowid_list, imageset_gps_lon_list)[source]

imageset_gps_lon_list -> imageset.imageset_gps_lon[imageset_rowid_list]

Parameters:
  • imageset_rowid_list
  • imageset_gps_lon_list
TemplateInfo:
Tsetter_native_column tbl = imageset col = imageset_gps_lon
RESTful:
Method: PUT URL: /api/imageset/gps/lon/
wbia.control.manual_imageset_funcs.set_imageset_metadata(ibs, imageset_rowid_list, metadata_dict_list)[source]

Sets the imageset’s metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/imageset/metadata/
wbia.control.manual_imageset_funcs.set_imageset_notes(ibs, imageset_rowid_list, imageset_note_list)[source]

imageset_note_list -> imageset.imageset_note[imageset_rowid_list]

Parameters:
  • imageset_rowid_list
  • imageset_note_list
TemplateInfo:
Tsetter_native_column tbl = imageset col = imageset_note
wbia.control.manual_imageset_funcs.set_imageset_occurrence_flags(ibs, imageset_rowid_list, imageset_occurrence_flag_list)[source]

imageset_occurrence_flag_list -> imageset.imageset_occurrence_flag[imageset_rowid_list]

Parameters:
  • imageset_rowid_list
  • imageset_occurrence_flag_list
TemplateInfo:
Tsetter_native_column tbl = imageset col = imageset_occurrence_flag
RESTful:
Method: PUT URL: /api/imageset/occurrence/
wbia.control.manual_imageset_funcs.set_imageset_processed_flags(ibs, imageset_rowid_list, imageset_processed_flag_list)[source]

imageset_processed_flag_list -> imageset.imageset_processed_flag[imageset_rowid_list]

Parameters:
  • imageset_rowid_list
  • imageset_processed_flag_list
TemplateInfo:
Tsetter_native_column tbl = imageset col = imageset_processed_flag
RESTful:
Method: PUT URL: /api/imageset/processed/
wbia.control.manual_imageset_funcs.set_imageset_shipped_flags(ibs, imageset_rowid_list, imageset_shipped_flag_list)[source]

imageset_shipped_flag_list -> imageset.imageset_shipped_flag[imageset_rowid_list]

Parameters:
  • imageset_rowid_list
  • imageset_shipped_flag_list
TemplateInfo:
Tsetter_native_column tbl = imageset col = imageset_shipped_flag
RESTful:
Method: PUT URL: /api/imageset/shipped/
wbia.control.manual_imageset_funcs.set_imageset_smart_waypoint_ids(ibs, imageset_rowid_list, imageset_smart_waypoint_id_list)[source]

imageset_smart_waypoint_id_list -> imageset.imageset_smart_waypoint_id[imageset_rowid_list]

Parameters:
  • 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/
wbia.control.manual_imageset_funcs.set_imageset_smart_xml_fnames(ibs, imageset_rowid_list, imageset_smart_xml_fname_list)[source]

imageset_smart_xml_fname_list -> imageset.imageset_smart_xml_fname[imageset_rowid_list]

Parameters:
  • 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/fname/
wbia.control.manual_imageset_funcs.set_imageset_start_time_posix(ibs, imageset_rowid_list, imageset_start_time_posix_list)[source]

imageset_start_time_posix_list -> imageset.imageset_start_time_posix[imageset_rowid_list]

Parameters:
  • 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/time/posix/start/
wbia.control.manual_imageset_funcs.set_imageset_text(ibs, imgsetid_list, imageset_text_list)[source]

Sets names of imagesets (groups of animals)

RESTful:
Method: PUT URL: /api/imageset/text/
wbia.control.manual_imageset_funcs.testdata_ibs()[source]
wbia.control.manual_imageset_funcs.update_imageset_info(ibs, imageset_rowid_list, **kwargs)[source]

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

>>> # DISABLE_DOCTEST
>>> imageset_rowid_list = ibs.get_valid_imgsetids()

wbia.control.manual_lblannot_funcs module

wbia.control.manual_lblannot_funcs.add_annot_relationship(ibs, aid_list, lblannot_rowid_list, alr_confidence_list=None)[source]
Adds a relationship between annots and lblannots
(annotations and labels of annotations)
wbia.control.manual_lblannot_funcs.add_lblannots(ibs, lbltype_rowid_list, value_list, note_list=None, lblannot_uuid_list=None)[source]

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

wbia.control.manual_lblannot_funcs.delete_annot_relations(ibs, aid_list)[source]

Deletes the relationship between an annotation and a label

wbia.control.manual_lblannot_funcs.delete_annot_relations_oftype(ibs, aid_list, _lbltype)[source]

Deletes the relationship between an annotation and a label

wbia.control.manual_lblannot_funcs.delete_lblannots(ibs, lblannot_rowid_list)[source]

deletes lblannots from the database

wbia.control.manual_lblannot_funcs.get_alr_annot_rowids(ibs, alrid_list)[source]
Parameters:alrid_list (list of rowids) – annot + label relationship rows

get the annot_rowid belonging to each relationship

wbia.control.manual_lblannot_funcs.get_alr_annot_rowids_from_lblannot_rowid(ibs, lblannot_rowid_list)[source]

This is a 1toM getter

Get annotation rowids of labels. There may be more than one annotation per label.

Parameters:lblannot_rowid_list (list) – of lblannot (labels of annotations) rowids
Returns:of lists annotation rowids
Return type:aids_list (list)
wbia.control.manual_lblannot_funcs.get_alr_confidence(ibs, alrid_list)[source]
Parameters:alrid_list (list of rowids) – annot + label relationship rows
Returns:confidence in an annotation relationship
Return type:alr_confidence_list (list of rowids)
wbia.control.manual_lblannot_funcs.get_alr_lblannot_rowids(ibs, alrid_list)[source]
Parameters:alrid_list (list of rowids) – annot + label relationship rows
Returns:label rowids (of annotations)
Return type:lblannot_rowids_list (list of rowids)
wbia.control.manual_lblannot_funcs.get_alrid_from_superkey(ibs, aid_list, lblannot_rowid_list)[source]
Parameters:
  • aid_list (list) – list of annotation row-ids
  • lblannot_rowid_list (list) – list of lblannot row-ids
Returns:

annot-label relationship id list

Return type:

alrid_list (list)

wbia.control.manual_lblannot_funcs.get_annot_alrids(ibs, aid_list)[source]

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

wbia.control.manual_lblannot_funcs.get_annot_alrids_oftype(ibs, aid_list, lbltype_rowid)[source]

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

wbia.control.manual_lblannot_funcs.get_annot_lblannot_rowids(ibs, aid_list)[source]
Returns:the name id of each annotation.
Return type:list_ (list)
wbia.control.manual_lblannot_funcs.get_annot_lblannot_rowids_oftype(ibs, aid_list, _lbltype=None)[source]
Returns:the name id of each annotation.
Return type:list_ (list)
wbia.control.manual_lblannot_funcs.get_annot_lblannot_value_of_lbltype(ibs, aid_list, _lbltype, lblannot_value_getter)[source]
Returns:a list of strings [‘fred’, ‘sue’, …] for each chip identifying the animal
Return type:lblannot_value_list (list)
wbia.control.manual_lblannot_funcs.get_lblannot_lbltypes_rowids(ibs, lblannot_rowid_list)[source]
wbia.control.manual_lblannot_funcs.get_lblannot_notes(ibs, lblannot_rowid_list)[source]
wbia.control.manual_lblannot_funcs.get_lblannot_rowid_from_superkey(ibs, lbltype_rowid_list, value_list)[source]
Returns:lblannot_rowid_list from the superkey (lbltype, value)
Return type:list_ (list)
wbia.control.manual_lblannot_funcs.get_lblannot_rowid_from_uuid(ibs, lblannot_uuid_list)[source]

UNSAFE

Returns:lblannot_rowid_list from the superkey (lbltype, value)
wbia.control.manual_lblannot_funcs.get_lblannot_uuids(ibs, lblannot_rowid_list)[source]
wbia.control.manual_lblannot_funcs.get_lblannot_values(ibs, lblannot_rowid_list, _lbltype=None)[source]
Returns:text lblannots
wbia.control.manual_lblannot_funcs.set_alr_confidence(ibs, alrid_list, confidence_list)[source]

sets annotation-lblannot-relationship confidence

wbia.control.manual_lblannot_funcs.set_alr_lblannot_rowids(ibs, alrid_list, lblannot_rowid_list)[source]

Associates whatever annotation is at row(alrid) with a new lblannot_rowid. (effectively changes the label value of the rowid)

wbia.control.manual_lblannot_funcs.set_annot_lblannot_from_rowid(ibs, aid_list, lblannot_rowid_list, _lbltype)[source]

Sets items/lblannot_rowids of a list of annotations.

wbia.control.manual_lblannot_funcs.set_annot_lblannot_from_value(ibs, aid_list, value_list, _lbltype, ensure=True)[source]

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

wbia.control.manual_lblannot_funcs.set_lblannot_notes(ibs, lblannot_rowid_list, value_list)[source]

Updates the value for lblannots. Note this change applies to all annotations related to this lblannot_rowid

wbia.control.manual_lblannot_funcs.set_lblannot_values(ibs, lblannot_rowid_list, value_list)[source]

Updates the value for lblannots. Note this change applies to all annotations related to this lblannot_rowid

wbia.control.manual_lblimage_funcs module

wbia.control.manual_lblimage_funcs.add_image_relationship_one(ibs, gid_list, lblimage_rowid_list, glr_confidence_list=None)[source]

Adds a relationship between images and lblimages (imageations and labels of imageations)

wbia.control.manual_lblimage_funcs.add_lblimages(ibs, lbltype_rowid_list, value_list, note_list=None, lblimage_uuid_list=None)[source]

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

wbia.control.manual_lblimage_funcs.get_glr_confidence(ibs, glrid_list)[source]
Returns:confidence in an image relationship
Return type:list_ (list)
wbia.control.manual_lblimage_funcs.get_glr_image_rowids(ibs, glrid_list)[source]

get the image_rowid belonging to each relationship

wbia.control.manual_lblimage_funcs.get_glr_lblimage_rowids(ibs, glrid_list)[source]

get the lblimage_rowid belonging to each relationship

wbia.control.manual_lblimage_funcs.get_glrid_from_superkey(ibs, gid_list, lblimage_rowid_list)[source]
Parameters:
  • gid_list (list) – list of image row-ids
  • lblimage_rowid_list (list) – list of lblimage row-ids
Returns:

image-label relationship id list

Return type:

glrid_list (list)

wbia.control.manual_lblimage_funcs.get_image_glrids(ibs, gid_list)[source]

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

wbia.control.manual_lblimage_funcs.get_lblimage_gids(ibs, lblimage_rowid_list)[source]
wbia.control.manual_lblimage_funcs.get_lblimage_lbltypes_rowids(ibs, lblimage_rowid_list)[source]
wbia.control.manual_lblimage_funcs.get_lblimage_notes(ibs, lblimage_rowid_list)[source]
wbia.control.manual_lblimage_funcs.get_lblimage_rowid_from_superkey(ibs, lbltype_rowid_list, value_list)[source]
Returns:lblimage_rowid_list from the superkey (lbltype, value)
Return type:list_ (list)
wbia.control.manual_lblimage_funcs.get_lblimage_rowid_from_uuid(ibs, lblimage_uuid_list)[source]
Returns:lblimage_rowid_list from the superkey (lbltype, value)
Return type:list_ (list)
wbia.control.manual_lblimage_funcs.get_lblimage_uuids(ibs, lblimage_rowid_list)[source]
wbia.control.manual_lblimage_funcs.get_lblimage_values(ibs, lblimage_rowid_list, _lbltype=None)[source]
Returns:text lblimages
Return type:list_ (list)

wbia.control.manual_lbltype_funcs module

wbia.control.manual_lbltype_funcs.add_lbltype(ibs, text_list, default_list)[source]

Adds a label type and its default value Should only be called at the begining of the program.

wbia.control.manual_lbltype_funcs.get_lbltype_default(ibs, lbltype_rowid_list)[source]
wbia.control.manual_lbltype_funcs.get_lbltype_rowid_from_text(ibs, text_list)[source]
Returns:lbltype_rowid where the lbltype_text is given
Return type:lbltype_rowid (list)
wbia.control.manual_lbltype_funcs.get_lbltype_text(ibs, lbltype_rowid_list)[source]

wbia.control.manual_meta_funcs module

controller functions for contributors, versions, configs, and other metadata

wbia.control.manual_meta_funcs.add_contributors(ibs, tag_list, uuid_list=None, name_first_list=None, name_last_list=None, loc_city_list=None, loc_state_list=None, loc_country_list=None, loc_zip_list=None, notes_list=None)[source]

Adds a list of contributors.

Returns:contributor rowids
Return type:contributor_id_list (list)
RESTful:
Method: POST URL: /api/contributor/
wbia.control.manual_meta_funcs.add_metadata(ibs, metadata_key_list, metadata_value_list, db)[source]

Adds metadata

Returns:metadata rowids
Return type:metadata_rowid_list (list)
RESTful:
Method: POST URL: /api/metadata/
wbia.control.manual_meta_funcs.add_new_temp_contributor(ibs, user_prompt=False, offset=None, autolocate=False)[source]
RESTful:
Method: POST URL: /api/contributor/new/temp/
wbia.control.manual_meta_funcs.add_version(ibs, versiontext_list)[source]

Adds an algorithm / actor configuration as a string

wbia.control.manual_meta_funcs.delete_contributors(ibs, contributor_rowid_list)[source]

deletes contributors from the database and all information associated

RESTful:
Method: DELETE URL: /api/contributor/
wbia.control.manual_meta_funcs.ensure_contributor_rowids(ibs, user_prompt=False, autolocate=False)[source]
Parameters:
Returns:

Return type:

list

CommandLine:
python -m wbia.control.manual_meta_funcs –test-ensure_contributor_rowids

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_meta_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.opendb(db='testdb1')
>>> gid_list = ibs.get_valid_gids()
>>> ibs.delete_contributors(ibs.get_valid_contributor_rowids())
>>> contributor_rowid_list1 = ibs.get_image_contributor_rowid(gid_list)
>>> assert ut.allsame(contributor_rowid_list1)
>>> ut.assert_eq(contributor_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)
>>> contributor_rowid_list2 = ibs.get_image_contributor_rowid(gid_list)
>>> assert ut.allsame(contributor_rowid_list2)
>>> ut.assert_eq(contributor_rowid_list2[0], 1)
wbia.control.manual_meta_funcs.get_all_uncontributed_configs(ibs)[source]
RESTful:
Method: GET URL: /api/contributor/configs/uncontributed/
wbia.control.manual_meta_funcs.get_all_uncontributed_images(ibs)[source]
RESTful:
Method: GET URL: /api/contributor/gids/uncontributed/
wbia.control.manual_meta_funcs.get_config_contributor_rowid(ibs, config_rowid_list)[source]
Returns:contributor’s rowid for algorithm configs
Return type:cfgsuffix_list (list)
RESTful:
Method: GET URL: /api/contributor/config/rowid/
wbia.control.manual_meta_funcs.get_config_suffixes(ibs, config_rowid_list)[source]
Returns:suffixes for algorithm configs
Return type:cfgsuffix_list (list)
RESTful:
Method: GET URL: /api/contributor/config/suffixes/
wbia.control.manual_meta_funcs.get_contributor_city(ibs, contributor_rowid_list)[source]
Returns:a contributor’s location - city
Return type:contributor_city_list (list)
RESTful:
Method: GET URL: /api/contributor/location/city/
wbia.control.manual_meta_funcs.get_contributor_country(ibs, contributor_rowid_list)[source]
Returns:a contributor’s location - country
Return type:contributor_country_list (list)
RESTful:
Method: GET URL: /api/contributor/location/country/
wbia.control.manual_meta_funcs.get_contributor_first_name(ibs, contributor_rowid_list)[source]
Returns:a contributor’s first name
Return type:contributor_name_first_list (list)
RESTful:
Method: GET URL: /api/contributor/name/first/
wbia.control.manual_meta_funcs.get_contributor_gids(ibs, contributor_rowid_list)[source]

TODO: Template 1_M reverse getter

Returns:gids for a contributor
Return type:gid_list (list)
RESTful:
Method: GET URL: /api/contributor/gids/
wbia.control.manual_meta_funcs.get_contributor_imgsetids(ibs, config_rowid_list)[source]
Returns:imgsetids for a contributor
Return type:imgsetid_list (list)
RESTful:
Method: GET URL: /api/contributor/imageset/rowids/
wbia.control.manual_meta_funcs.get_contributor_last_name(ibs, contributor_rowid_list)[source]
Returns:a contributor’s last name
Return type:contributor_name_last_list (list)
RESTful:
Method: GET URL: /api/contributor/name/last/
wbia.control.manual_meta_funcs.get_contributor_location_string(ibs, contributor_rowid_list)[source]
Returns:a contributor’s location
Return type:contributor_list (list)
RESTful:
Method: GET URL: /api/contributor/location/
wbia.control.manual_meta_funcs.get_contributor_name_string(ibs, contributor_rowid_list, include_tag=False)[source]
Returns:a contributor’s full name
Return type:contributor_name_list (list)
RESTful:
Method: GET URL: /api/contributor/name/
wbia.control.manual_meta_funcs.get_contributor_note(ibs, contributor_rowid_list)[source]
Returns:a contributor’s note
Return type:contributor_note_list (list)
RESTful:
Method: GET URL: /api/contributor/note/
wbia.control.manual_meta_funcs.get_contributor_rowid_from_tag(ibs, contributor_tag_list)[source]
Returns:a contributor
Return type:contributor_tag_list (list)
RESTful:
Method: GET URL: /api/contributor/rowid/tag/
wbia.control.manual_meta_funcs.get_contributor_rowid_from_uuid(ibs, contributor_uuid_list)[source]
Returns:a contributor
Return type:contributor_uuid_list (list)
RESTful:
Method: GET URL: /api/contributor/rowid/uuid/
wbia.control.manual_meta_funcs.get_contributor_state(ibs, contributor_rowid_list)[source]
Returns:a contributor’s location - state
Return type:list_ (list)
RESTful:
Method: GET URL: /api/contributor/location/state/
wbia.control.manual_meta_funcs.get_contributor_tag(ibs, contributor_rowid_list, eager=True, nInput=None)[source]

contributor_tag_list <- contributor.contributor_tag[contributor_rowid_list]

gets data from the “native” column “contributor_tag” in the “contributor” table

Parameters:contributor_rowid_list (list) –
Returns:contributor_tag_list - a contributor’s tag
Return type:list
TemplateInfo:
Tgetter_table_column col = contributor_tag tbl = contributor
CommandLine:
python -m wbia.templates.template_generator –key contributor –Tcfg with_api_cache=False with_deleters=False
RESTful:
Method: GET URL: /api/contributor/tag/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_meta_funcs.get_contributor_uuid(ibs, contributor_rowid_list)[source]
Returns:a contributor’s uuid
Return type:contributor_uuid_list (list)
RESTful:
Method: GET URL: /api/contributor/uuid/
wbia.control.manual_meta_funcs.get_contributor_zip(ibs, contributor_rowid_list)[source]
Returns:a contributor’s location - zip
Return type:contributor_zip_list (list)
RESTful:
Method: GET URL: /api/contributor/location/zip/
wbia.control.manual_meta_funcs.get_database_version(ibs, db=None)[source]

Gets the specified database version from the controller

RESTful:
Method: GET URL: /api/core/dbversion/
wbia.control.manual_meta_funcs.get_database_version_alias(ibs, db=None)[source]

Alias: func:get_database_version

RESTful:
Method: GET URL: /api/core/version/
wbia.control.manual_meta_funcs.get_metadata_rowid_from_metadata_key(ibs, metadata_key_list, db)[source]
RESTful:
Method: GET URL: /api/metadata/rowid/key/
wbia.control.manual_meta_funcs.get_metadata_value(ibs, metadata_key_list, db)[source]
RESTful:
Method: GET URL: /api/metadata/value/
wbia.control.manual_meta_funcs.get_valid_contributor_rowids(ibs)[source]
Returns:list of all contributor ids
Return type:list_ (list)
Returns:contributor_rowids_list
Return type:list
CommandLine:
python -m wbia.control.manual_meta_funcs –test-get_valid_contributor_rowids
RESTful:
Method: GET URL: /api/contributor/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_meta_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> contributor_rowids_list = get_valid_contributor_rowids(ibs)
>>> result = str(contributor_rowids_list)
>>> print(result)
wbia.control.manual_meta_funcs.get_version(ibs)[source]

Returns the version of wbia

RESTful
Method: GET URL: /api/version/
wbia.control.manual_meta_funcs.set_config_contributor_rowid(ibs, config_rowid_list, contributor_rowid_list)[source]

Sets the config’s contributor rowid

RESTful:
Method: PUT URL: /api/config/contributor/rowid/
wbia.control.manual_meta_funcs.set_config_contributor_unassigned(ibs, contributor_rowid)[source]
RESTful:
Method: PUT URL: /api/config/contributor/unassigned/
wbia.control.manual_meta_funcs.set_database_version(ibs, db, version)[source]

Sets the specified database’s version from the controller

wbia.control.manual_meta_funcs.set_metadata_value(ibs, metadata_key_list, metadata_value_list, db)[source]

Sets metadata key, value pairs

RESTful:
Method: PUT URL: /api/metadata/value/
wbia.control.manual_meta_funcs.testdata_ibs()[source]
wbia.control.manual_meta_funcs.update_query_cfg(ibs, **kwargs)[source]

Updates query config only. Configs needs a restructure very badly DEPRICATE

RESTful:
Method: PUT URL: /api/query/cfg/

wbia.control.manual_name_funcs module

python -c “import utool as ut; ut.write_modscript_alias(‘Tgen.sh’, ‘wbia.templates.template_generator’)” # NOQA sh Tgen.sh –key name –invert –Tcfg with_getters=True with_setters=False –modfname manual_name_funcs # NOQA sh Tgen.sh –key name –invert –Tcfg with_getters=True with_setters=True –modfname manual_name_funcs –funcname-filter=sex # NOQA

wbia.control.manual_name_funcs.add_names(ibs, name_text_list, name_uuid_list=None, name_note_list=None)[source]

Adds a list of names.

Returns:their nids
Return type:name_rowid_list (list)
RESTful:
Method: POST URL: /api/name/
wbia.control.manual_name_funcs.delete_empty_nids(ibs)[source]

Removes names that have no Rois from the database

wbia.control.manual_name_funcs.delete_names(ibs, name_rowid_list, safe=True, strict=False, verbose=False)[source]

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/

# Ignore: # >>> # 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”

wbia.control.manual_name_funcs.get_empty_nids(ibs, _nid_list=None)[source]

get name rowids that do not have any annotations (not including UNKONWN)

Returns:nid_list - all names without any animals (does not include unknown names) an nid is not invalid if it has a valid alias
Return type:list
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_empty_nids

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
[]
wbia.control.manual_name_funcs.get_name_age_months_est_max(ibs, name_rowid_list)[source]
RESTful:
Method: GET URL: /api/name/age/months/max/
wbia.control.manual_name_funcs.get_name_age_months_est_min(ibs, name_rowid_list)[source]
RESTful:
Method: GET URL: /api/name/age/months/min/
wbia.control.manual_name_funcs.get_name_aids(ibs, nid_list, enable_unknown_fix=True, is_staged=False)[source]

# TODO: Rename to get_anot_rowids_from_name_rowid

Returns:aids_list a list of list of aids in each name
Return type:list
RESTful:
Method: GET URL: /api/name/annot/rowid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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(groupid2_items.values())
>>> 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.repr2(groupid2_items, newlines=False))
Ignore;

from wbia.control.manual_name_funcs import * # NOQA import wbia #ibs = wbia.opendb(‘testdb1’) #ibs = wbia.opendb(‘PZ_MTEST’) ibs = wbia.opendb(‘PZ_Master0’) #ibs = wbia.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):
logger.info(aids1) logger.info(aids5) logger.info(’—–‘)

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_]

wbia.control.manual_name_funcs.get_name_alias_texts(ibs, name_rowid_list)[source]
Returns:name_alias_text_list
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_texts
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_alias_texts
RESTful:
Method: GET URL: /api/name/alias/text/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.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]
wbia.control.manual_name_funcs.get_name_annot_uuids(ibs, nid_list, **kwargs)[source]
wbia.control.manual_name_funcs.get_name_exemplar_aids(ibs, nid_list)[source]
Returns:a list of list of cids in each name
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_exemplar_aids
RESTful:
Method: GET URL: /api/name/annot/rowid/examplar/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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 = [sorted(i) for i in exemplar_aids_list]
>>> print(result)
[[], [2, 3], [2, 3], [], [5, 6], [5, 6], [7], [8], [], [10], [], [12], [13]]
wbia.control.manual_name_funcs.get_name_exemplar_name_uuids(ibs, nid_list, **kwargs)[source]
wbia.control.manual_name_funcs.get_name_gids(ibs, nid_list)[source]
Returns:the image ids associated with name ids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/name/image/rowid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> nid_list = ibs._get_all_known_name_rowids()
>>> gids_list = ibs.get_name_gids(nid_list)
>>> result = [sorted(gids) for gids in gids_list]
>>> print(result)
[[2, 3], [5, 6], [7], [8], [10], [12], [13]]
wbia.control.manual_name_funcs.get_name_gps_tracks(ibs, nid_list=None, aid_list=None)[source]
CommandLine:
python -m wbia.other.ibsfuncs –test-get_name_gps_tracks

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> #ibs = wbia.opendb('PZ_Master0')
>>> ibs = wbia.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)
>>> aid_track_list = list(map(sorted, aid_track_list))
>>> result = str(aid_track_list)
>>> print(result)
[[11], [], [4], [1], [2, 3], [5, 6], [7], [8], [10], [12], [13]]
wbia.control.manual_name_funcs.get_name_has_split(ibs, nid_list)[source]
CommandLine:
python -m wbia.other.ibsfuncs –test-get_name_speeds

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> nid_list = ibs._get_all_known_nids()
>>> splits_list = ibs.get_name_has_split(nid_list)
>>> result = str(splits_list)
>>> print(result)
wbia.control.manual_name_funcs.get_name_hourdiffs(ibs, nid_list)[source]
CommandLine:
python -m wbia.other.ibsfuncs –test-get_name_hourdiffs

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> nid_list = ibs._get_all_known_nids()
>>> hourdiffs_list = ibs.get_name_hourdiffs(nid_list)
>>> result = hourdiffs_list
>>> print(hourdiffs_list)
wbia.control.manual_name_funcs.get_name_image_uuids(ibs, nid_list)[source]

DEPRICATE

Returns:the image ids associated with name ids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/name/image/uuid/
wbia.control.manual_name_funcs.get_name_imgset_uuids(ibs, nid_list)[source]
RESTful:
Method: GET URL: /api/name/imageset/uuid/
wbia.control.manual_name_funcs.get_name_imgsetids(ibs, nid_list)[source]
RESTful:
Method: GET URL: /api/name/imageset/rowid/
wbia.control.manual_name_funcs.get_name_max_hourdiff(ibs, nid_list)[source]
wbia.control.manual_name_funcs.get_name_max_speed(ibs, nid_list)[source]
CommandLine:
python -m wbia.other.ibsfuncs –test-get_name_max_speed

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> nid_list = ibs._get_all_known_nids()
>>> maxspeed_list = ibs.get_name_max_speed(nid_list)
>>> result = maxspeed_list
>>> print(maxspeed_list)
wbia.control.manual_name_funcs.get_name_metadata(ibs, name_rowid_list, return_raw=False)[source]
Returns:name metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/name/metadata/
wbia.control.manual_name_funcs.get_name_nids_with_gids(ibs, nid_list=None)[source]
wbia.control.manual_name_funcs.get_name_notes(ibs, name_rowid_list)[source]
Returns:notes_list - name notes
Return type:list_ (list)
RESTful:
Method: GET URL: /api/name/note/
wbia.control.manual_name_funcs.get_name_num_annotations(ibs, nid_list)[source]
Returns:the number of annotations for each name
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_num_annotations
RESTful:
Method: GET URL: /api/name/num/annot/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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]
wbia.control.manual_name_funcs.get_name_num_exemplar_annotations(ibs, nid_list)[source]
Returns:the number of annotations, which are exemplars for each name
Return type:list_ (list)
RESTful:
Method: GET URL: /api/name/num/annot/exemplar/
wbia.control.manual_name_funcs.get_name_rowids_from_text(ibs, name_text_list, ensure=True)[source]
Parameters:
  • ibs (IBEISController) – wbia controller object
  • name_text_list (list) –
  • ensure (bool) – adds as new names if non-existant (default = True)
Returns:

Creates one if it doesnt exist

Return type:

name_rowid_list (list)

CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_rowids_from_text:0 python -m wbia.control.manual_name_funcs –test-get_name_rowids_from_text:1

Todo

should ensure be defaulted to False?

RESTful:
Method: GET URL: /api/name/rowid/text/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> import utool as ut
>>> ibs = wbia.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.repr2(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.repr2(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()
>>> assert result == f'{name_rowid_list}\n[1, 2, 3, 4, 5, 6, 7]'
>>> print(result)
wbia.control.manual_name_funcs.get_name_rowids_from_text_(ibs, name_text_list, ensure=True)[source]
Parameters:
Returns:

Return type:

name_rowid_list (list)

CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_rowids_from_text_

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> import utool as ut  # NOQA
>>> ibs = wbia.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]
wbia.control.manual_name_funcs.get_name_rowids_from_uuid(ibs, uuid_list, nid_hack=False, ensure=True)[source]
Parameters:
Returns:

Return type:

name_rowid_list (list)

wbia.control.manual_name_funcs.get_name_sex(ibs, name_rowid_list, eager=True, nInput=None)[source]

name_sex_list <- name.name_sex[name_rowid_list]

gets data from the “native” column “name_sex” in the “name” table

Parameters:name_rowid_list (list) –
Returns:name_sex_list
Return type:list
TemplateInfo:
Tgetter_table_column col = name_sex tbl = name
RESTful:
Method: GET URL: /api/name/sex/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_name_funcs.get_name_sex_text(ibs, name_rowid_list, eager=True, nInput=None)[source]
RESTful:
Method: GET URL: /api/name/sex/text/
wbia.control.manual_name_funcs.get_name_speeds(ibs, nid_list)[source]
CommandLine:
python -m wbia.other.ibsfuncs –test-get_name_speeds

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> nid_list = ibs._get_all_known_nids()
>>> speeds_list = get_name_speeds(ibs, nid_list)
>>> result = str(speeds_list)
>>> print(result)
wbia.control.manual_name_funcs.get_name_temp_flag(ibs, name_rowid_list, eager=True, nInput=None)[source]

name_temp_flag_list <- name.name_temp_flag[name_rowid_list]

gets data from the “native” column “name_temp_flag” in the “name” table

Parameters:name_rowid_list (list) –
Returns:name_temp_flag_list
Return type:list
TemplateInfo:
Tgetter_table_column col = name_temp_flag tbl = name
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_temp_flag
RESTful:
Method: GET URL: /api/name/temp/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.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)
wbia.control.manual_name_funcs.get_name_texts(ibs, name_rowid_list, apply_fix=True)[source]
Returns:text names
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_texts
RESTful:
Method: GET URL: /api/name/text/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> name_rowid_list = ibs._get_all_known_name_rowids()
>>> name_text_list = get_name_texts(ibs, name_rowid_list)
>>> result = ut.repr2(name_text_list)
>>> print(result)
['easy', 'hard', 'jeff', 'lena', 'occl', 'polar', 'zebra']
wbia.control.manual_name_funcs.get_name_uuids(ibs, nid_list)[source]
Returns:uuids_list - name uuids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/name/uuid/
wbia.control.manual_name_funcs.get_num_names(ibs, **kwargs)[source]

Number of valid names

CommandLine:
python -m wbia.control.manual_name_funcs –test-get_num_names

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> result = get_num_names(ibs)
>>> print(result)
7
wbia.control.manual_name_funcs.get_valid_nids(ibs, imgsetid=None, filter_empty=False, min_pername=None)[source]
Returns:all valid names with at least one animal (does not include unknown names)
Return type:list_ (list)
RESTful:
Method: GET URL: /api/name/
wbia.control.manual_name_funcs.sanitize_name_texts(ibs, name_text_list)[source]
RESTful:
Method: PUT URL: /api/name/sanitize
wbia.control.manual_name_funcs.set_name_alias_texts(ibs, name_rowid_list, name_alias_text_list)[source]
Returns:name_alias_text_list
Return type:list_ (list)
CommandLine:
python -m wbia.control.manual_name_funcs –test-get_name_texts
RESTful:
Method: PUT URL: /api/name/alias/text/
wbia.control.manual_name_funcs.set_name_metadata(ibs, name_rowid_list, metadata_dict_list)[source]

Sets the name’s metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/name/metadata/
wbia.control.manual_name_funcs.set_name_notes(ibs, name_rowid_list, notes_list)[source]

Sets a note for each name (multiple annotations)

RESTful:
Method: PUT URL: /api/name/note/
wbia.control.manual_name_funcs.set_name_sex(ibs, name_rowid_list, name_sex_list, duplicate_behavior='error')[source]

name_sex_list -> name.name_sex[name_rowid_list]

Parameters:
  • name_rowid_list
  • name_sex_list
TemplateInfo:
Tsetter_native_column tbl = name col = name_sex
RESTful:
Method: PUT URL: /api/name/sex/
wbia.control.manual_name_funcs.set_name_sex_text(ibs, name_rowid_list, name_sex_text_list)[source]
RESTful:
Method: PUT URL: /api/name/sex/text/
wbia.control.manual_name_funcs.set_name_temp_flag(ibs, name_rowid_list, name_temp_flag_list, duplicate_behavior='error')[source]

name_temp_flag_list -> name.name_temp_flag[name_rowid_list]

Parameters:
  • name_rowid_list
  • name_temp_flag_list
TemplateInfo:
Tsetter_native_column tbl = name col = name_temp_flag
RESTful:
Method: PUT URL: /api/name/temp/
wbia.control.manual_name_funcs.set_name_texts(ibs, name_rowid_list, name_text_list, verbose=False, notify_wildbook=False, assert_wildbook=False, update_json_log=True)[source]

Changes the name text. Does not affect the animals of this name. Effectively just changes the TEXT UUID

CommandLine:
python -m wbia.control.manual_name_funcs –test-set_name_texts
RESTful:
Method: PUT URL: /api/name/text/

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_name_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
wbia.control.manual_name_funcs.testdata_ibs(defaultdb='testdb1')[source]

wbia.control.manual_part_funcs module

Autogen:
python -c “import utool as ut; ut.write_modscript_alias(‘Tgen.sh’, ‘wbia.templates.template_generator’)” # NOQA sh Tgen.sh –key part –invert –Tcfg with_getters=True with_setters=True –modfname manual_part_funcs –funcname-filter=age_m # NOQA sh Tgen.sh –key part –invert –Tcfg with_getters=True with_setters=True –modfname manual_part_funcs –funcname-filter=is_ # NOQA sh Tgen.sh –key part –invert –Tcfg with_getters=True with_setters=True –modfname manual_part_funcs –funcname-filter=is_ –diff # NOQA
wbia.control.manual_part_funcs.add_parts(ibs, aid_list, bbox_list=None, theta_list=None, detect_confidence_list=None, notes_list=None, vert_list=None, part_uuid_list=None, viewpoint_list=None, quality_list=None, type_list=None, staged_uuid_list=None, staged_user_id_list=None, **kwargs)[source]

Adds an part to annotations

Parameters:
  • aid_list (list) – annotation rowids to add part to
  • bbox_list (list) – of [x, y, w, h] bounding boxes for each annotation (supply verts instead)
  • theta_list (list) – orientations of parts
  • vert_list (list) – alternative to bounding box
Returns:

part_rowid_list

Return type:

list

Ignore:
detect_confidence_list = None notes_list = None part_uuid_list = None viewpoint_list = None quality_list = None type_list = None
RESTful:
Method: POST URL: /api/part/
wbia.control.manual_part_funcs.delete_parts(ibs, part_rowid_list)[source]

deletes parts from the database

RESTful:
Method: DELETE URL: /api/part/
Parameters:
  • ibs (IBEISController) – wbia controller object
  • part_rowid_list (int) – list of part ids
wbia.control.manual_part_funcs.filter_part_set(ibs, part_rowid_list, include_only_aid_list=None, is_staged=False, viewpoint='no-filter', minqual=None)[source]
wbia.control.manual_part_funcs.get_num_parts(ibs, **kwargs)[source]

Number of valid parts

wbia.control.manual_part_funcs.get_part_aids(ibs, part_rowid_list, assume_unique=False)[source]

Get parent annotation rowids of parts

Parameters:part_rowid_list (list) –
Returns:annot rowids
Return type:aid_list (list)
RESTful:
Method: GET URL: /api/part/annot/rowid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> part_rowid_list = ibs.get_valid_part_rowids()
>>> result = get_part_aids(ibs, part_rowid_list)
>>> print(result)
wbia.control.manual_part_funcs.get_part_annot_rowids(ibs, part_rowid_list)[source]
wbia.control.manual_part_funcs.get_part_annot_uuids(ibs, part_rowid_list)[source]
wbia.control.manual_part_funcs.get_part_bboxes(ibs, part_rowid_list)[source]
Returns:part bounding boxes in image space
Return type:bbox_list (list)
RESTful:
Method: GET URL: /api/part/bbox/
wbia.control.manual_part_funcs.get_part_contour(ibs, part_rowid_list, return_raw=False)[source]
Returns:part contour dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/part/contour/
wbia.control.manual_part_funcs.get_part_detect_confidence(ibs, part_rowid_list)[source]
Returns:a list confidences that the parts is a valid detection
Return type:list_ (list)
RESTful:
Method: GET URL: /api/part/detect/confidence/
wbia.control.manual_part_funcs.get_part_gids(ibs, part_rowid_list, assume_unique=False)[source]

Get parent imageation rowids of parts

Parameters:part_rowid_list (list) –
Returns:image rowids
Return type:gid_list (list)
RESTful:
Method: GET URL: /api/part/image/rowid/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> part_rowid_list = ibs.get_valid_part_rowids()
>>> result = get_part_gids(ibs, part_rowid_list)
>>> print(result)
wbia.control.manual_part_funcs.get_part_image_rowids(ibs, part_rowid_list)[source]
wbia.control.manual_part_funcs.get_part_image_uuids(ibs, part_rowid_list)[source]
wbia.control.manual_part_funcs.get_part_isjunk(ibs, part_rowid_list)[source]

Auto-docstr for ‘get_part_isjunk’

wbia.control.manual_part_funcs.get_part_metadata(ibs, part_rowid_list, return_raw=False)[source]
Returns:part metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/part/metadata/
wbia.control.manual_part_funcs.get_part_missing_uuid(ibs, uuid_list)[source]
Returns:a list of missing part uuids
Return type:list_ (list)
wbia.control.manual_part_funcs.get_part_notes(ibs, part_rowid_list)[source]
Returns:a list of part notes
Return type:part_notes_list (list)
RESTful:
Method: GET URL: /api/part/note/
wbia.control.manual_part_funcs.get_part_num_verts(ibs, part_rowid_list)[source]
Returns:the number of vertices that form the polygon of each part
Return type:nVerts_list (list)
RESTful:
Method: GET URL: /api/part/num/vert/
wbia.control.manual_part_funcs.get_part_qualities(ibs, part_rowid_list, eager=True)[source]

part_quality_list <- part.part_quality[part_rowid_list]

gets data from the “native” column “part_quality” in the “part” table

Parameters:part_rowid_list (list) –
Returns:part_quality_list
Return type:list
TemplateInfo:
Tgetter_table_column col = part_quality tbl = part
SeeAlso:
wbia.const.QUALITY_INT_TO_TEXT
RESTful:
Method: GET URL: /api/part/quality/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> ibs, qreq_ = testdata_ibs()
>>> part_rowid_list = ibs._get_all_part_rowids()
>>> eager = True
>>> part_quality_list = ibs.get_part_qualities(part_rowid_list, eager=eager)
>>> print('part_quality_list = %r' % (part_quality_list,))
>>> assert len(part_rowid_list) == len(part_quality_list)
wbia.control.manual_part_funcs.get_part_quality_texts(ibs, part_rowid_list)[source]

Auto-docstr for ‘get_part_quality_texts’

RESTful:
Method: GET URL: /api/part/quality/text/
wbia.control.manual_part_funcs.get_part_reviewed(ibs, part_rowid_list)[source]
Returns:“All Instances Found” flag, true if all objects of interest
Return type:list_ (list)

(animals) have an PART in the part

RESTful:
Method: GET URL: /api/part/reviewed/
wbia.control.manual_part_funcs.get_part_rotated_verts(ibs, part_rowid_list)[source]
Returns:verticies after rotation by theta.
Return type:rotated_vert_list (list)
RESTful:
Method: GET URL: /api/part/vert/rotated/
wbia.control.manual_part_funcs.get_part_rowids_from_uuid(ibs, uuid_list)[source]
Returns:part rowids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/part/rowid/uuid/
wbia.control.manual_part_funcs.get_part_rows(ibs, part_rowid_list)[source]

Auto-docstr for ‘get_part_rows’

wbia.control.manual_part_funcs.get_part_staged_flags(ibs, part_rowid_list)[source]

returns if an part is staged

Parameters:
  • ibs (IBEISController) – wbia controller object
  • part_rowid_list (int) – list of part ids
Returns:

part_staged_flag_list - True if part is staged

Return type:

list

CommandLine:
python -m wbia.control.manual_part_funcs –test-get_part_staged_flags
RESTful:
Method: GET URL: /api/part/staged/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> part_rowid_list = ibs.get_valid_part_rowids()
>>> gid_list = get_part_staged_flags(ibs, part_rowid_list)
>>> result = str(gid_list)
>>> print(result)
wbia.control.manual_part_funcs.get_part_staged_metadata(ibs, part_rowid_list, return_raw=False)[source]
Returns:part metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/part/staged/metadata/
wbia.control.manual_part_funcs.get_part_staged_user_ids(ibs, part_rowid_list)[source]

returns if an part is staged

Parameters:
  • ibs (IBEISController) – wbia controller object
  • part_rowid_list (int) – list of part ids
Returns:

part_staged_user_id_list - True if part is staged

Return type:

list

CommandLine:
python -m wbia.control.manual_part_funcs –test-get_part_staged_user_ids
RESTful:
Method: GET URL: /api/part/staged/user/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> part_rowid_list = ibs.get_valid_part_rowids()
>>> gid_list = get_part_staged_user_ids(ibs, part_rowid_list)
>>> result = str(gid_list)
>>> print(result)
wbia.control.manual_part_funcs.get_part_staged_uuids(ibs, aid_list)[source]
Returns:part_uuid_list a list of image uuids by aid
Return type:list
RESTful:
Method: GET URL: /api/part/staged/uuid/
wbia.control.manual_part_funcs.get_part_tag_text(ibs, part_rowid_list, **kwargs)[source]

part_tags_list <- part.part_tags[part_rowid_list]

gets data from the “native” column “part_tags” in the “part” table

Parameters:part_rowid_list (list) –
Returns:part_tags_list
Return type:list

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> ibs, config2_ = testdata_ibs()
>>> part_rowid_list = ibs._get_all_part_rowids()
>>> eager = True
>>> part_tags_list = ibs.get_part_tag_text(part_rowid_list, eager=eager)
>>> assert len(part_rowid_list) == len(part_tags_list)
wbia.control.manual_part_funcs.get_part_thetas(ibs, part_rowid_list)[source]
Returns:a list of floats describing the angles of each part
Return type:theta_list (list)
CommandLine:
python -m wbia.control.manual_part_funcs –test-get_part_thetas
RESTful:
Method: GET URL: /api/part/theta/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('NAUT_test')
>>> part_rowid_list = ibs.get_valid_part_rowids()
>>> result = get_part_thetas(ibs, part_rowid_list)
>>> print(result)
[]
wbia.control.manual_part_funcs.get_part_types(ibs, part_rowid_list)[source]
Returns:a list of part notes
Return type:part_notes_list (list)
RESTful:
Method: GET URL: /api/part/note/
wbia.control.manual_part_funcs.get_part_uuids(ibs, part_rowid_list)[source]
Returns:part_uuid_list a list of part uuids by part_rowid
Return type:list
RESTful:
Method: GET URL: /api/part/uuid/
wbia.control.manual_part_funcs.get_part_verts(ibs, part_rowid_list)[source]
Returns:the vertices that form the polygon of each part
Return type:vert_list (list)
RESTful:
Method: GET URL: /api/part/vert/
wbia.control.manual_part_funcs.get_part_viewpoints(ibs, part_rowid_list)[source]
Returns:a list of part notes
Return type:part_notes_list (list)
RESTful:
Method: GET URL: /api/part/note/
wbia.control.manual_part_funcs.get_valid_part_rowids(ibs, include_only_aid_list=None, is_staged=False, viewpoint='no-filter', minqual=None)[source]
wbia.control.manual_part_funcs.get_valid_part_uuids(ibs)[source]
Returns:part_uuid_list a list of part uuids for all valid part_rowids
Return type:list
wbia.control.manual_part_funcs.part_src_api(rowid=None)[source]

Returns the base64 encoded image of part <rowid>

RESTful:
Method: GET URL: /api/part/<rowid>/
wbia.control.manual_part_funcs.set_part_bboxes(ibs, part_rowid_list, bbox_list)[source]

Sets bboxes of a list of parts by part_rowid,

Parameters:
  • part_rowid_list (list of rowids) – list of part rowids
  • bbox_list (list of (x, y, w, h)) – new bounding boxes for each part_rowid

Note

set_part_bboxes is a proxy for set_part_verts

RESTful:
Method: PUT URL: /api/part/bbox/
wbia.control.manual_part_funcs.set_part_contour(ibs, part_rowid_list, contour_dict_list)[source]

Sets the part’s contour using a contour dictionary

RESTful:
Method: PUT URL: /api/part/contour/
CommandLine:
python -m wbia.control.manual_part_funcs –test-set_part_contour

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[0:1]
>>> bbox_list = [[0, 0, 100, 100]] * len(aid_list)
>>> part_rowid_list = ibs.add_parts(aid_list, bbox_list=bbox_list)
>>> contour_dict_list = [
>>>     {'test': random.uniform(0.0, 1.0)},
>>> ]
>>> print(ut.repr2(contour_dict_list))
>>> ibs.set_part_contour(part_rowid_list, contour_dict_list)
>>> # verify results
>>> contour_dict_list_ = ibs.get_part_contour(part_rowid_list)
>>> print(ut.repr2(contour_dict_list_))
>>> assert contour_dict_list == contour_dict_list_
>>> contour_str_list = [ut.to_json(contour_dict) for contour_dict in contour_dict_list]
>>> print(ut.repr2(contour_str_list))
>>> contour_str_list_ = ibs.get_part_contour(part_rowid_list, return_raw=True)
>>> print(ut.repr2(contour_str_list_))
>>> assert contour_str_list == contour_str_list_
>>> ibs.delete_parts(part_rowid_list)
wbia.control.manual_part_funcs.set_part_detect_confidence(ibs, part_rowid_list, confidence_list)[source]

Sets part notes

RESTful:
Method: PUT URL: /api/part/detect/confidence/
wbia.control.manual_part_funcs.set_part_metadata(ibs, part_rowid_list, metadata_dict_list)[source]

Sets the part’s metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/part/metadata/
CommandLine:
python -m wbia.control.manual_part_funcs –test-set_part_metadata

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[0:1]
>>> bbox_list = [[0, 0, 100, 100]] * len(aid_list)
>>> part_rowid_list = ibs.add_parts(aid_list, bbox_list=bbox_list)
>>> metadata_dict_list = [
>>>     {'test': random.uniform(0.0, 1.0)},
>>> ]
>>> print(ut.repr2(metadata_dict_list))
>>> ibs.set_part_metadata(part_rowid_list, metadata_dict_list)
>>> # verify results
>>> metadata_dict_list_ = ibs.get_part_metadata(part_rowid_list)
>>> print(ut.repr2(metadata_dict_list_))
>>> assert metadata_dict_list == metadata_dict_list_
>>> metadata_str_list = [ut.to_json(metadata_dict) for metadata_dict in metadata_dict_list]
>>> print(ut.repr2(metadata_str_list))
>>> metadata_str_list_ = ibs.get_part_metadata(part_rowid_list, return_raw=True)
>>> print(ut.repr2(metadata_str_list_))
>>> assert metadata_str_list == metadata_str_list_
>>> ibs.delete_parts(part_rowid_list)
wbia.control.manual_part_funcs.set_part_notes(ibs, part_rowid_list, notes_list)[source]

Sets part notes

RESTful:
Method: PUT URL: /api/part/note/
wbia.control.manual_part_funcs.set_part_qualities(ibs, part_rowid_list, part_quality_list)[source]

part_quality_list -> part.part_quality[part_rowid_list]

A quality is an integer representing the following types:

Parameters:
  • part_rowid_list
  • part_quality_list
SeeAlso:
wbia.const.QUALITY_INT_TO_TEXT
RESTful:
Method: PUT URL: /api/part/quality/
wbia.control.manual_part_funcs.set_part_quality_texts(ibs, part_rowid_list, quality_text_list)[source]

Auto-docstr for ‘set_part_quality_texts’

RESTful:
Method: PUT URL: /api/part/quality/text/
wbia.control.manual_part_funcs.set_part_reviewed(ibs, part_rowid_list, reviewed_list)[source]

Sets the part all instances found bit

RESTful:
Method: PUT URL: /api/part/reviewed/
wbia.control.manual_part_funcs.set_part_staged_metadata(ibs, part_rowid_list, metadata_dict_list)[source]

Sets the part’s staged metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/part/staged/metadata/
CommandLine:
python -m wbia.control.manual_part_funcs –test-set_part_staged_metadata

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_part_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> aid_list = ibs.get_valid_aids()[0:1]
>>> bbox_list = [[0, 0, 100, 100]] * len(aid_list)
>>> part_rowid_list = ibs.add_parts(aid_list, bbox_list=bbox_list)
>>> metadata_dict_list = [
>>>     {'test': random.uniform(0.0, 1.0)},
>>> ] * len(part_rowid_list)
>>> print(ut.repr2(metadata_dict_list))
>>> ibs.set_part_staged_metadata(part_rowid_list, metadata_dict_list)
>>> # verify results
>>> metadata_dict_list_ = ibs.get_part_staged_metadata(part_rowid_list)
>>> print(ut.repr2(metadata_dict_list_))
>>> assert metadata_dict_list == metadata_dict_list_
>>> metadata_str_list = [ut.to_json(metadata_dict) for metadata_dict in metadata_dict_list]
>>> print(ut.repr2(metadata_str_list))
>>> metadata_str_list_ = ibs.get_part_staged_metadata(part_rowid_list, return_raw=True)
>>> print(ut.repr2(metadata_str_list_))
>>> assert metadata_str_list == metadata_str_list_
>>> ibs.delete_parts(part_rowid_list)
wbia.control.manual_part_funcs.set_part_staged_user_ids(ibs, part_rowid_list, user_id_list)[source]

Sets the staged part user id

RESTful:
Method: PUT URL: /api/part/staged/user/
wbia.control.manual_part_funcs.set_part_staged_uuids(ibs, aid_list, part_uuid_list)[source]
Returns:all nids of known animals (does not include unknown names)
Return type:list_ (list)
wbia.control.manual_part_funcs.set_part_tag_text(ibs, part_rowid_list, part_tags_list, duplicate_behavior='error')[source]

part_tags_list -> part.part_tags[part_rowid_list]

Parameters:
  • part_rowid_list
  • part_tags_list
wbia.control.manual_part_funcs.set_part_thetas(ibs, part_rowid_list, theta_list)[source]

Sets thetas of a list of part_rowid_list

RESTful:
Method: PUT URL: /api/part/theta/
wbia.control.manual_part_funcs.set_part_types(ibs, part_rowid_list, type_list)[source]

Sets part notes

RESTful:
Method: PUT URL: /api/part/note/
wbia.control.manual_part_funcs.set_part_verts(ibs, part_rowid_list, verts_list, delete_thumbs=True, notify_root=True)[source]

Sets the vertices [(x, y), …] of a list of part_rowid_list

RESTful:
Method: PUT URL: /api/part/vert/
wbia.control.manual_part_funcs.set_part_viewpoints(ibs, part_rowid_list, viewpoint_list)[source]

Sets part notes

RESTful:
Method: PUT URL: /api/part/note/
wbia.control.manual_part_funcs.testdata_ibs()[source]

Auto-docstr for ‘testdata_ibs’

wbia.control.manual_part_funcs.update_part_rotate_90(ibs, part_rowid_list, direction)[source]
wbia.control.manual_part_funcs.update_part_rotate_left_90(ibs, part_rowid_list)[source]
wbia.control.manual_part_funcs.update_part_rotate_right_90(ibs, part_rowid_list)[source]

wbia.control.manual_review_funcs module

python -c “import utool as ut; ut.write_modscript_alias(‘Tgen.sh’, ‘wbia.templates.template_generator’)” sh Tgen.sh –key review –invert –Tcfg with_getters=True with_setters=False –modfname manual_review_funcs

# TODO: Fix this name it is too special case

wbia.control.manual_review_funcs.add_review(ibs, aid_1_list, aid_2_list, evidence_decision_list, meta_decision_list=None, review_uuid_list=None, identity_list=None, user_confidence_list=None, tags_list=None, review_client_start_time_posix=None, review_client_end_time_posix=None, review_server_start_time_posix=None, review_server_end_time_posix=None)[source]

Adds a list of reviews.

Returns:review_id_list - review rowids
Return type:list
RESTful:
Method: POST URL: /api/review/
CommandLine:
python -m wbia.control.manual_review_funcs –test-add_review
Doctest:
>>> import wbia
>>> from wbia.control.manual_review_funcs import *
>>> ibs = wbia.opendb('testdb1')
>>> ibs.staging.get_table_as_pandas('reviews')
>>> # ensure it is empty
>>> rowids = ibs.staging.get_all_rowids('reviews')
>>> ibs.staging.delete_rowids('reviews', rowids)
>>> ut.exec_funckw(ibs.add_review, globals())
>>> # Add some dummy reviews
>>> aid_1_list = [1, 2, 3, 2]
>>> aid_2_list = [2, 3, 4, 3]
>>> evidence_decision_list = [1, 0, 1, 2]
>>> new_rowids = ibs.add_review(aid_1_list, aid_2_list,
>>>                             evidence_decision_list)
>>> assert new_rowids == [1, 2, 3, 4]
>>> table = ibs.staging.get_table_as_pandas('reviews')
>>> print(table)
>>> # Then delete them
>>> ibs.staging.delete_rowids('reviews', new_rowids)
wbia.control.manual_review_funcs.delete_review(ibs, review_rowid_list)[source]

deletes reviews from the database

RESTful:
Method: DELETE URL: /api/review/
wbia.control.manual_review_funcs.e_(u, v)[source]
wbia.control.manual_review_funcs.get_review_aid_tuple(ibs, review_rowid_list, eager=True, nInput=None)[source]
wbia.control.manual_review_funcs.get_review_count(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_counts_from_pairs(ibs, aid_pairs, eager=True, nInput=None)[source]
Returns:review_counts_list - review counts
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/counts/tuple/
wbia.control.manual_review_funcs.get_review_counts_from_tuple(ibs, aid_1_list, aid_2_list, eager=True, nInput=None)[source]
Returns:review_counts_list - review counts
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/counts/tuple/
wbia.control.manual_review_funcs.get_review_decision(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_decision_str(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_decisions_from_only(ibs, aid_list, eager=True, nInput=None)[source]
Returns:review_tuple_decisions_list - review decisions
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/decisions/only/
wbia.control.manual_review_funcs.get_review_exists_from_edges(ibs, edges, eager=True, nInput=None)[source]
wbia.control.manual_review_funcs.get_review_identities_from_tuple(ibs, aid_1_list, aid_2_list, eager=True, nInput=None)[source]
Returns:review_identities_list - review identities
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/identities/tuple/
wbia.control.manual_review_funcs.get_review_identity(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_metadata(ibs, review_rowid_list, return_raw=False)[source]
Returns:review metadata dictionary
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/metadata/
wbia.control.manual_review_funcs.get_review_posix_client_end_time(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_posix_client_start_time(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_posix_server_end_time(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_posix_server_start_time(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_posix_time(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_posix_times_from_tuple(ibs, aid_1_list, aid_2_list, eager=True, nInput=None)[source]
Returns:identity_list - review posix times
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/time/posix/tuple/
wbia.control.manual_review_funcs.get_review_rowid_from_superkey(ibs, aid_1_list, aid_2_list, count_list, eager=False, nInput=None)[source]

Returns review_rowid_list

Parameters:lists (superkey) – review_rowid_list, aid_list
Returns:review_rowid_list
wbia.control.manual_review_funcs.get_review_rowids_between(ibs, aids1, aids2=None, method=1)[source]

Find staging rowids between sets of aids

Doctest:
>>> from wbia.control.manual_review_funcs import *
>>> import wbia
>>> ibs = wbia.opendb('PZ_MTEST')
>>> aids1 = aids2 = [1, 2, 3, 4, 5, 6]
>>> rowids_between = ibs.get_review_rowids_between
>>> ids1 = sorted(rowids_between(aids1, aids2, method=1))
>>> ids2 = sorted(rowids_between(aids1, aids2, method=2))
>>> assert len(ub.find_duplicates(ids1)) == 0
>>> assert len(ub.find_duplicates(ids2)) == 0
>>> assert ids1 == ids2
wbia.control.manual_review_funcs.get_review_rowids_from_aid1(ibs, aid_list, eager=True, nInput=None)[source]
wbia.control.manual_review_funcs.get_review_rowids_from_aid2(ibs, aid_list, eager=True, nInput=None)[source]
wbia.control.manual_review_funcs.get_review_rowids_from_aid_tuple(ibs, aid_1_list, aid_2_list, eager=True, nInput=None)[source]

Aid pairs are undirected

Returns:review_rowid_list - review rowid list of lists
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/rowid/tuple/
wbia.control.manual_review_funcs.get_review_rowids_from_edges(ibs, edges, eager=True, nInput=None, directed=False)[source]
wbia.control.manual_review_funcs.get_review_rowids_from_only(ibs, aid_list, eager=True, nInput=None)[source]
Returns:review_rowids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/rowids/only/
wbia.control.manual_review_funcs.get_review_rowids_from_single(ibs, aid_list, eager=True, nInput=None)[source]
wbia.control.manual_review_funcs.get_review_tags(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_tags_from_tuple(ibs, aid_1_list, aid_2_list, eager=True, nInput=None)[source]
Returns:review_tags_list - review tags (list of strings)
Return type:list_ (list)
RESTful:
Method: GET URL: /api/review/tags/tuple/
wbia.control.manual_review_funcs.get_review_user_confidence(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.get_review_uuid(ibs, review_rowid_list)[source]
wbia.control.manual_review_funcs.hack_create_aidpair_index(ibs)[source]
wbia.control.manual_review_funcs.set_review_metadata(ibs, review_rowid_list, metadata_dict_list)[source]

Sets the review’s metadata using a metadata dictionary

RESTful:
Method: PUT URL: /api/review/metadata/
CommandLine:
python -m wbia.control.manual_review_funcs –test-set_review_metadata

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_review_funcs import *  # NOQA
>>> import wbia
>>> import random
>>> # build test data
>>> ibs = wbia.opendb('testdb1')
>>> review_rowid_list = ibs.add_review([1], [2], [0])
>>> metadata_dict_list = [
>>>     {'test': random.uniform(0.0, 1.0)},
>>> ]
>>> print(ut.repr2(metadata_dict_list))
>>> ibs.set_review_metadata(review_rowid_list, metadata_dict_list)
>>> # verify results
>>> metadata_dict_list_ = ibs.get_review_metadata(review_rowid_list)
>>> print(ut.repr2(metadata_dict_list_))
>>> assert metadata_dict_list == metadata_dict_list_
>>> metadata_str_list = [ut.to_json(metadata_dict) for metadata_dict in metadata_dict_list]
>>> print(ut.repr2(metadata_str_list))
>>> metadata_str_list_ = ibs.get_review_metadata(review_rowid_list, return_raw=True)
>>> print(ut.repr2(metadata_str_list_))
>>> assert metadata_str_list == metadata_str_list_
>>> ibs.delete_review(review_rowid_list)

wbia.control.manual_species_funcs module

python -c “import utool as ut; ut.write_modscript_alias(‘Tgen.sh’, ‘wbia.templates.template_generator’)” sh Tgen.sh –key species –invert –Tcfg with_getters=True with_setters=False –modfname manual_species_funcs

# TODO: Fix this name it is too special case

wbia.control.manual_species_funcs.add_species(ibs, species_nice_list, species_text_list=None, species_code_list=None, species_uuid_list=None, species_note_list=None, skip_cleaning=False)[source]

Adds a list of species.

Returns:speciesid_list - species rowids
Return type:list
RESTful:
Method: POST URL: /api/species/
CommandLine:
python -m wbia.control.manual_species_funcs –test-add_species

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_species_funcs import *  # NOQA
>>> import wbia
>>> import utool as ut
>>> ibs = wbia.opendb('testdb1')
>>> species_text_list = [
...     'jaguar', 'zebra_plains', 'zebra_plains', '____', 'TYPO',
...     '____', 'zebra_grevys', 'bear_polar+head']
>>> species_rowid_list = ibs.add_species(species_text_list)
>>> print(ut.repr2(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.repr2(species_text, nl=False) + '\n'
>>> result += ut.repr2(all_species_rowids, nl=False) + '\n'
>>> result += ut.repr2(ibs.get_species_texts(all_species_rowids), nl=False) + '\n'
>>> result += ut.repr2(ibs.get_species_codes(all_species_rowids), nl=False)
>>> print(result)
['jaguar', 'zebra_plains', 'zebra_plains', '____', 'typo', '____', 'zebra_grevys', 'bear_polar+head']
[1, 2, 3, 6]
['zebra_plains', 'zebra_grevys', 'bear_polar', 'bear_polar+head']
['PZ', 'GZ', 'PB', 'BP+H']
wbia.control.manual_species_funcs.delete_empty_species(ibs)[source]

deletes empty species from the database

wbia.control.manual_species_funcs.delete_species(ibs, species_rowid_list)[source]

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/
wbia.control.manual_species_funcs.get_all_species_nice(ibs)[source]
Returns:all nids of known animals (does not include unknown names)
Return type:list_ (list)
wbia.control.manual_species_funcs.get_all_species_texts(ibs)[source]
Returns:all nids of known animals (does not include unknown names)
Return type:list_ (list)
wbia.control.manual_species_funcs.get_species_codes(ibs, species_rowid_list)[source]
Returns:code_list - species codes
Return type:list_ (list)
RESTful:
Method: GET URL: /api/species/code/
wbia.control.manual_species_funcs.get_species_enabled(ibs, species_rowid_list)[source]
Returns:“Species Enabled” flag, true if the species is enabled
Return type:list_ (list)
wbia.control.manual_species_funcs.get_species_nice(ibs, species_rowid_list)[source]
Returns:species_text_list nice names
Return type:list
CommandLine:
python -m wbia.control.manual_species_funcs –test-get_species_nice –enableall
RESTful:
Method: GET URL: /api/species/nice/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_species_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> ibs._clean_species()
>>> species_rowid_list = ibs._get_all_species_rowids()
>>> result = get_species_nice(ibs, species_rowid_list)
>>> result = ut.repr2(result)
>>> print(result)
['Zebra (Plains)', "Zebra (Grevy's)", 'Polar Bear', 'bear_polar+head']
wbia.control.manual_species_funcs.get_species_notes(ibs, species_rowid_list)[source]
Returns:notes_list - species notes
Return type:list_ (list)
RESTful:
Method: GET URL: /api/species/note/
wbia.control.manual_species_funcs.get_species_rowids_from_text(ibs, species_text_list, ensure=True, **kwargs)[source]
Returns:Creates one if it doesnt exist
Return type:species_rowid_list (list)
CommandLine:
python -m wbia.control.manual_species_funcs –test-get_species_rowids_from_text:0 python -m wbia.control.manual_species_funcs –test-get_species_rowids_from_text:1
RESTful:
Method: GET URL: /api/species/rowid/text/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_species_funcs import *  # NOQA
>>> import wbia
>>> import utool as ut
>>> ibs = wbia.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.repr2(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.repr2(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()
>>> assert ut.repr2(species_text, nl=False) == ['jaguar', 'zebra_plains', 'zebra_plains', '____', 'typo', '____', 'zebra_grevys', 'bear_polar']
>>> assert ut.repr2(all_species_rowids, nl=False) == [1, 2, 3, 6]
>>> assert ut.repr2(ibs.get_species_texts(all_species_rowids), nl=False) == ['zebra_plains', 'zebra_grevys', 'bear_polar', 'bear_polar+head']

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_species_funcs import *  # NOQA
>>> import wbia
>>> import utool as ut  # NOQA
>>> ibs = wbia.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)
wbia.control.manual_species_funcs.get_species_rowids_from_uuids(ibs, species_uuid_list)[source]
Returns:Creates one if it doesnt exist
Return type:species_rowid_list (list)
CommandLine:
python -m wbia.control.manual_species_funcs –test-get_species_rowids_from_text:0 python -m wbia.control.manual_species_funcs –test-get_species_rowids_from_text:1
RESTful:
Method: GET URL: /api/species/rowid/uuid/
wbia.control.manual_species_funcs.get_species_texts(ibs, species_rowid_list)[source]
Returns:species_text_list text names
Return type:list
CommandLine:
python -m wbia.control.manual_species_funcs –test-get_species_texts –enableall
RESTful:
Method: GET URL: /api/species/text/

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_species_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> species_rowid_list = ibs._get_all_species_rowids()
>>> result = get_species_texts(ibs, species_rowid_list)
>>> result = ut.repr2(result)
>>> print(result)
['zebra_plains', 'zebra_grevys', 'bear_polar', 'bear_polar+head']
wbia.control.manual_species_funcs.get_species_uuids(ibs, species_rowid_list)[source]
Returns:uuids_list - species uuids
Return type:list_ (list)
RESTful:
Method: GET URL: /api/species/uuid/
wbia.control.manual_species_funcs.sanitize_species_texts(ibs, species_text_list)[source]

changes unknown species to the unknown value

Parameters:
Returns:

species_text_list_

Return type:

list

CommandLine:
python -m wbia.control.manual_species_funcs –test-sanitize_species_texts
RESTful:
Method: POST URL: /api/species/sanitize

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.manual_species_funcs import *  # NOQA
>>> import wbia
>>> # build test data
>>> ibs = wbia.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.repr2(species_text_list_, nl=False)
>>> print(result)
['foo', 'bar', 'zebra_plains']
wbia.control.manual_species_funcs.set_species_enabled(ibs, species_rowid_list, enabled_list)[source]

Sets the species all instances enabled bit

wbia.control.manual_test_funcs module

python -c “import utool as ut; ut.write_modscript_alias(‘Tgen.sh’, ‘wbia.templates.template_generator’)” sh Tgen.sh –key test –invert –Tcfg with_getters=True with_setters=False –modfname manual_test_funcs

# TODO: Fix this name it is too special case

wbia.control.manual_test_funcs.add_test(ibs, test_challenge_list, test_response_list, test_result_list=None, test_uuid_list=None, test_user_identity_list=None)[source]
wbia.control.manual_test_funcs.delete_test(ibs, test_rowid_list)[source]

deletes tests from the database

RESTful:
Method: DELETE URL: /api/test/
wbia.control.manual_test_funcs.get_test_rowids_from_uuid(ibs, uuid_list)[source]
wbia.control.manual_test_funcs.get_test_uuid(ibs, test_rowid_list)[source]

wbia.control.manual_wbiacontrol_funcs module

wbia.control.manual_wbiacontrol_funcs.get_annot_kpts_distinctiveness(ibs, aid_list, config2_=None, **kwargs)[source]

very hacky, but cute way to cache keypoint distinctivness

Parameters:
Returns:

dstncvs_list

Return type:

list

CommandLine:
python -m wbia.control.manual_wbiacontrol_funcs –test-get_annot_kpts_distinctiveness

Example

>>> # SLOW_DOCTEST
>>> # xdoctest: +SKIP
>>> from wbia.control.manual_wbiacontrol_funcs import *  # NOQA
>>> from wbia.algo.hots import distinctiveness_normalizer
>>> import wbia
>>> import numpy as np
>>> config2_ = None
>>> # build test data
>>> ibs = wbia.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.repr2(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'
wbia.control.manual_wbiacontrol_funcs.get_feat_kpts_distinctiveness(ibs, fid_list, dstncvs_normer=None, species_rowid=None, **kwargs)[source]
wbia.control.manual_wbiacontrol_funcs.new_query_request(ibs, qaid_list, daid_list, cfgdict=None, verbose=True, **kwargs)[source]

alias for wbia.algo.hots.query_request.new_wbia_query_request

Parameters:
  • qaid_list (list) –
  • daid_list (list) –
  • cfgdict (None) –
  • verbose (bool) –
Returns:

qreq_ - hyper-parameters

Return type:

wbia.QueryRequest

wbia.control.manual_wbiacontrol_funcs.show_annot(ibs, aid, *args, **kwargs)[source]

viz helper see wbia.viz.viz_chip.show_chip

wbia.control.manual_wbiacontrol_funcs.show_annot_image(ibs, aid, *args, **kwargs)[source]

viz helper see wbia.viz.viz_chip.show_chip

wbia.control.manual_wildbook_funcs module

CommandLine;
# Reset IBEIS database (can skip if done) python -m wbia.tests.reset_testdbs –reset_mtest python -m wbia –tf reset_mtest

Notes

Moving components: java, tomcat, wildbook.war.

python -m utool.util_inspect check_module_usage –pat=”manual_wildbook_funcs.py”

CommandLine;

# Start IA server python -m wbia –web –db PZ_MTEST

# Reset Wildbook database python -m wbia purge_local_wildbook

# Install Wildbook python -m wbia install_wildbook

# Startup Wildbook python -m wbia startup_wildbook_server –show

# Poll wildbook info python -m wbia get_wildbook_ia_url

# Login to wildbook (can skip) python -m wbia test_wildbook_login

# Ship ImageSets to wildbook python -m wbia wildbook_signal_imgsetid_list

# Change annotations names to a single name python -m wbia wildbook_signal_annot_name_changes:1

# Change annotations names back to normal python -m wbia wildbook_signal_annot_name_changes:2

wbia.control.manual_wildbook_funcs.assert_ia_available_for_wb(ibs, wb_target=None)[source]
wbia.control.manual_wildbook_funcs.delete_wildbook_orphaned_annot_uuids(ibs, auto_delete=True)[source]
wbia.control.manual_wildbook_funcs.delete_wildbook_orphaned_image_uuids(ibs, auto_delete=True)[source]
wbia.control.manual_wildbook_funcs.get_wildbook_annot_uuids(ibs, filter_match_against_on=True)[source]
wbia.control.manual_wildbook_funcs.get_wildbook_base_url(ibs, wb_target=None)[source]
wbia.control.manual_wildbook_funcs.get_wildbook_ia_url(ibs, wb_target=None)[source]

Where does wildbook expect us to be?

CommandLine:
python -m wbia get_wildbook_ia_url

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_wildbook_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='PZ_MTEST')
>>> ia_url = ibs.get_wildbook_ia_url()
>>> print('ia_url = %r' % (ia_url,))
wbia.control.manual_wildbook_funcs.get_wildbook_image_uuids(ibs)[source]
wbia.control.manual_wildbook_funcs.wildbook_get_existing_names(ibs, wb_target=None)[source]
wbia.control.manual_wildbook_funcs.wildbook_signal_annot_name_changes(ibs, aid_list=None, wb_target=None, dryrun=False)[source]
Parameters:
  • 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 wbia wildbook_signal_annot_name_changes:0 –dryrun python -m wbia wildbook_signal_annot_name_changes:1 –dryrun python -m wbia wildbook_signal_annot_name_changes:1 python -m wbia wildbook_signal_annot_name_changes:2
Setup:
>>> wb_target = None
>>> dryrun = ut.get_argflag('--dryrun')

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_wildbook_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
>>> result = ibs.wildbook_signal_annot_name_changes(aid_list, wb_target, dryrun)
>>> ibs.set_annot_name_rowids(aid_list, old_nid_list)

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_wildbook_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
>>> result = ibs.wildbook_signal_annot_name_changes(aid_list, wb_target, dryrun)
>>> # Undo changes here (not undone in wildbook)
>>> #ibs.set_annot_name_rowids(aid_list, old_nid_list)

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_wildbook_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.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)
>>> result = ibs.wildbook_signal_annot_name_changes(aid_list, wb_target, dryrun)
wbia.control.manual_wildbook_funcs.wildbook_signal_imgsetid_list(ibs, imgsetid_list=None, set_shipped_flag=True, open_url_on_complete=True, wb_target=None, dryrun=False)[source]

Exports specified imagesets to wildbook. This is a synchronous call.

Parameters:
  • 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/imageset/
Ignore:

cd $CODE_DIR/Wildbook/tmp

# Ensure IA server is up python -m wbia –web –db PZ_MTEST

# Reset IBEIS database python -m wbia.tests.reset_testdbs –reset_mtest python -m wbia reset_mtest

# Completely remove Wildbook database python -m wbia purge_local_wildbook

# Install Wildbook python -m wbia install_wildbook

# Startup Wildbook python -m wbia startup_wildbook_server

# Login to wildbook python -m wbia test_wildbook_login

# Ship ImageSets to wildbook python -m wbia wildbook_signal_imgsetid_list

# Change annotations names to a single name python -m wbia wildbook_signal_annot_name_changes:1

# Change annotations names back to normal python -m wbia wildbook_signal_annot_name_changes:2

CommandLine:
python -m wbia wildbook_signal_imgsetid_list python -m wbia wildbook_signal_imgsetid_list –dryrun python -m wbia wildbook_signal_imgsetid_list –break
SeeAlso:
~/local/build_scripts/init_wildbook.sh

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.manual_wildbook_funcs import *  # NOQA
>>> dryrun = ut.get_argflag('--dryrun')
>>> wb_target = None
>>> import wbia
>>> # Need to start a web server for wildbook to hook into
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> #gid_list = ibs.get_valid_gids()[0:10]
>>> gid_list = ibs.get_valid_gids()[3:6]
>>> new_imgsetid = ibs.create_new_imageset_from_images(gid_list)  # NOQA
>>> imgsetid = new_imgsetid
>>> 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
>>> if ut.get_argflag('--bg'):
>>>     with wbia.opendb_bg_web(defaultdb, managed=True) as web_ibs:
...         result = web_ibs.wildbook_signal_imgsetid_list(imgsetid_list, set_shipped_flag, open_url_on_complete, wb_target, dryrun)
>>> else:
...     result = ibs.wildbook_signal_imgsetid_list(imgsetid_list, set_shipped_flag, open_url_on_complete, wb_target, dryrun)
>>> # cleanup
>>> #ibs.delete_imagesets(new_imgsetid)
>>> print(result)
wbia.control.manual_wildbook_funcs.wildbook_signal_name_changes(ibs, nid_list, new_name_list, wb_target=None, dryrun=False)[source]
Parameters:
  • nid_list (int) – list of name ids
  • new_name_list (str) – list of corresponding names
  • wb_target (None) – (default = None)
  • dryrun (bool) – (default = False)
CommandLine:
python -m wbia wildbook_signal_name_changes:0 –dryrun python -m wbia wildbook_signal_name_changes:1 –dryrun python -m wbia wildbook_signal_name_changes:1 python -m wbia wildbook_signal_name_changes:2
Setup:
>>> wb_target = None
>>> dryrun = ut.get_argflag('--dryrun')
wbia.control.manual_wildbook_funcs.wildbook_sync(ibs, **kwargs)[source]

wbia.control.wildbook_manager module

Manages local wildbook installations.

CommandLine:
python -m utool.util_inspect check_module_usage –pat=”wildbook_manager.py”
Utils:
# TODO go to http://localhost:8080/wbia/createAssetStore.jsp tail -f ~/.config/wbia/tomcat/logs/catalina.out cat ~/.config/wbia/tomcat/logs/catalina.out python -m wbia shutdown_wildbook_server python -m wbia update_wildbook_install_config
wbia.control.wildbook_manager.download_tomcat()[source]

Put tomcat into a directory controlled by wbia

CommandLine:
# Reset python -c “import utool as ut; ut.delete(ut.unixjoin(ut.get_app_resource_dir(‘wbia’), ‘tomcat’))”
wbia.control.wildbook_manager.ensure_local_war(verbose=True)[source]

Ensures tomcat has been unpacked and the war is localized

CommandLine:
wbia ensure_local_war

Example

>>> # SCRIPT
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> result = ensure_local_war()
>>> print(result)
wbia.control.wildbook_manager.ensure_wb_mysql()[source]
CommandLine:
python -m wbia ensure_wb_mysql

Example

>>> # SCRIPT
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> result = ensure_wb_mysql()
wbia.control.wildbook_manager.find_installed_tomcat(check_unpacked=True, strict=True)[source]

Asserts that tomcat was properly installed

Parameters:check_unpacked (bool) – (default = True)
Returns:tomcat_dpath
Return type:str
CommandLine:
python -m wbia find_installed_tomcat

Example

>>> # ENABLE_DOCTEST
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> check_unpacked = False
>>> strict = False
>>> tomcat_dpath = find_installed_tomcat(check_unpacked, strict)
>>> result = ('tomcat_dpath = %s' % (str(tomcat_dpath),))
>>> print(result)
wbia.control.wildbook_manager.find_java_jvm()[source]
CommandLine:
python -m wbia find_java_jvm

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> jvm_fpath = find_java_jvm()
>>> result = ('jvm_fpath = %r' % (jvm_fpath,))
>>> print(result)
wbia.control.wildbook_manager.find_or_download_tomcat()[source]
Returns:tomcat_dpath
Return type:str
CommandLine:

# Reset python -m purge_local_wildbook

python -m wbia –tf purge_local_wildbook python -m wbia –tf find_or_download_tomcat

Example

>>> # SCRIPT
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> tomcat_dpath = find_or_download_tomcat()
>>> result = ('tomcat_dpath = %s' % (str(tomcat_dpath),))
>>> print(result)
wbia.control.wildbook_manager.find_or_download_wilbook_warfile(ensure=True, redownload=False)[source]
scp jonc@pachy.cs.uic.edu:/var/lib/tomcat/webapps/wbia.war
~/Downloads/pachy_wbia.war wget

http://dev.wildme.org/wbia_data_dir/wbia.war

wbia.control.wildbook_manager.find_tomcat(verbose=True)[source]

Searches likely places for tomcat to be installed

Returns:tomcat_dpath
Return type:str
Ignore:
locate –regex “tomcat/webapps$”
CommandLine:
python -m wbia find_tomcat

Example

>>> # SCRIPT
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> tomcat_dpath = find_tomcat()
>>> result = ('tomcat_dpath = %s' % (str(tomcat_dpath),))
>>> print(result)
wbia.control.wildbook_manager.get_tomcat_startup_tmpdir()[source]
wbia.control.wildbook_manager.get_wildbook_tomcat_path(ibs, tomcat_dpath=None, wb_target=None)[source]
wbia.control.wildbook_manager.install_wildbook(verbose=True)[source]

Script to setup wildbook on a unix based system (hopefully eventually this will generalize to win32)

CommandLine:

# Reset wbia purge_local_wildbook wbia ensure_wb_mysql wbia ensure_local_war # Setup wbia install_wildbook # wbia install_wildbook –nomysql # Startup wbia startup_wildbook_server –show

Alternates:
wbia install_wildbook –redownload-war wbia install_wildbook –assets wbia startup_wildbook_server –show

Example

>>> # SCRIPT
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> verbose = True
>>> result = install_wildbook()
>>> print(result)
wbia.control.wildbook_manager.monitor_wildbook_logs(verbose=True)[source]
Parameters:verbose (bool) – verbosity flag(default = True)
CommandLine:
python -m wbia monitor_wildbook_logs –show

Example

>>> # SCRIPT
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> monitor_wildbook_logs()
wbia.control.wildbook_manager.purge_local_wildbook()[source]

Shuts down the server and then purges the server on disk

CommandLine:
python -m wbia purge_local_wildbook python -m wbia purge_local_wildbook –purge-war

Example

>>> # SCRIPT
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> purge_local_wildbook()
wbia.control.wildbook_manager.shutdown_wildbook_server(verbose=True)[source]
Parameters:verbose (bool) – verbosity flag(default = True)
Ignore:
tail -f ~/.config/wbia/tomcat/logs/catalina.out
CommandLine:
python -m wbia shutdown_wildbook_server

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> verbose = True
>>> wb_url = shutdown_wildbook_server()
>>> ut.quit_if_noshow()
>>> ut.get_prefered_browser(PREFERED_BROWSER).open_new_tab(wb_url)
wbia.control.wildbook_manager.startup_wildbook_server(verbose=True)[source]
Parameters:verbose (bool) – verbosity flag(default = True)
CommandLine:
python -m wbia startup_wildbook_server python -m wbia startup_wildbook_server –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> verbose = True
>>> wb_url = startup_wildbook_server()
>>> ut.quit_if_noshow()
>>> ut.get_prefered_browser(PREFERED_BROWSER).open_new_tab(wb_url)
wbia.control.wildbook_manager.tryout_wildbook_login()[source]

Helper function to test wildbook login automagically

Returns:(wb_target, tomcat_dpath)
Return type:tuple
CommandLine:
python -m wbia tryout_wildbook_login

Example

>>> # DISABLE_DOCTEST
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> tryout_wildbook_login()
wbia.control.wildbook_manager.update_wildbook_ia_config(ibs, wildbook_tomcat_path, dryrun=False)[source]

#if use_config_file and wildbook_tomcat_path: # # Update the Wildbook configuration to see THIS wbia database # with lockfile.LockFile(lock_fpath): # update_wildbook_ia_config(ibs, wildbook_tomcat_path, dryrun)

wbia.control.wildbook_manager.update_wildbook_install_config(webapps_dpath, unpacked_war_dpath)[source]
CommandLine:
python -m wbia ensure_local_war python -m wbia update_wildbook_install_config python -m wbia update_wildbook_install_config –show

Example

>>> # xdoctest: +REQUIRES(--tomcat)
>>> from wbia.control.wildbook_manager import *  # NOQA
>>> import wbia
>>> tomcat_dpath = find_installed_tomcat()
>>> webapps_dpath = join(tomcat_dpath, 'webapps')
>>> wb_target = wbia.const.WILDBOOK_TARGET
>>> unpacked_war_dpath = join(webapps_dpath, wb_target)
>>> locals_ = ut.exec_func_src(update_wildbook_install_config, globals())
>>> #update_wildbook_install_config(webapps_dpath, unpacked_war_dpath)
>>> ut.quit_if_noshow()
>>> ut.vd(unpacked_war_dpath)
>>> ut.editfile(locals_['permission_fpath'])
>>> ut.editfile(locals_['jdoconfig_fpath'])
>>> ut.editfile(locals_['asset_store_fpath'])

Module contents

wbia.control.IMPORT_TUPLES = [('DB_SCHEMA', None, False), ('IBEISControl', None, False), ('_sql_helpers', None, False), ('accessor_decors', None, False), ('controller_inject', None, False), ('docker_control', None, False)]

cd /home/joncrall/code/wbia/wbia/control makeinit.py -x DBCACHE_SCHEMA_CURRENT DB_SCHEMA_CURRENT _grave_template manual_wbiacontrol_funcs template_definitions templates _autogen_wbiacontrol_funcs

Type:Regen Command
wbia.control.reload_subs(verbose=True)[source]

Reloads wbia.control and submodules

wbia.control.rrrr(verbose=True)

Reloads wbia.control and submodules