From 4a466d94b6530ea2aa7b38997db03c00239e5d70 Mon Sep 17 00:00:00 2001 From: Michel Aractingi Date: Sun, 6 Jul 2025 22:32:51 +0200 Subject: [PATCH] moved legacy functions to convert_stats.py --- .../v21/convert_dataset_v20_to_v21.py | 24 +------------------ src/lerobot/datasets/v21/convert_stats.py | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/lerobot/datasets/v21/convert_dataset_v20_to_v21.py b/src/lerobot/datasets/v21/convert_dataset_v20_to_v21.py index 63920d5a2..cfcff6e45 100644 --- a/src/lerobot/datasets/v21/convert_dataset_v20_to_v21.py +++ b/src/lerobot/datasets/v21/convert_dataset_v20_to_v21.py @@ -33,38 +33,16 @@ python -m lerobot.datasets.v21.convert_dataset_v20_to_v21 \ import argparse import logging -from pathlib import Path -import jsonlines from huggingface_hub import HfApi from lerobot.datasets.lerobot_dataset import CODEBASE_VERSION, LeRobotDataset -from lerobot.datasets.utils import STATS_PATH, load_stats, serialize_dict, write_info +from lerobot.datasets.utils import STATS_PATH, load_stats, write_info from lerobot.datasets.v21.convert_stats import check_aggregate_stats, convert_stats V20 = "v2.0" V21 = "v2.1" -### LEGACY FUNCTIONS REMOVED FROM UTILS ### - -LEGACY_EPISODES_STATS_PATH = "episodes_stats.jsonl" - - -def append_jsonlines(data: dict, fpath: Path) -> None: - fpath.parent.mkdir(exist_ok=True, parents=True) - with jsonlines.open(fpath, "a") as writer: - writer.write(data) - - -def legacy_write_episode_stats(episode_index: int, episode_stats: dict, local_dir: Path): - # We wrap episode_stats in a dictionary since `episode_stats["episode_index"]` - # is a dictionary of stats and not an integer. - episode_stats = {"episode_index": episode_index, "stats": serialize_dict(episode_stats)} - append_jsonlines(episode_stats, local_dir / LEGACY_EPISODES_STATS_PATH) - - -######## END OF LEGACY FUNCTIONS ######## - class SuppressWarnings: def __enter__(self): diff --git a/src/lerobot/datasets/v21/convert_stats.py b/src/lerobot/datasets/v21/convert_stats.py index a6b4f4afd..43124e8b0 100644 --- a/src/lerobot/datasets/v21/convert_stats.py +++ b/src/lerobot/datasets/v21/convert_stats.py @@ -13,13 +13,35 @@ # limitations under the License. from concurrent.futures import ThreadPoolExecutor, as_completed +from pathlib import Path +import jsonlines import numpy as np from tqdm import tqdm from lerobot.datasets.compute_stats import aggregate_stats, get_feature_stats, sample_indices from lerobot.datasets.lerobot_dataset import LeRobotDataset -from lerobot.datasets.utils import legacy_write_episode_stats +from lerobot.datasets.utils import serialize_dict + +### LEGACY FUNCTIONS REMOVED FROM UTILS ### + +LEGACY_EPISODES_STATS_PATH = "episodes_stats.jsonl" + + +def append_jsonlines(data: dict, fpath: Path) -> None: + fpath.parent.mkdir(exist_ok=True, parents=True) + with jsonlines.open(fpath, "a") as writer: + writer.write(data) + + +def legacy_write_episode_stats(episode_index: int, episode_stats: dict, local_dir: Path): + # We wrap episode_stats in a dictionary since `episode_stats["episode_index"]` + # is a dictionary of stats and not an integer. + episode_stats = {"episode_index": episode_index, "stats": serialize_dict(episode_stats)} + append_jsonlines(episode_stats, local_dir / LEGACY_EPISODES_STATS_PATH) + + +######## END OF LEGACY FUNCTIONS ######## def sample_episode_video_frames(dataset: LeRobotDataset, episode_index: int, ft_key: str) -> np.ndarray: