From 5c047beb83b0ab849deab73c424d2b61c2054dde Mon Sep 17 00:00:00 2001 From: Xuwznln <18435084+Xuwznln@users.noreply.github.com> Date: Tue, 3 Mar 2026 18:03:53 +0800 Subject: [PATCH] support container as example add z index (cherry picked from commit 145fcaae65c6e729570c2a0507d1a0f6a43252ce) --- unilabos/resources/resource_tracker.py | 12 ++++++++++++ unilabos/test/experiments/prcxi_9320_slim.json | 1 + 2 files changed, 13 insertions(+) diff --git a/unilabos/resources/resource_tracker.py b/unilabos/resources/resource_tracker.py index a3e3d3f2..8ade8e1f 100644 --- a/unilabos/resources/resource_tracker.py +++ b/unilabos/resources/resource_tracker.py @@ -16,6 +16,7 @@ if TYPE_CHECKING: EXTRA_CLASS = "unilabos_resource_class" +FRONTEND_POSE_EXTRA = "unilabos_frontend_pose_extra" EXTRA_SAMPLE_UUID = "sample_uuid" EXTRA_UNILABOS_SAMPLE_UUID = "unilabos_sample_uuid" @@ -74,6 +75,14 @@ class ResourceDictPositionObject(BaseModel): z: float = Field(description="Z coordinate", default=0.0) +class ResourceDictPoseExtraObjectType(BaseModel): + z_index: int + + +class ResourceDictPoseExtraObject(BaseModel): + z_index: Optional[int] = Field(alias="zIndex", default=None) + + class ResourceDictPositionType(TypedDict): size: ResourceDictPositionSizeType scale: ResourceDictPositionScaleType @@ -100,6 +109,7 @@ class ResourceDictPosition(BaseModel): cross_section_type: Literal["rectangle", "circle", "rounded_rectangle"] = Field( description="Cross section type", default="rectangle" ) + extra: Optional[ResourceDictPoseExtraObject] = Field(description="Extra data", default=None) class ResourceDictType(TypedDict): @@ -463,6 +473,7 @@ class ResourceTreeSet(object): "position3d": raw_pos, "rotation": d["rotation"], "cross_section_type": d.get("cross_section_type", "rectangle"), + "extra": extra.get(FRONTEND_POSE_EXTRA) } # 先构建当前节点的字典(不包含children) @@ -548,6 +559,7 @@ class ResourceTreeSet(object): name_to_uuid[node.res_content.name] = node.res_content.uuid all_states[node.res_content.name] = node.res_content.data name_to_extra[node.res_content.name] = node.res_content.extra + name_to_extra[node.res_content.name][FRONTEND_POSE_EXTRA] = node.res_content.pose.extra name_to_extra[node.res_content.name][EXTRA_CLASS] = node.res_content.klass for child in node.children: collect_node_data(child, name_to_uuid, all_states, name_to_extra) diff --git a/unilabos/test/experiments/prcxi_9320_slim.json b/unilabos/test/experiments/prcxi_9320_slim.json index e97aa3d9..2aaee6a7 100644 --- a/unilabos/test/experiments/prcxi_9320_slim.json +++ b/unilabos/test/experiments/prcxi_9320_slim.json @@ -83,6 +83,7 @@ "depth": 0 }, "content_type": [ + "container", "plate", "tip_rack", "plates",