moved_repo_first_update

This commit is contained in:
rpotter6298
2026-02-24 10:39:48 +01:00
commit 9894a23f09
98 changed files with 35387 additions and 0 deletions
@@ -0,0 +1,101 @@
#!/usr/bin/env python3
from __future__ import annotations
import argparse
from pathlib import Path
from scripts.grid_search_analytics.derived_analysis import derived_analysis
def parse_args() -> argparse.Namespace:
ap = argparse.ArgumentParser(
description="Generate derived grid-search analytics artifacts (fusion/error + param-performance)."
)
ap.add_argument("--analysis-dir", default="analysis_data/grid_search")
ap.add_argument("--mode", choices=["binary", "multiclass"], default="multiclass")
ap.add_argument("--method", choices=["pearson", "spearman"], default="spearman")
ap.add_argument(
"--x-metric",
choices=["fusion_corrections", "fusion_corrections_per_opportunity"],
default="fusion_corrections_per_opportunity",
help="Fusion-correlation x-axis metric for summary bar plot.",
)
ap.add_argument(
"--cat-method",
choices=["eta", "anova", "kruskal"],
default="kruskal",
help="Categorical-test method for param-performance correlations.",
)
ap.add_argument("--top-n", type=int, default=None, help="Optional cap for per-run plots.")
ap.add_argument(
"--recompute",
action="store_true",
help="Recompute from run artifacts instead of preferring cached CSVs.",
)
ap.add_argument(
"--deep-scan",
action="store_true",
help="Scan nested directories instead of direct children only.",
)
return ap.parse_args()
def main() -> int:
args = parse_args()
analysis = derived_analysis(
Path(args.analysis_dir),
classification_mode=args.mode,
)
shallow = not args.deep_scan
existing = not args.recompute
analysis.identify_fusion_corrections(shallow=shallow, existing=existing)
analysis.populate_primary_metrics(shallow=shallow, existing=existing)
analysis.write_fusion_corrections()
analysis.write_fusion_errors()
analysis.write_primary_metrics()
analysis.plot_fusion_corrections_errors(
shallow=shallow, existing=existing, top_n=args.top_n
)
analysis.plot_conf_delta_boxplot(
shallow=shallow, existing=existing, top_n=args.top_n
)
corr_df = analysis.param_performance_correlations(
shallow=shallow,
existing=existing,
method=args.method,
cat_method=args.cat_method,
)
analysis.plot_param_perf_corr_panels(corr_df)
corr_acc = analysis.fusion_corrections_correlation(
method=args.method, metric_type="acc"
)
corr_auc = analysis.fusion_corrections_correlation(
method=args.method, metric_type="auc"
)
try:
analysis.plot_fusion_perf_summary(
corr_acc,
corr_auc,
method=args.method,
x_metric=args.x_metric,
)
except RuntimeError:
analysis.plot_fusion_perf_summary(
corr_acc,
corr_auc,
method=args.method,
x_metric="fusion_corrections",
)
print(f"Done. Outputs written under: {Path(args.analysis_dir) / 'plots'}")
return 0
if __name__ == "__main__":
raise SystemExit(main())