Skip to content

Commit 0a1998d

Browse files
Drew KaulDrew Kaul
authored andcommitted
add to_payload functions
1 parent cf9d74d commit 0a1998d

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

nucleus/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
ERROR_CODES = "error_codes"
3232
ERROR_ITEMS = "upload_errors"
3333
ERROR_PAYLOAD = "error_payload"
34+
FRAMES_KEY = "frames"
3435
GEOMETRY_KEY = "geometry"
3536
HEIGHT_KEY = "height"
3637
IGNORED_ITEMS = "ignored_items"

nucleus/scene.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from enum import Enum
55
from nucleus.constants import (
66
CAMERA_PARAMS_KEY,
7+
FRAMES_KEY,
78
METADATA_KEY,
89
REFERENCE_ID_KEY,
910
TYPE_KEY,
@@ -69,7 +70,7 @@ def to_json(self) -> str:
6970

7071
@dataclass
7172
class Frame:
72-
items: Dict[str, SceneDatasetItem]
73+
items: Dict[str, SceneDatasetItem] = {}
7374

7475
def __post_init__(self):
7576
for key, value in self.items.items():
@@ -81,13 +82,20 @@ def __post_init__(self):
8182
def add_item(self, item: SceneDatasetItem, sensor_name: str):
8283
self.items[sensor_name] = item
8384

85+
def to_payload(self) -> dict:
86+
return {
87+
sensor: scene_dataset_item.to_payload()
88+
for sensor, scene_dataset_item in self.items.items()
89+
}
90+
8491

8592
@dataclass
8693
class Scene:
87-
frames: List[Frame]
8894
reference_id: str
95+
frames: List[Frame] = []
8996
metadata: Optional[dict] = None
9097

98+
# TODO: move validation to scene upload
9199
def __post_init__(self):
92100
assert isinstance(self.frames, List), "frames must be a list"
93101
for frame in self.frames:
@@ -99,6 +107,16 @@ def __post_init__(self):
99107
self.reference_id, str
100108
), "reference_id must be a string"
101109

110+
def add_frame(self, frame: Frame):
111+
self.frames.append(frame)
112+
113+
def to_payload(self) -> dict:
114+
return {
115+
REFERENCE_ID_KEY: self.reference_id,
116+
FRAMES_KEY: [frame.to_payload() for frame in self.frames],
117+
METADATA_KEY: self.metadata,
118+
}
119+
102120

103121
@dataclass
104122
class LidarScene(Scene):

0 commit comments

Comments
 (0)