reorg df
Browse files
app.py
CHANGED
|
@@ -14,7 +14,7 @@ import os
|
|
| 14 |
|
| 15 |
from submit import submit_boundary
|
| 16 |
from about import PROBLEM_TYPES, TOKEN, CACHE_PATH, API, submissions_repo, results_repo
|
| 17 |
-
from utils import read_boundary, write_results, get_user
|
| 18 |
from visualize import make_visual
|
| 19 |
|
| 20 |
def evaluate_boundary(filename):
|
|
@@ -23,25 +23,25 @@ def evaluate_boundary(filename):
|
|
| 23 |
with Path(local_path).open("r") as f:
|
| 24 |
raw = f.read()
|
| 25 |
data_dict = json.loads(raw)
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
write_results(data_dict, result)
|
| 29 |
return
|
| 30 |
|
| 31 |
-
def make_clickable(name):
|
| 32 |
-
link =f'https://huggingface.co/{name}'
|
| 33 |
-
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{name}</a>'
|
| 34 |
-
|
| 35 |
def get_leaderboard():
|
| 36 |
ds = load_dataset(results_repo, split='train')
|
| 37 |
-
|
|
|
|
| 38 |
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
|
| 43 |
-
|
| 44 |
-
return df
|
| 45 |
|
| 46 |
def show_output_box(message):
|
| 47 |
return gr.update(value=message, visible=True)
|
|
@@ -55,10 +55,10 @@ def gradio_interface() -> gr.Blocks:
|
|
| 55 |
|
| 56 |
Leaderboard(
|
| 57 |
value=get_leaderboard(),
|
| 58 |
-
datatype=['
|
| 59 |
select_columns=["submission time", "feasibility", "score", "problem type", "user"],
|
| 60 |
search_columns=["submission time", "score", "user"],
|
| 61 |
-
hide_columns=["result_filename", "submission_filename", "objective", "minimize_objective", "boundary_json", "evaluated"],
|
| 62 |
filter_columns=["problem type"],
|
| 63 |
every=60,
|
| 64 |
render=True
|
|
@@ -119,7 +119,6 @@ def gradio_interface() -> gr.Blocks:
|
|
| 119 |
problem_type = gr.Dropdown(PROBLEM_TYPES, label="Problem Type")
|
| 120 |
boundary_file = gr.File(label="Boundary JSON File (.json)")
|
| 121 |
|
| 122 |
-
boundary_file
|
| 123 |
submit_btn = gr.Button("Evaluate")
|
| 124 |
message = gr.Textbox(label="Status", lines=1, visible=False)
|
| 125 |
submit_btn.click(
|
|
|
|
| 14 |
|
| 15 |
from submit import submit_boundary
|
| 16 |
from about import PROBLEM_TYPES, TOKEN, CACHE_PATH, API, submissions_repo, results_repo
|
| 17 |
+
from utils import read_boundary, write_results, get_user, make_user_clickable, make_boundary_clickable
|
| 18 |
from visualize import make_visual
|
| 19 |
|
| 20 |
def evaluate_boundary(filename):
|
|
|
|
| 23 |
with Path(local_path).open("r") as f:
|
| 24 |
raw = f.read()
|
| 25 |
data_dict = json.loads(raw)
|
| 26 |
+
|
| 27 |
+
try:
|
| 28 |
+
result = evaluate_problem(data_dict['problem_type'], local_path)
|
| 29 |
+
except Exception as e:
|
| 30 |
+
raise gr.Error(f'Evaluation failed: {e}. No results written to results dataset.')
|
| 31 |
|
| 32 |
write_results(data_dict, result)
|
| 33 |
return
|
| 34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
def get_leaderboard():
|
| 36 |
ds = load_dataset(results_repo, split='train')
|
| 37 |
+
full_df = pd.DataFrame(ds)
|
| 38 |
+
full_df['full results'] = full_df['result_filename'].apply(lambda x: make_boundary_clickable(x)).astype(str)
|
| 39 |
|
| 40 |
+
full_df.rename(columns={'submission_time': 'submission time', 'problem_type': 'problem type'}, inplace=True)
|
| 41 |
+
to_show = full_df[['submission time', 'problem type', 'user', 'score', 'full results']]
|
| 42 |
+
to_show['user'] = to_show['user'].apply(lambda x: make_user_clickable(x)).astype(str)
|
| 43 |
|
| 44 |
+
return to_show
|
|
|
|
| 45 |
|
| 46 |
def show_output_box(message):
|
| 47 |
return gr.update(value=message, visible=True)
|
|
|
|
| 55 |
|
| 56 |
Leaderboard(
|
| 57 |
value=get_leaderboard(),
|
| 58 |
+
datatype=['date', 'str', 'html', 'number', 'html'],
|
| 59 |
select_columns=["submission time", "feasibility", "score", "problem type", "user"],
|
| 60 |
search_columns=["submission time", "score", "user"],
|
| 61 |
+
# hide_columns=["result_filename", "submission_filename", "objective", "minimize_objective", "boundary_json", "evaluated"],
|
| 62 |
filter_columns=["problem type"],
|
| 63 |
every=60,
|
| 64 |
render=True
|
|
|
|
| 119 |
problem_type = gr.Dropdown(PROBLEM_TYPES, label="Problem Type")
|
| 120 |
boundary_file = gr.File(label="Boundary JSON File (.json)")
|
| 121 |
|
|
|
|
| 122 |
submit_btn = gr.Button("Evaluate")
|
| 123 |
message = gr.Textbox(label="Status", lines=1, visible=False)
|
| 124 |
submit_btn.click(
|
utils.py
CHANGED
|
@@ -6,15 +6,21 @@ import json
|
|
| 6 |
import pandas as pd
|
| 7 |
|
| 8 |
import gradio as gr
|
| 9 |
-
from datasets import load_dataset, Dataset
|
| 10 |
from huggingface_hub import upload_file, hf_hub_download
|
| 11 |
-
from gradio_leaderboard import ColumnFilter, Leaderboard, SelectColumns
|
| 12 |
from evaluation import evaluate_problem
|
| 13 |
from datetime import datetime
|
| 14 |
import os
|
| 15 |
|
| 16 |
from about import PROBLEM_TYPES, TOKEN, CACHE_PATH, API, submissions_repo, results_repo
|
| 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
def read_boundary(filename):
|
| 19 |
local_path = hf_hub_download(
|
| 20 |
repo_id=submissions_repo,
|
|
@@ -35,7 +41,7 @@ def write_results(record, result):
|
|
| 35 |
if 'objective' not in record.keys():
|
| 36 |
record['objective'] = 0.0
|
| 37 |
record['minimize_objective'] = True
|
| 38 |
-
record['feasibility'] =
|
| 39 |
|
| 40 |
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as tmp:
|
| 41 |
json.dump(record, tmp, indent=2)
|
|
|
|
| 6 |
import pandas as pd
|
| 7 |
|
| 8 |
import gradio as gr
|
|
|
|
| 9 |
from huggingface_hub import upload_file, hf_hub_download
|
|
|
|
| 10 |
from evaluation import evaluate_problem
|
| 11 |
from datetime import datetime
|
| 12 |
import os
|
| 13 |
|
| 14 |
from about import PROBLEM_TYPES, TOKEN, CACHE_PATH, API, submissions_repo, results_repo
|
| 15 |
|
| 16 |
+
def make_user_clickable(name):
|
| 17 |
+
link =f'https://huggingface.co/{name}'
|
| 18 |
+
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{name}</a>'
|
| 19 |
+
|
| 20 |
+
def make_boundary_clickable(filename):
|
| 21 |
+
link =f'https://huggingface.co/datasets/proxima-fusion/constellaration-bench-results/blob/main/{filename}'
|
| 22 |
+
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">link</a>'
|
| 23 |
+
|
| 24 |
def read_boundary(filename):
|
| 25 |
local_path = hf_hub_download(
|
| 26 |
repo_id=submissions_repo,
|
|
|
|
| 41 |
if 'objective' not in record.keys():
|
| 42 |
record['objective'] = 0.0
|
| 43 |
record['minimize_objective'] = True
|
| 44 |
+
record['feasibility'] = sum(record['feasibility'])/len(record['feasibility'])
|
| 45 |
|
| 46 |
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as tmp:
|
| 47 |
json.dump(record, tmp, indent=2)
|