# -*- coding: utf-8 -*-
"""
Dependencies: flask, tornado
"""
# from os.path import splitext, basename
import logging
import uuid
from wbia.web.routes_ajax import image_src
from wbia.control import controller_inject
import utool as ut
import wbia.constants as const
(print, rrr, profile) = ut.inject2(__name__)
logger = logging.getLogger('wbia')
register_api = controller_inject.get_wbia_flask_api(__name__)
[docs]@register_api('/api/imageset/json/', methods=['POST'])
def add_imagesets_json(
ibs,
imageset_text_list,
imageset_uuid_list=None,
config_rowid_list=None,
imageset_notes_list=None,
imageset_occurence_flag_list=None,
):
r"""
Adds a list of imagesets.
Args:
imagesettext_list (list):
imageset_uuid_list (list):
config_rowid_list (list):
notes_list (list):
Returns:
imageset_uuid_list (list): added imageset uuids
RESTful:
Method: POST
URL: /api/imageset/json/
"""
imageset_rowid_list = ibs.add_imagesets(
imageset_text_list,
imageset_uuid_list=imageset_uuid_list,
occurence_flag_list=imageset_occurence_flag_list,
config_rowid_list=config_rowid_list,
notes_list=imageset_notes_list,
)
imageset_uuid_list = ibs.get_imageset_uuid(imageset_rowid_list)
return imageset_uuid_list
# @register_api('/api/image/json/', methods=['POST'])
# def add_images_json(ibs, image_uri_list, image_uuid_list, image_width_list,
# image_height_list, image_orig_name_list=None, image_ext_list=None,
# image_time_posix_list=None, image_gps_lat_list=None,
# image_gps_lon_list=None, image_orientation_list=None,
# image_notes_list=None, **kwargs):
# """
# REST:
# Method: POST
# URL: /api/image/json/
# Ignore:
# sudo pip install boto
# Args:
# image_uri_list (list) : list of string image uris, most likely HTTP(S) or S3
# encoded URLs. Alternatively, this can be a list of dictionaries (JSON
# objects) that specify AWS S3 stored assets. An example below:
# image_uri_list = [
# 'http://domain.com/example/asset1.png',
# '/home/example/Desktop/example/asset2.jpg',
# 's3://s3.amazon.com/example-bucket-2/asset1-in-bucket-2.tif',
# {
# 'bucket' : 'example-bucket-1',
# 'key' : 'example/asset1.png',
# 'auth_domain' : None, # Uses 127.0.0.1
# 'auth_access_id' : None, # Uses system default
# 'auth_secret_key' : None, # Uses system default
# },
# {
# 'bucket' : 'example-bucket-1',
# 'key' : 'example/asset2.jpg',
# # if unspecified, auth uses 127.0.0.1 and system defaults
# },
# {
# 'bucket' : 'example-bucket-2',
# 'key' : 'example/asset1-in-bucket-2.tif',
# 'auth_domain' : 's3.amazon.com',
# 'auth_access_id' : '____________________',
# 'auth_secret_key' : '________________________________________',
# },
# ]
# Note that you cannot specify AWS authentication access ids or secret keys
# using string uri's. For specific authentication methods, please use the
# latter list of dictionaries.
# image_uuid_list (list of str) : list of image UUIDs to be used in IBEIS IA
# image_width_list (list of int) : list of image widths
# image_height_list (list of int) : list of image heights
# image_orig_name_list (list of str): list of original image names
# image_ext_list (list of str): list of original image names
# image_time_posix_list (list of int): list of image's POSIX timestamps
# image_gps_lat_list (list of float): list of image's GPS latitude values
# image_gps_lon_list (list of float): list of image's GPS longitude values
# image_orientation_list (list of int): list of image's orientation flags
# image_notes_list (list of str) : optional list of any related notes with
# the images
# **kwargs : key-value pairs passed to the ibs.add_images() function.
# CommandLine:
# python -m wbia.web.apis_json --test-add_images_json
# ,"bucket":"flukebook-prod-asset-store","key":""
# Example:
# >>> # WEB_DOCTEST
# >>> from wbia.control.IBEISControl import * # NOQA
# >>> import wbia
# >>> import uuid
# >>> web_instance = wbia.opendb(db='testdb1')
# >>> _payload = {
# >>> 'image_uri_list': [
# >>> 'https://upload.wikimedia.org/wikipedia/commons/4/49/Zebra_running_Ngorongoro.jpg',
# >>> {
# >>> 'bucket' : 'test-asset-store',
# >>> 'key' : 'caribwhale/20130903-JAC-0002.JPG',
# >>> },
# >>> {
# >>> 'bucket' : 'flukebook-prod-asset-store',
# >>> 'key' : '3/a/3a76b0e8-1c64-403d-ace1-679cf2f081c0/f2.jpg',
# >>> },
# >>> ],
# >>> 'image_uuid_list': [
# >>> uuid.uuid4(),
# >>> uuid.uuid4(),
# >>> uuid.uuid4(),
# >>> ],
# >>> 'image_width_list': [
# >>> 1992,
# >>> 1194,
# >>> 500,
# >>> ],
# >>> 'image_height_list': [
# >>> 1328,
# >>> 401,
# >>> 500,
# >>> ],
# >>> }
# >>> gid_list = wbia.web.apis_json.add_images_json(web_instance, **_payload)
# >>> print(gid_list)
# >>> print(web_instance.get_image_uuids(gid_list))
# >>> print(web_instance.get_image_uris(gid_list))
# >>> print(web_instance.get_image_paths(gid_list))
# >>> print(web_instance.get_image_uris_original(gid_list))
# """
# def _rectify(list_, default, length, func=None):
# if list_ is None:
# list_ = [None] * length
# ret_list = []
# for item in list_:
# if item is None:
# item = default
# if None not in [func, item]:
# item = func(item)
# ret_list.append(item)
# return ret_list
# def _rectify_uri(list_, default, length, func=None):
# list_ = _rectify(list_, default, length, func=None)
# ret_list = []
# for item in list_:
# if isinstance(item, dict):
# item = ut.s3_dict_encode_to_str(item)
# if ibs.containerized and item is not None:
# item = item.replace('://localhost/', '://nginx:80/')
# ret_list.append(item)
# return ret_list
# def _verify(list_, tag, length, allow_none=False):
# length_ = len(list_)
# if length_ != length:
# message = 'The input list %s has the wrong length. Received: %d. Expected %d'
# args = (tag, length_, length, )
# raise ValueError(message % args)
# error_list = []
# for value in enumerate(list_):
# index, item = value
# if item is None:
# error_list.append(value)
# if len(error_list) > 0:
# message = 'The input list %s has invalid values (index, value): %r'
# args = (tag, error_list, )
# raise ValueError(message % args)
# def _uuid(value):
# import uuid
# if value is None:
# return None
# if isinstance(value, str):
# value = uuid.UUID(value)
# return value
# def _base(value):
# if value is None:
# return None
# return basename(value)
# def _ext(value):
# if value is None:
# return None
# value = splitext(value)[1].lower()
# value = '.jpg' if value == '.jpeg' else value
# return value
# # TODO: FIX ME SO THAT WE DON'T HAVE TO LOCALIZE EVERYTHING
# kwargs['auto_localize'] = kwargs.get('auto_localize', True)
# kwargs['sanitize'] = kwargs.get('sanitize', False)
# expected_length = len(image_uri_list)
# # Rectify values
# image_uri_list = _rectify_uri(image_uri_list , None, expected_length, str)
# image_uuid_list = _rectify(image_uuid_list , None, expected_length, _uuid)
# image_width_list = _rectify(image_width_list , None, expected_length, int)
# image_height_list = _rectify(image_height_list , None, expected_length, int)
# image_orig_name_list = _rectify(image_uri_list , None, expected_length, _base)
# image_ext_list = _rectify(image_uri_list , None, expected_length, _ext)
# image_time_posix_list = _rectify(image_time_posix_list , -1, expected_length, float)
# image_gps_lat_list = _rectify(image_gps_lat_list , -1.0, expected_length, float)
# image_gps_lon_list = _rectify(image_gps_lon_list , -1.0, expected_length, float)
# image_orientation_list = _rectify(image_orientation_list, 0.0, expected_length, int)
# image_notes_list = _rectify(image_notes_list , '', expected_length, str)
# # Verify values
# image_uri_list = _verify(image_uri_list , 'image_uri_list' , expected_length)
# image_uuid_list = _verify(image_uuid_list , 'image_uuid_list' , expected_length)
# image_width_list = _verify(image_width_list , 'image_width_list' , expected_length)
# image_height_list = _verify(image_height_list , 'image_height_list' , expected_length)
# image_orig_name_list = _verify(image_orig_name_list , 'image_orig_name_list' , expected_length)
# image_ext_list = _verify(image_ext_list , 'image_ext_list' , expected_length)
# image_time_posix_list = _verify(image_time_posix_list , 'image_time_posix_list' , expected_length)
# image_gps_lat_list = _verify(image_gps_lat_list , 'image_gps_lat_list' , expected_length)
# image_gps_lon_list = _verify(image_gps_lon_list , 'image_gps_lon_list' , expected_length)
# image_orientation_list = _verify(image_orientation_list, 'image_orientation_list', expected_length)
# image_notes_list = _verify(image_notes_list , 'image_notes_list' , expected_length)
# params_gen = zip(
# image_uuid_list,
# image_uri_list,
# image_uri_list,
# image_orig_name_list,
# image_ext_list,
# image_width_list,
# image_height_list,
# image_time_posix_list,
# image_gps_lat_list,
# image_gps_lon_list,
# image_orientation_list,
# image_notes_list
# )
# gid_list = ibs.add_images(image_uri_list, params_list=params_gen, **kwargs) # NOQA
# image_uuid_list = ibs.get_image_uuids(gid_list)
# return image_uuid_list
[docs]@register_api('/api/image/json/', methods=['POST'])
def add_images_json(
ibs,
image_uri_list,
image_unixtime_list=None,
image_gps_lat_list=None,
image_gps_lon_list=None,
**kwargs,
):
"""
REST:
Method: POST
URL: /api/image/json/
Ignore:
sudo pip install boto
Args:
image_uri_list (list) : list of string image uris, most likely HTTP(S) or S3
encoded URLs. Alternatively, this can be a list of dictionaries (JSON
objects) that specify AWS S3 stored assets. An example below:
image_uri_list = [
'http://domain.com/example/asset1.png',
'/home/example/Desktop/example/asset2.jpg',
's3://s3.amazon.com/example-bucket-2/asset1-in-bucket-2.tif',
{
'bucket' : 'example-bucket-1',
'key' : 'example/asset1.png',
'auth_domain' : None, # Uses 127.0.0.1
'auth_access_id' : None, # Uses system default
'auth_secret_key' : None, # Uses system default
},
{
'bucket' : 'example-bucket-1',
'key' : 'example/asset2.jpg',
# if unspecified, auth uses 127.0.0.1 and system defaults
},
{
'bucket' : 'example-bucket-2',
'key' : 'example/asset1-in-bucket-2.tif',
'auth_domain' : 's3.amazon.com',
'auth_access_id' : '____________________',
'auth_secret_key' : '________________________________________',
},
]
Note that you cannot specify AWS authentication access ids or secret keys
using string uri's. For specific authentication methods, please use the
latter list of dictionaries.
image_time_posix_list (list of int): list of image's POSIX timestamps
image_gps_lat_list (list of float): list of image's GPS latitude values
image_gps_lon_list (list of float): list of image's GPS longitude values
**kwargs : key-value pairs passed to the ibs.add_images() function.
CommandLine:
python -m wbia.web.apis_json --test-add_images_json
,"bucket":"flukebook-prod-asset-store","key":""
Example:
>>> # FIXME failing-test (03-Aug-2020) boto.exception.NoAuthHandlerFound: No handler was ready to authenticate
>>> # xdoctest: +SKIP
>>> from wbia.control.IBEISControl import * # NOQA
>>> import wbia
>>> import uuid
>>> web_instance = wbia.opendb(db='testdb1')
>>> _payload = {
>>> 'image_uri_list': [
>>> 'https://upload.wikimedia.org/wikipedia/commons/4/49/Zebra_running_Ngorongoro.jpg',
>>> {
>>> 'bucket' : 'test-asset-store',
>>> 'key' : 'caribwhale/20130903-JAC-0002.JPG',
>>> },
>>> {
>>> 'bucket' : 'flukebook-prod-asset-store',
>>> 'key' : '3/a/3a76b0e8-1c64-403d-ace1-679cf2f081c0/f2.jpg',
>>> },
>>> ],
>>> }
>>> gid_list = wbia.web.apis_json.add_images_json(web_instance, **_payload)
>>> print(gid_list)
>>> print(web_instance.get_image_uuids(gid_list))
>>> print(web_instance.get_image_uris(gid_list))
>>> print(web_instance.get_image_paths(gid_list))
>>> print(web_instance.get_image_uris_original(gid_list))
"""
def _rectify(list_, default, length, func=None):
if list_ is None:
list_ = [None] * length
ret_list = []
for item in list_:
if item is None:
item = default
if None not in [func, item]:
item = func(item)
ret_list.append(item)
return ret_list
def _rectify_uri(list_, default, length, func=str):
list_ = _rectify(list_, default, length, func=None)
ret_list = []
for item in list_:
if isinstance(item, dict):
item = ut.s3_dict_encode_to_str(item)
if ibs.containerized and item is not None:
item = item.replace('://localhost/', '://nginx:80/')
ret_list.append(item)
return ret_list
def _verify(list_, tag, length, allow_none=False):
length_ = len(list_)
if length_ != length:
message = 'The input list %s has the wrong length. Received: %d. Expected %d'
args = (
tag,
length_,
length,
)
raise ValueError(message % args)
error_list = []
for value in enumerate(list_):
index, item = value
if item is None and not allow_none:
error_list.append(value)
if len(error_list) > 0:
message = 'The input list %s has invalid values (index, value): %r'
args = (
tag,
error_list,
)
raise ValueError(message % args)
return list_
kwargs['auto_localize'] = kwargs.get('auto_localize', True)
kwargs['sanitize'] = kwargs.get('sanitize', False)
depricated_list = [
'image_uuid_list',
'image_width_list',
'image_height_list',
'image_orig_name_list',
'image_ext_list',
'image_time_posix_list',
'image_orientation_list',
'image_notes_list',
]
bad_list = []
for depricated_value in depricated_list:
if depricated_value in kwargs:
bad_list.append(depricated_value)
if len(bad_list) > 0:
raise ValueError(
'This API signature has changed, the following parameters have been deprecated: %r. Please remove them and try again.'
% (bad_list,)
)
expected_length = len(image_uri_list)
# Rectify values
image_uri_list = _rectify_uri(image_uri_list, None, expected_length, str)
image_uri_list = _verify(image_uri_list, 'image_uri_list', expected_length)
gid_list = ibs.add_images(image_uri_list, **kwargs) # NOQA
if image_unixtime_list is not None:
image_unixtime_list = _rectify(image_unixtime_list, -1, expected_length, float)
image_unixtime_list = _verify(
image_unixtime_list, 'image_unixtime_list', expected_length, allow_none=True
)
flag_list = [
None not in [gid, image_unixtime]
for gid, image_unixtime in zip(gid_list, image_unixtime_list)
]
gid_list_ = ut.filter_items(gid_list, flag_list)
image_unixtime_list_ = ut.filter_items(image_unixtime_list, flag_list)
logger.info('Setting times: %r -> %r' % (gid_list_, image_unixtime_list_))
ibs.set_image_unixtime(gid_list_, image_unixtime_list_)
if image_gps_lat_list is not None and image_gps_lon_list is not None:
image_gps_lat_list = _rectify(image_gps_lat_list, -1.0, expected_length, float)
image_gps_lon_list = _rectify(image_gps_lon_list, -1.0, expected_length, float)
image_gps_lat_list = _verify(
image_gps_lat_list, 'image_gps_lat_list', expected_length, allow_none=True
)
image_gps_lon_list = _verify(
image_gps_lon_list, 'image_gps_lon_list', expected_length, allow_none=True
)
for index, value in enumerate(zip(image_gps_lat_list, image_gps_lon_list)):
image_gps_lat, image_gps_lon = value
if image_gps_lat is not None:
assert (
image_gps_lon is not None
), 'Cannot specify a longitude without a latitude, index %d' % (index,)
if image_gps_lon is not None:
assert (
image_gps_lat is not None
), 'Cannot specify a longitude without a latitude, index %d' % (index,)
flag_list = [
None not in [gid, image_gps_lat_, image_gps_lon_]
for gid, image_gps_lat_, image_gps_lon_ in zip(
gid_list, image_gps_lat_list, image_gps_lon_list
)
]
gid_list_ = ut.filter_items(gid_list, flag_list)
image_gps_lat_list_ = ut.filter_items(image_gps_lat_list, flag_list)
image_gps_lon_list_ = ut.filter_items(image_gps_lon_list, flag_list)
logger.info(
'Setting gps: %r -> %r, %r'
% (gid_list_, image_gps_lat_list_, image_gps_lon_list_)
)
ibs.set_image_gps(
gid_list_, lat_list=image_gps_lat_list_, lon_list=image_gps_lon_list_
)
image_uuid_list = ibs.get_image_uuids(gid_list)
return image_uuid_list
[docs]class ParseError(object):
def __init__(self, value):
self.value = value
[docs]@register_api('/api/annot/json/', methods=['POST'])
def add_annots_json(
ibs,
image_uuid_list,
annot_bbox_list,
annot_theta_list,
annot_viewpoint_list=None,
annot_quality_list=None,
annot_species_list=None,
annot_multiple_list=None,
annot_interest_list=None,
annot_name_list=None,
**kwargs,
):
"""
REST:
Method: POST
URL: /api/annot/json/
Ignore:
sudo pip install boto
Args:
image_uuid_list (list of str) : list of image UUIDs to be used in IBEIS IA
annot_bbox_list (list of 4-tuple) : list of bounding box coordinates encoded as
a 4-tuple of the values (xtl, ytl, width, height) where xtl is the
'top left corner, x value' and ytl is the 'top left corner, y value'.
annot_theta_list (list of float) : list of radian rotation around center.
Defaults to 0.0 (no rotation).
annot_species_list (list of str) : list of species for the annotation, if known.
If the list is partially known, use None (null in JSON) for unknown entries.
annot_name_list (list of str) : list of names for the annotation, if known.
If the list is partially known, use None (null in JSON) for unknown entries.
**kwargs : key-value pairs passed to the ibs.add_annots() function.
CommandLine:
python -m wbia.web.app --test-add_annots_json
Example:
>>> # DISABLE_DOCTEST
>>> import wbia
>>> from wbia.control.IBEISControl import * # NOQA
>>> web_instance = wbia.opendb(db='testdb1')
>>> _payload = {
>>> 'image_uuid_list': [
>>> uuid.UUID('7fea8101-7dec-44e3-bf5d-b8287fd231e2'),
>>> uuid.UUID('c081119a-e08e-4863-a710-3210171d27d6'),
>>> ],
>>> 'annot_uuid_list': [
>>> uuid.UUID('fe1547c5-1425-4757-9b8f-b2b4a47f552d'),
>>> uuid.UUID('86d3959f-7167-4822-b99f-42d453a50745'),
>>> ],
>>> 'annot_bbox_list': [
>>> [0, 0, 1992, 1328],
>>> [0, 0, 1194, 401],
>>> ],
>>> }
>>> aid_list = wbia.web.app.add_annots_json(web_instance, **_payload)
>>> print(aid_list)
>>> print(web_instance.get_annot_image_uuids(aid_list))
>>> print(web_instance.get_annot_uuids(aid_list))
>>> print(web_instance.get_annot_bboxes(aid_list))
"""
def _rectify(list_, default, length, func=None):
if list_ is None:
list_ = [None] * length
ret_list = []
for item in list_:
if item is None:
item = default
if None not in [func, item]:
item = func(item)
ret_list.append(item)
return ret_list
def _verify(list_, tag, length, allow_none=False):
length_ = len(list_)
if length_ != length:
message = 'The input list %s has the wrong length. Received: %d. Expected %d'
args = (
tag,
length_,
length,
)
raise ValueError(message % args)
error_list = []
for value in enumerate(list_):
index, item = value
if item is None and not allow_none:
error_list.append(value)
if isinstance(item, ParseError):
value = (index, item.value)
error_list.append(value)
if len(error_list) > 0:
message = 'The input list %s has invalid values (index, value): %r'
args = (
tag,
error_list,
)
raise ValueError(message % args)
return list_
def _uuid(value):
if value is None:
return ParseError(value)
if isinstance(value, str):
value = uuid.UUID(value)
return value
def _bbox(value):
if len(value) != 4:
return ParseError(value)
value = tuple(map(float, value))
return value
depricated_list = [
'annot_uuid_list',
'annot_notes_list',
]
bad_list = []
for depricated_value in depricated_list:
if depricated_value in kwargs:
bad_list.append(depricated_value)
if len(bad_list) > 0:
raise ValueError(
'This API signature has changed, the following parameters have been deprecated: %r. Please remove them and try again.'
% (bad_list,)
)
expected_length = len(image_uuid_list)
image_uuid_list = _rectify(image_uuid_list, None, expected_length, _uuid)
annot_bbox_list = _rectify(annot_bbox_list, None, expected_length, _bbox)
annot_theta_list = _rectify(annot_theta_list, None, expected_length, float)
image_uuid_list = _verify(image_uuid_list, 'image_uuid_list', expected_length)
annot_bbox_list = _verify(annot_bbox_list, 'annot_bbox_list', expected_length)
annot_theta_list = _verify(annot_theta_list, 'annot_theta_list', expected_length)
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
gid_list = _verify(gid_list, 'image_uuid_list', expected_length)
aid_list = ibs.add_annots(
gid_list, bbox_list=annot_bbox_list, theta_list=annot_theta_list
)
if annot_viewpoint_list is not None:
annot_viewpoint_list = _rectify(
annot_viewpoint_list, const.VIEW.UNKNOWN, expected_length, str
)
annot_viewpoint_list = _verify(
annot_viewpoint_list,
'annot_viewpoint_list',
expected_length,
allow_none=True,
)
flag_list = [
annot_viewpoint is not None for annot_viewpoint in annot_viewpoint_list
]
aid_list_ = ut.filter_items(aid_list, flag_list)
annot_viewpoint_list_ = ut.filter_items(annot_viewpoint_list, flag_list)
ibs.set_annot_viewpoints(aid_list_, annot_viewpoint_list_)
if annot_quality_list is not None:
annot_quality_list = _rectify(
annot_quality_list, const.QUAL_UNKNOWN, expected_length, str
)
annot_quality_list = _verify(
annot_quality_list, 'annot_quality_list', expected_length, allow_none=True
)
flag_list = [annot_quality is not None for annot_quality in annot_quality_list]
aid_list_ = ut.filter_items(aid_list, flag_list)
annot_quality_list_ = ut.filter_items(annot_quality_list, flag_list)
ibs.set_annot_quality_texts(aid_list_, annot_quality_list_)
if annot_species_list is not None:
annot_species_list = _rectify(
annot_species_list, const.UNKNOWN, expected_length, str
)
annot_species_list = _verify(
annot_species_list, 'annot_species_list', expected_length, allow_none=True
)
flag_list = [annot_species is not None for annot_species in annot_species_list]
aid_list_ = ut.filter_items(aid_list, flag_list)
annot_species_list_ = ut.filter_items(annot_species_list, flag_list)
ibs.set_annot_species(aid_list_, annot_species_list_)
if annot_multiple_list is not None:
annot_multiple_list = _rectify(annot_multiple_list, False, expected_length, bool)
annot_multiple_list = _verify(
annot_multiple_list, 'annot_multiple_list', expected_length, allow_none=True
)
flag_list = [annot_multiple is not None for annot_multiple in annot_multiple_list]
aid_list_ = ut.filter_items(aid_list, flag_list)
annot_multiple_list_ = ut.filter_items(annot_multiple_list, flag_list)
ibs.set_annot_multiple(aid_list_, annot_multiple_list_)
if annot_interest_list is not None:
annot_interest_list = _rectify(annot_interest_list, False, expected_length, bool)
annot_interest_list = _verify(
annot_interest_list, 'annot_interest_list', expected_length, allow_none=True
)
flag_list = [annot_interest is not None for annot_interest in annot_interest_list]
aid_list_ = ut.filter_items(aid_list, flag_list)
annot_interest_list_ = ut.filter_items(annot_interest_list, flag_list)
ibs.set_annot_interest(aid_list_, annot_interest_list_)
if annot_name_list is not None:
annot_name_list = _rectify(annot_name_list, const.UNKNOWN, expected_length, str)
annot_name_list = _verify(
annot_name_list, 'annot_name_list', expected_length, allow_none=True
)
flag_list = [annot_name is not None for annot_name in annot_name_list]
aid_list_ = ut.filter_items(aid_list, flag_list)
annot_name_list_ = ut.filter_items(annot_name_list, flag_list)
ibs.set_annot_names(aid_list_, annot_name_list_)
annot_uuid_list = ibs.get_annot_uuids(aid_list)
return annot_uuid_list
[docs]@register_api('/api/part/json/', methods=['POST'])
def add_parts_json(ibs, annot_uuid_list, part_bbox_list, part_theta_list, **kwargs):
"""
REST:
Method: POST
URL: /api/part/json/
Ignore:
sudo pip install boto
Args:
annot_uuid_list (list of str) : list of annot UUIDs to be used in IBEIS IA
part_uuid_list (list of str) : list of annotations UUIDs to be used in IBEIS IA
part_bbox_list (list of 4-tuple) : list of bounding box coordinates encoded as
a 4-tuple of the values (xtl, ytl, width, height) where xtl is the
'top left corner, x value' and ytl is the 'top left corner, y value'.
part_theta_list (list of float) : list of radian rotation around center.
Defaults to 0.0 (no rotation).
**kwargs : key-value pairs passed to the ibs.add_annots() function.
"""
def _rectify(list_, default, length, func=None):
if list_ is None:
list_ = [None] * length
ret_list = []
for item in list_:
if item is None:
item = default
if None not in [func, item]:
item = func(item)
ret_list.append(item)
return ret_list
def _verify(list_, tag, length, allow_none=False):
length_ = len(list_)
if length_ != length:
message = 'The input list %s has the wrong length. Received: %d. Expected %d'
args = (
tag,
length_,
length,
)
raise ValueError(message % args)
error_list = []
for value in enumerate(list_):
index, item = value
if item is None and not allow_none:
error_list.append(value)
if isinstance(item, ParseError):
value = (index, item.value)
error_list.append(value)
if len(error_list) > 0:
message = 'The input list %s has invalid values (index, value): %r'
args = (
tag,
error_list,
)
raise ValueError(message % args)
return list_
def _uuid(value):
if value is None:
return ParseError(value)
if isinstance(value, str):
value = uuid.UUID(value)
return value
def _bbox(value):
if len(value) != 4:
return ParseError(value)
value = tuple(map(float, value))
return value
expected_length = len(annot_uuid_list)
annot_uuid_list = _rectify(annot_uuid_list, None, expected_length, _uuid)
part_bbox_list = _rectify(part_bbox_list, None, expected_length, _bbox)
part_theta_list = _rectify(part_theta_list, None, expected_length, float)
annot_uuid_list = _verify(annot_uuid_list, 'image_uuid_list', expected_length)
part_bbox_list = _verify(part_bbox_list, 'part_bbox_list', expected_length)
part_theta_list = _verify(part_theta_list, 'part_theta_list', expected_length)
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
aid_list = _verify(aid_list, 'annot_uuid_list', expected_length)
part_rowid_list = ibs.add_parts(
aid_list, bbox_list=part_bbox_list, theta_list=part_theta_list
)
part_uuid_list = ibs.get_part_uuids(part_rowid_list)
return part_uuid_list
[docs]@register_api('/api/name/json/', methods=['POST'])
def add_names_json(ibs, name_text_list, name_uuid_list=None, name_note_list=None):
nid_list = ibs.add_names_json(
name_text_list, name_uuid_list=name_uuid_list, name_note_list=name_note_list
)
return ibs.get_name_uuids(nid_list)
[docs]@register_api('/api/species/json/', methods=['POST'], __api_plural_check__=False)
def add_species_json(
ibs,
species_nice_list,
species_text_list=None,
species_code_list=None,
species_uuid_list=None,
species_note_list=None,
skip_cleaning=False,
):
species_rowid_list = ibs.add_species(
species_nice_list,
species_text_list=species_text_list,
species_code_list=species_code_list,
species_uuid_list=species_uuid_list,
species_note_list=species_note_list,
skip_cleaning=skip_cleaning,
)
return ibs.get_species_uuids(species_rowid_list)
[docs]@register_api('/api/match/json/', methods=['POST'])
def add_annotmatch_json(
ibs,
match_annot_uuid1_list,
match_annot_uuid2_list,
match_evidence_decision_list=None,
match_meta_decision_list=None,
match_confidence_list=None,
match_user_list=None,
match_tag_list=None,
match_modified_list=None,
match_count_list=None,
):
aids1 = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aids2 = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
am_rowids = ibs.add_annotmatch_undirected(aids1, aids2)
if match_evidence_decision_list:
ibs.set_annotmatch_evidence_decision(am_rowids, match_evidence_decision_list)
if match_meta_decision_list:
ibs.set_annotmatch_meta_decision(am_rowids, match_meta_decision_list)
if match_confidence_list:
ibs.set_annotmatch_confidence(am_rowids, match_confidence_list)
if match_user_list:
ibs.set_annotmatch_reviewer(am_rowids, match_user_list)
if match_tag_list:
ibs.set_annotmatch_tag_text(am_rowids, match_tag_list)
if match_modified_list:
ibs.set_annotmatch_posixtime_modified(am_rowids, match_modified_list)
if match_count_list:
ibs.set_annotmatch_count(am_rowids, match_count_list)
return list(zip(match_annot_uuid1_list, match_annot_uuid2_list))
[docs]@register_api('/api/review/json/', methods=['POST'])
def add_review_json(
ibs,
review_annot_uuid1_list,
review_annot_uuid2_list,
review_evidence_decision_list,
review_meta_decision_list=None,
review_uuid_list=None,
review_user_list=None,
review_user_confidence_list=None,
review_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,
):
aids1 = ibs.get_annot_aids_from_uuid(review_annot_uuid1_list)
aids2 = ibs.get_annot_aids_from_uuid(review_annot_uuid2_list)
ibs.add_review(
aids1,
aids2,
evidence_decision_list=review_evidence_decision_list,
meta_decision_list=review_meta_decision_list,
review_uuid_list=review_uuid_list,
identity_list=review_user_list,
user_confidence_list=review_user_confidence_list,
tags_list=review_tags_list,
review_client_start_time_posix=review_client_start_time_posix,
review_client_end_time_posix=review_client_end_time_posix,
review_server_start_time_posix=review_server_start_time_posix,
review_server_end_time_posix=review_server_end_time_posix,
)
return list(zip(review_annot_uuid1_list, review_annot_uuid2_list))
[docs]@register_api('/api/imageset/json/', methods=['GET'])
def get_valid_imageset_uuids_json(ibs, **kwargs):
imgsetid_list = ibs.get_valid_imgsetids(**kwargs)
return ibs.get_imageset_uuid(imgsetid_list)
[docs]@register_api('/api/imageset/annot/uuid/json/', methods=['GET'])
def get_imageset_annot_uuids_json(ibs, imageset_uuid_list):
imgsetid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
aids_list = ibs.get_imageset_aids(imgsetid_list)
annot_uuids_list = [ibs.get_annot_uuids(aid_list) for aid_list in aids_list]
return annot_uuids_list
[docs]@register_api('/api/imageset/num/annot/reviewed/json/', methods=['GET'])
def get_imageset_num_annots_reviewed_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_num_annots_reviewed(imageset_rowid_list)
[docs]@register_api('/api/imageset/num/image/reviewed/json/', methods=['GET'])
def get_imageset_num_imgs_reviewed_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_num_imgs_reviewed(imageset_rowid_list)
[docs]@register_api('/api/imageset/num/name/exemplar/json/', methods=['GET'])
def get_imageset_num_names_with_exemplar_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_num_names_with_exemplar(imageset_rowid_list)
[docs]@register_api('/api/imageset/num/image/json/', methods=['GET'])
def get_imageset_num_gids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_num_gids(imageset_rowid_list)
[docs]@register_api('/api/imageset/num/annot/json/', methods=['GET'])
def get_imageset_num_aids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_num_aids(imageset_rowid_list)
[docs]@register_api('/api/imageset/annot/rowid/json/', methods=['GET'])
def get_imageset_aids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_aids(imageset_rowid_list)
[docs]@register_api('/api/imageset/image/rowid/json/', methods=['GET'])
def get_imageset_gids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_gids(imageset_rowid_list)
[docs]@register_api('/api/imageset/image/uuid/json/', methods=['GET'])
def get_imageset_image_uuids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_image_uuids(imageset_rowid_list)
[docs]@register_api('/api/imageset/name/rowid/json/', methods=['GET'])
def get_imageset_nids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_nids(imageset_rowid_list)
[docs]@register_api('/api/imageset/name/uuid/json/', methods=['GET'])
def get_imageset_name_uuids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_name_uuids(imageset_rowid_list)
[docs]@register_api('/api/imageset/text/json/', methods=['GET'])
def get_imageset_text_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_text(imageset_rowid_list)
[docs]@register_api('/api/imageset/rowid/uuid/json/', methods=['GET'])
def get_imageset_imgsetids_from_uuid_json(ibs, imageset_uuid_list):
return ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
[docs]@register_api('/api/imageset/rowid/text/json/', methods=['GET'])
def get_imageset_imgsetids_from_text_json(ibs, imageset_text_list, **kwargs):
return ibs.get_imageset_imgsetids_from_text(imageset_text_list, **kwargs)
[docs]@register_api('/api/imageset/note/json/', methods=['GET'])
def get_imageset_note_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_note(imageset_rowid_list)
[docs]@register_api('/api/imageset/time/posix/end/json/', methods=['GET'])
def get_imageset_end_time_posix_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_end_time_posix(imageset_rowid_list)
[docs]@register_api('/api/imageset/gps/lat/json/', methods=['GET'], __api_plural_check__=False)
def get_imageset_gps_lats_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_gps_lats(imageset_rowid_list)
[docs]@register_api('/api/imageset/gps/lon/json/', methods=['GET'], __api_plural_check__=False)
def get_imageset_gps_lons_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_gps_lons(imageset_rowid_list)
[docs]@register_api('/api/imageset/occurrence/json/', methods=['GET'])
def get_imageset_occurrence_flags_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_occurrence_flags(imageset_rowid_list)
[docs]@register_api('/api/imageset/processed/json/', methods=['GET'])
def get_imageset_processed_flags_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_processed_flags(imageset_rowid_list)
[docs]@register_api('/api/imageset/shipped/json/', methods=['GET'])
def get_imageset_shipped_flags_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_shipped_flags(imageset_rowid_list)
[docs]@register_api('/api/imageset/time/posix/start/json/', methods=['GET'])
def get_imageset_start_time_posix_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_start_time_posix(imageset_rowid_list)
[docs]@register_api('/api/imageset/duration/json/', methods=['GET'])
def get_imageset_duration_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_duration(imageset_rowid_list)
[docs]@register_api('/api/imageset/smart/waypoint/json/', methods=['GET'])
def get_imageset_smart_waypoint_ids_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_smart_waypoint_ids(imageset_rowid_list)
[docs]@register_api('/api/imageset/smart/xml/file/name/json/', methods=['GET'])
def get_imageset_smart_xml_fnames_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_smart_xml_fnames(imageset_rowid_list)
[docs]@register_api('/api/imageset/smart/xml/file/content/json/', methods=['GET'])
def get_imageset_smart_xml_contents_json(ibs, imageset_uuid_list):
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.get_imageset_smart_xml_contents(imageset_rowid_list)
[docs]@register_api('/api/image/json/<uuid>/', methods=['GET'])
def image_base64_api_json(ibs, uuid=None, thumbnail=False, fresh=False, **kwargs):
rowid = ibs.get_image_rowid_from_uuid(uuid)
return image_src(rowid, thumbnail=thumbnail, fresh=fresh, **kwargs)
[docs]@register_api('/api/image/json/', methods=['GET'])
def get_valid_image_uuids_json(ibs, **kwargs):
gid_list = ibs.get_valid_gids(**kwargs)
return ibs.get_image_uuids(gid_list)
[docs]@register_api('/api/image/dict/json/', methods=['GET'])
def get_image_uuids_with_annot_uuids(ibs, gid_list=None):
if gid_list is None:
gid_list = sorted(ibs.get_valid_gids())
aids_list = ibs.get_image_aids(gid_list)
zipped = list(zip(gid_list, aids_list))
combined_dict = {
str(ibs.get_image_uiids(gid)): ibs.get_annot_uuids(aid_list)
for gid, aid_list in zipped
}
return combined_dict
[docs]@register_api('/api/image/rowid/uuid/json/', methods=['GET'])
def get_image_gids_from_uuid_json(ibs, image_uuid_list):
return ibs.get_image_gids_from_uuid(image_uuid_list)
[docs]@register_api('/api/image/uri/json/', methods=['GET'])
def get_image_uris_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_uris(gid_list)
[docs]@register_api('/api/image/uri/original/json/', methods=['GET'])
def get_image_uris_original_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_uris_original(gid_list)
[docs]@register_api('/api/image/file/path/json/', methods=['GET'])
def get_image_paths_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_paths(gid_list)
[docs]@register_api('/api/image/file/hash/json/', methods=['GET'])
def get_image_hash_json(ibs, image_uuid_list, **kwargs):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_hash(gid_list, **kwargs)
[docs]@register_api('/api/image/file/name/json/', methods=['GET'])
def get_image_gnames_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_gnames(gid_list)
[docs]@register_api('/api/image/size/json/', methods=['GET'])
def get_image_sizes_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_sizes(gid_list)
[docs]@register_api('/api/image/width/json/', methods=['GET'])
def get_image_widths_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_widths(gid_list)
[docs]@register_api('/api/image/height/json/', methods=['GET'])
def get_image_heights_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_heights(gid_list)
[docs]@register_api('/api/image/gps/json/', methods=['GET'], __api_plural_check__=False)
def get_image_gps_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_gps(gid_list)
[docs]@register_api('/api/image/lat/json/', methods=['GET'])
def get_image_lat_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_lat(gid_list)
[docs]@register_api('/api/image/lon/json/', methods=['GET'])
def get_image_lon_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_lon(gid_list)
[docs]@register_api('/api/image/orientation/json/', methods=['GET'])
def get_image_orientation_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_orientation(gid_list)
[docs]@register_api('/api/image/orientation/str/json/', methods=['GET'])
def get_image_orientation_str_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_orientation_str(gid_list)
[docs]@register_api('/api/image/reviewed/json/', methods=['GET'])
def get_image_reviewed_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_reviewed(gid_list)
[docs]@register_api('/api/image/detect/confidence/json/', methods=['GET'])
def get_image_detect_confidence_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_detect_confidence(gid_list)
[docs]@register_api('/api/image/note/json/', methods=['GET'])
def get_image_notes_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_notes(gid_list)
[docs]@register_api('/api/image/name/rowid/json/', methods=['GET'])
def get_image_nids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_nids(gid_list)
[docs]@register_api('/api/image/name/uuid/json/', methods=['GET'])
def get_image_name_uuids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_name_uuids(gid_list)
[docs]@register_api(
'/api/image/species/rowid/json/', methods=['GET'], __api_plural_check__=False
)
def get_image_species_rowids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_species_rowids(gid_list)
[docs]@register_api(
'/api/image/species/uuid/json/', methods=['GET'], __api_plural_check__=False
)
def get_image_species_uuids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_species_uuids(gid_list)
[docs]@register_api('/api/image/imageset/rowid/json/', methods=['GET'])
def get_image_imgsetids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_imgsetids(gid_list)
[docs]@register_api('/api/image/imageset/uuid/json/', methods=['GET'])
def get_image_imgset_uuids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_imgset_uuids(gid_list)
[docs]@register_api('/api/image/imageset/text/json/', methods=['GET'])
def get_image_imagesettext_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_imagesettext(gid_list)
[docs]@register_api('/api/image/imageset/rowid/json/', methods=['PUT'])
def set_image_imgsetids_json(ibs, image_uuid_list, imageset_rowid_list):
ibs.web_check_uuids(image_uuid_list, [], [])
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.set_image_imgsetids(gid_list, imageset_rowid_list)
[docs]@register_api('/api/image/imageset/uuid/json/', methods=['PUT'])
def set_image_imgset_uuids_json(ibs, image_uuid_list, imageset_uuid_list):
ibs.web_check_uuids(image_uuid_list, [], [])
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
imageset_rowid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
return ibs.set_image_imgsetids(gid_list, imageset_rowid_list)
[docs]@register_api('/api/image/imageset/text/json/', methods=['PUT'])
def set_image_imagesettext_json(ibs, image_uuid_list, imageset_text_list):
ibs.web_check_uuids(image_uuid_list, [], [])
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
imageset_rowid_list = ibs.get_imageset_imgsetids_from_text(imageset_text_list)
return ibs.set_image_imgsetids(gid_list, imageset_rowid_list)
[docs]@register_api('/api/image/annot/rowid/json/', methods=['GET'])
def get_image_aids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_aids(gid_list)
[docs]@register_api('/api/image/annot/uuid/json/', methods=['GET'])
def get_image_annot_uuids_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_annot_uuids(gid_list)
[docs]@register_api(
'/api/image/annot/rowid/species/json/', methods=['GET'], __api_plural_check__=False
)
def get_image_aids_of_species_json(ibs, image_uuid_list, **kwargs):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_aids_of_species(gid_list, **kwargs)
[docs]@register_api(
'/api/image/annot/uuid/species/json/', methods=['GET'], __api_plural_check__=False
)
def get_image_annot_uuids_of_species_json(ibs, image_uuid_list, **kwargs):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_annot_uuids_of_species(gid_list, **kwargs)
[docs]@register_api('/api/image/num/annot/json/', methods=['GET'])
def get_image_num_annotations_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_num_annotations(gid_list)
[docs]@register_api('/api/image/unixtime/json/', methods=['GET'])
def get_image_unixtimes_json(ibs, image_uuid_list):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_unixtime(gid_list)
[docs]@register_api('/api/image/timedelta/posix/json/', methods=['GET'])
def get_image_timedelta_posix_json(ibs, image_uuid_list, **kwargs):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_timedelta_posix(gid_list, **kwargs)
[docs]@register_api('/api/image/location/code/json/', methods=['GET'])
def get_image_location_codes_json(ibs, image_uuid_list, **kwargs):
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
return ibs.get_image_location_codes(gid_list, **kwargs)
[docs]@register_api('/api/annot/json/', methods=['GET'])
def get_valid_annot_uuids_json(ibs, **kwargs):
aid_list = ibs.get_valid_aids(**kwargs)
return ibs.get_annot_uuids(aid_list)
[docs]@register_api('/api/annot/json/<uuid>/', methods=['GET'])
def annotation_src_api_json(ibs, uuid=None):
aid = ibs.get_annot_aids_from_uuid(uuid)
return ibs.annotation_src_api(aid)
[docs]@register_api('/api/annot/rowid/uuid/json/', methods=['GET'])
def get_annot_aids_from_uuid_json(ibs, annot_uuid_list):
return ibs.get_annot_aids_from_uuid(annot_uuid_list)
[docs]@register_api('/api/annot/image/rowid/json/', methods=['GET'])
def get_annot_gids_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_gids(aid_list)
[docs]@register_api('/api/annot/uuid/hashid/json/', methods=['GET'])
def get_annot_hashid_uuid_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_hashid_uuid(aid_list, **kwargs)
[docs]@register_api('/api/annot/exemplar/json/', methods=['POST'])
def set_exemplars_from_quality_and_viewpoint_json(
ibs, annot_uuid_list, annot_name_list, **kwargs
):
ibs.web_check_uuids([], annot_uuid_list, [])
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
if annot_name_list is not None:
# Set names for query annotations
nid_list = ibs.add_names(annot_name_list)
ibs.set_annot_name_rowids(aid_list, nid_list)
new_flag_list = ibs.set_exemplars_from_quality_and_viewpoint(aid_list, **kwargs)
new_annot_uuid_list = ibs.get_annot_uuids(aid_list)
return new_annot_uuid_list, new_flag_list
[docs]@register_api('/api/annot/bbox/json/', methods=['GET'])
def get_annot_bboxes_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_bboxes(aid_list)
[docs]@register_api('/api/annot/detect/confidence/json/', methods=['GET'])
def get_annot_detect_confidence_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_detect_confidence(aid_list)
[docs]@register_api('/api/annot/exemplar/json/', methods=['GET'])
def get_annot_exemplar_flags_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_exemplar_flags(aid_list)
[docs]@register_api('/api/annot/theta/json/', methods=['GET'])
def get_annot_thetas_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_thetas(aid_list)
[docs]@register_api('/api/annot/vert/json/', methods=['GET'])
def get_annot_verts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_verts(aid_list)
[docs]@register_api('/api/annot/vert/rotated/json/', methods=['GET'])
def get_annot_rotated_verts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_rotated_verts(aid_list)
[docs]@register_api('/api/annot/yaw/json/', methods=['GET'])
def get_annot_yaws_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_yaws(aid_list)
[docs]@register_api('/api/annot/viewpoint/json/', methods=['GET'])
def get_annot_viewpoints_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_viewpoints(aid_list)
[docs]@register_api('/api/annot/num/vert/json/', methods=['GET'])
def get_annot_num_verts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_num_verts(aid_list)
[docs]@register_api('/api/annot/name/rowid/json/', methods=['GET'])
def get_annot_nids_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_nids(aid_list, **kwargs)
[docs]@register_api('/api/annot/name/uuid/json/', methods=['GET'])
def get_annot_name_rowids_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
nid_list = ibs.get_annot_name_rowids(aid_list, **kwargs)
return ibs.get_name_uuids(nid_list)
[docs]@register_api('/api/annot/name/text/json/', methods=['GET'])
def get_annot_name_texts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_name_texts(aid_list)
[docs]@register_api('/api/annot/note/json/', methods=['GET'])
def get_annot_notes_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_notes(aid_list)
[docs]@register_api('/api/annot/species/json/', methods=['GET'], __api_plural_check__=False)
def get_annot_species_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_species(aid_list)
[docs]@register_api(
'/api/annot/species/rowid/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_species_rowids_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_species_rowids(aid_list)
[docs]@register_api(
'/api/annot/species/uuid/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_species_uuids_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_species_uuids(aid_list)
[docs]@register_api(
'/api/annot/species/text/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_species_texts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_species_texts(aid_list)
[docs]@register_api('/api/annot/imageset/rowid/json/', methods=['GET'])
def get_annot_imgsetids_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_imgsetids(aid_list)
[docs]@register_api('/api/annot/imageset/uuid/json/', methods=['GET'])
def get_annot_imgset_uuids_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_imgset_uuids(aid_list)
[docs]@register_api('/api/annot/imageset/text/json/', methods=['GET'])
def get_annot_image_set_texts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_image_set_texts(aid_list)
[docs]@register_api('/api/annot/image/name/json/', methods=['GET'])
def get_annot_image_names_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_image_names(aid_list)
[docs]@register_api('/api/annot/image/unixtime/json/', methods=['GET'])
def get_annot_image_unixtimes_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_image_unixtimes(aid_list)
[docs]@register_api('/api/annot/image/gps/json/', methods=['GET'], __api_plural_check__=False)
def get_annot_image_gps_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_image_gps(aid_list)
[docs]@register_api('/api/annot/image/file/path/json/', methods=['GET'])
def get_annot_image_paths_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_image_paths(aid_list)
[docs]@register_api('/api/annot/image/uuid/json/', methods=['GET'])
def get_annot_image_uuids_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
image_uuid_list = [
None if aid is None else ibs.get_annot_image_uuids(aid) for aid in aid_list
]
return image_uuid_list
[docs]@register_api('/api/annot/quality/json/', methods=['GET'])
def get_annot_qualities_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_qualities(aid_list, **kwargs)
[docs]@register_api('/api/annot/quality/text/json/', methods=['GET'])
def get_annot_quality_texts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_quality_texts(aid_list)
[docs]@register_api('/api/annot/yaw/text/json/', methods=['GET'])
def get_annot_yaw_texts_json(ibs, annot_uuid_list):
# DEPRICATE
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_yaw_texts(aid_list)
[docs]@register_api('/api/annot/viewpoint/text/json/', methods=['GET'])
def get_annot_viewpoint_texts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_viewpoint_texts(aid_list)
[docs]@register_api('/api/annot/sex/json/', methods=['GET'])
def get_annot_sex_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_sex(aid_list, **kwargs)
[docs]@register_api('/api/annot/sex/text/json/', methods=['GET'])
def get_annot_sex_texts_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_sex_texts(aid_list)
[docs]@register_api('/api/annot/reviewed/json/', methods=['GET'])
def get_annot_reviewed_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_reviewed(aid_list)
[docs]@register_api('/api/annot/multiple/json/', methods=['GET'])
def get_annot_multiple_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_multiple(aid_list, **kwargs)
[docs]@register_api('/api/annot/interest/json/', methods=['GET'])
def get_annot_interest_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_interest(aid_list, **kwargs)
[docs]@register_api('/api/annot/image/contributor/tag/json/', methods=['GET'])
def get_annot_image_contributor_tag_json(ibs, annot_uuid_list):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_image_contributor_tag(aid_list)
[docs]@register_api('/api/annot/age/months/json/', methods=['GET'], __api_plural_check__=False)
def get_annot_age_months_est_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_age_months_est(aid_list, **kwargs)
[docs]@register_api(
'/api/annot/age/months/text/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_age_months_est_texts_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_age_months_est_texts(aid_list, **kwargs)
[docs]@register_api(
'/api/annot/age/months/min/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_age_months_est_min_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_age_months_est_min(aid_list, **kwargs)
[docs]@register_api(
'/api/annot/age/months/max/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_age_months_est_max_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_age_months_est_max(aid_list, **kwargs)
[docs]@register_api(
'/api/annot/age/months/min/text/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_age_months_est_min_texts_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_age_months_est_min_texts(aid_list, **kwargs)
[docs]@register_api(
'/api/annot/age/months/max/text/json/', methods=['GET'], __api_plural_check__=False
)
def get_annot_age_months_est_max_texts_json(ibs, annot_uuid_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.get_annot_age_months_est_max_texts(aid_list, **kwargs)
[docs]@register_api('/api/annot/bbox/json/', methods=['PUT'])
def set_annot_bboxes_json(ibs, annot_uuid_list, bbox_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_bboxes(aid_list, bbox_list)
[docs]@register_api('/api/annot/theta/json/', methods=['PUT'])
def set_annot_thetas_json(ibs, annot_uuid_list, theta_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_thetas(aid_list, theta_list)
[docs]@register_api('/api/annot/viewpoint/json/', methods=['PUT'])
def set_annot_viewpoints_json(ibs, annot_uuid_list, viewpoint_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_viewpoints(aid_list, viewpoint_list)
[docs]@register_api('/api/annot/quality/text/json/', methods=['PUT'])
def set_annot_quality_texts_json(ibs, annot_uuid_list, quality_text_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_quality_texts(aid_list, quality_text_list)
[docs]@register_api('/api/annot/species/json/', methods=['PUT'], __api_plural_check__=False)
def set_annot_species_json(ibs, annot_uuid_list, species_text_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_species(aid_list, species_text_list)
[docs]@register_api('/api/annot/multiple/json/', methods=['PUT'])
def set_annot_multiple_json(ibs, annot_uuid_list, flag_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_multiple(aid_list, flag_list)
[docs]@register_api('/api/annot/interest/json/', methods=['PUT'])
def set_annot_interest_json(ibs, annot_uuid_list, flag_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_interest(aid_list, flag_list)
[docs]@register_api('/api/annot/name/text/json/', methods=['PUT'])
def set_annot_name_texts_json(ibs, annot_uuid_list, name_text_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
nid_list = ibs.get_name_rowids_from_text(name_text_list)
return ibs.set_annot_name_rowids(aid_list, nid_list)
[docs]@register_api('/api/annot/note/json/', methods=['PUT'])
def set_annot_note_json(ibs, annot_uuid_list, annot_note_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_notes(aid_list, annot_note_list)
[docs]@register_api('/api/annot/tags/json/', methods=['PUT'], __api_plural_check__=False)
def set_annot_tag_text_json(ibs, annot_uuid_list, annot_tags_list, **kwargs):
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.set_annot_tag_text(aid_list, annot_tags_list)
[docs]@register_api('/api/name/json/', methods=['GET'])
def get_valid_name_uuids_json(ibs, **kwargs):
nid_list = ibs.get_valid_nids(**kwargs)
return ibs.get_name_uuids(nid_list)
[docs]@register_api('/api/name/dict/json/', methods=['GET'])
def get_name_nids_with_gids_json(ibs, nid_list=None):
if nid_list is None:
nid_list = sorted(ibs.get_valid_nids())
name_list = ibs.get_name_texts(nid_list)
gids_list = ibs.get_name_gids(nid_list)
zipped = list(zip(nid_list, name_list, gids_list))
combined_dict = {
name: (ibs.get_name_uuids(nid), ibs.get_image_uuids(gid_list))
for nid, name, gid_list in zipped
}
return combined_dict
[docs]@register_api('/api/name/annot/rowid/json/', methods=['GET'])
def get_name_aids_json(ibs, name_uuid_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_aids(nid_list, **kwargs)
[docs]@register_api('/api/name/annot/uuid/json/', methods=['GET'])
def get_name_annot_uuids_json(ibs, name_uuid_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_annot_uuids(nid_list, **kwargs)
[docs]@register_api('/api/name/annot/rowid/exemplar/json/', methods=['GET'])
def get_name_exemplar_aids_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_exemplar_aids(ibs, nid_list)
[docs]@register_api('/api/name/annot/uuid/exemplar/json/', methods=['GET'])
def get_name_exemplar_name_uuids_json(ibs, name_uuid_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_exemplar_name_uuids(nid_list, **kwargs)
[docs]@register_api('/api/name/image/rowid/json/', methods=['GET'])
def get_name_gids_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_gids(ibs, nid_list)
[docs]@register_api('/api/name/image/uuid/json/', methods=['GET'])
def get_name_image_uuids_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_image_uuids(ibs, nid_list)
[docs]@register_api('/api/name/note/json/', methods=['GET'])
def get_name_notes_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_notes(ibs, nid_list)
[docs]@register_api('/api/name/num/annot/json/', methods=['GET'])
def get_name_num_annotations_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_num_annotations(ibs, nid_list)
[docs]@register_api('/api/name/num/annot/exemplar/json/', methods=['GET'])
def get_name_num_exemplar_annotations_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_num_exemplar_annotations(ibs, nid_list)
[docs]@register_api('/api/name/temp/json/', methods=['GET'])
def get_name_temp_flag_json(ibs, name_uuid_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_temp_flag(nid_list, **kwargs)
[docs]@register_api('/api/name/alias/text/json/', methods=['GET'], __api_plural_check__=False)
def get_name_alias_texts_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_alias_texts(ibs, nid_list)
[docs]@register_api('/api/name/text/json/', methods=['GET'])
def get_name_texts_json(ibs, name_uuid_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_texts(nid_list, **kwargs)
[docs]@register_api('/api/name/uuid/text/json/', methods=['GET'])
def get_name_rowids_from_text_json(ibs, name_text_list, **kwargs):
nid_list = ibs.get_name_rowids_from_text(name_text_list, **kwargs)
return ibs.get_name_uuids(nid_list)
[docs]@register_api('/api/name/rowid/uuid/json/', methods=['GET'])
def get_name_rowids_from_uuid_json(ibs, name_uuid_list, **kwargs):
return ibs.get_name_rowids_from_uuid(name_uuid_list)
[docs]@register_api('/api/name/sex/json/', methods=['GET'])
def get_name_sex_json(ibs, name_uuid_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_sex(nid_list, **kwargs)
[docs]@register_api('/api/name/sex/text/json/', methods=['GET'])
def get_name_sex_text_json(ibs, name_uuid_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_sex_text(nid_list, **kwargs)
[docs]@register_api(
'/api/name/age/months/min/json/', methods=['GET'], __api_plural_check__=False
)
def get_name_age_months_est_min_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_age_months_est_min(ibs, nid_list)
[docs]@register_api(
'/api/name/age/months/max/json/', methods=['GET'], __api_plural_check__=False
)
def get_name_age_months_est_max_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_age_months_est_max(ibs, nid_list)
[docs]@register_api('/api/name/imageset/rowid/json/', methods=['GET'])
def get_name_imgsetids_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_imgsetids(ibs, nid_list)
[docs]@register_api('/api/name/imageset/uuid/json/', methods=['GET'])
def get_name_imgset_uuids_json(ibs, name_uuid_list):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.get_name_imgset_uuids(ibs, nid_list)
@register_api('/api/species/json/', methods=['GET'], __api_plural_check__=False)
def _get_all_species_rowids_json(ibs, **kwargs):
species_rowid_list = ibs._get_all_species_rowids(**kwargs)
return ibs.get_species_uuids(species_rowid_list, **kwargs)
[docs]@register_api(
'/api/species/rowid/text/json/', methods=['GET'], __api_plural_check__=False
)
def get_species_rowids_from_text_json(ibs, species_text_list, **kwargs):
return ibs.get_species_rowids_from_text(species_text_list, **kwargs)
[docs]@register_api(
'/api/species/rowid/uuid/json/', methods=['GET'], __api_plural_check__=False
)
def get_species_rowids_from_uuids_json(ibs, species_uuid_list):
return ibs.get_species_rowids_from_uuids(species_uuid_list)
[docs]@register_api('/api/species/text/json/', methods=['GET'], __api_plural_check__=False)
def get_species_texts_json(ibs, species_uuid_list):
species_rowid_list = ibs.get_species_rowids_from_uuids(species_uuid_list)
return ibs.get_species_texts(species_rowid_list)
[docs]@register_api('/api/species/nice/json/', methods=['GET'], __api_plural_check__=False)
def get_species_nice_json(ibs, species_uuid_list):
species_rowid_list = ibs.get_species_rowids_from_uuids(species_uuid_list)
return ibs.get_species_nice(species_rowid_list)
[docs]@register_api('/api/species/code/json/', methods=['GET'], __api_plural_check__=False)
def get_species_codes_json(ibs, species_uuid_list):
species_rowid_list = ibs.get_species_rowids_from_uuids(species_uuid_list)
return ibs.get_species_codes(species_rowid_list)
[docs]@register_api('/api/species/note/json/', methods=['GET'], __api_plural_check__=False)
def get_species_notes_json(ibs, species_uuid_list):
species_rowid_list = ibs.get_species_rowids_from_uuids(species_uuid_list)
return ibs.get_species_notes(species_rowid_list)
[docs]@register_api('/api/name/text/json/', methods=['PUT'])
def set_name_texts_json(ibs, name_uuid_list, name_text_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.set_name_texts(nid_list, name_text_list, **kwargs)
[docs]@register_api('/api/name/note/json/', methods=['PUT'])
def set_name_notes_json(ibs, name_uuid_list, name_note_list, **kwargs):
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
return ibs.set_name_notes(nid_list, name_note_list, **kwargs)
[docs]@register_api('/api/part/bbox/json/', methods=['PUT'])
def set_part_bboxes_json(ibs, part_uuid_list, bbox_list, **kwargs):
aid_list = ibs.get_part_rowids_from_uuid(part_uuid_list)
return ibs.set_part_bboxes(aid_list, bbox_list)
[docs]@register_api('/api/part/theta/json/', methods=['PUT'])
def set_part_thetas_json(ibs, part_uuid_list, theta_list, **kwargs):
aid_list = ibs.get_part_rowids_from_uuid(part_uuid_list)
return ibs.set_part_thetas(aid_list, theta_list)
[docs]@register_api('/api/part/viewpoint/json/', methods=['PUT'])
def set_part_viewpoints_json(ibs, part_uuid_list, viewpoint_list, **kwargs):
aid_list = ibs.get_part_rowids_from_uuid(part_uuid_list)
return ibs.set_part_viewpoints(aid_list, viewpoint_list)
[docs]@register_api('/api/part/quality/text/json/', methods=['PUT'])
def set_part_quality_texts_json(ibs, part_uuid_list, quality_text_list, **kwargs):
aid_list = ibs.get_part_rowids_from_uuid(part_uuid_list)
return ibs.set_part_quality_texts(aid_list, quality_text_list)
[docs]@register_api('/api/part/type/json/', methods=['PUT'], __api_plural_check__=False)
def set_part_types_json(ibs, part_uuid_list, type_text_list, **kwargs):
aid_list = ibs.get_part_rowids_from_uuid(part_uuid_list)
return ibs.set_part_types(aid_list, type_text_list)
# @register_api('/api/part/tags/json/', methods=['PUT'], __api_plural_check__=False)
# def set_part_tag_text_json(ibs, part_uuid_list, part_tags_list, **kwargs):
# aid_list = ibs.get_part_rowids_from_uuid(part_uuid_list)
# return ibs.set_part_tag_text(aid_list, part_tags_list)
[docs]@register_api('/api/match/decision/evidence/json/', methods=['PUT'])
def set_annotmatch_evidence_decision_json(
ibs, match_annot_uuid1_list, match_annot_uuid2_list, match_decision_list, **kwargs
):
aid1_list = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aid2_list = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
annotmatch_rowid_list = ibs.get_annotmatch_rowid_from_superkey(aid1_list, aid2_list)
return ibs.set_annotmatch_evidence_decision(
annotmatch_rowid_list, match_decision_list
)
[docs]@register_api('/api/match/decision/meta/json/', methods=['PUT'])
def set_annotmatch_meat_decision_json(
ibs, match_annot_uuid1_list, match_annot_uuid2_list, match_decision_list, **kwargs
):
aid1_list = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aid2_list = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
annotmatch_rowid_list = ibs.get_annotmatch_rowid_from_superkey(aid1_list, aid2_list)
return ibs.set_annotmatch_meta_decision(annotmatch_rowid_list, match_decision_list)
[docs]@register_api('/api/match/tags/json/', methods=['PUT'], __api_plural_check__=False)
def set_annotmatch_tag_text_json(
ibs, match_annot_uuid1_list, match_annot_uuid2_list, match_tags_list, **kwargs
):
aid1_list = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aid2_list = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
annotmatch_rowid_list = ibs.get_annotmatch_rowid_from_superkey(aid1_list, aid2_list)
return ibs.set_annotmatch_tag_text(annotmatch_rowid_list, match_tags_list)
[docs]@register_api('/api/match/confidence/json/', methods=['PUT'])
def set_annotmatch_confidence_json(
ibs, match_annot_uuid1_list, match_annot_uuid2_list, match_confidence_list, **kwargs
):
aid1_list = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aid2_list = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
annotmatch_rowid_list = ibs.get_annotmatch_rowid_from_superkey(aid1_list, aid2_list)
return ibs.set_annotmatch_confidence(annotmatch_rowid_list, match_confidence_list)
[docs]@register_api('/api/match/user/json/', methods=['PUT'])
def set_annotmatch_reviewer_json(
ibs, match_annot_uuid1_list, match_annot_uuid2_list, match_user_list, **kwargs
):
aid1_list = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aid2_list = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
annotmatch_rowid_list = ibs.get_annotmatch_rowid_from_superkey(aid1_list, aid2_list)
return ibs.set_annotmatch_reviewer(annotmatch_rowid_list, match_user_list)
[docs]@register_api('/api/match/count/json/', methods=['PUT'])
def set_annotmatch_count_json(
ibs, match_annot_uuid1_list, match_annot_uuid2_list, match_count_list, **kwargs
):
aid1_list = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aid2_list = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
annotmatch_rowid_list = ibs.get_annotmatch_rowid_from_superkey(aid1_list, aid2_list)
return ibs.set_annotmatch_count(annotmatch_rowid_list, match_count_list)
[docs]@register_api('/api/match/modified/json/', methods=['PUT'])
def set_annotmatch_posixtime_modified_json(
ibs, match_annot_uuid1_list, match_annot_uuid2_list, match_modified_list, **kwargs
):
aid1_list = ibs.get_annot_aids_from_uuid(match_annot_uuid1_list)
aid2_list = ibs.get_annot_aids_from_uuid(match_annot_uuid2_list)
annotmatch_rowid_list = ibs.get_annotmatch_rowid_from_superkey(aid1_list, aid2_list)
return ibs.set_annotmatch_posixtime_modified(
annotmatch_rowid_list, match_modified_list
)
[docs]@register_api('/api/contributor/rowid/uuid/json/', methods=['GET'])
def get_contributor_rowids_from_uuid_json(ibs, contributor_uuid_list):
return ibs.get_contributor_rowid_from_uuid(contributor_uuid_list)
[docs]@register_api('/api/part/json/', methods=['GET'])
def get_valid_part_uuids_json(ibs, **kwargs):
part_rowid_list = ibs.get_valid_part_rowids(**kwargs)
return ibs.get_part_uuids(part_rowid_list)
[docs]@register_api('/chaos/imageset/', methods=['GET', 'POST'], __api_plural_check__=False)
def chaos_imageset(ibs):
"""
REST:
Method: POST
URL: /api/image/json/
Args:
image_uuid_list (list of str) : list of image UUIDs to be delete from IBEIS
"""
from random import shuffle, randint
gid_list = ibs.get_valid_gids()
shuffle(gid_list)
sample = min(len(gid_list) // 2, 50)
assert sample > 0, 'Cannot create a chaos imageset using an empty database'
gid_list_ = gid_list[:sample]
imagetset_name = 'RANDOM_CHAOS_TEST_IMAGESET_%08d' % (randint(0, 99999999))
imagetset_rowid = ibs.add_imagesets(imagetset_name)
imagetset_uuid = ibs.get_imageset_uuid(imagetset_rowid)
ibs.add_image_relationship(gid_list_, [imagetset_rowid] * len(gid_list_))
return imagetset_name, imagetset_uuid
[docs]@register_api('/api/labeler/cnn/json/', methods=['POST'])
def labeler_cnn_json_wrapper(ibs, annot_uuid_list, **kwargs):
ibs.web_check_uuids([], annot_uuid_list, [])
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
return ibs.labeler_cnn(aid_list, **kwargs)
[docs]@register_api('/api/imageset/json/', methods=['DELETE'])
def delete_imageset_json(ibs, imageset_uuid_list):
"""
REST:
Method: DELETE
URL: /api/imageset/json/
Args:
imageset_uuid_list (list of str) : list of imageset UUIDs to be delete from IBEIS
"""
imgsetid_list = ibs.get_imageset_imgsetids_from_uuid(imageset_uuid_list)
ibs.delete_imagesets(imgsetid_list)
return True
[docs]@register_api('/api/image/json/', methods=['DELETE'])
def delete_images_json(ibs, image_uuid_list):
"""
REST:
Method: DELETE
URL: /api/image/json/
Args:
image_uuid_list (list of str) : list of image UUIDs to be delete from IBEIS
"""
gid_list = ibs.get_image_gids_from_uuid(image_uuid_list)
ibs.delete_images(gid_list)
return True
[docs]@register_api('/api/annot/json/', methods=['DELETE'])
def delete_annots_json(ibs, annot_uuid_list):
"""
REST:
Method: DELETE
URL: /api/annot/json/
Args:
annot_uuid_list (list of str) : list of annot UUIDs to be delete from IBEIS
"""
aid_list = ibs.get_annot_aids_from_uuid(annot_uuid_list)
ibs.delete_annots(aid_list)
return True
[docs]@register_api('/api/species/json/', methods=['DELETE'], __api_plural_check__=False)
def delete_species_json(ibs, species_uuid_list):
"""
REST:
Method: DELETE
URL: /api/species/json/
Args:
species_uuid_list (list of str) : list of species UUIDs to be delete from IBEIS
"""
species_rowid_list = ibs.get_species_rowids_from_uuids(species_uuid_list)
ibs.delete_species(species_rowid_list)
return True
[docs]@register_api('/api/name/json/', methods=['DELETE'])
def delete_name_json(ibs, name_uuid_list):
"""
REST:
Method: DELETE
URL: /api/name/json/
Args:
name_uuid_list (list of str) : list of name UUIDs to be delete from IBEIS
"""
nid_list = ibs.get_name_rowids_from_uuid(name_uuid_list)
ibs.delete_names(nid_list)
return True