import gradio as gr import pandas as pd import json import io from constants import ( SUBMIT_INTRODUCTION, COLUMN_NAMES, MODEL_INFO, ALL_RESULTS, NEW_DATA_TITLE_TYPE, SINGLE_DOMAIN_RESULTS, TABLE_INTRODUCTION, CITATION_BUTTON_LABEL, CITATION_BUTTON_TEXT, COLUMN_NAMES_HUMAN, CSV_DIR_HUMAN_DOMAIN_RESULTS, CSV_DIR_OPEN_DOMAIN_RESULTS, HUMAN_DOMAIN_RESULTS, CSV_DIR_SINGLE_DOMAIN_RESULTS, TABLE_INTRODUCTION_HUMAN, LEADERBORAD_INTRODUCTION, OPEN_DOMAIN_RESULTS, ) global \ filter_component, \ data_component_opendomain, \ data_component_humandomain, \ data_component_singledomain def upload_file(files): file_paths = [file.name for file in files] return file_paths def compute_scores(input_data): return [ None, [ input_data["total_score"], input_data["aes_score"], input_data["motion_score"], input_data["facesim_cur"], input_data["gme_score"], input_data["nexus_score"], input_data["natural_score"], ], ] def compute_scores_human_domain(input_data): return [ None, [ input_data["total_score"], input_data["aes_score"], input_data["motion_score"], input_data["facesim_cur"], input_data["gme_score"], input_data["natural_score"], ], ] def add_opendomain_eval( input_file, model_name_textbox: str, revision_name_textbox: str, venue_type_dropdown: str, team_name_textbox: str, model_link: str, ): if input_file is None: return "Error! Empty file!" else: selected_model_data = json.load(io.BytesIO(input_file)) scores = compute_scores(selected_model_data) input_data = scores[1] input_data = [float(i) for i in input_data] csv_data = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS) if revision_name_textbox == "": col = csv_data.shape[0] model_name = model_name_textbox name_list = [ name.split("]")[0][1:] if name.endswith(")") else name for name in csv_data["Model"] ] assert model_name not in name_list else: model_name = revision_name_textbox model_name_list = csv_data["Model"] name_list = [ name.split("]")[0][1:] if name.endswith(")") else name for name in model_name_list ] if revision_name_textbox not in name_list: col = csv_data.shape[0] else: col = name_list.index(revision_name_textbox) if model_link == "": model_name = model_name # no url else: model_name = "[" + model_name + "](" + model_link + ")" venue = venue_type_dropdown if team_name_textbox == "": team = "User Upload" else: team = team_name_textbox new_data = [ model_name, venue, team, f"{input_data[0] * 100:.2f}%", f"{input_data[1] * 100:.2f}%", f"{input_data[2] * 100:.2f}%", f"{input_data[3] * 100:.2f}%", f"{input_data[4] * 100:.2f}%", f"{input_data[5] * 100:.2f}%", f"{input_data[6] * 100:.2f}%", ] csv_data.loc[col] = new_data csv_data.to_csv(CSV_DIR_OPEN_DOMAIN_RESULTS, index=False) return "Evaluation successfully submitted!" def add_humandomain_eval( input_file, model_name_textbox: str, revision_name_textbox: str, venue_type_dropdown: str, team_name_textbox: str, model_link: str, ): if input_file is None: return "Error! Empty file!" else: selected_model_data = json.load(io.BytesIO(input_file)) scores = compute_scores_human_domain(selected_model_data) input_data = scores[1] input_data = [float(i) for i in input_data] csv_data = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS) if revision_name_textbox == "": col = csv_data.shape[0] model_name = model_name_textbox name_list = [ name.split("]")[0][1:] if name.endswith(")") else name for name in csv_data["Model"] ] assert model_name not in name_list else: model_name = revision_name_textbox model_name_list = csv_data["Model"] name_list = [ name.split("]")[0][1:] if name.endswith(")") else name for name in model_name_list ] if revision_name_textbox not in name_list: col = csv_data.shape[0] else: col = name_list.index(revision_name_textbox) if model_link == "": model_name = model_name # no url else: model_name = "[" + model_name + "](" + model_link + ")" venue = venue_type_dropdown if team_name_textbox == "": team = "User Upload" else: team = team_name_textbox new_data = [ model_name, venue, team, f"{input_data[0] * 100:.2f}%", f"{input_data[1] * 100:.2f}%", f"{input_data[2] * 100:.2f}%", f"{input_data[3] * 100:.2f}%", f"{input_data[4] * 100:.2f}%", f"{input_data[5] * 100:.2f}%", ] csv_data.loc[col] = new_data csv_data.to_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS, index=False) return "Evaluation successfully submitted!" def add_singledomain_eval( input_file, model_name_textbox: str, revision_name_textbox: str, venue_type_dropdown: str, team_name_textbox: str, model_link: str, ): if input_file is None: return "Error! Empty file!" else: selected_model_data = json.load(io.BytesIO(input_file)) scores = compute_scores(selected_model_data) input_data = scores[1] input_data = [float(i) for i in input_data] csv_data = pd.read_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS) if revision_name_textbox == "": col = csv_data.shape[0] model_name = model_name_textbox name_list = [ name.split("]")[0][1:] if name.endswith(")") else name for name in csv_data["Model"] ] assert model_name not in name_list else: model_name = revision_name_textbox model_name_list = csv_data["Model"] name_list = [ name.split("]")[0][1:] if name.endswith(")") else name for name in model_name_list ] if revision_name_textbox not in name_list: col = csv_data.shape[0] else: col = name_list.index(revision_name_textbox) if model_link == "": model_name = model_name # no url else: model_name = "[" + model_name + "](" + model_link + ")" venue = venue_type_dropdown if team_name_textbox == "": team = "User Upload" else: team = team_name_textbox new_data = [ model_name, venue, team, f"{input_data[0] * 100:.2f}%", f"{input_data[1] * 100:.2f}%", f"{input_data[2] * 100:.2f}%", f"{input_data[3] * 100:.2f}%", f"{input_data[4] * 100:.2f}%", f"{input_data[5] * 100:.2f}%", f"{input_data[6] * 100:.2f}%", ] csv_data.loc[col] = new_data csv_data.to_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS, index=False) return "Evaluation successfully submitted!" def get_all_df_opendomain(): df = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS) df = df.sort_values(by="TotalScore↑", ascending=False) return df def get_baseline_df_opendomain(): df = pd.read_csv(CSV_DIR_OPEN_DOMAIN_RESULTS) df = df.sort_values(by="TotalScore↑", ascending=False) present_columns = MODEL_INFO + checkbox_group_opendomain.value df = df[present_columns] return df def get_all_df_humandomain(): df = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS) df = df.sort_values(by="TotalScore↑", ascending=False) return df def get_baseline_df_humandomain(): df = pd.read_csv(CSV_DIR_HUMAN_DOMAIN_RESULTS) df = df.sort_values(by="TotalScore↑", ascending=False) present_columns = MODEL_INFO + checkbox_group_humandomain.value df = df[present_columns] return df def get_all_df_singledomain(): df = pd.read_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS) df = df.sort_values(by="TotalScore↑", ascending=False) return df def get_baseline_df_singledomain(): df = pd.read_csv(CSV_DIR_SINGLE_DOMAIN_RESULTS) df = df.sort_values(by="TotalScore↑", ascending=False) present_columns = MODEL_INFO + checkbox_group_singledomain.value df = df[present_columns] return df block = gr.Blocks() with block: gr.HTML("""