cgeorgiaw's picture
cgeorgiaw HF Staff
trying to visualize
f2bcfea
import pathlib
from pathlib import Path
import tempfile
from typing import BinaryIO, Literal
import json
import pandas as pd
import gradio as gr
from huggingface_hub import upload_file, hf_hub_download
from evaluation import evaluate_problem
from datetime import datetime
import os
from about import PROBLEM_TYPES, TOKEN, CACHE_PATH, API, submissions_repo, results_repo
def make_user_clickable(name):
link =f'https://huggingface.co/{name}'
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{name}</a>'
def make_boundary_clickable(filename):
link =f'https://huggingface.co/datasets/proxima-fusion/constellaration-bench-results/blob/main/{filename}'
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">link</a>'
def read_result_from_hub(filename):
local_path = hf_hub_download(
repo_id=results_repo,
repo_type="dataset",
filename=filename,
)
return local_path
def read_submission_from_hub(filename):
local_path = hf_hub_download(
repo_id=submissions_repo,
repo_type="dataset",
filename=filename,
)
return local_path
def write_results(record, result):
record.update(result)
record['result_filename'] = record['submission_filename'].rstrip('.json') + '_results.json'
print(record['result_filename'])
record['evaluated'] = True
record["objectives"] = json.dumps(record.get("objectives", []))
record["feasibilities"] = json.dumps(record.get("feasibility", []))
if 'objective' not in record.keys():
record['objective'] = 0.0
record['minimize_objective'] = True
record['feasibility'] = sum(record['feasibility'])/len(record['feasibility'])
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as tmp:
json.dump(record, tmp, indent=2)
tmp.flush()
tmp_name = tmp.name
API.upload_file(
path_or_fileobj=tmp_name,
path_in_repo=record['result_filename'],
repo_id=results_repo,
repo_type="dataset",
commit_message=f"Add result data for {record['result_filename']}"
)
pathlib.Path(tmp_name).unlink()
return
def get_user(profile: gr.OAuthProfile | None) -> str:
if profile is None:
return "Please login to submit a boundary for evaluation."
return profile.username