dimbyTa commited on
Commit
12f938b
1 Parent(s): ca8fe98

restricting the number of rows to display on app

Browse files
Files changed (2) hide show
  1. src/display.py +21 -13
  2. src/load_data.py +29 -1
src/display.py CHANGED
@@ -4,7 +4,7 @@
4
  #from st_aggrid import GridOptionsBuilder, AgGrid
5
  from st_aggrid import GridOptionsBuilder, AgGrid
6
  import streamlit as st
7
- from .load_data import load_dataframe, sort_by
8
  from .plot import plot_radar_chart_name, plot_radar_chart_rows
9
 
10
 
@@ -12,16 +12,16 @@ def display_app():
12
  st.markdown("# Open LLM Leaderboard Viz")
13
  st.markdown("This is a visualization of the results in [open-llm-leaderboard/results](https://huggingface.co/datasets/open-llm-leaderboard/results)")
14
  st.markdown("To select a model, click on the checkbox beside its name.")
15
-
16
-
17
-
18
- #container = st.container(height = 150)
19
 
20
  dataframe = load_dataframe()
21
 
22
- sort_selection = st.selectbox(label = "Sort by:", options = list(dataframe.columns))
 
23
  ascending = True
24
- indexes = None
25
  if sort_selection is None:
26
  sort_selection = "model_name"
27
  ascending = True
@@ -29,16 +29,26 @@ def display_app():
29
  ascending = True
30
  else:
31
  ascending = False
 
 
32
  name = st.text_input(label = ":mag: Search by name")
33
- if name is not None:
34
- indexes = dataframe["model_name"].str.contains(name)
35
- if len(indexes) > 0:
36
- dataframe = dataframe[indexes]
 
 
37
  else:
38
  dataframe = load_dataframe()
39
 
40
  dataframe = sort_by(dataframe=dataframe, column_name=sort_selection, ascending= ascending)
41
  dataframe_display = dataframe.copy()
 
 
 
 
 
 
42
  dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] = dataframe[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]].astype(float)
43
  dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] = dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] *100
44
  dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] = dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]].round(2)
@@ -52,8 +62,6 @@ def display_app():
52
  column1,col3, column2 = st.columns([0.26, 0.05, 0.69], gap = "small")
53
 
54
  with column1:
55
- #with container:
56
- #st.dataframe(dataframe_display)
57
  grid_response = AgGrid(
58
  dataframe_display,
59
  gridOptions=gridOptions,
 
4
  #from st_aggrid import GridOptionsBuilder, AgGrid
5
  from st_aggrid import GridOptionsBuilder, AgGrid
6
  import streamlit as st
7
+ from .load_data import load_dataframe, sort_by, show_dataframe_top, search_by_name
8
  from .plot import plot_radar_chart_name, plot_radar_chart_rows
9
 
10
 
 
12
  st.markdown("# Open LLM Leaderboard Viz")
13
  st.markdown("This is a visualization of the results in [open-llm-leaderboard/results](https://huggingface.co/datasets/open-llm-leaderboard/results)")
14
  st.markdown("To select a model, click on the checkbox beside its name.")
15
+ st.markdown("This displays the top 100 models by default, but you can change that using the number input below.")
16
+ st.markdown("By defalut as well, the maximum number of row you can display is 500, it is due to the problem with st__aggrid component loading.")
17
+ st.markdown("If your model doesn't show up, please search it by its name.")
 
18
 
19
  dataframe = load_dataframe()
20
 
21
+ sort_selection = st.selectbox(label = "Sort by:", options = list(dataframe.columns), index = 7)
22
+ number_of_row = st.number_input("Number of top rows to display", min_value=100, max_value=500, value="min", step=100)
23
  ascending = True
24
+
25
  if sort_selection is None:
26
  sort_selection = "model_name"
27
  ascending = True
 
29
  ascending = True
30
  else:
31
  ascending = False
32
+
33
+
34
  name = st.text_input(label = ":mag: Search by name")
35
+ len_name_input = len(name)
36
+ if len_name_input > 0:
37
+ dataframe_by_search = search_by_name(name)
38
+ if len(dataframe_by_search) > 0:
39
+ #st.write("number of model name with name", len(dataframe_by_search))
40
+ dataframe = dataframe_by_search
41
  else:
42
  dataframe = load_dataframe()
43
 
44
  dataframe = sort_by(dataframe=dataframe, column_name=sort_selection, ascending= ascending)
45
  dataframe_display = dataframe.copy()
46
+
47
+ if len_name_input == 0:
48
+ # Show every only top n row
49
+ dataframe_display = show_dataframe_top(number_of_row,dataframe_display)
50
+
51
+
52
  dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] = dataframe[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]].astype(float)
53
  dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] = dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] *100
54
  dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]] = dataframe_display[["ARC", "HellaSwag", "TruthfulQA", "Winogrande", "GSM8K" ,"MMLU", "Average"]].round(2)
 
62
  column1,col3, column2 = st.columns([0.26, 0.05, 0.69], gap = "small")
63
 
64
  with column1:
 
 
65
  grid_response = AgGrid(
66
  dataframe_display,
67
  gridOptions=gridOptions,
src/load_data.py CHANGED
@@ -13,6 +13,19 @@ def load_dataframe() -> pd.DataFrame:
13
  dataframe = dataframe.drop(columns = "Unnamed: 0")
14
  return dataframe
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  @st.cache_data
17
  def sort_by(dataframe: pd.DataFrame, column_name: str, ascending:bool = False) -> pd.DataFrame:
18
  """
@@ -26,4 +39,19 @@ def sort_by(dataframe: pd.DataFrame, column_name: str, ascending:bool = False) -
26
  Returns:
27
  a sorted dataframe
28
  """
29
- return dataframe.sort_values(by = column_name, ascending = ascending )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  dataframe = dataframe.drop(columns = "Unnamed: 0")
14
  return dataframe
15
 
16
+ @st.cache_data
17
+ def show_dataframe_top(n:int , dataframe: pd.DataFrame) -> pd.DataFrame:
18
+ """
19
+ read only the n-th first row
20
+ Arguments
21
+ -n: an integer telling the number of row
22
+ -dataframe: the dataframe to slice
23
+ Returns
24
+ dataframe: a pd.DataFrame of the average scores of the LLMs on each task
25
+ """
26
+
27
+ return dataframe.head(n)
28
+
29
  @st.cache_data
30
  def sort_by(dataframe: pd.DataFrame, column_name: str, ascending:bool = False) -> pd.DataFrame:
31
  """
 
39
  Returns:
40
  a sorted dataframe
41
  """
42
+ return dataframe.sort_values(by = column_name, ascending = ascending )
43
+
44
+ @st.cache_data
45
+ def search_by_name(name: str) -> pd.DataFrame:
46
+ """
47
+ Search a model by its name
48
+
49
+ Arguments:
50
+ - name: the name of the model or part of it
51
+
52
+ Returns:
53
+ a pandas Dataframe of every row that contains name
54
+ """
55
+ dataframe = load_dataframe()
56
+ indexes = dataframe["model_name"].str.contains(name)
57
+ return dataframe[indexes]