Added counts to the summary legend
Browse files- summary_page.py +41 -25
summary_page.py
CHANGED
|
@@ -38,15 +38,17 @@ LABEL_OFFSET = 1 # Distance of label from bar
|
|
| 38 |
FAILURE_RATE_FONT_SIZE = 28
|
| 39 |
|
| 40 |
|
| 41 |
-
def
|
| 42 |
"""Calculate overall failure rates for AMD and NVIDIA across all models."""
|
| 43 |
if df.empty or not available_models:
|
| 44 |
return 0.0, 0.0
|
| 45 |
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
|
|
|
|
|
|
| 50 |
|
| 51 |
for model_name in available_models:
|
| 52 |
if model_name not in df.index:
|
|
@@ -56,21 +58,16 @@ def calculate_overall_failure_rates(df: pd.DataFrame, available_models: list[str
|
|
| 56 |
amd_stats, nvidia_stats = extract_model_data(row)[:2]
|
| 57 |
|
| 58 |
# AMD totals
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
# NVIDIA totals
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
total_nvidia_failures += nvidia_stats['failed'] + nvidia_stats['error']
|
| 69 |
-
|
| 70 |
-
amd_failure_rate = (total_amd_failures / total_amd_tests * 100) if total_amd_tests > 0 else 0.0
|
| 71 |
-
nvidia_failure_rate = (total_nvidia_failures / total_nvidia_tests * 100) if total_nvidia_tests > 0 else 0.0
|
| 72 |
|
| 73 |
-
return
|
| 74 |
|
| 75 |
|
| 76 |
def draw_text_and_bar(
|
|
@@ -118,7 +115,12 @@ def create_summary_page(df: pd.DataFrame, available_models: list[str]) -> plt.Fi
|
|
| 118 |
return fig
|
| 119 |
|
| 120 |
# Calculate overall failure rates
|
| 121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
|
| 123 |
# Calculate dimensions for N-column layout
|
| 124 |
model_count = len(available_models)
|
|
@@ -181,6 +183,26 @@ def create_summary_page(df: pd.DataFrame, available_models: list[str]) -> plt.Fi
|
|
| 181 |
visible_model_count += 1
|
| 182 |
|
| 183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 184 |
# Add legend horizontally in bottom right corner
|
| 185 |
patch_height = 0.3
|
| 186 |
patch_width = 3
|
|
@@ -190,12 +212,6 @@ def create_summary_page(df: pd.DataFrame, available_models: list[str]) -> plt.Fi
|
|
| 190 |
legend_spacing = 10
|
| 191 |
legend_font_size = 15
|
| 192 |
|
| 193 |
-
# Add failure rate explanation text on the left
|
| 194 |
-
# explanation_text = "Failure rate = failed / (passed + failed)"
|
| 195 |
-
# ax.text(0, legend_y, explanation_text,
|
| 196 |
-
# ha='left', va='bottom', color='#CCCCCC',
|
| 197 |
-
# fontsize=legend_font_size, fontfamily='monospace', style='italic')
|
| 198 |
-
|
| 199 |
# Legend entries
|
| 200 |
legend_items = [
|
| 201 |
('passed', 'Passed'),
|
|
|
|
| 38 |
FAILURE_RATE_FONT_SIZE = 28
|
| 39 |
|
| 40 |
|
| 41 |
+
def get_overall_stats(df: pd.DataFrame, available_models: list[str]) -> tuple[list[int], list[int]]:
|
| 42 |
"""Calculate overall failure rates for AMD and NVIDIA across all models."""
|
| 43 |
if df.empty or not available_models:
|
| 44 |
return 0.0, 0.0
|
| 45 |
|
| 46 |
+
total_amd_passed = 0
|
| 47 |
+
total_amd_failed = 0
|
| 48 |
+
total_amd_skipped = 0
|
| 49 |
+
total_nvidia_passed = 0
|
| 50 |
+
total_nvidia_failed = 0
|
| 51 |
+
total_nvidia_skipped = 0
|
| 52 |
|
| 53 |
for model_name in available_models:
|
| 54 |
if model_name not in df.index:
|
|
|
|
| 58 |
amd_stats, nvidia_stats = extract_model_data(row)[:2]
|
| 59 |
|
| 60 |
# AMD totals
|
| 61 |
+
total_amd_passed += amd_stats['passed']
|
| 62 |
+
total_amd_failed += amd_stats['failed'] + amd_stats['error']
|
| 63 |
+
total_amd_skipped += amd_stats['skipped']
|
| 64 |
+
|
|
|
|
| 65 |
# NVIDIA totals
|
| 66 |
+
total_nvidia_passed += nvidia_stats['passed']
|
| 67 |
+
total_nvidia_failed += nvidia_stats['failed'] + nvidia_stats['error']
|
| 68 |
+
total_nvidia_skipped += nvidia_stats['skipped']
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
|
| 70 |
+
return [total_amd_passed, total_amd_failed, total_amd_skipped], [total_nvidia_passed, total_nvidia_failed, total_nvidia_skipped]
|
| 71 |
|
| 72 |
|
| 73 |
def draw_text_and_bar(
|
|
|
|
| 115 |
return fig
|
| 116 |
|
| 117 |
# Calculate overall failure rates
|
| 118 |
+
amd_counts, nvidia_counts = get_overall_stats(df, available_models)
|
| 119 |
+
|
| 120 |
+
amd_failure_rate = (amd_counts[1] / sum(amd_counts)) if sum(amd_counts) > 0 else 0.0
|
| 121 |
+
amd_failure_rate *= 100
|
| 122 |
+
nvidia_failure_rate = (nvidia_counts[1] / sum(nvidia_counts)) if sum(nvidia_counts) > 0 else 0.0
|
| 123 |
+
nvidia_failure_rate *= 100
|
| 124 |
|
| 125 |
# Calculate dimensions for N-column layout
|
| 126 |
model_count = len(available_models)
|
|
|
|
| 183 |
visible_model_count += 1
|
| 184 |
|
| 185 |
|
| 186 |
+
# Add AMD and NVIDIA test totals in the bottom left
|
| 187 |
+
# Calculate line spacing to align middle with legend
|
| 188 |
+
line_height = 0.4 # Height between lines
|
| 189 |
+
legend_y = max_y + 1
|
| 190 |
+
|
| 191 |
+
# Position the two lines so their middle aligns with legend_y
|
| 192 |
+
amd_y = legend_y - line_height / 2
|
| 193 |
+
nvidia_y = legend_y + line_height / 2
|
| 194 |
+
|
| 195 |
+
amd_totals_text = f"AMD Tests - Passed: {amd_counts[0]}, Failed: {amd_counts[1]}, Skipped: {amd_counts[2]}"
|
| 196 |
+
nvidia_totals_text = f"NVIDIA Tests - Passed: {nvidia_counts[0]}, Failed: {nvidia_counts[1]}, Skipped: {nvidia_counts[2]}"
|
| 197 |
+
|
| 198 |
+
ax.text(0, amd_y, amd_totals_text,
|
| 199 |
+
ha='left', va='bottom', color='#CCCCCC',
|
| 200 |
+
fontsize=14, fontfamily='monospace')
|
| 201 |
+
|
| 202 |
+
ax.text(0, nvidia_y, nvidia_totals_text,
|
| 203 |
+
ha='left', va='bottom', color='#CCCCCC',
|
| 204 |
+
fontsize=14, fontfamily='monospace')
|
| 205 |
+
|
| 206 |
# Add legend horizontally in bottom right corner
|
| 207 |
patch_height = 0.3
|
| 208 |
patch_width = 3
|
|
|
|
| 212 |
legend_spacing = 10
|
| 213 |
legend_font_size = 15
|
| 214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 215 |
# Legend entries
|
| 216 |
legend_items = [
|
| 217 |
('passed', 'Passed'),
|