MatchTagMetas

Introduction

MatchTagMetas widget in Supervisely is used to compare tag metas between two different projects. It displays a table with the tag name, type, and possible differences between the tag metas of the two datasets. This widget allows users to identify differences in the tag structure between projects and easily reconcile them. Additionally, it provides the comparison result in the form of a dictionary grouped in "match", only_right, only_left, different_value_type, different_one_of_options, match_suffix, different_value_type_suffix, and different_one_of_options_suffix categories.

Function signature

MatchTagMetas(
    left_collection=None,
    right_collection=None,
    left_name=None,
    right_name=None,
    selectable=False,
    suffix=None,
    widget_id=None,
)

Parameters

ParametersTypeDescription

left_collection

Union[TagMetaCollection, List[TagMeta], None]

List of TagMeta or TagMetaCollection, containing information about left tags

right_collection

Union[TagMetaCollection, List[TagMeta], None]

List of TagMeta or TagMetaCollection, containing information about right tags

left_name

str

Left part column name

right_name

str

Right part column name

selectable

bool

Whether the component is selectable

suffix

str

Suffix to match tag names

widget_id

str

ID of the widget

left_collection

Determine information about left tags.

type: Union[TagMetaCollection, List[TagMeta], None]

default value: None

right_collection

Determine information about right tags.

type: Union[TagMetaCollection, List[TagMeta], None]

default value: None

match = MatchTagMetas(
    left_collection=tag_metas_left,
    right_collection=tag_metas_right,
)

left_name

Determine left part tags name.

type: Union[str, None]

default value: None

right_name

Determine right part tags name.

type: Union[str, None]

default value: None

match = MatchTagMetas(
    left_collection=tag_metas_left,
    right_collection=tag_metas_right,
    left_name="left tags",
    right_name="right tags",
)

selectable

Whether the components are selectable.

type: bool

default value: False

match = MatchTagMetas(
    left_collection=tag_metas_left,
    right_collection=tag_metas_right,
    selectable=True,
)

suffix

Use to match tag names.

type: Union[str, None]

default value: None

widget_id

ID of the widget.

type: str

default value: None

Methods and attributes

Attributes and MethodsDescription

set(left_collection: Union[TagMetaCollection, List[TagMeta], None] = None, right_collection: Union[TagMetaCollection, List[TagMeta], None] = None, left_name=Union[str, None] = None, right_name=Union[str, None] = None, suffix: Union[str, None] = None)

Set input data in left and right part of widget.

get_stat()

Return tags match statistics.

get_selected()

Return list of selected TagMeta names.

Mini App Example

You can find this example in our Github repository:

ui-widgets-demos/compare data/002_match_tags/src/main.py

Import libraries

import os
import supervisely as sly
from supervisely.app.widgets import Card, Container, MatchTagMetas
from dotenv import load_dotenv

Init API client

First, we load environment variables with credentials and init API for communicating with Supervisely Instance:

load_dotenv("local.env")
load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api()

Prepare TagMeta we will matched

project_id_left = 17208
meta_json_left = api.project.get_meta(project_id_left)
project_meta_left = sly.ProjectMeta.from_json(meta_json_left)
tag_metas_left = project_meta_left.tag_metas

project_id_right = 17752
meta_json_right = api.project.get_meta(project_id_right)
project_meta_right = sly.ProjectMeta.from_json(meta_json_right)
tag_metas_right = project_meta_right.tag_metas

Initialize MatchTagMetas widget

match = MatchTagMetas(
    left_collection=tag_metas_left,
    right_collection=tag_metas_right,
    left_name="left tags",
    right_name="right tags",
)

Create app layout

Prepare a layout for app using Card widget with the content parameter and place widget that we've just created in the Container widget.

card = Card(
    title="Match Tags",
    content=match,
)
layout = Container(widgets=[card])

Create app using layout

Create an app object with layout parameter.

app = sly.Application(layout=layout)

Last updated