MUSEval / src /populate.py
Calcharles's picture
updated naming
7939a4f
"""
Data population functions for MUSEval Leaderboard
"""
import pandas as pd
from typing import Dict, List, Any, Optional
from .load_results import load_results_with_metadata, create_overall_table
def get_leaderboard_df(results_path: str, requests_path: str, eval_cols: List[str], benchmark_cols: List[str]) -> pd.DataFrame:
"""Get leaderboard dataframe"""
# Use our existing load_results function
results = load_results_with_metadata()
if not results:
return pd.DataFrame()
return create_overall_table()
def get_model_info_df(results_path: str, requests_path: str) -> pd.DataFrame:
"""Get model information dataframe"""
results = load_results_with_metadata()
if not results:
return pd.DataFrame()
# Extract unique model information
model_info = {}
for result in results:
model = result["model"]
if model not in model_info:
model_info[model] = {
"model": model,
"organization": result["submitter"],
"submission_date": result["submission_date"],
"task": result.get("task", ""),
"dataset_version": result.get("dataset_version", ""),
"paper_url": result.get("paper_url", ""),
"code_url": result.get("code_url", ""),
"model_type": "Foundation Model", # Default
"testdata_leakage": "No" # Default
}
return pd.DataFrame(list(model_info.values()))
def get_merged_df(leaderboard_df: pd.DataFrame, model_info_df: pd.DataFrame) -> pd.DataFrame:
"""Merge leaderboard and model info dataframes"""
if leaderboard_df.empty or model_info_df.empty:
return leaderboard_df
# Merge on model name
merged = pd.merge(leaderboard_df, model_info_df, on="model", how="left")
# Add rank column
if 'MAE' in merged.columns:
merged['Rank'] = merged['MAE'].rank(method='min').astype(int)
# Move Rank to front
cols = ['Rank'] + [col for col in merged.columns if col != 'Rank']
merged = merged[cols]
return merged
def get_evaluation_queue_df(requests_path: str, eval_cols: List[str]) -> tuple:
"""Get evaluation queue dataframes"""
# Return empty dataframes for now
return pd.DataFrame(), pd.DataFrame(), pd.DataFrame()