(scores)
| 1012 | |
| 1013 | |
| 1014 | def calc_stats(scores): |
| 1015 | if not scores: |
| 1016 | return {} |
| 1017 | |
| 1018 | visual_structure_scores = [s['visual_structure_total'] for s in scores] |
| 1019 | execution_scores = [s['execution_quality_total'] for s in scores] |
| 1020 | overall_scores = [s['overall_total_score'] for s in scores] |
| 1021 | |
| 1022 | total_count = len(scores) |
| 1023 | code_executed_count = sum(1 for s in scores if s.get('execution_success', False)) |
| 1024 | plot_generated_count = sum(1 for s in scores if s.get('plot_generated', False)) |
| 1025 | |
| 1026 | return { |
| 1027 | 'count': total_count, |
| 1028 | 'visual_structure_avg': sum(visual_structure_scores) / len(visual_structure_scores), |
| 1029 | 'visual_structure_max': scores[0]['visual_structure_max'], |
| 1030 | 'execution_quality_avg': sum(execution_scores) / len(execution_scores), |
| 1031 | 'execution_quality_max': scores[0]['execution_quality_max'], |
| 1032 | 'overall_score_avg': sum(overall_scores) / len(overall_scores), |
| 1033 | 'overall_max_score': scores[0]['overall_max_score'], |
| 1034 | 'visual_structure_perfect_rate': sum(1 for s in visual_structure_scores if s == scores[0]['visual_structure_max']) / len(visual_structure_scores), |
| 1035 | 'execution_quality_perfect_rate': sum(1 for s in execution_scores if s == scores[0]['execution_quality_max']) / len(execution_scores), |
| 1036 | 'code_execution_rate': code_executed_count / total_count, |
| 1037 | 'plot_generation_rate': plot_generated_count / total_count, |
| 1038 | 'overall_success_rate': plot_generated_count / total_count, |
| 1039 | 'overall_percentage_avg': sum(s['overall_percentage'] for s in scores) / len(scores) if scores else 0 |
| 1040 | } |
| 1041 | |
| 1042 | execution_rates = { |
| 1043 | '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