Spaces:
Running
Running
| import gradio as gr | |
| import pandas as pd | |
| import plotly.express as px | |
| from model_handler import ModelHandler | |
| def unified_exam_result_table(unified_exam_df): | |
| df = unified_exam_df.copy() | |
| df = df.sort_values(by='Average', ascending=False).reset_index(drop=True) | |
| df.insert(0, 'Rank', range(1, len(df) + 1)) | |
| cols = df.columns.tolist() | |
| cols.insert(2, cols.pop(cols.index('Average'))) | |
| df = df[cols] | |
| df.rename(columns={'Armenian language and literature': 'Armenian language\nand literature'}, inplace=True) | |
| df = df.round(4) | |
| return df | |
| def mmlu_result_table(mmlu_df): | |
| df = mmlu_df.copy() | |
| df = df.sort_values(by='Average', ascending=False).reset_index(drop=True) | |
| df.insert(0, 'Rank', range(1, len(df) + 1)) | |
| cols = df.columns.tolist() | |
| cols.insert(2, cols.pop(cols.index('Average'))) | |
| cols.append(cols.pop(cols.index('Other'))) | |
| df = df[cols] | |
| df = df.round(4) | |
| return df | |
| def unified_exam_chart(unified_exam_df, plot_column): | |
| if plot_column == 'Armenian language and literature': | |
| plot_column = 'Armenian language\nand literature' | |
| df = unified_exam_df.copy() | |
| df = df.sort_values(by=[plot_column, 'Model'], ascending=[False, True]).reset_index(drop=True) | |
| x_col = plot_column | |
| title = f'{plot_column}' | |
| 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) | |
| color_discrete_map = { | |
| "Fail": "#ff5f56", | |
| "Pass": "#ffbd2e", | |
| "Distinction": "#27c93f" | |
| } | |
| fig = px.bar(df, | |
| x=x_col, | |
| y='Model', | |
| color=df['Test Result'], | |
| color_discrete_map=color_discrete_map, | |
| labels={x_col: 'Score', '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"), | |
| width=1000 | |
| ) | |
| return fig | |
| def mmlu_chart(mmlu_df, plot_column): | |
| df = mmlu_df.copy() | |
| subject_cols = ['Biology', 'Business', 'Chemistry', 'Computer Science', 'Economics', 'Engineering', 'Health', 'History', 'Law', 'Math', 'Other', 'Philosophy', 'Physics', 'Psychology'] | |
| df['Average'] = df[subject_cols].mean(axis=1) | |
| df = df.sort_values(by=plot_column, ascending=False).reset_index(drop=True) | |
| x_col = plot_column | |
| title = f'{plot_column}' | |
| x_range_max = 1.0 | |
| fig = px.bar(df, | |
| x=x_col, | |
| y='Model', | |
| color=x_col, | |
| color_continuous_scale='Viridis', | |
| labels={x_col: 'Accuracy', 'Model': 'Model'}, | |
| title=title, | |
| orientation='h', | |
| range_color=[0,1] | |
| ) | |
| 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"), | |
| width=1000 | |
| ) | |
| return fig | |