(scores)
| 980 | |
| 981 | |
| 982 | def calc_stats(scores): |
| 983 | if not scores: |
| 984 | return {} |
| 985 | |
| 986 | visual_structure_scores = [s['visual_structure_total'] for s in scores] |
| 987 | execution_scores = [s['execution_quality_total'] for s in scores] |
| 988 | overall_scores = [s['overall_total_score'] for s in scores] |
| 989 | |
| 990 | total_count = len(scores) |
| 991 | code_executed_count = sum(1 for s in scores if s.get('execution_success', False)) |
| 992 | plot_generated_count = sum(1 for s in scores if s.get('plot_generated', False)) |
| 993 | |
| 994 | return { |
| 995 | 'count': total_count, |
| 996 | 'visual_structure_avg': sum(visual_structure_scores) / len(visual_structure_scores), |
| 997 | 'visual_structure_max': scores[0]['visual_structure_max'], |
| 998 | 'execution_quality_avg': sum(execution_scores) / len(execution_scores), |
| 999 | 'execution_quality_max': scores[0]['execution_quality_max'], |
| 1000 | 'overall_score_avg': sum(overall_scores) / len(overall_scores), |
| 1001 | 'overall_max_score': scores[0]['overall_max_score'], |
| 1002 | 'visual_structure_perfect_rate': sum(1 for s in visual_structure_scores if s == scores[0]['visual_structure_max']) / len(visual_structure_scores), |
| 1003 | 'execution_quality_perfect_rate': sum(1 for s in execution_scores if s == scores[0]['execution_quality_max']) / len(execution_scores), |
| 1004 | 'code_execution_rate': code_executed_count / total_count, |
| 1005 | 'plot_generation_rate': plot_generated_count / total_count, |
| 1006 | 'overall_success_rate': plot_generated_count / total_count, |
| 1007 | 'overall_percentage_avg': sum(s['overall_percentage'] for s in scores) / len(scores) if scores else 0 |
| 1008 | } |
| 1009 | |
| 1010 | execution_rates = { |
| 1011 | 'code_generation_rate': execution_stats['code_generated'] / execution_stats['total_tasks'] if execution_stats['total_tasks'] > 0 else 0, |
no outgoing calls
no test coverage detected