def test_compute_mse_error(tmp_path: Path) -> None: data = ChunkedStateDataset(path="./l5kit/tests/data/single_scene.zarr") data.open() export_zarr_to_ground_truth_csv(data, str(tmp_path / "gt1.csv"), 0, 12, 0.5) export_zarr_to_ground_truth_csv(data, str(tmp_path / "gt2.csv"), 0, 12, 0.5) err = compute_mse_error_csv(str(tmp_path / "gt1.csv"), str(tmp_path / "gt2.csv")) assert err == 0.0 data_fake = ChunkedStateDataset("") data_fake.scenes = np.asarray(data.scenes).copy() data_fake.frames = np.asarray(data.frames).copy() data_fake.agents = np.asarray(data.agents).copy() data_fake.root = data.root data_fake.agents["centroid"] += np.random.rand( *data_fake.agents["centroid"].shape) export_zarr_to_ground_truth_csv(data_fake, str(tmp_path / "gt3.csv"), 0, 12, 0.5) err = compute_mse_error_csv(str(tmp_path / "gt1.csv"), str(tmp_path / "gt3.csv")) assert err > 0.0 # test invalid conf by removing lines in gt1 with open(str(tmp_path / "gt4.csv"), "w") as fp: lines = open(str(tmp_path / "gt1.csv")).readlines() fp.writelines(lines[:-10]) with pytest.raises(ValueError): compute_mse_error_csv(str(tmp_path / "gt1.csv"), str(tmp_path / "gt4.csv"))
def dataset() -> ChunkedStateDataset: dataset = ChunkedStateDataset("") dataset.scenes = np.zeros(1, dtype=dataset.scenes.dtype) dataset.frames = np.zeros(SCENE_LENGTH, dtype=dataset.frames.dtype) dataset.agents = np.zeros(SCENE_LENGTH, dtype=dataset.agents.dtype) dataset.scenes[0]["frame_index_interval"] = (0, SCENE_LENGTH) for idx in range(len(dataset.frames)): dataset.frames[idx]["agent_index_interval"] = (idx, idx + 1) dataset.frames[idx]["timestamp"] = idx for idx in range(len(dataset.agents)): # we don't check moving anymore, so the agent can stay still dataset.agents[idx]["extent"] = (5, 5, 5) dataset.agents[idx]["yaw"] = 0 dataset.agents[idx]["track_id"] = 1 dataset.agents[idx]["label_probabilities"][3] = 1.0 return dataset