import gradio as gr import pandas as pd from src.process_data import * CITATION_TEXT = open(f"pages/citation.bib", "r").read() languages = ["All", "Bengali", "English", "French", "German", "Italian", "Polish", "Russian", "Spanish"] datasets = ["All", "CaFE", "CREMA-D", "EMNS", "Emozionalmente", "eNTERFACE", "JL-Corpus", "MESD", "nEMO", "Oreau", "PAVOQUE", "RAVDESS", "RESD", "SUBESCO"] emotions = [ "All", "anger", "anxiety", "apology", "assertiveness", "calm", "concern", "disgust", "encouragement", "enthusiasm", "excitement", "fear", "happiness", "neutral", "poker", "sadness", "sarcasm", "surprise", ] metric = ["f1_macro", "accuracy", "weighted_f1"] def app(): with gr.Blocks(theme=gr.themes.Soft(primary_hue="pink", secondary_hue="purple")) as demo: gr.Markdown(open("pages/header.md", "r").read(), container=True) with gr.Tabs(): with gr.Tab("🏆 Leaderboard", elem_classes='tab-item'): with gr.Tab("Overall Results", elem_classes='tab-item'): gr.Markdown(open("pages/overall-results.md", "r").read(), elem_classes='tab-item', container=True) overall_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) with gr.Tab("Results per Language", elem_classes='tab-item'): gr.Markdown(open("pages/results-per-language.md", "r").read(), elem_classes='tab-item', container=True) languages_filter = gr.CheckboxGroup(choices=languages, label="Select columns", value=languages) select_lang_metric = gr.Radio(metric, value='f1_macro', label="Select metric") lang_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) with gr.Tab("Results per Dataset", elem_classes='tab-item'): gr.Markdown(open("pages/results-per-dataset.md", "r").read(), elem_classes='tab-item', container=True) dataset_filter = gr.CheckboxGroup(choices=datasets, label="Select columns", value=datasets) select_ds_metric = gr.Radio(metric, value='f1_macro', label="Select metric") dataset_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) with gr.Tab("Results per Emotion", elem_classes='tab-item'): gr.Markdown(open("pages/results-per-emotion.md", "r").read(), elem_classes='tab-item', container=True) emo_filter = gr.CheckboxGroup(choices=emotions, label="Select columns", value=emotions) emotion_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) df_state = gr.State() def update_leaderboards(languages=[], datasets=[], emotions=[], select_lang_metric="f1_macro", select_ds_metric="f1_macro"): df = pd.read_json("results.jsonl", lines=True) lang_dict = build_lang_dict(df) ds_dict = build_ds_dict(df) emo_dict = build_emo_dict(df) overall = overall_leaderboard(df) by_lang = leaderboard_per_group(lang_dict, languages, metric=select_lang_metric) by_dataset = leaderboard_per_group(ds_dict, datasets, metric=select_ds_metric) by_emotion = leaderboard_per_group(emo_dict, emotions) return overall, by_lang, by_dataset, by_emotion, "Loaded successfully." demo.load( update_leaderboards, inputs=[languages_filter, dataset_filter, emo_filter], outputs=[overall_table, lang_table, dataset_table, emotion_table, df_state] ) def on_change(selected_languages, selected_lang_metric, selected_datasets, selected_ds_metric, selected_emotions): return update_leaderboards(languages=selected_languages, select_lang_metric=selected_lang_metric, datasets=selected_datasets, select_ds_metric=selected_ds_metric, emotions=selected_emotions) languages_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], [overall_table, lang_table, dataset_table, emotion_table]) select_lang_metric.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], [overall_table, lang_table, dataset_table, emotion_table]) dataset_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], [overall_table, lang_table, dataset_table, emotion_table]) select_ds_metric.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], [overall_table, lang_table, dataset_table, emotion_table]) emo_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], [overall_table, lang_table, dataset_table, emotion_table]) with gr.Tab("📝 About", elem_classes='tab-item'): gr.Markdown(open("pages/about.md", "r").read(), elem_classes='tab-item') with gr.Tab("🔢 Evaluate your model", elem_classes='tab-item'): gr.Markdown(open("pages/evaluate.md", "r").read(), elem_classes='tab-item') with gr.Tab("📬 Submit here!", elem_classes='tab-item'): gr.Markdown(open("pages/submit.md", "r").read(), elem_classes='tab-item') with gr.Column(): with gr.Accordion("📙 Citation", open=False, elem_classes='tab-item'): citation_button = gr.Textbox( label="", value=CITATION_TEXT, lines=20, elem_id="citation-button", show_copy_button=True, ) return demo if __name__ == "__main__": demo = app() demo.launch()