File size: 3,597 Bytes
ac117b5
71382c0
fbc2291
0c8af8a
 
ec656e5
 
0c8af8a
ec656e5
0c8af8a
 
b9bc9ac
0c8af8a
 
fbc2291
62efb75
0c8cec9
19dfa7a
 
 
 
 
 
 
 
 
0e5beb4
fda141d
0e5beb4
fda141d
 
19dfa7a
cb75880
62efb75
83811e8
7e647be
 
 
 
19dfa7a
1696184
ec656e5
fda141d
7e647be
 
fda141d
19dfa7a
62efb75
e6f876b
83811e8
 
 
 
 
 
e20eddc
83811e8
 
 
7e647be
 
 
62efb75
7e647be
e6f876b
 
83811e8
19dfa7a
 
 
 
e6f876b
fda141d
e6f876b
fda141d
 
71382c0
19dfa7a
 
 
 
 
71382c0
ac117b5
 
19dfa7a
 
0c8cec9
 
ac117b5
 
 
 
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import gradio as gr

import mammal_demo
MAIN_MARKDOWN_TEXT = """

The **[ibm/biomed.omics.bl.sm.ma-ted-458m](https://huggingface.co/models?sort=trending&search=ibm%2Fbiomed.omics.bl)**  model family is a biomedical foundation model and its finetuned variants trained on over 2 billion biological samples across multiple modalities, including proteins, small molecules, and single-cell gene data.
Designed for robust performance, it achieves state-of-the-art results over a variety of tasks across the entire drug discovery pipeline and the diverse biomedical domains.

Based on the [**MAMMAL** - **M**olecular **A**ligned **M**ulti-**M**odal **A**rchitecture and **L**anguage](https://arxiv.org/abs/2410.22367v2), a flexible, multi-domain architecture with an adaptable task prompt syntax.
The syntax allows for dynamic combinations of tokens and scalars, enabling classification, regression, and generation tasks either within a single domain or with cross-domain entities.

This page demonstrates a variety of drug discovery and biomedical tasks for the model family.  Select the task to access the specific demos.
"""

all_tasks, all_models = mammal_demo.tasks_and_models()


def create_application():
    def task_change(value):
        visibility = [gr.update(visible=(task == value)) for task in all_tasks.keys()]
        choices = [
            model_name
            for model_name, model in all_models.items()
            if value in model.tasks
        ]
        if choices:
            active = len(choices)>1
            return (
                gr.update(choices=choices, value=choices[0], interactive=active, visible=True, label=f"Matching Mammal models ({len(choices)})",),
                *visibility,
            )
        else:
            return (gr.update(visible=False, value=None, label="No Matching Mammal models"), *visibility,  )

    def model_change(value):
        return gr.update(
            value=f'[<span style="font-size:4em;">🤗</span>to model](https://huggingface.co/{value})',
            visible=value is not None,
        )

    with gr.Blocks(theme="matanninio/IBM_Carbon_Theme@0.0.5") as application:
        gr.Markdown(MAIN_MARKDOWN_TEXT, visible=True)
        task_dropdown = gr.Dropdown(
            choices=["Select task"] + list(all_tasks.keys()),
            label="Mammal Task",
        )
        task_dropdown.interactive = True
        with gr.Row():
            model_name_selector = gr.Radio(
                choices=[
                    model_name
                    for model_name, model in all_models.items()
                    if task_dropdown.value in model.tasks
                ],
                interactive=True,
                label="",
                visible=False,
                scale=10,
            )
            goto_card_button = gr.Markdown(
                "Link to model card",
                visible=False,
            )

            model_name_selector.change(
                model_change, inputs=[model_name_selector], outputs=[goto_card_button]
            )

        task_dropdown.change(
            task_change,
            inputs=[task_dropdown],
            outputs=[model_name_selector]
            + [
                all_tasks[task].demo(model_name_widgit=model_name_selector)
                for task in all_tasks
            ],
        )

        return application


full_demo = None


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


if __name__ == "__main__":
    main()