Skip to content

Commit 72dfef7

Browse files
committed
fix(experiment_models): support init in scene_id
1 parent f6afd9d commit 72dfef7

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

align_browser/experiment_models.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import os
77
from pathlib import Path
88
from typing import List, Dict, Any, Optional
9-
from pydantic import BaseModel, Field, ConfigDict
9+
from pydantic import BaseModel, Field, ConfigDict, field_validator
1010

1111

1212
def calculate_file_checksum(file_path: Path) -> str:
@@ -363,14 +363,18 @@ def has_required_files(cls, experiment_dir: Path) -> bool:
363363
return all((experiment_dir / f).exists() for f in required_files)
364364

365365

366-
# Enhanced Manifest Models for New Structure
367366
class SceneInfo(BaseModel):
368367
"""Information about a scene within a scenario."""
369368

370369
source_index: int # Index in the source input_output.json file
371370
scene_id: str # Scene ID from meta_info.scene_id
372371
timing_s: float # Timing from timing.json raw_times_s[source_index]
373372

373+
@field_validator("scene_id", mode="before")
374+
@classmethod
375+
def convert_scene_id_to_str(cls, v):
376+
return str(v) if isinstance(v, int) else v
377+
374378

375379
class InputOutputFileInfo(BaseModel):
376380
"""File information for input_output data."""
@@ -487,6 +491,11 @@ def add_experiment(
487491
meta_info = item.input.full_state.get("meta_info", {})
488492
if isinstance(meta_info, dict):
489493
scene_id = meta_info.get("scene_id", f"scene_{source_index}")
494+
scene_id = (
495+
str(scene_id)
496+
if scene_id is not None
497+
else f"scene_{source_index}"
498+
)
490499

491500
if scenario_id not in scenarios_dict:
492501
scores_path = None

0 commit comments

Comments
 (0)