Tristan Thrush commited on
Commit
6be0e9c
1 Parent(s): 38045c5

made -unspecified- the default selection for config and split, added metric selection to url, speedup for case where no dataset is selected

Browse files
Files changed (1) hide show
  1. app.py +28 -8
app.py CHANGED
@@ -141,6 +141,7 @@ print(default_only_verified)
141
  default_dataset = first_query_params.get("dataset", [None])[0]
142
  default_split = first_query_params.get("split", [None])[0]
143
  default_config = first_query_params.get("config", [None])[0]
 
144
 
145
  only_verified_results = st.sidebar.checkbox(
146
  "Filter for Verified Results",
@@ -177,7 +178,9 @@ dataset = st.sidebar.selectbox(
177
 
178
  dataframe = dataframe[dataframe.only_verified == only_verified_results]
179
 
180
- st.experimental_set_query_params(**{"dataset": [dataset], "only_verified": [int(only_verified_results)], "task": [task]})
 
 
181
 
182
  if dataset != "-any-":
183
  dataset_df = dataframe[dataframe.dataset == dataset]
@@ -187,8 +190,12 @@ else:
187
  dataset_df = dataset_df.dropna(axis="columns", how="all")
188
 
189
  if len(dataset_df) > 0:
190
-
191
- selectable_configs = list(set(dataset_df["config"]))
 
 
 
 
192
 
193
  if dataset != "-any-":
194
  config = st.sidebar.selectbox(
@@ -199,7 +206,12 @@ if len(dataset_df) > 0:
199
  )
200
  dataset_df = dataset_df[dataset_df.config == config]
201
 
202
- selectable_splits = list(set(dataset_df["split"]))
 
 
 
 
 
203
  split = st.sidebar.selectbox(
204
  "Split",
205
  selectable_splits,
@@ -207,7 +219,9 @@ if len(dataset_df) > 0:
207
  help="Filter the results on the current leaderboard by the dataset split. Self-reported results might not report the split, which is why \"-unspecified-\" is an option."
208
  )
209
 
210
- st.experimental_set_query_params(**{"dataset": [dataset], "only_verified": [int(only_verified_results)], "task": [task], "config": [config], "split": [split]})
 
 
211
 
212
  dataset_df = dataset_df[dataset_df.split == split]
213
 
@@ -220,9 +234,14 @@ if len(dataset_df) > 0:
220
  sorting_metric = st.sidebar.radio(
221
  "Sorting Metric",
222
  selectable_metrics,
 
223
  help="Select the metric to sort the leaderboard by. Click on the metric name in the leaderboard to reverse the sorting order."
224
  )
225
 
 
 
 
 
226
  st.markdown(
227
  "Please click on the model's name to be redirected to its model card."
228
  )
@@ -237,7 +256,7 @@ if len(dataset_df) > 0:
237
 
238
  if dataset == "-any-":
239
  st.info(
240
- "Note: you haven't chosen a dataset, so the leaderboard is showing the best scoring model for each dataset."
241
  )
242
 
243
  # Make the default metric appear right after model names and dataset names
@@ -251,8 +270,8 @@ if len(dataset_df) > 0:
251
  dataset_df = dataset_df.sort_values(by=cols[sorting_metric_index:], ascending=[metric in ascending_metrics for metric in cols[sorting_metric_index:]])
252
  dataset_df = dataset_df.replace(np.nan, '-')
253
 
254
- # If dataset is "-any-", only show the best model for each dataset. Otherwise
255
- # The leaderboard is way too long and doesn't give the users a feel for all of
256
  # the datasets available for a task.
257
  if dataset == "-any-":
258
  filtered_dataset_df_dict = {column: [] for column in dataset_df.columns}
@@ -263,6 +282,7 @@ if len(dataset_df) > 0:
263
  filtered_dataset_df_dict[column].append(row[column])
264
  seen_datasets.add(row["dataset"])
265
  dataset_df = pd.DataFrame(filtered_dataset_df_dict)
 
266
 
267
  # Make the leaderboard
268
  gb = GridOptionsBuilder.from_dataframe(dataset_df)
141
  default_dataset = first_query_params.get("dataset", [None])[0]
142
  default_split = first_query_params.get("split", [None])[0]
143
  default_config = first_query_params.get("config", [None])[0]
144
+ default_metric = first_query_params.get("metric", [None])[0]
145
 
146
  only_verified_results = st.sidebar.checkbox(
147
  "Filter for Verified Results",
178
 
179
  dataframe = dataframe[dataframe.only_verified == only_verified_results]
180
 
181
+ current_query_params = {"dataset": [dataset], "only_verified": [int(only_verified_results)], "task": [task]}
182
+
183
+ st.experimental_set_query_params(**current_query_params)
184
 
185
  if dataset != "-any-":
186
  dataset_df = dataframe[dataframe.dataset == dataset]
190
  dataset_df = dataset_df.dropna(axis="columns", how="all")
191
 
192
  if len(dataset_df) > 0:
193
+ config_set = set(dataset_df["config"])
194
+ if "-unspecified-" in config_set:
195
+ config_set.discard("-unspecified-")
196
+ selectable_configs = ["-unspecified-"] + list(config_set)
197
+ else:
198
+ selectable_configs = list(config_set)
199
 
200
  if dataset != "-any-":
201
  config = st.sidebar.selectbox(
206
  )
207
  dataset_df = dataset_df[dataset_df.config == config]
208
 
209
+ split_set = set(dataset_df["split"])
210
+ if "-unspecified-" in split_set:
211
+ split_set.discard("-unspecified-")
212
+ selectable_splits = ["-unspecified-"] + list(split_set)
213
+ else:
214
+ selectable_splits = list(split_set)
215
  split = st.sidebar.selectbox(
216
  "Split",
217
  selectable_splits,
219
  help="Filter the results on the current leaderboard by the dataset split. Self-reported results might not report the split, which is why \"-unspecified-\" is an option."
220
  )
221
 
222
+ current_query_params.update({"config": [config], "split": [split]})
223
+
224
+ st.experimental_set_query_params(**current_query_params)
225
 
226
  dataset_df = dataset_df[dataset_df.split == split]
227
 
234
  sorting_metric = st.sidebar.radio(
235
  "Sorting Metric",
236
  selectable_metrics,
237
+ index=selectable_metrics.index(default_metric) if default_metric in selectable_metrics else 0,
238
  help="Select the metric to sort the leaderboard by. Click on the metric name in the leaderboard to reverse the sorting order."
239
  )
240
 
241
+ current_query_params.update({"metric": [sorting_metric]})
242
+
243
+ st.experimental_set_query_params(**current_query_params)
244
+
245
  st.markdown(
246
  "Please click on the model's name to be redirected to its model card."
247
  )
256
 
257
  if dataset == "-any-":
258
  st.info(
259
+ "Note: you haven't chosen a dataset, so the leaderboard is showing the best scoring model for a random sample of the datasets available."
260
  )
261
 
262
  # Make the default metric appear right after model names and dataset names
270
  dataset_df = dataset_df.sort_values(by=cols[sorting_metric_index:], ascending=[metric in ascending_metrics for metric in cols[sorting_metric_index:]])
271
  dataset_df = dataset_df.replace(np.nan, '-')
272
 
273
+ # If dataset is "-any-", only show the best model for a random sample of 100 datasets.
274
+ # Otherwise The leaderboard is way too long and doesn't give the users a feel for all of
275
  # the datasets available for a task.
276
  if dataset == "-any-":
277
  filtered_dataset_df_dict = {column: [] for column in dataset_df.columns}
282
  filtered_dataset_df_dict[column].append(row[column])
283
  seen_datasets.add(row["dataset"])
284
  dataset_df = pd.DataFrame(filtered_dataset_df_dict)
285
+ dataset_df = dataset_df.sample(min(100, len(dataset_df)))
286
 
287
  # Make the leaderboard
288
  gb = GridOptionsBuilder.from_dataframe(dataset_df)