Source code for carlanomaly.datasets.collisions

from __future__ import annotations

from typing import List

import pandas as pd

from ._base import AtomicDataset


[docs] class CollisionsDataset(AtomicDataset): """Per-timestep collision events (sparse). Returns a ``List[pd.DataFrame]`` of length T. Each DataFrame contains zero or more rows with columns: ego_id, ego_type, other_id, other_type, normal_impulse_x, normal_impulse_y, normal_impulse_z, normal_impulse_norm. Most timesteps have no collisions (empty DataFrame). """ modality = "collisions"
[docs] def __getitem__(self, idx: int) -> List[pd.DataFrame]: rec, _ = self._index[idx] timesteps = self._index.timesteps_for(idx) df = self._read_feather_cached(rec, "collisions", as_numpy=False) item = [] for f in timesteps: if "frame" in df.columns and len(df) > 0: item.append(df[df["frame"] == f].reset_index(drop=True)) else: item.append(pd.DataFrame()) return self._apply_transform(item)