File size: 3,808 Bytes
df490c1
 
 
 
 
 
 
 
 
 
 
ad8d1e9
 
df490c1
 
 
36729d3
df490c1
 
 
6a83297
df490c1
a1b068e
 
f8a027d
 
1986367
 
a1b068e
a903c52
 
a1b068e
df490c1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5e5765f
 
 
df490c1
 
616c89c
df490c1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6a83297
 
df490c1
 
 
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import abc

import gradio as gr

from gen_table import *
from meta_data import *

with gr.Blocks() as demo:
    struct = load_results_local()
    results = struct['results']
    N_MODEL = len(results)
    N_DATA = len(results['Claude-2']) - 1
    DATASETS = list(results['Claude-2'])
    DATASETS.remove('META')
    print(DATASETS)

    gr.Markdown(LEADERBORAD_INTRODUCTION)
    structs = [abc.abstractproperty() for _ in range(N_DATA)]

    with gr.Tabs(elem_classes='tab-buttons') as tabs:
        with gr.TabItem('🏅 Medical LLM Leaderboard', elem_id='main', id=0):
            gr.Markdown(LEADERBOARD_MD['MAIN'])

            gr.Image(
            value=IMAGE_PATH,  
            label='Medical LLM Benchmark', 
            width=1200,  
            height=900  
            )

            gr.Markdown(LEADERBOARD_MD['RESULT'])
            
            _, check_box = BUILD_L1_DF(results, MAIN_FIELDS)
            table = generate_table(results, DEFAULT_BENCH)
            table['Rank'] = list(range(1, len(table) + 1))

            type_map = check_box['type_map']
            type_map['Rank'] = 'number'

            checkbox_group = gr.CheckboxGroup(
                choices=check_box['all'],
                value=check_box['required'],
                label='Evaluation Dimension',
                interactive=True,
            )

            headers = ['Rank'] + check_box['essential'] + checkbox_group.value
            with gr.Row():
                model_size = gr.CheckboxGroup(
                    choices=MODEL_SIZE,
                    value=MODEL_SIZE,
                    label='Model Size',
                    interactive=True
                )
                model_type = gr.CheckboxGroup(
                    choices=MODEL_TYPE,
                    value=MODEL_TYPE,
                    label='Model Type',
                    interactive=True
                )
            print(headers)
            print(check_box['essential'])
            data_component = gr.components.DataFrame(
                value=table[headers],
                type='pandas',
                datatype=[type_map[x] for x in headers],
                interactive=False,
                visible=True,
                elem_classes="data-table"   
            )

            def filter_df(fields, model_size, model_type):
                filter_list = ['Avg Score', 'Avg Rank']
                headers = ['Rank'] + check_box['essential'] + fields

                new_fields = [field for field in fields if field not in filter_list]
                df = generate_table(results, new_fields)

                df['flag'] = [model_size_flag(x, model_size) for x in df['Param (B)']]
                df = df[df['flag']]
                df.pop('flag')
                if len(df):
                    df['flag'] = [model_type_flag(df.iloc[i], model_type) for i in range(len(df))]
                    df = df[df['flag']]
                    df.pop('flag')
                df['Rank'] = list(range(1, len(df) + 1))

                comp = gr.components.DataFrame(
                    value=df[headers],
                    type='pandas',
                    datatype=[type_map[x] for x in headers],
                    interactive=False,
                    visible=True)
                return comp

            for cbox in [checkbox_group, model_size, model_type]:
                cbox.change(fn=filter_df, inputs=[checkbox_group, model_size, model_type], outputs=data_component)

    with gr.Row():
        with gr.Accordion('Citation', open=False):
            citation_button = gr.Textbox(
                value=CITATION_BUTTON_TEXT,
                label=CITATION_BUTTON_LABEL,
                elem_id='citation-button',
                lines=10)

if __name__ == '__main__':
    demo.launch(server_name='0.0.0.0')