Spaces:
Running
Running
""" | |
Data processing utilities for the leaderboard application. | |
""" | |
import pandas as pd | |
import numpy as np | |
def apply_value_formatting(value, is_numeric=True): | |
""" | |
Apply formatting to a value based on its properties | |
Args: | |
value: The value to format | |
is_numeric (bool): Whether the value is numeric | |
Returns: | |
dict: Dictionary with formatting information | |
""" | |
if not is_numeric or value == '-': | |
return {'value': value, 'class': ''} | |
numeric_value = float(value) | |
if numeric_value > 0: | |
return {'value': value, 'class': 'positive-value'} | |
elif numeric_value < 0: | |
return {'value': value, 'class': 'negative-value'} | |
else: | |
return {'value': value, 'class': ''} | |
def get_model_type_style(model_type): | |
""" | |
Get styling for different model types | |
Args: | |
model_type (str): The model type | |
Returns: | |
dict: Dictionary with styling information | |
""" | |
if model_type == "Open Source": | |
return {'color': '#4ade80'} # Brighter green | |
elif model_type == "Open Weights": | |
return {'color': '#93c5fd'} # Brighter blue | |
elif model_type == "Closed Source": | |
return {'color': '#cbd5e1'} # Lighter gray | |
else: | |
return {'color': ''} | |
def get_rank_style(rank): | |
""" | |
Get styling for different ranks | |
Args: | |
rank (str): The rank | |
Returns: | |
dict: Dictionary with styling information | |
""" | |
if "🥇" in str(rank): | |
return {'color': 'gold', 'font-weight': '700', 'font-size': '16px'} | |
elif "🥈" in str(rank): | |
return {'color': 'silver', 'font-weight': '700', 'font-size': '16px'} | |
elif "🥉" in str(rank): | |
return {'color': '#cd7f32', 'font-weight': '700', 'font-size': '16px'} | |
else: | |
return {} | |
def calculate_task_statistics(metric_data): | |
""" | |
Calculate statistics for each task | |
Args: | |
metric_data (dict): Dictionary containing the metric data | |
Returns: | |
dict: Dictionary with task statistics | |
""" | |
stats = {} | |
for task, models in metric_data.items(): | |
values = list(models.values()) | |
stats[task] = { | |
'mean': np.mean(values), | |
'median': np.median(values), | |
'min': min(values), | |
'max': max(values), | |
'std': np.std(values) | |
} | |
return stats |