(output_dir: Path, rows: List[Dict[str, Any]], episode_rows: List[Dict[str, Any]])
| 815 | |
| 816 | |
| 817 | def write_evaluation(output_dir: Path, rows: List[Dict[str, Any]], episode_rows: List[Dict[str, Any]]) -> Dict[str, Any]: |
| 818 | grouped = group_by_episode(rows) |
| 819 | episode_metrics = { |
| 820 | episode_id: eval_metrics.evaluate_episode(episode_group, [5, 10, 20]) |
| 821 | for episode_id, episode_group in grouped.items() |
| 822 | if episode_id |
| 823 | } |
| 824 | summary = eval_metrics.aggregate_metrics(episode_metrics, [5, 10, 20]) |
| 825 | dataset_summary = eval_metrics.build_dataset_summary(rows, episode_rows) |
| 826 | result = { |
| 827 | "summary": summary, |
| 828 | "dataset_summary": dataset_summary, |
| 829 | "episodes": episode_metrics, |
| 830 | } |
| 831 | (output_dir / "evaluation_metrics.json").write_text( |
| 832 | json.dumps(result, ensure_ascii=False, indent=2), |
| 833 | encoding="utf-8", |
| 834 | ) |
| 835 | (output_dir / "dataset_summary.json").write_text( |
| 836 | json.dumps(dataset_summary, ensure_ascii=False, indent=2), |
| 837 | encoding="utf-8", |
| 838 | ) |
| 839 | (output_dir / "dataset_summary.md").write_text( |
| 840 | eval_metrics.build_dataset_summary_markdown(dataset_summary), |
| 841 | encoding="utf-8", |
| 842 | ) |
| 843 | (output_dir / "main_experiment_table_top20.md").write_text( |
| 844 | eval_metrics.build_main_experiment_table(summary, METHOD_NAME), |
| 845 | encoding="utf-8", |
| 846 | ) |
| 847 | (output_dir / "case_metrics_table_top20.md").write_text( |
| 848 | eval_metrics.build_case_metrics_table(summary, METHOD_NAME), |
| 849 | encoding="utf-8", |
| 850 | ) |
| 851 | return result |
| 852 | |
| 853 | |
| 854 | def run_baseline( |
no test coverage detected