weird update
Browse files- app.py +24 -24
- src/populate.py +1 -1
app.py
CHANGED
@@ -79,6 +79,8 @@ def init_leaderboard(dataframe):
|
|
79 |
dataframe = pd.DataFrame(columns=columns)
|
80 |
logger.warning("Initializing empty leaderboard")
|
81 |
|
|
|
|
|
82 |
return Leaderboard(
|
83 |
value=dataframe,
|
84 |
datatype=[getattr(GUARDBENCH_COLUMN, col).type for col in DISPLAY_COLS],
|
@@ -93,6 +95,7 @@ def init_leaderboard(dataframe):
|
|
93 |
ColumnFilter(GUARDBENCH_COLUMN.model_type.name, type="checkboxgroup", label="Model types"),
|
94 |
],
|
95 |
interactive=False,
|
|
|
96 |
)
|
97 |
|
98 |
|
@@ -151,28 +154,24 @@ def submit_results(
|
|
151 |
|
152 |
def refresh_data(version=CURRENT_VERSION):
|
153 |
"""
|
154 |
-
Refresh the leaderboard data
|
155 |
"""
|
156 |
-
global LEADERBOARD_DF
|
157 |
try:
|
158 |
-
logger.info(f"Performing scheduled refresh of leaderboard data
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
except Exception as e:
|
170 |
logger.error(f"Error in scheduled refresh: {e}")
|
171 |
-
|
172 |
-
|
173 |
-
columns = [getattr(GUARDBENCH_COLUMN, col).name for col in DISPLAY_COLS]
|
174 |
-
LEADERBOARD_DF = pd.DataFrame(columns=columns)
|
175 |
-
return LEADERBOARD_DF
|
176 |
|
177 |
|
178 |
def update_leaderboards(version):
|
@@ -300,7 +299,7 @@ with demo:
|
|
300 |
with tabs:
|
301 |
with gr.TabItem("🏅 Leaderboard", elem_id="guardbench-leaderboard-tab", id=0):
|
302 |
with gr.Row():
|
303 |
-
refresh_button = gr.Button("Refresh Leaderboard"
|
304 |
version_selector = gr.Dropdown(
|
305 |
choices=BENCHMARK_VERSIONS,
|
306 |
label="Benchmark Version",
|
@@ -314,20 +313,20 @@ with demo:
|
|
314 |
with gr.Tabs(elem_classes="category-tabs") as category_tabs:
|
315 |
# First tab for average metrics across all categories
|
316 |
with gr.TabItem("📊 Overall Performance", elem_id="overall-tab"):
|
|
|
317 |
leaderboard = init_leaderboard(LEADERBOARD_DF)
|
318 |
|
319 |
# Create a tab for each category
|
320 |
for category in CATEGORIES:
|
321 |
with gr.TabItem(f"{category}", elem_id=f"category-{category.lower().replace(' ', '-')}-tab"):
|
|
|
322 |
category_df = get_category_leaderboard_df(category, version=CURRENT_VERSION)
|
|
|
323 |
category_leaderboard = init_leaderboard(category_df)
|
324 |
|
325 |
# Refresh button functionality
|
326 |
refresh_button.click(
|
327 |
-
fn=
|
328 |
-
init_leaderboard(get_leaderboard_df(version=version_selector.value)),
|
329 |
-
*[init_leaderboard(get_category_leaderboard_df(category, version=version_selector.value)) for category in CATEGORIES]
|
330 |
-
],
|
331 |
inputs=[],
|
332 |
outputs=[leaderboard] + [category_tabs.children[i].children[0] for i in range(1, len(CATEGORIES) + 1)]
|
333 |
)
|
@@ -486,8 +485,9 @@ with demo:
|
|
486 |
Last updated: {pd.Timestamp.now().strftime("%Y-%m-%d %H:%M:%S UTC")}
|
487 |
""")
|
488 |
|
|
|
489 |
scheduler = BackgroundScheduler()
|
490 |
-
scheduler.add_job(
|
491 |
scheduler.start()
|
492 |
|
493 |
# Launch the app
|
|
|
79 |
dataframe = pd.DataFrame(columns=columns)
|
80 |
logger.warning("Initializing empty leaderboard")
|
81 |
|
82 |
+
print("\n\n", "dataframe", dataframe, "--------------------------------\n\n")
|
83 |
+
|
84 |
return Leaderboard(
|
85 |
value=dataframe,
|
86 |
datatype=[getattr(GUARDBENCH_COLUMN, col).type for col in DISPLAY_COLS],
|
|
|
95 |
ColumnFilter(GUARDBENCH_COLUMN.model_type.name, type="checkboxgroup", label="Model types"),
|
96 |
],
|
97 |
interactive=False,
|
98 |
+
render=True,
|
99 |
)
|
100 |
|
101 |
|
|
|
154 |
|
155 |
def refresh_data(version=CURRENT_VERSION):
|
156 |
"""
|
157 |
+
Refresh the leaderboard data and update all components.
|
158 |
"""
|
|
|
159 |
try:
|
160 |
+
logger.info(f"Performing scheduled refresh of leaderboard data...")
|
161 |
+
# Get new data
|
162 |
+
main_df = get_leaderboard_df(version=version)
|
163 |
+
category_dfs = [get_category_leaderboard_df(category, version=version) for category in CATEGORIES]
|
164 |
+
|
165 |
+
# For Leaderboard components, we need to return just the dataframes
|
166 |
+
# The component will handle the update internally
|
167 |
+
return dict(
|
168 |
+
value=main_df
|
169 |
+
), *[dict(value=df) for df in category_dfs]
|
170 |
+
|
171 |
except Exception as e:
|
172 |
logger.error(f"Error in scheduled refresh: {e}")
|
173 |
+
return dict(value=leaderboard.value), *[dict(value=tab.children[0].value)
|
174 |
+
for tab in category_tabs.children[1:]]
|
|
|
|
|
|
|
175 |
|
176 |
|
177 |
def update_leaderboards(version):
|
|
|
299 |
with tabs:
|
300 |
with gr.TabItem("🏅 Leaderboard", elem_id="guardbench-leaderboard-tab", id=0):
|
301 |
with gr.Row():
|
302 |
+
refresh_button = gr.Button("Refresh Leaderboard")
|
303 |
version_selector = gr.Dropdown(
|
304 |
choices=BENCHMARK_VERSIONS,
|
305 |
label="Benchmark Version",
|
|
|
313 |
with gr.Tabs(elem_classes="category-tabs") as category_tabs:
|
314 |
# First tab for average metrics across all categories
|
315 |
with gr.TabItem("📊 Overall Performance", elem_id="overall-tab"):
|
316 |
+
print("LEADERBOARD_DF", LEADERBOARD_DF)
|
317 |
leaderboard = init_leaderboard(LEADERBOARD_DF)
|
318 |
|
319 |
# Create a tab for each category
|
320 |
for category in CATEGORIES:
|
321 |
with gr.TabItem(f"{category}", elem_id=f"category-{category.lower().replace(' ', '-')}-tab"):
|
322 |
+
print("category DF", category)
|
323 |
category_df = get_category_leaderboard_df(category, version=CURRENT_VERSION)
|
324 |
+
print("category DF", category_df)
|
325 |
category_leaderboard = init_leaderboard(category_df)
|
326 |
|
327 |
# Refresh button functionality
|
328 |
refresh_button.click(
|
329 |
+
fn=refresh_data,
|
|
|
|
|
|
|
330 |
inputs=[],
|
331 |
outputs=[leaderboard] + [category_tabs.children[i].children[0] for i in range(1, len(CATEGORIES) + 1)]
|
332 |
)
|
|
|
485 |
Last updated: {pd.Timestamp.now().strftime("%Y-%m-%d %H:%M:%S UTC")}
|
486 |
""")
|
487 |
|
488 |
+
# Set up the scheduler to refresh data periodically
|
489 |
scheduler = BackgroundScheduler()
|
490 |
+
scheduler.add_job(refresh_data, 'interval', minutes=30)
|
491 |
scheduler.start()
|
492 |
|
493 |
# Launch the app
|
src/populate.py
CHANGED
@@ -192,7 +192,7 @@ def get_category_leaderboard_df(category: str, version="v0") -> pd.DataFrame:
|
|
192 |
"last_updated": leaderboard_data.get("last_updated", datetime.now().isoformat()),
|
193 |
"version": version
|
194 |
}
|
195 |
-
print(filtered_leaderboard)
|
196 |
|
197 |
# Convert to DataFrame
|
198 |
return leaderboard_to_dataframe(filtered_leaderboard)
|
|
|
192 |
"last_updated": leaderboard_data.get("last_updated", datetime.now().isoformat()),
|
193 |
"version": version
|
194 |
}
|
195 |
+
# print(filtered_leaderboard)
|
196 |
|
197 |
# Convert to DataFrame
|
198 |
return leaderboard_to_dataframe(filtered_leaderboard)
|