DrChamyoung commited on
Commit
3dc0228
·
verified ·
1 Parent(s): 1b2c335

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +201 -0
app.py ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import os
3
+ import tempfile
4
+ import time
5
+ import uuid
6
+
7
+ import cv2
8
+ import gradio as gr
9
+ import rerun as rr
10
+ import rerun.blueprint as rrb
11
+ from gradio_rerun import Rerun
12
+ from gradio_rerun.events import (
13
+ SelectionChange,
14
+ TimelineChange,
15
+ TimeUpdate,
16
+ )
17
+ from gradio_huggingfacehub_search import HuggingfaceHubSearch
18
+ from huggingface_hub import HfApi, HfFileSystem
19
+ from pathlib import Path
20
+
21
+ API = HfApi() # thin REST wrapper
22
+ FS = HfFileSystem() # fsspec-style filesystem :contentReference[oaicite:0]{index=0}
23
+ REPO = "pablovela5620/ego-dex-rrd"
24
+
25
+
26
+ SEQUENCE_NAMES = [
27
+ "add_remove_lid",
28
+ "arrange_topple_dominoes",
29
+ "assemble_disassemble_furniture_bench_chair",
30
+ "assemble_disassemble_furniture_bench_desk",
31
+ "assemble_disassemble_furniture_bench_drawer",
32
+ "assemble_disassemble_furniture_bench_lamp",
33
+ "assemble_disassemble_furniture_bench_square_table",
34
+ "assemble_disassemble_furniture_bench_stool",
35
+ "assemble_disassemble_legos",
36
+ "assemble_disassemble_soft_legos",
37
+ "assemble_disassemble_structures",
38
+ "assemble_disassemble_tiles",
39
+ "assemble_jenga",
40
+ "basic_fold",
41
+ "basic_pick_place",
42
+ "boil_serve_egg",
43
+ "braid_unbraid",
44
+ "build_unstack_lego",
45
+ "charge_uncharge_airpods",
46
+ "charge_uncharge_device",
47
+ "clean_cups",
48
+ "clean_surface",
49
+ "clean_tableware",
50
+ "clip_unclip_papers",
51
+ "color",
52
+ "crumple_flatten_paper",
53
+ "deal_gather_cards",
54
+ "declutter_desk",
55
+ "dry_hands",
56
+ "fidget_magnetic_spinner_rings",
57
+ "flip_coin",
58
+ "flip_pages",
59
+ "fold_stack_unstack_unfold_cloths",
60
+ "fold_unfold_paper_basic",
61
+ "fold_unfold_paper_origami",
62
+ "fry_bread",
63
+ "fry_egg",
64
+ "gather_roll_dice",
65
+ "insert_dump_blocks",
66
+ "insert_remove_airpods",
67
+ "insert_remove_bagging",
68
+ "insert_remove_bookshelf",
69
+ "insert_remove_cups_from_rack",
70
+ "insert_remove_drawer",
71
+ "insert_remove_furniture_bench_cabinet",
72
+ "insert_remove_furniture_bench_round_table",
73
+ "insert_remove_plug_socket",
74
+ "insert_remove_shirt_in_tube",
75
+ "insert_remove_tennis_ball",
76
+ "insert_remove_usb",
77
+ "insert_remove_utensils",
78
+ "knead_slime",
79
+ "load_dispense_ice",
80
+ "lock_unlock_key",
81
+ "make_sandwich",
82
+ "measure_objects",
83
+ "open_close_insert_remove_box",
84
+ "open_close_insert_remove_case",
85
+ "open_close_insert_remove_tupperware",
86
+ "paint_clean_brush",
87
+ "peel_place_sticker",
88
+ "pick_place_food",
89
+ "pick_up_and_put_down_case_or_bag",
90
+ "play_mancala",
91
+ "play_piano",
92
+ "play_reset_connect_four",
93
+ "point_and_click_remote",
94
+ "pour",
95
+ "push_pop_toy",
96
+ "put_away_set_up_board_game",
97
+ "put_in_take_out_glasses",
98
+ "put_toothpaste_on_toothbrush",
99
+ "rake_smooth_zen_garden",
100
+ "roll_ball",
101
+ "scoop_dump_ice",
102
+ "screw_unscrew_allen_fixture",
103
+ "screw_unscrew_bottle_cap",
104
+ "screw_unscrew_fingers_fixture",
105
+ "set_up_clean_up_chessboard",
106
+ "setup_cleanup_table",
107
+ "sleeve_unsleeve_cards",
108
+ "slot_batteries",
109
+ "sort_beads",
110
+ "stack",
111
+ "stack_remove_jenga",
112
+ "stack_unstack_bowls",
113
+ "stack_unstack_cups",
114
+ "stack_unstack_plates",
115
+ "stack_unstack_tupperware",
116
+ "staple_paper",
117
+ "stock_unstock_fridge",
118
+ "sweep_dustpan",
119
+ "thread_unthread_bead_necklace",
120
+ "throw_and_catch_ball",
121
+ "throw_collect_objects",
122
+ "tie_and_untie_shoelace",
123
+ "tie_untie_rubberband",
124
+ "type_keyboard",
125
+ "use_chopsticks",
126
+ "use_rubiks_cube",
127
+ "vertical_pick_place",
128
+ "wash_fruit",
129
+ "wash_kitchen_dishes",
130
+ "wash_put_away_dishes",
131
+ "wipe_kitchen_surfaces",
132
+ "wipe_screen",
133
+ "wrap",
134
+ "wrap_unwrap_food",
135
+ "write",
136
+ "zip_unzip_bag",
137
+ "zip_unzip_case",
138
+ ]
139
+
140
+ def show_dataset(task_name: str, episode_index: str):
141
+ episode_index = f"{int(episode_index):05d}"
142
+ url_str = f"https://huggingface.co/datasets/pablovela5620/ego-dex-rrd/resolve/main/{task_name}/{episode_index}.rrd"
143
+ return url_str
144
+
145
+ def list_episodes(task:str) -> list[str]:
146
+ """
147
+ Return ["00000", "00001", ...] for the chosen task folder.
148
+ """
149
+ # fastest: one HTTP hit that returns the whole tree once
150
+ files = API.list_repo_files(REPO, repo_type="dataset")
151
+ return sorted(
152
+ {Path(f).stem for f in files
153
+ if f.startswith(f"{task}/") and f.endswith(".rrd")}
154
+ )
155
+ default_task = SEQUENCE_NAMES[0] # "add_remove_lid"
156
+ initial_eps = list_episodes(default_task) # ["00000", "00001", …]
157
+
158
+ with gr.Blocks() as demo:
159
+ with gr.Tab("Hosted RRD"):
160
+ with gr.Row():
161
+ with gr.Column(scale=1):
162
+ task_name = gr.Dropdown(
163
+ label="Task Name",
164
+ choices=SEQUENCE_NAMES,
165
+ value=default_task,
166
+ )
167
+ episode_index = gr.Dropdown(
168
+ label="Episode Index",
169
+ choices=initial_eps,
170
+ value=initial_eps[0] if initial_eps else None,
171
+
172
+ )
173
+
174
+ def _update_eps(t): # Gradio wants a fn
175
+ eps = list_episodes(t)
176
+ return gr.update(choices=eps, value=eps[0] if eps else None)
177
+
178
+ task_name.change(_update_eps, inputs=task_name, outputs=episode_index)
179
+
180
+ button = gr.Button("Show Dataset")
181
+ with gr.Column(scale=4):
182
+ viewer = Rerun(
183
+ streaming=True,
184
+ panel_states={
185
+ "time": "collapsed",
186
+ "blueprint": "hidden",
187
+ "selection": "hidden",
188
+ },
189
+ )
190
+ # choose_rrd.change(lambda x: x, inputs=[choose_rrd], outputs=[viewer])
191
+ button.click(
192
+ fn=show_dataset,
193
+ inputs=[task_name, episode_index],
194
+ outputs=[viewer]
195
+ )
196
+
197
+
198
+
199
+
200
+ if __name__ == "__main__":
201
+ demo.launch(ssr_mode=False)