PointcloudTagApi

class PointcloudTagApi(api)[source]

Bases: TagApi

API for working with PointcloudTag. PointcloudTagApi object is immutable.

Parameters:
api

Api object to use for API connection.

Methods

add

Add tag to point cloud.

add_tags_collection_to_objects

Add a TagCollection to each figure/object.

add_to_entities_json

Bulk add tags to entities (images, videos, pointclouds, volumes) in a project.

add_to_objects

Add tags to existing figures/objects.

append_to_entity

Add tags to entity in project with given ID.

append_to_objects

Add Tags to Annotation Objects for a specific entity (image etc.).

append_to_objects_json

Add Tags to Annotation Objects for specific entity (image etc.).

convert_info_to_json

Convert information about an entity to a dictionary.

exists

Checks if an entity with the given parent_id and name exists

get_free_name

Generates a free name for an entity with the given parent_id and name.

get_info_by_id

Get information about an entity by its ID from the Supervisely server.

get_info_by_name

Get information about an entity by its name from the Supervisely server.

get_list

Get list of tags for a given project ID.

get_list_all_pages

Get list of all or limited quantity entities from the Supervisely server.

get_list_all_pages_generator

This generator function retrieves a list of all or a limited quantity of entities from the Supervisely server, yielding batches of entities as they are retrieved

get_list_idx_page_async

Get the list of items for a given page number.

get_list_page_generator_async

Yields list of images in dataset asynchronously page by page.

get_name_to_id_map

Get dictionary with mapping tag name to tag ID for a given project ID.

info_sequence

NamedTuple TagInfo information about Tag.

info_tuple_name

Get string name of NamedTuple for class.

remove

Remove tag from point cloud.

update

Update tag value for point cloud.

Attributes

MAX_WAIT_ATTEMPTS

Maximum number of attempts that will be made to wait for a certain condition to be met.

WAIT_ATTEMPT_TIMEOUT_SEC

Number of seconds for intervals between attempts.

InfoType

alias of TagInfo

classmethod convert_info_to_json(info)

Convert information about an entity to a dictionary.

Parameters:
info : NamedTuple

Information about the entity.

Returns:

Dictionary with information about the entity.

Return type:

dict

static info_sequence()

NamedTuple TagInfo information about Tag.

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

info_sequence = api.video.tag.info_sequence()
static info_tuple_name()

Get string name of NamedTuple for class.

Returns:

NamedTuple name.

Return type:

str

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

tuple_name = api.video.tag.info_tuple_name()
print(tuple_name) # TagInfo
add(tag_meta_id, pointcloud_id, value=None)[source]

Add tag to point cloud.

Parameters:
tag_meta_id : int

TagMeta ID in project tag_metas.

pointcloud_id : int

Point cloud ID

value : Optional[Union[str, int]], optional

possible_values from TagMeta, defaults to None

Returns:

ID of the tag assigned to the point cloud

Return type:

int

add_tags_collection_to_objects(project_id, tags_map, batch_size=100, log_progress=False, is_video_multi_view=False, entity_id=None)

Add a TagCollection to each figure/object.

  • Images projects: mapping is {figure_id: TagCollection, ...}

  • Video / pointcloud / volume / pointcloud episodes projects: mapping is {object_id: TagCollection, ...}

All objects must belong to entities of the same project.

Parameters:
project_id : int

Project ID in Supervisely.

tags_map : Dict[int, Any]

Dictionary with mapping figure/object ID to tags collection.

batch_size : int

Number of tags to add in one request.

log_progress : bool

If True, will display a progress bar.

is_video_multi_view : bool

If True, indicates that the entity is a multi-view video.

entity_id : Optional[int]

ID of the entity in Supervisely to add a tag to its objects. Required if is_video_multi_view is True.

Returns:

List of tags infos as dictionaries.

Return type:

List[Dict[str, Union[str, int, None]]]

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

project_id = 12345

tag_meta = sly.TagMeta("tag_name", sly.TagValueType.ANY_STRING)
meta = sly.ProjectMeta(tag_metas=[tag_meta])
meta = sly.ProjectMeta.from_json(api.project.update_meta(project_id, meta))
tag_meta = meta.get_tag_meta("tag_name")

# for images project:
tag_map = {
    652959: sly.TagCollection([sly.Tag(tag_meta, value="v1"), sly.Tag(tag_meta, value="v2"), ...]),
    652958: sly.TagCollection([sly.Tag(tag_meta, value="v3"), sly.Tag(tag_meta, value="v4"), ...]),
    ...
}
api.image.tag.add_tags_to_objects(project_id, tag_map)

# for videos projects (frameRange is optional):
tag_map = {
    652959: sly.VideoTagCollection([sly.VideoTag(tag_meta, value="v1", frameRange=[1, 10]), ...]),
    652958: sly.VideoTagCollection([sly.VideoTag(tag_meta, value="v2", frameRange=[4, 12]), ...]),
    ...
}
api.video.tag.add_to_objects_json_batch(project_id, tag_map)
add_to_entities_json(project_id, tags_list, batch_size=100, log_progress=False)

Bulk add tags to entities (images, videos, pointclouds, volumes) in a project. Not supported for pointcloud episodes projects. All entities must belong to the same project. The frameRange field in a tag object within the tags list is optional and is supported only for video projects.

The tags_list example:

[{“tagId”: 12345, “entityId”: 54321, “value”: “tag_value”}, …].

or with frameRange:

[{“tagId”: 12345, “entityId”: 54321, “value”: “tag_value”, “frameRange”: [1, 10]}, …].

Parameters:
project_id : int

Project ID in Supervisely.

tags_list

List of tag object infos as dictionaries (e.g. {“tagId”: 12345, “entityId”: 54321, “value”: “tag_value”}).

batch_size : int

Number of tags to add in one request.

log_progress : bool

If True, will display a progress bar.

Returns:

List of tags IDs.

Return type:

List[int]

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

tags_list = [
    {
        "tagId": 25926,
        "entityId": 652959,
        "value": None,  # optional for tag with type 'None'
        "frameRange": [1, 10],  # optional (only for video)
    },
    {
        "tagId": 25927,
        "entityId": 652959,
        "value": "v1"
    },
    {
        "tagId": 25927,
        "entityId": 652958,
        "value": "v2"
    }
]
api.image.tag.add_to_entities_json(project_id=12345, tags_list=tags_list)
add_to_objects(project_id, tags_list, batch_size=100, log_progress=False, progress=None, is_video_multi_view=False, entity_id=None)

Add tags to existing figures/objects.

  • Images projects: tags are added to existing figures (labels). Example element of tags_list: {"tagId": 12345, "figureId": 54321, "value": "tag_value"}.

  • Video / pointcloud / volume / pointcloud episodes projects: tags are added to existing objects. frameRange is optional and is supported only for video and pointcloud episodes projects. Example element of tags_list: {"tagId": 12345, "objectId": 54321, "value": "tag_value"}, or {"tagId": 12345, "objectId": 54321, "value": "tag_value", "frameRange": [1, 10]}.

All objects must belong to entities of the same project.

Parameters:
project_id : int

Project ID in Supervisely.

tags_list : List[dict]

List of tag object infos as dictionaries.

batch_size : int

Number of tags to add in one request.

log_progress : bool

If True, will display a progress bar.

progress : Optional[tqdm_sly]

Progress bar object to display progress.

is_video_multi_view : bool

If True, indicates that the entity is a multi-view video.

entity_id : Optional[int]

ID of the entity in Supervisely to add a tag to its objects. Required if is_video_multi_view is True.

Returns:

List of tags infos as dictionaries.

Return type:

List[Dict[str, Union[str, int, None]]]

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

tags_list = [
    {
        "tagId": 25926,
        "figureId": 652959,
        "value": None,  # optional for tag with type 'None'
        "frameRange": [1, 10],  # optional (only for video / pointcloud episodes)
    },
    {
        "tagId": 25927,
        "figureId": 652959,
        "value": "v1"
    },
    {
        "tagId": 25927,
        "figureId": 652958,
        "value": "v2",
    }
]
response = api.image.tag.add_to_figures(12345, tag_list)

print(response)
# Output:
#    [
#        {
#            "id": 80421101,
#            "tagId": 25926,
#            "figureId": 652959,
#            "value": None
#        },
#        {
#            "id": 80421102,
#            "tagId": 25927,
#            "figureId": 652959,
#            "value": "v1"
#        },
#        {
#            "id": 80421103,
#            "tagId": 25927,
#            "figureId": 652958,
#            "value": "v2"
#        }
#    ]
append_to_entity(entity_id, project_id, tags, key_id_map=None)

Add tags to entity in project with given ID.

Parameters:
entity_id : int

ID of the entity in Supervisely to add a tag to

project_id : int

Project ID in Supervisely.

tags

Collection of tags

key_id_map=None

KeyIdMap object. See class KeyIdMap.

Returns:

List of tags IDs

Return type:

list

append_to_objects(entity_id, project_id, objects, key_id_map, is_video_multi_view=False)

Add Tags to Annotation Objects for a specific entity (image etc.).

Parameters:
entity_id : int

ID of the entity in Supervisely to add a tag to its objects

project_id : int

Project ID in Supervisely. Uses to get tag name to tag ID mapping.

objects

Collection of annotation objects.

key_id_map

KeyIdMap object.

is_video_multi_view : bool

If True, indicates that the entity is a multi-view video.

Returns:

List of tags IDs

Return type:

list

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

img_id = 19373170
img_info = api.
append_to_objects_json(entity_id, tags_json, project_id=None, is_video_multi_view=False)

Add Tags to Annotation Objects for specific entity (image etc.).

Parameters:
entity_id : int

ID of the entity in Supervisely to add a tag to its objects

tags_json : dict

Collection of tags in JSON format

project_id : int, optional

Project ID in Supervisely. Uses to get tag name to tag ID mapping. Not required if multi_view is True.

is_video_multi_view : bool

If True, indicates that the entity is a multi-view video.

Returns:

List of tags IDs

Return type:

list

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

