Buckets:
tahamajs/Sysmem2_in_AI / ComputerAssignments /CA14_multi_agent_reasoning /scripts /analyze_results.py
| #!/usr/bin/env python3 | |
| import json | |
| import os | |
| import sys | |
| from pathlib import Path | |
| import matplotlib.pyplot as plt | |
| import seaborn as sns | |
| import pandas as pd | |
| def load_results(results_dir): | |
| results = {} | |
| for arch_dir in Path(results_dir).glob("*/"): | |
| if arch_dir.is_dir(): | |
| arch_name = arch_dir.name | |
| results_file = arch_dir / "demonstration_results.json" | |
| if results_file.exists(): | |
| with open(results_file, 'r') as f: | |
| results[arch_name] = json.load(f) | |
| return results | |
| def generate_performance_plots(results, output_dir): | |
| architectures = [] | |
| success_rates = [] | |
| execution_times = [] | |
| reasoning_qualities = [] | |
| for arch_name, arch_results in results.items(): | |
| if "performance_summary" in arch_results: | |
| perf = arch_results["performance_summary"] | |
| architectures.append(arch_name) | |
| success_rates.append(perf["success_rate"]) | |
| execution_times.append(perf["avg_execution_time"]) | |
| reasoning_qualities.append(perf["avg_reasoning_quality"]) | |
| fig, axes = plt.subplots(2, 2, figsize=(15, 10)) | |
| fig.suptitle('Language Agent Architecture Performance Comparison', fontsize=16) | |
| axes[0, 0].bar(architectures, success_rates, color='skyblue') | |
| axes[0, 0].set_title('Success Rate') | |
| axes[0, 0].set_ylabel('Success Rate') | |
| axes[0, 0].set_ylim(0, 1) | |
| axes[0, 1].bar(architectures, execution_times, color='lightcoral') | |
| axes[0, 1].set_title('Average Execution Time') | |
| axes[0, 1].set_ylabel('Time (seconds)') | |
| axes[1, 0].bar(architectures, reasoning_qualities, color='lightgreen') | |
| axes[1, 0].set_title('Average Reasoning Quality') | |
| axes[1, 0].set_ylabel('Quality Score') | |
| axes[1, 0].set_ylim(0, 1) | |
| x = range(len(architectures)) | |
| width = 0.25 | |
| axes[1, 1].bar([i - width for i in x], success_rates, width, label='Success Rate', alpha=0.8) | |
| axes[1, 1].bar(x, [q for q in reasoning_qualities], width, label='Reasoning Quality', alpha=0.8) | |
| axes[1, 1].set_title('Combined Performance Metrics') | |
| axes[1, 1].set_ylabel('Score') | |
| axes[1, 1].set_xticks(x) | |
| axes[1, 1].set_xticklabels(architectures) | |
| axes[1, 1].legend() | |
| plt.tight_layout() | |
| plt.savefig(output_dir / 'performance_comparison.png', dpi=300, bbox_inches='tight') | |
| plt.close() | |
| print(f"Performance plots saved to {output_dir / 'performance_comparison.png'}") | |
| def generate_summary_report(results, output_dir): | |
| report = { | |
| "summary": { | |
| "total_architectures": len(results), | |
| "timestamp": pd.Timestamp.now().isoformat() | |
| }, | |
| "architectures": {} | |
| } | |
| for arch_name, arch_results in results.items(): | |
| if "performance_summary" in arch_results: | |
| perf = arch_results["performance_summary"] | |
| report["architectures"][arch_name] = { | |
| "success_rate": perf["success_rate"], | |
| "avg_execution_time": perf["avg_execution_time"], | |
| "avg_reasoning_quality": perf["avg_reasoning_quality"], | |
| "total_tests": perf["total_tests"] | |
| } | |
| with open(output_dir / 'summary_report.json', 'w') as f: | |
| json.dump(report, f, indent=2) | |
| print(f"Summary report saved to {output_dir / 'summary_report.json'}") | |
| def main(): | |
| results_dir = Path("results") | |
| plots_dir = results_dir / "plots" | |
| reports_dir = results_dir / "reports" | |
| plots_dir.mkdir(exist_ok=True) | |
| reports_dir.mkdir(exist_ok=True) | |
| results = load_results(results_dir) | |
| if not results: | |
| print("No results found!") | |
| return | |
| generate_performance_plots(results, plots_dir) | |
| generate_summary_report(results, reports_dir) | |
| print("Analysis completed successfully!") | |
| if __name__ == "__main__": | |
| main() | |
Xet Storage Details
- Size:
- 3.93 kB
- Xet hash:
- c0fcdc45de82d6c608dd9eb8ce6d43236079d9c253994c0140b0cfdbe9fba194
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.