File size: 2,539 Bytes
4c8737b
 
 
f8080fc
4c8737b
 
f8080fc
 
4c8737b
f8080fc
 
4c8737b
f8080fc
4c8737b
 
f8080fc
022cccc
 
 
4c8737b
022cccc
 
 
4c8737b
 
 
 
022cccc
 
4c8737b
 
022cccc
4c8737b
022cccc
4c8737b
 
 
022cccc
4c8737b
 
 
 
 
 
 
 
022cccc
 
 
 
 
 
 
 
 
 
 
 
4c8737b
 
022cccc
 
 
 
4c8737b
 
022cccc
4c8737b
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import gradio as gr
from mammal.keys import *

from mammal_demo.demo_framework import MammalObjectBroker    


from mammal_demo.ppi_task import PpiTask
from mammal_demo.dti_task import DtiTask

all_tasks = dict()
all_models= dict()

ppi_task = PpiTask(model_dict = all_models)
all_tasks[ppi_task.name]=ppi_task

tdi_task = DtiTask(model_dict = all_models)
all_tasks[tdi_task.name]=tdi_task

ppi_model = MammalObjectBroker(model_path="ibm/biomed.omics.bl.sm.ma-ted-458m", task_list=[ppi_task.name])
all_models[ppi_model.name]=ppi_model

tdi_model = MammalObjectBroker(model_path="ibm/biomed.omics.bl.sm.ma-ted-458m.dti_bindingdb_pkd", task_list=[tdi_task.name])
all_models[tdi_model.name]=tdi_model


def create_application():
    def task_change(value):
        visibility = [gr.update(visible=(task==value)) for task in all_tasks.keys()]
            # all_tasks[task].demo().visible = 
        choices=[model_name for model_name, model in all_models.items() if value in model.tasks]
        if choices:
            return  (gr.update(choices=choices, value=choices[0]),*visibility)
        else:
            return (gr.skip,*visibility)
        # return model_name_dropdown
        
       
    with gr.Blocks() as application:
        task_dropdown = gr.Dropdown(choices=["select demo"] + list(all_tasks.keys()))
        task_dropdown.interactive = True
        model_name_dropdown = gr.Dropdown(choices=[model_name for model_name, model in all_models.items() if task_dropdown.value in model.tasks], interactive=True)
        
            



        ppi_demo = all_tasks[ppi_task.name].demo(model_name_widgit = model_name_dropdown)
        # ppi_demo.visible = True
        dtb_demo = all_tasks[tdi_task.name].demo(model_name_widgit = model_name_dropdown)

        task_dropdown.change(task_change,inputs=[task_dropdown],outputs=[model_name_dropdown]+[all_tasks[task].demo() for task in all_tasks])
        
        # def set_demo_vis(main_text):
        #     main_text=main_text
        #     print(f"main text is {main_text}")
        #     return gr.Group(visible=True)
        #     #return gr.Group(visible=(main_text == "PPI"))
        # # , gr.Group(                visible=(main_text == "DTI")            )


        # task_dropdown.change(
            # set_ppi_vis, inputs=task_dropdown, outputs=[ppi_demo]
        # )
        return application

full_demo=None

def main():
    global full_demo
    full_demo = create_application()
    full_demo.launch(show_error=True, share=False)


if __name__ == "__main__":
    main()