abreza/rerun-viewer
3
1import gradio as gr2from gradio_rerun import Rerun3from data.loader import load_simulation_data4from visualization.visualizer import visualize_simulation5from visualization.et_visualizer import visualize_et_data6 7 8def update_simulation_dropdown(file):9 simulations, descriptions = load_simulation_data(file)10 return gr.Dropdown(11 choices=descriptions if descriptions else [],12 value=None,13 allow_custom_value=False14 )15 16 17def create_app():18 with gr.Blocks() as demo:19 with gr.Tabs() as tabs:20 with gr.Tab("Camera Simulation"):21 gr.Markdown("""22 # Camera Simulation Visualizer23 Upload a JSON file containing camera simulation data and select a simulation to visualize.24 """)25 26 with gr.Row():27 file_input = gr.File(28 label="Upload Simulation JSON",29 file_types=[".json"]30 )31 simulation_dropdown = gr.Dropdown(32 label="Select Simulation",33 choices=[],34 type="index",35 scale=236 )37 38 with gr.Row():39 viewer = Rerun(streaming=False)40 41 file_input.change(42 update_simulation_dropdown,43 inputs=[file_input],44 outputs=[simulation_dropdown]45 )46 47 simulation_dropdown.change(48 visualize_simulation,49 inputs=[file_input, simulation_dropdown],50 outputs=[viewer]51 )52 53 with gr.Tab("E.T. Dataset"):54 gr.Markdown("""55 # E.T. Dataset Visualizer56 Upload trajectory (.txt) and character (.npy) files to visualize the E.T. dataset.57 """)58 59 with gr.Row():60 traj_file = gr.File(61 label="Trajectory File (.txt)",62 file_types=[".txt"]63 )64 char_file = gr.File(65 label="Character File (.npy)",66 file_types=[".npy"]67 )68 69 with gr.Row():70 et_viewer = Rerun(streaming=False)71 72 def process_et_files(traj_file, char_file):73 if traj_file is None or char_file is None:74 return None75 return visualize_et_data(traj_file.name, char_file.name)76 77 with gr.Row():78 visualize_btn = gr.Button("Visualize")79 visualize_btn.click(80 process_et_files,81 inputs=[traj_file, char_file],82 outputs=[et_viewer]83 )84 85 return demo86 87 88if __name__ == "__main__":89 demo = create_app()90 demo.queue().launch(share=False)91 