Repository navigation
feat(datasets): move episodes out of a local dataset into a new one - #142
Open
ravediamond wants to merge 1 commit into
Open
ravediamond wants to merge 1 commit into
ravediamond wants to merge 1 commit into
Conversation
This was referenced Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to the note on #95: "removing episodes by moving them into a separate dataset" as its own small PR.
Problem
After a recording session some takes are bad (failed grasp, arm out of frame, forgotten reset), and there is no way to drop them from the browser. Today that means leaving LeLab for LeRobot's
lerobot-edit-dataset.Approach
A "Move episodes" button in the dataset browser, shown for local datasets with more than one episode. The dialog is prefilled with the episode being viewed and takes a list like
3, 7, 10-12plus a name. Those episodes go to a new datasetlocal/<name>, and the episodes left in the source are renumbered. Nothing is deleted, so the moved takes can be merged back or kept apart.POST /datasets/move-episodeswraps LeRobot'sdelete_episodes, run twice: once for the moved copy, once for the copy that stays. Both are written to a staging dir next to the output, and the source is swapped only once both exist, so a failure leaves the source untouched.ensure_episode_indexruns before the dataset is opened, and the output path is contained under the cache root like merge's./dataset-frameand/dataset-videoare nowno-cache(videos revalidate against theFileResponseETag). Both assumed a frame never changes for a given dataset/episode/index, which a move breaks.If the dataset is also on the Hub, the local copy no longer matches it after a move.
Testing
npm run build,pre-commit run --all-files.Tested on Linux (Jetson Orin, aarch64) only. Not tested on macOS, Windows, or a real SO-101 dataset.