tags_list = [
    {"tagId": 25926, "objectId": 652959, "value": None},
    {"tagId": 25927, "objectId": 652959, "value": "v1"},
    {"tagId": 25927, "objectId": 652958, "value": "v2"},
]
response = api.video.tag.append_to_objects_json(12345, tags_list)

print(response)
# Output:
#    [
#        80421101,
#        80421102,
#        80421103
#    ]
exists(parent_id, name)

Checks if an entity with the given parent_id and name exists

Parameters:
parent_id : int

ID of the parent entity.

name : str

Name of the entity.

Returns:

Returns True if entity exists, and False if not

Return type:

bool

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

name = "IMG_0315.jpeg"
dataset_id = 55832
exists = api.image.exists(dataset_id, name)
print(exists) # True
get_free_name(parent_id, name)

Generates a free name for an entity with the given parent_id and name. Adds an increasing suffix to original name until a unique name is found.

Parameters:
parent_id : int

ID of the parent entity.

name : str

Name of the entity.

Returns:

Returns free name.

Return type:

str

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

name = "IMG_0315.jpeg"
dataset_id = 55832
free_name = api.image.get_free_name(dataset_id, name)
print(free_name) # IMG_0315_001.jpeg
get_info_by_id(id)

Get information about an entity by its ID from the Supervisely server.

Parameters:
id : int

ID of the entity.

get_info_by_name(parent_id, name, fields=[])

Get information about an entity by its name from the Supervisely server.

Parameters:
parent_id : int

ID of the parent entity.

name : str

Name of the entity for which the information is being retrieved.

fields : List[str]

The list of api fields which will be returned with the response.

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

dataset_id = 55832
name = "IMG_0315.jpeg"
info = api.image.get_info_by_name(dataset_id, name)
print(info)
# Output: ImageInfo(id=19369643, name='IMG_0315.jpeg', ...)
get_list(project_id, filters=None)

Get list of tags for a given project ID.

Parameters:
project_id : int

Project ID in Supervisely.

filters : List[Dict[str, str]], optional

List of parameters to sort output tags. See: https://api.docs.supervisely.com/#tag/Advanced/paths/~1tags.list/get

Returns:

List of the tags from the project with given id.

Return type:

list

get_list_all_pages(method, data, progress_cb=None, convert_json_info_cb=None, limit=None, return_first_response=False)

Get list of all or limited quantity entities from the Supervisely server.

Parameters:
method : str

Request method name

data : dict

Dictionary with request body info

progress_cb : Progress, optional

Function for tracking download progress.

convert_json_info_cb : Callable, optional

Function for convert json info

limit : int, optional

Number of entity to retrieve

return_first_response : bool, optional

Specify if return first response

Returns:

List of entities.

Return type:

List[dict]

get_list_all_pages_generator(method, data, progress_cb=None, convert_json_info_cb=None, limit=None, return_first_response=False)

This generator function retrieves a list of all or a limited quantity of entities from the Supervisely server, yielding batches of entities as they are retrieved

Parameters:
method : str

Request method name

data : dict

Dictionary with request body info

progress_cb : Progress, optional

Function for tracking download progress.

convert_json_info_cb : Callable, optional

Function for convert json info

limit : int, optional

Number of entity to retrieve

return_first_response : bool, optional

Specify if return first response

async get_list_idx_page_async(method, data)

Get the list of items for a given page number. Page number is specified in the data dictionary.

Parameters:
method : str

Method to call for listing items.

data : dict

Data to pass to the API method.

Returns:

List of items.

Return type:

Tuple[int, List[NamedTuple]]

async get_list_page_generator_async(method, data, pages_count=None, semaphore=None)

Yields list of images in dataset asynchronously page by page.

Parameters:
method : str

Method to call for listing items.

data : dict

Data to pass to the API method.

pages_count : int, optional

Preferred number of pages to retrieve if used with a per_page limit. Will be automatically adjusted if the pagesCount differs from the requested number.

semaphore=None

Semaphore for limiting the number of simultaneous requests.

Returns:

List of images in dataset.

Return type:

AsyncGenerator[List[ImageInfo]]

Usage Example:
import os
from dotenv import load_dotenv

import supervisely as sly

# Load secrets and create API object from .env file (recommended)
# Learn more here: https://developer.supervisely.com/getting-started/basics-of-authentication
if sly.is_development():
    load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api.from_env()

method = 'images.list'
data = {'datasetId': 123456}

loop = sly.utils.get_or_create_event_loop()
images = loop.run_until_complete(api.image.get_list_generator_async(method, data))
get_name_to_id_map(project_id)

Get dictionary with mapping tag name to tag ID for a given project ID.

Parameters:
project_id : int

Project ID in Supervisely.

Returns:

Dictionary with mapping tag name to tag id for a given project ID.

Return type:

dict

remove(tag_id)[source]

Remove tag from point cloud.

Parameters:
tag_id : int

tag ID of certain point cloud

Returns:

None

Return type:

None

update(tag_id, value)[source]

Update tag value for point cloud. You could use only those values, which are correspond to TagMeta value_type and possible_values

Parameters:
tag_id : int

tag ID of certain object

value : Union[str, int]

possible_values from TagMeta

Returns:

None

Return type:

None