(output_dir: Path, rows: List[Dict[str, Any]], episode_rows: List[Dict[str, Any]])
| 714 | |
| 715 | |
| 716 | def write_evaluation(output_dir: Path, rows: List[Dict[str, Any]], episode_rows: List[Dict[str, Any]]) -> Dict[str, Any]: |
| 717 | grouped = group_by_episode(rows) |
| 718 | episode_metrics = { |
| 719 | episode_id: eval_metrics.evaluate_episode(episode_group, [5, 10, 20]) |
| 720 | for episode_id, episode_group in grouped.items() |
| 721 | if episode_id |
| 722 | } |
| 723 | summary = eval_metrics.aggregate_metrics(episode_metrics, [5, 10, 20]) |
| 724 | dataset_summary = eval_metrics.build_dataset_summary(rows, episode_rows) |
| 725 | result = { |
| 726 | "summary": summary, |
| 727 | "dataset_summary": dataset_summary, |
| 728 | "episodes": episode_metrics, |
| 729 | } |
| 730 | (output_dir / "evaluation_metrics.json").write_text( |
| 731 | json.dumps(result, ensure_ascii=False, indent=2), |
| 732 | encoding="utf-8", |
| 733 | ) |
| 734 | (output_dir / "dataset_summary.json").write_text( |
| 735 | json.dumps(dataset_summary, ensure_ascii=False, indent=2), |
| 736 | encoding="utf-8", |
| 737 | ) |
| 738 | (output_dir / "dataset_summary.md").write_text( |
| 739 | eval_metrics.build_dataset_summary_markdown(dataset_summary), |
| 740 | encoding="utf-8", |
| 741 | ) |
| 742 | (output_dir / "main_experiment_table_top20.md").write_text( |
| 743 | eval_metrics.build_main_experiment_table(summary, METHOD_NAME), |
| 744 | encoding="utf-8", |
| 745 | ) |
| 746 | (output_dir / "case_metrics_table_top20.md").write_text( |
| 747 | eval_metrics.build_case_metrics_table(summary, METHOD_NAME), |
| 748 | encoding="utf-8", |
| 749 | ) |
| 750 | return result |
| 751 | |
| 752 | |
| 753 | def run_baseline( |
no test coverage detected