Ludwig Stumpp commited on
Commit
7aa2aea
1 Parent(s): b1314a6

Add filters for leaderboard

Browse files
Files changed (1) hide show
  1. streamlit_app.py +53 -1
streamlit_app.py CHANGED
@@ -21,6 +21,39 @@ def grab_file_from_repo(repo_url: str, filename: str) -> str:
21
  return requests.get(url).text
22
 
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  def setup_basic():
25
  title = "LLM-Leaderboard"
26
 
@@ -41,7 +74,25 @@ def setup_basic():
41
  def setup_table():
42
  csv_table = grab_file_from_repo(REPO_URL, "leaderboard.csv")
43
  df = pd.read_csv(io.StringIO(csv_table), index_col=0)
44
- st.dataframe(df)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
 
47
  def setup_footer():
@@ -56,6 +107,7 @@ def setup_footer():
56
  def main():
57
  setup_basic()
58
  setup_table()
 
59
  setup_footer()
60
 
61
 
 
21
  return requests.get(url).text
22
 
23
 
24
+ def filter_dataframe(df: pd.DataFrame) -> pd.DataFrame:
25
+ """
26
+ Adds a UI on top of a dataframe to let viewers filter columns
27
+
28
+ Modified from https://blog.streamlit.io/auto-generate-a-dataframe-filtering-ui-in-streamlit-with-filter_dataframe/
29
+
30
+ Args:
31
+ df (pd.DataFrame): Original dataframe
32
+
33
+ Returns:
34
+ pd.DataFrame: Filtered dataframe
35
+ """
36
+ modify = st.checkbox("Add filters")
37
+
38
+ if not modify:
39
+ return df
40
+
41
+ df = df.copy()
42
+
43
+ modification_container = st.container()
44
+
45
+ with modification_container:
46
+ to_filter_index = st.multiselect("Filter rows on", df.index)
47
+ if to_filter_index:
48
+ df = pd.DataFrame(df.loc[to_filter_index])
49
+
50
+ to_filter_columns = st.multiselect("Filter columns on", df.columns)
51
+ if to_filter_columns:
52
+ df = pd.DataFrame(df[to_filter_columns])
53
+
54
+ return df
55
+
56
+
57
  def setup_basic():
58
  title = "LLM-Leaderboard"
59
 
 
74
  def setup_table():
75
  csv_table = grab_file_from_repo(REPO_URL, "leaderboard.csv")
76
  df = pd.read_csv(io.StringIO(csv_table), index_col=0)
77
+ st.markdown("### Leaderboard")
78
+ st.dataframe(filter_dataframe(df))
79
+
80
+
81
+ def setup_benchmarks():
82
+ csv_table = grab_file_from_repo(REPO_URL, "benchmarks.csv")
83
+ df = pd.read_csv(io.StringIO(csv_table), index_col=0)
84
+ df = df.sort_index(ascending=True)
85
+
86
+ st.markdown("### Covered Benchmarks")
87
+
88
+ selected_benchmark = st.selectbox("Select a benchmark to learn more:", df.index.unique())
89
+ df_selected = df.loc[selected_benchmark]
90
+ text = [
91
+ f"Name: {selected_benchmark} ",
92
+ ]
93
+ for key in df_selected.keys():
94
+ text.append(f"{key}: {df_selected[key]}")
95
+ st.markdown("\n".join(text))
96
 
97
 
98
  def setup_footer():
 
107
  def main():
108
  setup_basic()
109
  setup_table()
110
+ setup_benchmarks()
111
  setup_footer()
112
 
113