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')