Skip to main content

LabelRow Objects

class LabelRow(base_orm.BaseORM)
A label row contains a data unit or a collection of data units and associated labels, and is specific to a data asset with type video or img_group:
  • A label row with a data asset of type video contains a single data unit.
  • A label row with a data asset of type img_group contains any number of data units.
The label row ORM is as follows:
  • label_hash (uid) is the unique identifier of the label row
  • dataset_hash (uid) is the unique identifier of the dataset which contains the particular video or image group
  • dataset_title is the title of the dataset which contains the particular video or image group
  • data_title is the title of the video or image group
  • data_type either video or img_group depending on data type
  • data_units a dictionary with (key: data hash, value: data unit) pairs.
  • object_answers is a dictionary with (key: object hash, value: object answer) pairs.
  • classification_answers is a dictionary with (key: classification hash, value: classification answer) pairs.
  • object_actions is a dictionary with (key: <object_hash>, value: object action) pairs.
  • label_status is a string indicating label status. It can take the values enumerated in :class:encord.orm.label_row.LabelStatus. Note that this does not reflect thes status shown in the Projects->Labels section on the web-app.
A data unit, mentioned for the dictionary entry data_units above, has in the form::
    label_row = {  # The label row
        # ...
        "data_units": {
            "<data_hash>": {
                "data_hash": "<data_hash>",  # A data_hash (uid) string
                "data_title": "A data title",
                "data_link": "<data_link>",  # Signed URL that expiring after 7 days
                "data_type": "<data_type>",  # (video/mp4, image/jpeg, etc.)
                "data_fps": 24.95,           # For video, the frame rate
                "data_sequence": "0",        # Defines order of data units
                "width": 640,                # The width of the content
                "height": 610,               # The height of the content
                "labels": {
                    # ...
                }
            },
            # ...,
        }
    }
A data unit can have any number of vector labels (e.g. bounding box, polygon, keypoint) and classifications. Objects and classifications A data unit can have any number of vector labels (e.g., bounding boxes, polygons, polylines, keypoints) and classifications. Each frame-level object and classification has unique identifiers ‘objectHash’ and ‘classificationHash’. Each frame-level entity has a unique feature identifier ‘featureHash’, defined in the editor ontology. The object and classification answers are contained separately from the individual data units to preserve space for video, sequential images, DICOM, etc. The objects and classifications answer dictionaries contain classification ‘answers’ (i.e. attributes that describe the object or classification). This is to avoid storing the information at every frame in the blurb, of particular importance for videos. A labels dictionary for video is in the form::
    label_row["data_units"]["<data_hash>"]["labels"] = {
        "<frame_number>": {
            "objects": [
                # { object 1 },
                # { object 2 },
                # ...
            ],
            "classifications": [
                # { classification 1 },
                # { classification 2 },
                # ...
            ],
        }
    }
A labels dictionary for an img_group data unit is in the form::
    label_row["data_units"]["<data_hash>"]["labels"] = {
        "objects": [
            # { object 1 },
            # { object 2 },
            # ...
        ],
        "classifications": [
            # { classification 1 },
            # { classification 2 },
            # ...
        ],
    }
The object answers dictionary is in the form::
    label_row["object_answers"] = {
        "<object_hash>": {
            "objectHash": "<object_hash>",
            "classifications": [
                # {answer 1},
                # {answer 2},
                # ...
            ]
        },
        # ...
    }
The classification answers dictionary is in the form::
    label_row["classification_answers"] = {
        "<classification_hash>": {
            "classificationHash": "<classification_hash>",
            "classifications": [
                # {answer 1},
                # {answer 2},
                # ...
            ],
        },
        # ...
    }
The object actions dictionary is in the form::
    label_row["object_actions"] = {
        "<object_hash>": {
            "objectHash": "<object_hash>",
            "actions": [
                # {answer 1},
                # {answer 2},
                # ...
            ],
        },
        # ...
    }

ShadowDataState Objects

class ShadowDataState(Enum)
Specifies the kind of data to fetch when working with a BenchmarkQa project

ALL_DATA

Fetch all the label rows

SHADOW_DATA

Only fetch the label rows that were submitted against “shadow data”: the annotator’s view of the benchmark

NOT_SHADOW_DATA

Only fetch the label rows for “production” data

LabelStatus Objects

class LabelStatus(Enum)

MISSING_LABEL_STATUS

This value will be displayed if the Encord platform has a new label status and your SDK version does not understand it yet. Please update your SDK to the latest version.

LabelRowMetadata Objects

@dataclass(frozen=True)
class LabelRowMetadata(Formatter)
Contains helpful information about a label row.

label_hash

Only present if the label row is initiated

created_at

Only present if the label row is initiated

last_edited_at

Only present if the label row is initiated

branch_name

Only present if the label row is initiated or branch_name is set specifically

data_hash

Only present if the label row is for a child element of a group Can be None for label rows of image groups or DICOM series.

label_status

Can be None for TMS2 projects

annotation_task_status

Only available for TMS2 project

is_shadow_data

Only available for the VIDEO and AUDIO data_type

duration

Only available for the VIDEO data_type

width

Only available for the AUDIO data_type

priority

Only available for not complete tasks

file_type

Only available for certain read requests

to_dict

def to_dict() -> Dict
Returns: The dict equivalent of LabelRowMetadata.

LabelRowMetadataDTO Objects

class LabelRowMetadataDTO(BaseDTO)
Contains helpful information about a label row.

label_hash

Only present if the label row is initiated

created_at

Only present if the label row is initiated

last_edited_at

Only present if the label row is initiated

branch_name

Only present if the label row is initiated or branch_name is set specifically Can be None for label rows of image groups or DICOM series.

label_status

Can be None for TMS2 projects

annotation_task_status

Only available for TMS2 project

is_shadow_data

Only available for the VIDEO and AUDIO data_type

duration

Only available for the VIDEO data_type

width

Only available for the AUDIO data_type

priority

Only available for not complete tasks

file_type

Only available for certain read requests