|
|
|
|
|
""" |
|
|
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() |
|
|
|