def __init__( self, dataset_dir: str, experiment_prefix: str, use_existing_files: bool = True, log_id: str = None ) -> None: """We will cache the accumulated trajectories per city, per log, and per frame for the tracking benchmark. """ self.plot_lane_tangent_arrows = True self.plot_lidar_bev = True self.plot_lidar_in_img = False self.experiment_prefix = experiment_prefix self.dataset_dir = dataset_dir self.labels_dir = dataset_dir self.sdb = SynchronizationDB(self.dataset_dir) if log_id is None: tmp_dir = tempfile.gettempdir() per_city_traj_dict_fpath = f"{tmp_dir}/per_city_traj_dict_{experiment_prefix}.pkl" log_egopose_dict_fpath = f"{tmp_dir}/log_egopose_dict_{experiment_prefix}.pkl" log_timestamp_dict_fpath = f"{tmp_dir}/log_timestamp_dict_{experiment_prefix}.pkl" if not use_existing_files: # write the accumulate data dictionaries to disk PerFrameLabelAccumulator(dataset_dir, dataset_dir, experiment_prefix) self.per_city_traj_dict = load_pkl_dictionary(per_city_traj_dict_fpath) self.log_egopose_dict = load_pkl_dictionary(log_egopose_dict_fpath) self.log_timestamp_dict = load_pkl_dictionary(log_timestamp_dict_fpath) else: pfa = PerFrameLabelAccumulator(dataset_dir, dataset_dir, experiment_prefix, save=False) pfa.accumulate_per_log_data(log_id=log_id) self.per_city_traj_dict = pfa.per_city_traj_dict self.log_egopose_dict = pfa.log_egopose_dict self.log_timestamp_dict = pfa.log_timestamp_dict
def test_load_pickle_from_disk() -> None: """Load a pickle file from disk. The file should contain the following Python dictionary: {'a': 1, 'b':'2', 'c':[9,8,7,6,5,'d','c','b','a'], 'd': np.array([True,False,True]) } We demonstrate that we can load Numpy arrays and lists from Pickle files. """ gt_dict = { "a": 1, "b": "2", "c": [9, 8, 7, 6, 5, "d", "c", "b", "a"], "d": np.array([True, False, True]) } pkl_fpath = _TEST_DIR / "test_data/pkl_test_file.pkl" loaded_pkl_dict = load_pkl_dictionary(pkl_fpath) dictionaries_are_equal(gt_dict, loaded_pkl_dict)