Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions scripts/visualizer.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import math
import os
import json
import glob
import logging
import shutil
import re as _re
from numbers import Number
from typing import Optional, Any

from flask import Flask, render_template, render_template_string, jsonify


Expand Down Expand Up @@ -60,6 +64,7 @@ def load_evolution_data(checkpoint_folder):
if os.path.exists(prog_path):
with open(prog_path) as pf:
prog = json.load(pf)
sanitize_program_for_visualization(prog)
prog["id"] = pid
prog["island"] = island_idx
nodes.append(prog)
Expand All @@ -81,6 +86,18 @@ def load_evolution_data(checkpoint_folder):
"checkpoint_dir": checkpoint_folder,
}

def sanitize_program_for_visualization(program: dict[str, Any]) -> None:
for k, v in program["metrics"].items():
if not check_json_float(v):
program["metrics"][k] = None
if "parent_metrics" in program["metadata"]:
for k, v in program["metadata"]["parent_metrics"].items():
if not check_json_float(v):
program["metadata"]["parent_metrics"][k] = None

def check_json_float(v: Optional[float]) -> bool:
return isinstance(v, Number) and not (math.isinf(v) or math.isnan(v))


@app.route("/")
def index():
Expand Down