gabboud commited on
Commit
65e7711
·
1 Parent(s): 663abb5

add visualization with Molecule3D

Browse files
Files changed (1) hide show
  1. app.py +45 -46
app.py CHANGED
@@ -59,53 +59,52 @@ with gr.Blocks(title="RFD3 Test") as demo:
59
 
60
 
61
  # New visualize section
62
- #with gr.Row():
63
- # viz_btn = gr.Button("Visualize", visible=True)
64
- # batch_dropdown = gr.Dropdown(
65
- # choices=[],
66
- # label="Select Batch",
67
- # visible=False
68
- # )
69
- # design_dropdown = gr.Dropdown(
70
- # choices=[],
71
- # label="Select Design",
72
- # visible=False
73
- # )
74
- # viewer = Molecule3D(visible=False)
75
- #
76
- #def toggle_visualize(result):
77
- # if result is None:
78
- # return gr.Dropdown(visible=False), gr.Dropdown(visible=False), Molecule3D(visible=False)
79
- # batches = sorted(list({d["batch"] for d in result}))
80
- # return (
81
- # gr.update(choices=batches, visible=True), # Batch dropdown
82
- # gr.update(choices=[], visible=True), # Design empty initially
83
- # gr.update(visible=False)
84
- # )
85
- #
86
- #def update_designs(batch, result):
87
- # if batch is None:
88
- # return gr.update(choices=[])
89
- # designs = sorted(list({d["design"] for d in result if d["batch"] == batch}))
90
- # return gr.update(choices=designs)
91
- #
92
- #def load_viewer(batch, design, result):
93
- # if batch is None or design is None:
94
- # return gr.update(visible=False)
95
- # pdb_data = next(d["pdb"] for d in result if d["batch"] == int(batch) and d["design"] == int(design))
96
- # return gr.update(value=pdb_data, visible=True, reps=[{"style": "cartoon"}]) # Customize style
97
- #
98
- ## Events
99
- #viz_btn.click(toggle_visualize, inputs=gen_directory, outputs=[batch_dropdown, design_dropdown, viewer])
100
- #batch_dropdown.change(update_designs, inputs=[batch_dropdown, gen_directory], outputs=design_dropdown)
101
- #batch_dropdown.select(fn=update_designs, inputs=[batch_dropdown, gen_directory], outputs=design_dropdown) # For selection
102
- #gr.Dropdown.select(update_designs, batch_dropdown, design_dropdown).then( # Chain
103
- # lambda b, d, r: load_viewer(b, d, r),
104
- # inputs=[batch_dropdown, design_dropdown, gen_directory],
105
- # outputs=viewer
106
- #)
107
 
108
-
109
 
110
  if __name__ == "__main__":
111
  demo.launch()
 
59
 
60
 
61
  # New visualize section
62
+ with gr.Row():
63
+ viz_btn = gr.Button("Visualize", visible=True)
64
+ batch_dropdown = gr.Dropdown(
65
+ choices=[],
66
+ label="Select Batch",
67
+ visible=False
68
+ )
69
+ design_dropdown = gr.Dropdown(
70
+ choices=[],
71
+ label="Select Design",
72
+ visible=False
73
+ )
74
+ viewer = Molecule3D(visible=False)
75
+
76
+ def toggle_visualize(result):
77
+ if result is None:
78
+ return gr.Dropdown(visible=False), gr.Dropdown(visible=False), Molecule3D(visible=False)
79
+ batches = sorted(list({d["batch"] for d in result}))
80
+ return (
81
+ gr.update(choices=batches, visible=True), # Batch dropdown
82
+ gr.update(choices=[], visible=True), # Design empty initially
83
+ gr.update(visible=False)
84
+ )
85
+
86
+ def update_designs(batch, result):
87
+ if batch is None:
88
+ return gr.update(choices=[])
89
+ designs = sorted(list({d["design"] for d in result if d["batch"] == batch}))
90
+ return gr.update(choices=designs)
91
+
92
+ def load_viewer(batch, design, result):
93
+ if batch is None or design is None:
94
+ return gr.update(visible=False)
95
+ pdb_data = next(d["pdb"] for d in result if d["batch"] == int(batch) and d["design"] == int(design))
96
+ return gr.update(value=pdb_data, visible=True, reps=[{"style": "cartoon"}]) # Customize style
97
+
98
+ # Events
99
+ viz_btn.click(toggle_visualize, inputs=gen_directory, outputs=[batch_dropdown, design_dropdown, viewer])
100
+ batch_dropdown.change(update_designs, inputs=[batch_dropdown, gen_directory], outputs=design_dropdown)
101
+ batch_dropdown.select(fn=update_designs, inputs=[batch_dropdown, gen_directory], outputs=design_dropdown) # For selection
102
+ gr.Dropdown.select(update_designs, batch_dropdown, design_dropdown).then( # Chain
103
+ lambda b, d, r: load_viewer(b, d, r),
104
+ inputs=[batch_dropdown, design_dropdown, gen_directory],
105
+ outputs=viewer
106
+ )
107
 
 
108
 
109
  if __name__ == "__main__":
110
  demo.launch()