Spaces:
Running
Running
| import gradio as gr | |
| import pandas as pd | |
| import plotly.express as px | |
| def display_table(exam_type): | |
| if exam_type == "Armenian Exams": | |
| df = pd.read_csv('unified_exam_results.csv') | |
| df = df.sort_values(by='Average score', ascending=False) | |
| cols = df.columns.tolist() | |
| cols.insert(1, cols.pop(cols.index('Average score'))) | |
| df = df[cols] | |
| elif exam_type == "MMLU-Pro-Hy": | |
| df = pd.read_csv('mmlu_pro_hy_results.csv') | |
| df = df.sort_values(by='Accuracy', ascending=False) | |
| return df | |
| def create_bar_chart(exam_type, plot_column): | |
| if exam_type == "Armenian Exams": | |
| df = pd.read_csv('unified_exam_results.csv') | |
| df = df.sort_values(by='Average score', ascending=False) | |
| df = df.sort_values(by=[plot_column, 'Model'], ascending=[False, True]).reset_index(drop=True) | |
| x_col = plot_column | |
| title = f'{plot_column} per Model' | |
| if plot_column == 'Average score': | |
| range_max = 20 | |
| x_range_max = 20 | |
| else: | |
| range_max = 20 | |
| x_range_max = 20 | |
| def get_label(score): | |
| if score < 8: | |
| return "Fail" | |
| elif 8 <= score <= 18: | |
| return "Pass" | |
| else: | |
| return "Distinction" | |
| df['Test Result'] = df[plot_column].apply(get_label) | |
| if plot_column in ['Average score', 'Accuracy']: | |
| fig = px.bar(df, | |
| x=x_col, | |
| y='Model', | |
| color=x_col, | |
| color_continuous_scale='tealrose_r', | |
| labels={x_col: plot_column, 'Model': 'Model'}, | |
| title=title, | |
| orientation='h', | |
| range_color=[0, range_max]) | |
| else: | |
| color_discrete_map = { | |
| "Fail": "#d15d80", | |
| "Pass": "#edd8be", | |
| "Distinction": "#059492" | |
| } | |
| fig = px.bar(df, | |
| x=x_col, | |
| y='Model', | |
| color=df['Test Result'], | |
| color_discrete_map=color_discrete_map, | |
| labels={x_col: plot_column, 'Model': 'Model'}, | |
| title=title, | |
| orientation='h') | |
| fig.update_layout( | |
| xaxis=dict(range=[0, x_range_max]), | |
| title=dict(text=title, font=dict(size=16)), | |
| xaxis_title=dict(font=dict(size=12)), | |
| yaxis_title=dict(font=dict(size=12)), | |
| yaxis=dict(autorange="reversed") | |
| ) | |
| return fig | |
| elif exam_type == "MMLU-Pro-Hy": | |
| df = pd.read_csv('mmlu_pro_hy_results.csv') | |
| df = df.sort_values(by='Accuracy', ascending=False) | |
| x_col = 'Accuracy' | |
| title = 'Accuracy per Model (MMLU-Pro-Hy)' | |
| range_max = 1.0 | |
| x_range_max = 1.0 | |
| if plot_column != 'Accuracy': | |
| def get_label(accuracy): | |
| if accuracy < 0.5: | |
| return "Low" | |
| elif 0.5 <= accuracy <= 0.8: | |
| return "Medium" | |
| else: | |
| return "High" | |
| df['Test Result'] = df['Accuracy'].apply(get_label) | |
| fig = px.bar(df, | |
| x=x_col, | |
| y='Model', | |
| color=x_col, | |
| color_continuous_scale='tealrose_r', | |
| labels={x_col: plot_column, 'Model': 'Model'}, | |
| title=title, | |
| orientation='h', | |
| range_color=[0, range_max]) | |
| fig.update_layout( | |
| xaxis=dict(range=[0, x_range_max]), | |
| title=dict(text=title, font=dict(size=16)), | |
| xaxis_title=dict(font=dict(size=12)), | |
| yaxis_title=dict(font=dict(size=12)), | |
| yaxis=dict(autorange="reversed") | |
| ) | |
| return fig | |
| with gr.Blocks() as app: | |
| with gr.Tabs(): | |
| with gr.TabItem("Armenian Unified Exams"): | |
| table_output_armenian = gr.DataFrame(value=lambda: display_table("Armenian Exams")) | |
| plot_column_dropdown = gr.Dropdown(choices=['Average score', 'Armenian language exam score', 'Armenian history exam score', 'Mathematics exam score'], value='Average score', label='Select Column to Plot') | |
| plot_output_armenian = gr.Plot(lambda column: create_bar_chart("Armenian Exams", column), inputs=plot_column_dropdown) | |
| with gr.TabItem("MMLU-Pro-Hy"): | |
| table_output_mmlu = gr.DataFrame(value=lambda: display_table("MMLU-Pro-Hy")) | |
| plot_output_mmlu = gr.Plot(lambda: create_bar_chart("MMLU-Pro-Hy", 'Accuracy')) | |
| app.launch(share=True) |