zhaorui-nb commited on
Commit
f9d3528
1 Parent(s): f3ddcb4

add leaderboard filter

Browse files
Files changed (3) hide show
  1. README.md +5 -0
  2. app.py +7 -2
  3. utils/filterable_dataframe.py +37 -0
README.md CHANGED
@@ -16,6 +16,11 @@ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-
16
 
17
 
18
  # de-identification-leaderboard
 
 
 
 
 
19
 
20
  ## leaderboard data
21
  score wil save to huggingface dataset
 
16
 
17
 
18
  # de-identification-leaderboard
19
+ ## run web
20
+ ```
21
+ streamlit run app.py
22
+ ```
23
+
24
 
25
  ## leaderboard data
26
  score wil save to huggingface dataset
app.py CHANGED
@@ -12,6 +12,7 @@ from huggingface_hub import hf_hub_download
12
  from utils.upload_hub import upload_scores_to_hub, file_name_decode
13
  from utils.Evaluation_answer_txt import Evaluation_answer_txt
14
  from utils.hub_info import get_model_size
 
15
 
16
  # st.set_page_config(layout="wide")
17
  st.set_page_config(layout="centered")
@@ -78,10 +79,14 @@ try:
78
  df = get_leaderboard_df()
79
 
80
  # remove the detail result column
81
- default_columns = [c for c in df.columns if c not in ['MICRO precision', 'MICRO recall', 'MACRO precision', 'MACRO recall', 'detail result']]
82
  selected_columns = st.multiselect('Select columns to display', df.columns, default=default_columns)
83
 
84
- leaderboard_df = st.dataframe(df[selected_columns], selection_mode='multi-row', on_select='rerun', key='leaderboard')
 
 
 
 
85
 
86
  st.subheader("Detail Result")
87
  det_ind = st.session_state.leaderboard['selection']['rows']
 
12
  from utils.upload_hub import upload_scores_to_hub, file_name_decode
13
  from utils.Evaluation_answer_txt import Evaluation_answer_txt
14
  from utils.hub_info import get_model_size
15
+ from utils.filterable_dataframe import filterable_dataframe
16
 
17
  # st.set_page_config(layout="wide")
18
  st.set_page_config(layout="centered")
 
79
  df = get_leaderboard_df()
80
 
81
  # remove the detail result column
82
+ default_columns = [c for c in df.columns if c not in ['file name', 'submitter', 'MICRO precision', 'MICRO recall', 'MACRO precision', 'MACRO recall', 'detail result']]
83
  selected_columns = st.multiselect('Select columns to display', df.columns, default=default_columns)
84
 
85
+ # add filterable dataframe
86
+ filtered_df = filterable_dataframe(df)
87
+
88
+ leaderboard_df = st.dataframe(filtered_df[selected_columns], selection_mode='multi-row', on_select='rerun', key='leaderboard')
89
+
90
 
91
  st.subheader("Detail Result")
92
  det_ind = st.session_state.leaderboard['selection']['rows']
utils/filterable_dataframe.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+
4
+
5
+
6
+ def filterable_dataframe(df):
7
+ # 多選框選擇需要篩選的列
8
+ selected_columns = st.multiselect('Select columns to filter', options=df.columns)
9
+
10
+ filters = {}
11
+
12
+ # 動態生成篩選條件
13
+ for column in selected_columns:
14
+ with st.expander(f'Filter by {column}', expanded=True):
15
+ if df[column].dtype == 'object':
16
+ unique_values = df[column].unique()
17
+ selected_values = st.multiselect(f'Select values for {column}', options=list(unique_values))
18
+ search_text = st.text_input(f'Search in {column}')
19
+ if search_text:
20
+ selected_values = [value for value in selected_values if search_text.lower() in value.lower()]
21
+ if selected_values:
22
+ filters[column] = selected_values
23
+ else:
24
+ min_value, max_value = df[column].min(), df[column].max()
25
+ selected_range = st.slider(f'Select range for {column}', min_value, max_value, (min_value, max_value))
26
+ if selected_range != (min_value, max_value):
27
+ filters[column] = selected_range
28
+
29
+ # 根據篩選條件過濾數據框
30
+ filtered_df = df
31
+ for column, value in filters.items():
32
+ if isinstance(value, list):
33
+ filtered_df = filtered_df[filtered_df[column].isin(value)]
34
+ elif isinstance(value, tuple):
35
+ filtered_df = filtered_df[(filtered_df[column] >= value[0]) & (filtered_df[column] <= value[1])]
36
+
37
+ return filtered_df