Spaces:
Running
Running
Commit
·
c94926c
1
Parent(s):
65e4811
Preserve scroll when re-generating plots
Browse files- app.py +46 -8
- css_html_js.py +13 -0
- logo.png +0 -0
- main.py +0 -6
- pyproject.toml +1 -0
app.py
CHANGED
@@ -2,7 +2,7 @@ import json
|
|
2 |
import pandas as pd
|
3 |
import gradio as gr
|
4 |
from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
|
5 |
-
from css_html_js import custom_css
|
6 |
from parse import read_json, read_data
|
7 |
from utils import model_hyperlink, filter_RTLRepo, filter_bench, handle_special_cases
|
8 |
from typing import Union
|
@@ -45,6 +45,7 @@ def generate_scatter_plot(benchmark, metric):
|
|
45 |
scatter_data['y'] = scatter_data[metric]
|
46 |
scatter_data['size'] = (scatter_data['x'] ** 0.3) * 40
|
47 |
|
|
|
48 |
type_colors = {"General": "green", "Coding": "yellow", "RTL-Specific": "blue"}
|
49 |
scatter_data['color'] = scatter_data['Model Type'].map(type_colors).fillna('gray')
|
50 |
|
@@ -78,9 +79,26 @@ def generate_scatter_plot(benchmark, metric):
|
|
78 |
|
79 |
return fig
|
80 |
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
df, benchmarks, metrics, default_metric = read_data()
|
83 |
-
gr.Markdown("""# TuRTLe 🐢 Model Leaderboard
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
Welcome to the TuRTLe Model Leaderboard! Use the filters below to explore different RTL benchmarks and models.
|
85 |
[GitHub Repository](https://github.com/https://github.com/HPAI-BSC) | [arXiv Preprint](https://arxiv.org/) | [How to submit](https://github.com/https://github.com/HPAI-BSC)<br/>
|
86 |
Contact us: [email protected]
|
@@ -147,14 +165,34 @@ with gr.Blocks(css=custom_css) as app:
|
|
147 |
bubble_benchmark.change(
|
148 |
fn=on_benchmark_change,
|
149 |
inputs=[bubble_benchmark, bubble_metric],
|
150 |
-
outputs=[bubble_metric, scatter_plot]
|
151 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
|
153 |
bubble_metric.change(
|
154 |
fn=on_metric_change,
|
155 |
inputs=[bubble_benchmark, bubble_metric],
|
156 |
-
outputs=[bubble_benchmark, scatter_plot]
|
157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
|
160 |
-
app.launch()
|
|
|
2 |
import pandas as pd
|
3 |
import gradio as gr
|
4 |
from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
|
5 |
+
from css_html_js import custom_css, trigger_plot
|
6 |
from parse import read_json, read_data
|
7 |
from utils import model_hyperlink, filter_RTLRepo, filter_bench, handle_special_cases
|
8 |
from typing import Union
|
|
|
45 |
scatter_data['y'] = scatter_data[metric]
|
46 |
scatter_data['size'] = (scatter_data['x'] ** 0.3) * 40
|
47 |
|
48 |
+
|
49 |
type_colors = {"General": "green", "Coding": "yellow", "RTL-Specific": "blue"}
|
50 |
scatter_data['color'] = scatter_data['Model Type'].map(type_colors).fillna('gray')
|
51 |
|
|
|
79 |
|
80 |
return fig
|
81 |
|
82 |
+
js_func = """
|
83 |
+
function refresh() {
|
84 |
+
const url = new URL(window.location);
|
85 |
+
|
86 |
+
if (url.searchParams.get('__theme') !== 'light') {
|
87 |
+
url.searchParams.set('__theme', 'light');
|
88 |
+
window.location.href = url.href;
|
89 |
+
}
|
90 |
+
}
|
91 |
+
"""
|
92 |
+
|
93 |
+
with gr.Blocks(css=custom_css, js=js_func) as app:
|
94 |
df, benchmarks, metrics, default_metric = read_data()
|
95 |
+
gr.Markdown("""# TuRTLe 🐢 Model Leaderboard""")
|
96 |
+
gr.HTML("""
|
97 |
+
<p align="center">
|
98 |
+
<img src='/gradio_api/file=logo.png' alt='TuRTLe Logo' width='220'/> <br/>
|
99 |
+
</p>
|
100 |
+
""")
|
101 |
+
gr.Markdown("""
|
102 |
Welcome to the TuRTLe Model Leaderboard! Use the filters below to explore different RTL benchmarks and models.
|
103 |
[GitHub Repository](https://github.com/https://github.com/HPAI-BSC) | [arXiv Preprint](https://arxiv.org/) | [How to submit](https://github.com/https://github.com/HPAI-BSC)<br/>
|
104 |
Contact us: [email protected]
|
|
|
165 |
bubble_benchmark.change(
|
166 |
fn=on_benchmark_change,
|
167 |
inputs=[bubble_benchmark, bubble_metric],
|
168 |
+
outputs=[bubble_metric, scatter_plot],
|
169 |
+
js=""" // this is to avoid resetting user scroll each time a plot is re-generated
|
170 |
+
(benchmark, metric) => {
|
171 |
+
let scrollY = window.scrollY;
|
172 |
+
const observer = new MutationObserver(() => {
|
173 |
+
window.scrollTo(0, scrollY);
|
174 |
+
observer.disconnect();
|
175 |
+
});
|
176 |
+
observer.observe(document.getElementById('full-width-plot'), { childList: true });
|
177 |
+
return [benchmark, metric];
|
178 |
+
}
|
179 |
+
""")
|
180 |
|
181 |
bubble_metric.change(
|
182 |
fn=on_metric_change,
|
183 |
inputs=[bubble_benchmark, bubble_metric],
|
184 |
+
outputs=[bubble_benchmark, scatter_plot],
|
185 |
+
js=""" // this is to avoid resetting user scroll each time a plot is re-generated
|
186 |
+
(benchmark, metric) => {
|
187 |
+
let scrollY = window.scrollY;
|
188 |
+
const observer = new MutationObserver(() => {
|
189 |
+
window.scrollTo(0, scrollY);
|
190 |
+
observer.disconnect();
|
191 |
+
});
|
192 |
+
observer.observe(document.getElementById('full-width-plot'), { childList: true });
|
193 |
+
return [benchmark, metric];
|
194 |
+
}
|
195 |
+
""")
|
196 |
|
197 |
|
198 |
+
app.launch(allowed_paths=["logo.png"])
|
css_html_js.py
CHANGED
@@ -1,4 +1,7 @@
|
|
1 |
custom_css = """
|
|
|
|
|
|
|
2 |
#component-0 {
|
3 |
width: 75vw;
|
4 |
margin: 0 auto;
|
@@ -108,3 +111,13 @@ get_window_url_params = """
|
|
108 |
return url_params;
|
109 |
}
|
110 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
custom_css = """
|
2 |
+
#component-1 {
|
3 |
+
text-align: center;
|
4 |
+
}
|
5 |
#component-0 {
|
6 |
width: 75vw;
|
7 |
margin: 0 auto;
|
|
|
111 |
return url_params;
|
112 |
}
|
113 |
"""
|
114 |
+
|
115 |
+
trigger_plot = """
|
116 |
+
window.scrollY_before_update = window.scrollY; // Store scroll position
|
117 |
+
console.log("Saved ScrollY:", window.scrollY_before_update);
|
118 |
+
|
119 |
+
setTimeout(function() {
|
120 |
+
console.log("Restoring ScrollY:", window.scrollY_before_update);
|
121 |
+
window.scrollTo(0, window.scrollY_before_update);
|
122 |
+
}, 50);
|
123 |
+
"""
|
logo.png
ADDED
![]() |
main.py
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
def main():
|
2 |
-
print("Hello from tortuga!")
|
3 |
-
|
4 |
-
|
5 |
-
if __name__ == "__main__":
|
6 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pyproject.toml
CHANGED
@@ -8,4 +8,5 @@ dependencies = [
|
|
8 |
"gradio>=5.21.0",
|
9 |
"gradio-leaderboard>=0.0.13",
|
10 |
"pandas>=2.2.3",
|
|
|
11 |
]
|
|
|
8 |
"gradio>=5.21.0",
|
9 |
"gradio-leaderboard>=0.0.13",
|
10 |
"pandas>=2.2.3",
|
11 |
+
"plotly>=6.0.1",
|
12 |
]
|