Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -117,38 +117,46 @@ def create_leaderboard_component(dataframe, displayed_cols, hidden_cols=None, ca
|
|
| 117 |
if cant_deselect_cols is None:
|
| 118 |
cant_deselect_cols = [AutoEvalColumn.model_type_symbol.name, AutoEvalColumn.model.name]
|
| 119 |
|
|
|
|
| 120 |
all_required_cols = set(displayed_cols) | set(hidden_cols) | set(cant_deselect_cols) | {AutoEvalColumn.model_type.name, AutoEvalColumn.precision.name, AutoEvalColumn.params.name, AutoEvalColumn.still_on_hub.name}
|
| 121 |
available_cols = [col for col in all_required_cols if col in dataframe.columns]
|
| 122 |
-
filtered_df = dataframe[available_cols].copy()
|
| 123 |
|
|
|
|
| 124 |
for col in cant_deselect_cols:
|
| 125 |
if col not in filtered_df.columns:
|
| 126 |
-
filtered_df[col] = np.nan
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
return Leaderboard(
|
| 129 |
value=filtered_df,
|
| 130 |
-
datatype=[c.type for c in fields(AutoEvalColumn) if c.name in filtered_df.columns],
|
| 131 |
select_columns=SelectColumns(
|
| 132 |
default_selection=displayed_cols,
|
| 133 |
cant_deselect=cant_deselect_cols,
|
| 134 |
label="Selecionar Colunas para Exibir:",
|
| 135 |
),
|
| 136 |
search_columns=[AutoEvalColumn.model.name, AutoEvalColumn.license.name] if AutoEvalColumn.license.name in filtered_df.columns else [AutoEvalColumn.model.name],
|
| 137 |
-
hide_columns=[c for c in hidden_cols if c in filtered_df.columns],
|
| 138 |
-
filter_columns=
|
| 139 |
-
ColumnFilter(AutoEvalColumn.model_type.name, type="checkboxgroup", label="Tipos de Modelo") if AutoEvalColumn.model_type.name in filtered_df.columns else None,
|
| 140 |
-
ColumnFilter(AutoEvalColumn.precision.name, type="checkboxgroup", label="Precisão") if AutoEvalColumn.precision.name in filtered_df.columns else None,
|
| 141 |
-
ColumnFilter(
|
| 142 |
-
AutoEvalColumn.params.name,
|
| 143 |
-
type="slider",
|
| 144 |
-
min=0.01,
|
| 145 |
-
max=max(150, filtered_df[AutoEvalColumn.params.name].max() if AutoEvalColumn.params.name in filtered_df.columns and not filtered_df[AutoEvalColumn.params.name].empty else 150),
|
| 146 |
-
label="Selecionar número de parâmetros (B)",
|
| 147 |
-
) if AutoEvalColumn.params.name in filtered_df.columns else None,
|
| 148 |
-
ColumnFilter(
|
| 149 |
-
AutoEvalColumn.still_on_hub.name, type="boolean", label="Deletado/incompleto", default=True
|
| 150 |
-
) if AutoEvalColumn.still_on_hub.name in filtered_df.columns else None,
|
| 151 |
-
],
|
| 152 |
bool_checkboxgroup_label="Ocultar modelos",
|
| 153 |
interactive=False,
|
| 154 |
)
|
|
|
|
| 117 |
if cant_deselect_cols is None:
|
| 118 |
cant_deselect_cols = [AutoEvalColumn.model_type_symbol.name, AutoEvalColumn.model.name]
|
| 119 |
|
| 120 |
+
# Filtrar dataframe para conter apenas as colunas a serem exibidas (ou ocultas/não deselecionáveis)
|
| 121 |
all_required_cols = set(displayed_cols) | set(hidden_cols) | set(cant_deselect_cols) | {AutoEvalColumn.model_type.name, AutoEvalColumn.precision.name, AutoEvalColumn.params.name, AutoEvalColumn.still_on_hub.name}
|
| 122 |
available_cols = [col for col in all_required_cols if col in dataframe.columns]
|
| 123 |
+
filtered_df = dataframe[available_cols].copy() # Usar cópia para evitar SettingWithCopyWarning
|
| 124 |
|
| 125 |
+
# Garantir que as colunas 'always visible' estejam presentes
|
| 126 |
for col in cant_deselect_cols:
|
| 127 |
if col not in filtered_df.columns:
|
| 128 |
+
filtered_df[col] = np.nan # Ou algum valor padrão apropriado
|
| 129 |
+
|
| 130 |
+
# Construir lista de filtros, incluindo None para colunas ausentes
|
| 131 |
+
raw_filter_columns=[
|
| 132 |
+
ColumnFilter(AutoEvalColumn.model_type.name, type="checkboxgroup", label="Tipos de Modelo") if AutoEvalColumn.model_type.name in filtered_df.columns else None,
|
| 133 |
+
ColumnFilter(AutoEvalColumn.precision.name, type="checkboxgroup", label="Precisão") if AutoEvalColumn.precision.name in filtered_df.columns else None,
|
| 134 |
+
ColumnFilter(
|
| 135 |
+
AutoEvalColumn.params.name,
|
| 136 |
+
type="slider",
|
| 137 |
+
min=0.01,
|
| 138 |
+
max=max(150, filtered_df[AutoEvalColumn.params.name].max(skipna=True) if AutoEvalColumn.params.name in filtered_df.columns and not filtered_df[AutoEvalColumn.params.name].dropna().empty else 150), # Ajustar max dinamicamente e ignorar NaN
|
| 139 |
+
label="Selecionar número de parâmetros (B)",
|
| 140 |
+
) if AutoEvalColumn.params.name in filtered_df.columns else None,
|
| 141 |
+
ColumnFilter(
|
| 142 |
+
AutoEvalColumn.still_on_hub.name, type="boolean", label="Deletado/incompleto", default=True
|
| 143 |
+
) if AutoEvalColumn.still_on_hub.name in filtered_df.columns else None,
|
| 144 |
+
]
|
| 145 |
+
|
| 146 |
+
# Filtrar Nones da lista de filtros
|
| 147 |
+
final_filter_columns = [f for f in raw_filter_columns if f is not None]
|
| 148 |
|
| 149 |
return Leaderboard(
|
| 150 |
value=filtered_df,
|
| 151 |
+
datatype=[c.type for c in fields(AutoEvalColumn) if c.name in filtered_df.columns], # Ajustar datatype às colunas presentes
|
| 152 |
select_columns=SelectColumns(
|
| 153 |
default_selection=displayed_cols,
|
| 154 |
cant_deselect=cant_deselect_cols,
|
| 155 |
label="Selecionar Colunas para Exibir:",
|
| 156 |
),
|
| 157 |
search_columns=[AutoEvalColumn.model.name, AutoEvalColumn.license.name] if AutoEvalColumn.license.name in filtered_df.columns else [AutoEvalColumn.model.name],
|
| 158 |
+
hide_columns=[c for c in hidden_cols if c in filtered_df.columns], # Ocultar apenas colunas existentes
|
| 159 |
+
filter_columns=final_filter_columns, # Usar a lista filtrada
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
bool_checkboxgroup_label="Ocultar modelos",
|
| 161 |
interactive=False,
|
| 162 |
)
|