Sunmarinup commited on
Commit
447c8e3
·
verified ·
1 Parent(s): 9f77029

Fix dark theme view (#4)

Browse files

- Fix dark theme styling (29bc66e0e2dd9fc094f71b4e079261e9caa88525)

Files changed (3) hide show
  1. app.py +2 -36
  2. requirements.txt +4 -7
  3. src/leaderboard/styling.py +70 -0
app.py CHANGED
@@ -5,9 +5,10 @@ import pandas as pd
5
 
6
  from src.about import INTRODUCTION_TEXT, TITLE
7
  from src.display.css_html_js import custom_css
8
- from src.leaderboard.columns import DisplayColumns, RequiredInputColumns
9
  from src.leaderboard.input import load_csv_from_github
10
  from src.leaderboard.output import format_output_df
 
11
 
12
  LEADERBOARD_GITHUB_URL = "https://github.com/upgini/mle-bench/blob/main/rankings/low/tabular/overall_ranks.csv"
13
 
@@ -40,41 +41,6 @@ def refresh_leaderboard():
40
  return df, status
41
 
42
 
43
- def apply_styling(df: pd.DataFrame):
44
- """Apply styling to the leaderboard table."""
45
-
46
- if df.empty:
47
- return pd.DataFrame(columns=DisplayColumns.values())
48
-
49
- display_df = df[DisplayColumns.values()]
50
-
51
- style = (
52
- display_df.style.background_gradient(
53
- subset=[DisplayColumns.NORMALIZED_SCORE],
54
- high=0.5,
55
- low=0.0,
56
- cmap="Greens",
57
- gmap=df[RequiredInputColumns.MEAN_NORMALIZED_SCORE],
58
- )
59
- .background_gradient(
60
- subset=[DisplayColumns.ANY_MEDAL_SCORE],
61
- high=1.2,
62
- low=0.0,
63
- cmap="Oranges",
64
- gmap=df[RequiredInputColumns.MEAN_MEDAL_PCT],
65
- )
66
- .format(
67
- subset=(
68
- df[RequiredInputColumns.MEAN_NORMALIZED_SCORE] == df[RequiredInputColumns.MEAN_NORMALIZED_SCORE].max(),
69
- DisplayColumns.NORMALIZED_SCORE,
70
- ),
71
- formatter=lambda x: f"**{x}**",
72
- )
73
- )
74
-
75
- return style
76
-
77
-
78
  def create_app():
79
  """Create and configure the Gradio app without launching it."""
80
  with gr.Blocks(title="Upgini MLE-Bench Leaderboard", css=custom_css) as demo:
 
5
 
6
  from src.about import INTRODUCTION_TEXT, TITLE
7
  from src.display.css_html_js import custom_css
8
+ from src.leaderboard.columns import DisplayColumns
9
  from src.leaderboard.input import load_csv_from_github
10
  from src.leaderboard.output import format_output_df
11
+ from src.leaderboard.styling import apply_styling
12
 
13
  LEADERBOARD_GITHUB_URL = "https://github.com/upgini/mle-bench/blob/main/rankings/low/tabular/overall_ranks.csv"
14
 
 
41
  return df, status
42
 
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  def create_app():
45
  """Create and configure the Gradio app without launching it."""
46
  with gr.Blocks(title="Upgini MLE-Bench Leaderboard", css=custom_css) as demo:
requirements.txt CHANGED
@@ -1,18 +1,15 @@
1
  APScheduler
2
  black
3
  datasets
4
- gradio
5
  gradio[oauth]
6
- gradio_leaderboard==0.0.13
7
  gradio_client
8
- huggingface-hub>=0.18.0
9
  matplotlib
10
  numpy
11
  pandas
 
12
  pytest
13
- requests
14
  python-dateutil
 
15
  tqdm
16
- transformers
17
- tokenizers>=0.15.0
18
- sentencepiece
 
1
  APScheduler
2
  black
3
  datasets
4
+ gradio==5.49.1
5
  gradio[oauth]
 
6
  gradio_client
7
+ gradio_leaderboard==0.0.13
8
  matplotlib
9
  numpy
10
  pandas
11
+ pre-commit
12
  pytest
 
13
  python-dateutil
14
+ requests
15
  tqdm
 
 
 
src/leaderboard/styling.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import matplotlib.pyplot as plt
3
+ import numpy as np
4
+ import pandas as pd
5
+ from matplotlib.colors import LinearSegmentedColormap
6
+
7
+ from .columns import DisplayColumns, RequiredInputColumns
8
+
9
+
10
+ def create_light_green_cmap():
11
+ cmap = plt.cm.get_cmap("Greens")
12
+ num_colors = 256
13
+ half_colors = np.linspace(0, 0.5, num_colors)
14
+ half_cmap = [cmap(val) for val in half_colors]
15
+ light_green_cmap = LinearSegmentedColormap.from_list("LightGreens", half_cmap, N=256)
16
+ return light_green_cmap
17
+
18
+
19
+ def get_column_types(df: pd.DataFrame, markdown_columns: list[str]) -> list[str]:
20
+ types = []
21
+ for column_name in df.columns:
22
+ if column_name in markdown_columns:
23
+ types.append("markdown")
24
+ elif pd.api.types.is_numeric_dtype(df[column_name]):
25
+ types.append("number")
26
+ else:
27
+ types.append("str")
28
+ return types
29
+
30
+
31
+ def apply_styling(df: pd.DataFrame):
32
+ """Apply styling to the leaderboard table."""
33
+
34
+ if df.empty:
35
+ return pd.DataFrame(columns=DisplayColumns.values())
36
+
37
+ display_df = df[DisplayColumns.values()]
38
+
39
+ style = (
40
+ display_df.style.background_gradient(
41
+ subset=[DisplayColumns.NORMALIZED_SCORE],
42
+ cmap=create_light_green_cmap(),
43
+ gmap=df[RequiredInputColumns.MEAN_NORMALIZED_SCORE] * 100,
44
+ )
45
+ .background_gradient(
46
+ subset=[DisplayColumns.ANY_MEDAL_SCORE],
47
+ cmap=create_light_green_cmap(),
48
+ gmap=df[RequiredInputColumns.MEAN_MEDAL_PCT],
49
+ high=1.5,
50
+ )
51
+ .highlight_max(subset=[DisplayColumns.NORMALIZED_SCORE], props="font-weight: bold")
52
+ )
53
+
54
+ markdown_columns = [
55
+ c
56
+ for c in DisplayColumns.values()
57
+ if c not in [DisplayColumns.NORMALIZED_SCORE, DisplayColumns.ANY_MEDAL_SCORE]
58
+ ]
59
+ column_types = get_column_types(display_df, markdown_columns)
60
+
61
+ return gr.DataFrame(
62
+ value=style,
63
+ wrap=True,
64
+ interactive=False,
65
+ type="pandas",
66
+ datatype=column_types,
67
+ label="Leaderboard",
68
+ elem_id="leaderboard-table",
69
+ show_search="search",
70
+ )