GeometryDetectionAnnotations
Represents a collection of geometry-detection annotations (e.g. circles, ellipses, lines, contours) per image. Each item is a GeometryDetectionAnnotation (or equivalent dict) with geometry_shape, geometry, and optionally id, image_id, category_id, segmentation, bbox, area, iscrowd, score. This datatype is used for geometry detection inputs and outputs within the Telekinesis ecosystem.
Field
Required
| Field | Type | Description |
|---|---|---|
annotations | list[dict] | List of annotation dicts; each has geometry_shape (str: "circle", "ellipse", "line", "contour") and geometry (dict; e.g. circle: center, radius; line: rho, theta; contour: points). |
Optional
None.
Methods
| Method | Description |
|---|---|
to_list() | Returns a Python list of annotation dicts. Each dict has at least geometry_shape (e.g. "circle", "ellipse", "line", "contour") and geometry (shape-specific: e.g. center, radius for circle; rho, theta for line; points for contour); and optionally id, image_id, category_id, segmentation, bbox, area, iscrowd, score. |
Example
From the datatypes examples:
python
from datatypes import datatypes
from loguru import logger
# ------------------------------------------------
# 1. Create GeometryDetectionAnnotations instance
# ------------------------------------------------
annotations = datatypes.GeometryDetectionAnnotations(annotations=[
{
"id": 0,
"image_id": 0,
"geometry": {"center": [0, 0], "radius": 0},
"geometry_shape": "circle",
"category_id": 1,
"segmentation": [],
"bbox": None,
"area": 0,
"iscrowd": 0,
},
{
"id": 1,
"image_id": 0,
"geometry": {"center": [0, 0], "axes": [0, 0], "angle": 0},
"geometry_shape": "ellipse",
"category_id": 2,
"segmentation": [],
"bbox": None,
"area": 0,
"iscrowd": 0,
},
{
"id": 2,
"image_id": 0,
"geometry": {"points": [[0, 0], [1, 1], [2, 2]]},
"geometry_shape": "contour",
"category_id": 3,
"segmentation": [],
"bbox": None,
"area": 0,
"iscrowd": 0,
},
])
# ------------------------------------------------
# 2. Access annotations via to_list
# ------------------------------------------------
geo_list = annotations.to_list()
logger.info("GeometryDetectionAnnotations to_list len={}", len(geo_list))
logger.info("GeometryDetectionAnnotations to_list first id={}", geo_list[0]["id"])
logger.info("GeometryDetectionAnnotations to_list first geometry_shape={}", geo_list[0]["geometry_shape"])
# ------------------------------------------------
# 3. Handling None values in optional fields
# ------------------------------------------------
annotation_with_nones = datatypes.GeometryDetectionAnnotations(annotations=[{
"id": 0,
"image_id": None,
"category_id": None,
"geometry": None,
"geometry_shape": None,
"segmentation": None,
"bbox": None,
"area": None,
"iscrowd": 0,
"score": None,
}])
none_list = annotation_with_nones.to_list()
logger.info("GeometryDetectionAnnotations with None to_list len={}", len(none_list))
logger.info("GeometryDetectionAnnotations with None to_list first id={}", none_list[0]["id"])
