| |
| """ |
| Simple script to show successful and failed expressions without encoding issues. |
| """ |
|
|
| import json |
| import sys |
|
|
| def main(): |
| |
| with open("debug_expressions.json", "r") as f: |
| data = json.load(f) |
|
|
| all_expressions = data["all_expressions"] |
|
|
| |
| valid_exprs = [e for e in all_expressions if e["is_valid"]] |
| invalid_exprs = [e for e in all_expressions if not e["is_valid"]] |
|
|
| |
| valid_exprs.sort(key=lambda x: x["r2"], reverse=True) |
|
|
| print("="*80) |
| print("EXPRESSION ANALYSIS") |
| print("="*80) |
| print() |
| print(f"Total expressions: {len(all_expressions)}") |
| print(f"Valid: {len(valid_exprs)} ({100*len(valid_exprs)/len(all_expressions):.1f}%)") |
| print(f"Invalid: {len(invalid_exprs)} ({100*len(invalid_exprs)/len(all_expressions):.1f}%)") |
| print() |
|
|
| |
| print("="*80) |
| print("TOP 10 VALID EXPRESSIONS (by R2)") |
| print("="*80) |
| print() |
| for i, expr in enumerate(valid_exprs[:10], 1): |
| r2 = expr["r2"] |
| expr_str = expr["expression"] |
| print(f"{i:2d}. R2={r2:7.4f} | {expr_str}") |
| print() |
|
|
| |
| print("="*80) |
| print("BOTTOM 10 VALID EXPRESSIONS (by R2)") |
| print("="*80) |
| print() |
| for i, expr in enumerate(valid_exprs[-10:], 1): |
| r2 = expr["r2"] |
| expr_str = expr["expression"] |
| print(f"{i:2d}. R2={r2:7.4f} | {expr_str}") |
| print() |
|
|
| |
| print("="*80) |
| print("INVALID EXPRESSIONS BY TYPE") |
| print("="*80) |
| print() |
|
|
| error_types = {} |
| for e in invalid_exprs: |
| et = e.get("error_type", "unknown") |
| if et not in error_types: |
| error_types[et] = [] |
| error_types[et].append(e) |
|
|
| for error_type, exprs in sorted(error_types.items(), key=lambda x: -len(x[1])): |
| print(f"{error_type}: {len(exprs)} cases") |
| print(f" Examples:") |
| for expr in exprs[:3]: |
| expr_str = expr["expression"][:70] |
| print(f" - {expr_str}") |
| print() |
|
|
| if __name__ == "__main__": |
| main() |
|
|