File size: 4,140 Bytes
1c73b10 3ce2f84 1c73b10 3ce2f84 1c73b10 3ce2f84 1c73b10 3ce2f84 1c73b10 3ce2f84 1c73b10 3ce2f84 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
from typing import Optional, Dict
import pandas as pd
import matplotlib.pyplot as plt
import logging
from data_manager import data_manager
logger = logging.getLogger(__name__)
def filter_leaderboard(
family: Optional[str] = None,
quantization_level: Optional[str] = None
) -> pd.DataFrame:
"""Filter leaderboard data based on criteria."""
try:
df = data_manager.leaderboard_data.copy()
if df.empty:
logger.warning("Leaderboard data is empty, returning empty DataFrame")
return pd.DataFrame()
if family:
df = df[df["family"] == family]
if quantization_level:
df = df[df["quantization_level"] == quantization_level]
return df.sort_values("score", ascending=False)
except Exception as e:
logger.error(f"Error filtering leaderboard: {e}")
return pd.DataFrame()
def search_responses(query: str, model: str) -> pd.DataFrame:
"""Search model responses based on query."""
try:
if not query or not model:
return pd.DataFrame()
df = data_manager.responses_data
if df.empty:
logger.warning("Responses data is empty, returning empty DataFrame")
return pd.DataFrame()
# Check if model column exists
model_column = f"{model}_cevap"
if model_column not in df.columns:
logger.warning(f"Model column '{model_column}' not found in responses data")
return pd.DataFrame({"error": [f"Model '{model}' responses not found"]})
filtered = df[
df["bolum"].str.contains(query, case=False, na=False)
]
selected_columns = ["bolum", "soru", "cevap", model_column]
return filtered[selected_columns].dropna()
except Exception as e:
logger.error(f"Error searching responses: {e}")
return pd.DataFrame({"error": [f"Error: {str(e)}"]})
def plot_section_results() -> plt.Figure:
"""Generate section results plot."""
try:
df = data_manager.section_results_data
if df.empty:
logger.warning("Section results data is empty, returning empty plot")
fig, ax = plt.subplots(figsize=(12, 6))
ax.text(0.5, 0.5, "No data available", ha='center', va='center', fontsize=14)
ax.set_title("Section-Wise Performance", pad=20)
plt.tight_layout()
return fig
fig, ax = plt.subplots(figsize=(12, 6))
avg_scores = df.mean(numeric_only=True)
bars = avg_scores.plot(kind="bar", ax=ax)
# Customize plot
ax.set_title("Average Section-Wise Performance", pad=20)
ax.set_ylabel("Accuracy (%)")
ax.set_xlabel("Sections")
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
# Add value labels
for i, v in enumerate(avg_scores):
ax.text(i, v, f'{v:.1f}%', ha='center', va='bottom')
return fig
except Exception as e:
logger.error(f"Error plotting section results: {e}")
fig, ax = plt.subplots(figsize=(12, 6))
ax.text(0.5, 0.5, f"Error generating plot: {str(e)}", ha='center', va='center', fontsize=12)
plt.tight_layout()
return fig
def validate_model_submission(
model_name: str,
base_model: str,
revision: str,
precision: str,
weight_type: str,
model_type: str
) -> tuple[bool, str]:
"""Validate model submission parameters."""
try:
if not all([model_name, base_model]):
return False, "Model name and base model are required."
# Check if leaderboard data is available
if not data_manager.leaderboard_data.empty:
if model_name in data_manager.leaderboard_data["model"].values:
return False, "Model name already exists."
return True, "Validation successful"
except Exception as e:
logger.error(f"Error validating model submission: {e}")
return False, f"Validation error: {str(e)}" |