Spaces:
Runtime error
Runtime error
Added table with tournament results for selected model
Browse files
app.py
CHANGED
@@ -143,11 +143,23 @@ def fetch_model_detail(submission_id):
|
|
143 |
gr.update(value=metadata['link_to_model'], visible=True)
|
144 |
)
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
def change_leaderboard_category(category):
|
147 |
if category == leaderboard_server.TASKS_CATEGORY_OVERALL:
|
148 |
task_abbreviation_legend = gr.update(
|
149 |
visible=False,
|
150 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
else:
|
152 |
task_abbreviation_legend_body = []
|
153 |
|
@@ -159,6 +171,12 @@ def change_leaderboard_category(category):
|
|
159 |
value=task_abbreviation_legend_body,
|
160 |
visible=True,
|
161 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
|
163 |
return (
|
164 |
gr.update(
|
@@ -167,6 +185,8 @@ def change_leaderboard_category(category):
|
|
167 |
datatype="markdown",
|
168 |
),
|
169 |
task_abbreviation_legend,
|
|
|
|
|
170 |
)
|
171 |
|
172 |
def show_modal():
|
@@ -292,10 +312,45 @@ with gr.Blocks(theme=gr.themes.Soft(text_size=text_md), css=custom_css) as main:
|
|
292 |
elem_classes="leaderboard-table-legend",
|
293 |
)
|
294 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
category_of_tasks.change(
|
296 |
fn=change_leaderboard_category,
|
297 |
inputs=category_of_tasks,
|
298 |
-
outputs=[
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
)
|
300 |
|
301 |
with gr.TabItem('Model details'):
|
|
|
143 |
gr.update(value=metadata['link_to_model'], visible=True)
|
144 |
)
|
145 |
|
146 |
+
def fetch_model_tournament_results_table(submission_id, category):
|
147 |
+
return gr.update(
|
148 |
+
value=leaderboard_server.get_model_tournament_table(submission_id, category),
|
149 |
+
visible=True,
|
150 |
+
)
|
151 |
+
|
152 |
def change_leaderboard_category(category):
|
153 |
if category == leaderboard_server.TASKS_CATEGORY_OVERALL:
|
154 |
task_abbreviation_legend = gr.update(
|
155 |
visible=False,
|
156 |
)
|
157 |
+
tournament_results_dropdown = gr.update(
|
158 |
+
visible=False,
|
159 |
+
)
|
160 |
+
model_tournament_results_table = gr.update(
|
161 |
+
visible=False,
|
162 |
+
)
|
163 |
else:
|
164 |
task_abbreviation_legend_body = []
|
165 |
|
|
|
171 |
value=task_abbreviation_legend_body,
|
172 |
visible=True,
|
173 |
)
|
174 |
+
|
175 |
+
tournament_results_dropdown = gr.update(
|
176 |
+
visible=True,
|
177 |
+
)
|
178 |
+
|
179 |
+
model_tournament_results_table = gr.update()
|
180 |
|
181 |
return (
|
182 |
gr.update(
|
|
|
185 |
datatype="markdown",
|
186 |
),
|
187 |
task_abbreviation_legend,
|
188 |
+
tournament_results_dropdown,
|
189 |
+
model_tournament_results_table,
|
190 |
)
|
191 |
|
192 |
def show_modal():
|
|
|
312 |
elem_classes="leaderboard-table-legend",
|
313 |
)
|
314 |
|
315 |
+
with gr.Row():
|
316 |
+
gr.Markdown("## Tournament results for selected model")
|
317 |
+
|
318 |
+
with leaderboard_server.var_lock.ro:
|
319 |
+
tournament_results_dropdown = gr.Dropdown(
|
320 |
+
value=None,
|
321 |
+
choices=leaderboard_server.submission_ids, # TODO: team_name/model_name
|
322 |
+
label="Select model",
|
323 |
+
visible=False,
|
324 |
+
interactive=True,
|
325 |
+
)
|
326 |
+
|
327 |
+
model_tournament_results_table = gr.DataFrame(
|
328 |
+
value=None,
|
329 |
+
datatype="markdown",
|
330 |
+
label="The model won against…",
|
331 |
+
visible=False,
|
332 |
+
interactive=False,
|
333 |
+
elem_classes="leaderboard-table-model-details",
|
334 |
+
)
|
335 |
+
|
336 |
category_of_tasks.change(
|
337 |
fn=change_leaderboard_category,
|
338 |
inputs=category_of_tasks,
|
339 |
+
outputs=[
|
340 |
+
results_table,
|
341 |
+
results_table_legend,
|
342 |
+
tournament_results_dropdown,
|
343 |
+
model_tournament_results_table,
|
344 |
+
],
|
345 |
+
)
|
346 |
+
|
347 |
+
tournament_results_dropdown.change(
|
348 |
+
fn=fetch_model_tournament_results_table,
|
349 |
+
inputs=[
|
350 |
+
tournament_results_dropdown,
|
351 |
+
category_of_tasks,
|
352 |
+
],
|
353 |
+
outputs=model_tournament_results_table,
|
354 |
)
|
355 |
|
356 |
with gr.TabItem('Model details'):
|
server.py
CHANGED
@@ -214,6 +214,50 @@ class LeaderboardServer:
|
|
214 |
self.submission_ids.add(submission_id)
|
215 |
self.submission_id_to_file[submission_id] = submission_file
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
def get_leaderboard(self, pre_submit=None, category=None):
|
218 |
with self.var_lock.ro:
|
219 |
tournament_results = pre_submit.tournament_results if pre_submit else self.tournament_results
|
|
|
214 |
self.submission_ids.add(submission_id)
|
215 |
self.submission_id_to_file[submission_id] = submission_file
|
216 |
|
217 |
+
def get_model_tournament_table(self, submission_id, category):
|
218 |
+
if category == self.TASKS_CATEGORY_OVERALL:
|
219 |
+
return None
|
220 |
+
|
221 |
+
model_tournament_table = []
|
222 |
+
match_results = {}
|
223 |
+
|
224 |
+
with self.var_lock.ro:
|
225 |
+
for competitor_id in self.tournament_results[submission_id].keys() - {submission_id}: # without self
|
226 |
+
match_results["competitor_id"] = competitor_id
|
227 |
+
for task in self.tournament_results[submission_id][competitor_id]:
|
228 |
+
task_category = self.TASKS_METADATA[task]["category"]
|
229 |
+
if task_category == category:
|
230 |
+
match_results[task] = bool(self.tournament_results[submission_id][competitor_id][task])
|
231 |
+
|
232 |
+
model_tournament_table.append(match_results)
|
233 |
+
|
234 |
+
dataframe = pd.DataFrame.from_records(model_tournament_table)
|
235 |
+
|
236 |
+
extra_attributes_map_word_to_header = {
|
237 |
+
"competitor_id": "Competitor",
|
238 |
+
}
|
239 |
+
first_attributes = [
|
240 |
+
"competitor_id",
|
241 |
+
]
|
242 |
+
df_order = [
|
243 |
+
key
|
244 |
+
for key in dict.fromkeys(
|
245 |
+
first_attributes
|
246 |
+
+ sorted(
|
247 |
+
list(self.TASKS_METADATA.keys())
|
248 |
+
+ list(dataframe.columns)
|
249 |
+
)
|
250 |
+
).keys()
|
251 |
+
if key in dataframe.columns
|
252 |
+
]
|
253 |
+
dataframe = dataframe[df_order]
|
254 |
+
attributes_map_word_to_header = {key: value["abbreviation"] for key, value in self.TASKS_METADATA.items()}
|
255 |
+
attributes_map_word_to_header.update(extra_attributes_map_word_to_header)
|
256 |
+
dataframe = dataframe.rename(
|
257 |
+
columns=attributes_map_word_to_header
|
258 |
+
)
|
259 |
+
return dataframe
|
260 |
+
|
261 |
def get_leaderboard(self, pre_submit=None, category=None):
|
262 |
with self.var_lock.ro:
|
263 |
tournament_results = pre_submit.tournament_results if pre_submit else self.tournament_results
|