Skip to content

Commit 43845f9

Browse files
authored
Method Comparison: Improve formatting/layout of table (#2670)
* Method Comparison: Improve formatting/layout of table Quick improvement to reduce the dominance of columns like `{peft,train}_config` and make numbers a bit more readable through proper decimal/thousands formatting. * Bump gradio version to accomodate required fixes
1 parent 663b120 commit 43845f9

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

method_comparison/app.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ def export_csv(df):
181181
return tmp_path
182182

183183

184+
def format_df(df):
185+
return df.style.format(precision=3, thousands=",", decimal=".")
186+
187+
184188
def build_app(df):
185189
with gr.Blocks(theme=gr.themes.Soft()) as demo:
186190
gr.Markdown("# PEFT method comparison")
@@ -202,7 +206,20 @@ def build_app(df):
202206
label="Select Model ID", choices=get_model_ids(sorted(df["task_name"].unique())[0], df)
203207
)
204208

205-
data_table = gr.DataFrame(label="Results", value=df, interactive=False)
209+
# Make dataframe columns all equal in width so that they are good enough for numbers but don't
210+
# get hugely extended by columns like `train_config`.
211+
column_widths = ["150px" for _ in df.columns]
212+
column2index = dict(zip(df.columns, range(len(df.columns))))
213+
column_widths[column2index['experiment_name']] = '300px'
214+
215+
data_table = gr.DataFrame(
216+
label="Results",
217+
value=format_df(df),
218+
interactive=False,
219+
max_chars=100,
220+
wrap=False,
221+
column_widths=column_widths,
222+
)
206223

207224
with gr.Row():
208225
filter_textbox = gr.Textbox(
@@ -256,7 +273,7 @@ def update_on_task(task_name, current_filter):
256273
except Exception:
257274
# invalid filter query
258275
pass
259-
return gr.update(choices=new_models, value=new_models[0] if new_models else None), filtered
276+
return gr.update(choices=new_models, value=new_models[0] if new_models else None), format_df(filtered)
260277

261278
task_dropdown.change(
262279
fn=update_on_task, inputs=[task_dropdown, filter_state], outputs=[model_dropdown, data_table]
@@ -270,7 +287,7 @@ def update_on_model(task_name, model_id, current_filter):
270287
filtered = filtered[mask]
271288
except Exception:
272289
pass
273-
return filtered
290+
return format_df(filtered)
274291

275292
model_dropdown.change(
276293
fn=update_on_model, inputs=[task_dropdown, model_dropdown, filter_state], outputs=data_table
@@ -315,7 +332,7 @@ def apply_filter(filter_query, task_name, model_id, metric_x, metric_y):
315332
pareto_df = compute_pareto_frontier(filtered, metric_x, metric_y)
316333
fig = generate_pareto_plot(filtered, metric_x, metric_y)
317334
summary = compute_pareto_summary(filtered, pareto_df, metric_x, metric_y)
318-
return filter_query, filtered, fig, summary
335+
return filter_query, format_df(filtered), fig, summary
319336

320337
apply_filter_button.click(
321338
fn=apply_filter,
@@ -329,7 +346,7 @@ def reset_filter(task_name, model_id, metric_x, metric_y):
329346
fig = generate_pareto_plot(filtered, metric_x, metric_y)
330347
summary = compute_pareto_summary(filtered, pareto_df, metric_x, metric_y)
331348
# Return empty strings to clear the filter state and textbox.
332-
return "", "", filtered, fig, summary
349+
return "", "", format_df(filtered), fig, summary
333350

334351
reset_filter_button.click(
335352
fn=reset_filter,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
dash
2-
gradio>=5.21.0
2+
gradio>=5.38.0
33
pandas

0 commit comments

Comments
 (0)