From 8e0a7e3f26121953c4cfccc6bcca5c96fe32f6b3 Mon Sep 17 00:00:00 2001 From: TPTBusiness Date: Sat, 4 Apr 2026 21:59:30 +0200 Subject: [PATCH] feat: Save factor results immediately after each evaluation - Add save_single_result() function - Call it after each factor evaluation (not just at end) - Results now appear in results/factors/ in real-time Usage: python predix_full_eval.py --all --parallel 4 --- predix_full_eval.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/predix_full_eval.py b/predix_full_eval.py index 7c866693..df24e674 100644 --- a/predix_full_eval.py +++ b/predix_full_eval.py @@ -335,6 +335,10 @@ def run_evaluation( n_success = sum(1 for r in results if r.status == "success") n_fail = sum(1 for r in results if r.status == "failed") + + # Save immediately after each factor + save_single_result(result) + progress.update( task, advance=1, @@ -350,6 +354,15 @@ def run_evaluation( FACTORS_DIR = RESULTS_DIR / "factors" FACTORS_DIR.mkdir(parents=True, exist_ok=True) +def save_single_result(r: EvalResult) -> None: + """Save a single factor result to results/factors/.""" + if r.status != "success": + return + safe_name = r.factor_name.replace("/", "_").replace("\\", "_").replace(" ", "_")[:100] + json_path = FACTORS_DIR / f"{safe_name}.json" + with open(json_path, "w", encoding="utf-8") as f: + json.dump(r.to_dict(), f, indent=2, default=str) + def save_results(results: List[EvalResult]) -> None: """Save evaluation results to JSON and SQLite.""" successful = [r for r in results if r.status == "success"]