ARIES-TEST / src /populate.py
Blisky-li's picture
Upload 130 files
520db1c verified
import os
import pandas as pd
from src.leaderboard.read_evals import load_model_data
def get_leaderboard_df(results_path):
"""获取完整的排行榜数据,包含所有指标"""
all_models = []
if not os.path.exists(results_path) or not os.path.isdir(results_path):
print(f"结果路径 {results_path} 不存在或不是目录")
return pd.DataFrame()
# 遍历所有模型文件夹
for model_folder in os.listdir(results_path):
print(f"加载模型: {model_folder}")
model_data = load_model_data(model_folder, results_path)
if model_data:
all_models.append(model_data)
else:
print(f"模型 {model_folder} 加载失败")
# 转换为DataFrame并返回
df = pd.DataFrame(all_models)
print(f"成功加载 {len(df)} 个模型数据")
return df
def get_filtered_leaderboard(results_path, model_type="All", strategies=[], filter_mode="交集 (满足所有选中策略)"):
"""
获取筛选后的排行榜数据
参数:
- results_path: 结果目录路径
- model_type: 模型类型筛选
- strategies: 策略筛选列表
- filter_mode: 筛选模式,"交集 (满足所有选中策略)" 或 "并集 (满足任一选中策略)"
"""
# 获取完整数据
df = get_leaderboard_df(results_path)
if df.empty:
return df
# 应用模型类型筛选
if model_type and model_type != "All":
# 筛选包含该模型类型的行
df = df[df['model_type'].str.contains(model_type)]
# 应用策略筛选
if strategies:
# 获取对应的策略列
strategy_columns = [f'strategy_{s}' for s in strategies if f'strategy_{s}' in df.columns]
if strategy_columns:
# 根据筛选模式应用不同的筛选逻辑
if filter_mode == "交集 (满足所有选中策略)":
# 所有选中策略都必须为True
df = df[df[strategy_columns].all(axis=1)]
else:
# 至少一个选中策略为True
df = df[df[strategy_columns].any(axis=1)]
else:
print(f"没有找到与选中策略匹配的列: {strategies}")
return pd.DataFrame()
return df