MatchObjClasses
Introduction
MatchObjClasses
widget allows you to compare object classes between projects based on their names, geometry types, and name suffix. It displays the matching and non-matching object classes in a table form and provides the option to filter the results based on the match status. This widget is particularly useful when you want to compare object classes between different projects in Supervisely.
Function signature
MatchObjClasses(
left_collection=None,
right_collection=None,
left_name=None,
right_name=None,
selectable=False,
suffix=None,
widget_id=None,
)

Parameters
left_collection
Union[ObjClassCollection, List[ObjClass], None]
List of ObjClass
or ObjClassCollection
, containing information about left classes
right_collection
Union[ObjClassCollection, List[ObjClass], None]
List of ObjClass
or ObjClassCollection
, containing information about right classes
left_name
str
Left part classes name
right_name
str
Right part classes name
selectable
bool
Whether the component is selectable
suffix
str
Suffix to match classes names
widget_id
str
ID of the widget
left_collection
Determine information about left classes.
type: Union[ObjClassCollection, List[ObjClass], None]
default value: None
right_collection
Determine information about right classes.
type: Union[ObjClassCollection, List[ObjClass], None]
default value: None
match = MatchObjClasses(
left_collection=left_classes,
right_collection=right_classes,
)

left_name
Determine left part classes name.
type: Union[str, None]
default value: None
right_name
Determine right part classes name.
type: Union[str, None]
default value: None
match = MatchObjClasses(
left_collection=left_classes,
right_collection=right_classes,
left_name="left classes",
right_name="right classes",
)

selectable
Whether the components are selectable.
type: bool
default value: False
match = MatchObjClasses(
left_collection=left_classes,
right_collection=right_classes,
selectable=True,
)

suffix
Use to match classes names.
type: Union[str, None]
default value: None
widget_id
ID of the widget.
type: str
default value: None
Methods and attributes
set(left_collection: Union[ObjClassCollection, List[ObjClass], None] = None, right_collection: Union[ObjClassCollection, List[ObjClass], 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 classes match statistics.
get_selected()
Return list of selected ObjClass names.
Mini App Example
You can find this example in our Github repository:
ui-widgets-demos/compare data/003_match_obj_classes/src/main.py
Import libraries
import os
import supervisely as sly
from supervisely.app.widgets import Card, Container, MatchObjClasses
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 ObjClasses
we will matched
ObjClasses
we will matchedproject_id_left = 17996
meta_json_left = api.project.get_meta(project_id_left)
project_meta_left = sly.ProjectMeta.from_json(meta_json_left)
left_classes = project_meta_left.obj_classes
project_id_right = 17997
meta_json_right = api.project.get_meta(project_id_right)
project_meta_right = sly.ProjectMeta.from_json(meta_json_right)
right_classes = project_meta_right._obj_classes
Initialize MatchObjClasses
widget
MatchObjClasses
widgetmatch = MatchObjClasses(
left_collection=left_classes,
right_collection=right_classes,
suffix="erity",
)
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 Classes",
content=match,
)
layout = Container(widgets=[card])
Create app using layout
Create an app object with layout parameter.
app = sly.Application(layout=layout)

Last updated
Was this helpful?