Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -1,14 +1,14 @@
|
|
|
|
|
|
1 |
import gradio as gr
|
2 |
import pandas as pd
|
3 |
import plotly.express as px
|
4 |
import time
|
5 |
from datasets import load_dataset
|
6 |
-
# --- FIX 1: Import the new, stable RangeSlider component ---
|
7 |
from gradio_rangeslider import RangeSlider
|
8 |
|
9 |
# --- Constants ---
|
10 |
PARAM_CHOICES = ['< 1B', '1B', '5B', '12B', '32B', '64B', '128B', '256B', '> 500B']
|
11 |
-
# The new component uses a tuple for its default value
|
12 |
PARAM_CHOICES_DEFAULT_INDICES = (0, len(PARAM_CHOICES) - 1)
|
13 |
|
14 |
TOP_K_CHOICES = list(range(5, 51, 5))
|
@@ -80,6 +80,10 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True) as demo:
|
|
80 |
models_data_state = gr.State(pd.DataFrame())
|
81 |
loading_complete_state = gr.State(False)
|
82 |
|
|
|
|
|
|
|
|
|
83 |
with gr.Row():
|
84 |
with gr.Column(scale=1):
|
85 |
count_by_dropdown = gr.Dropdown(label="Metric", choices=[("Downloads (last 30 days)", "downloads"), ("Downloads (All Time)", "downloadsAllTime"), ("Likes", "likes")], value="downloads")
|
@@ -87,7 +91,6 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True) as demo:
|
|
87 |
tag_filter_dropdown = gr.Dropdown(label="Select Tag", choices=TAG_FILTER_CHOICES, value=None, visible=False)
|
88 |
pipeline_filter_dropdown = gr.Dropdown(label="Select Pipeline Tag", choices=PIPELINE_TAGS, value=None, visible=False)
|
89 |
|
90 |
-
# --- FIX 2: Replace all previous slider attempts with the stable custom component ---
|
91 |
param_range_slider = RangeSlider(
|
92 |
minimum=0,
|
93 |
maximum=len(PARAM_CHOICES) - 1,
|
@@ -95,7 +98,7 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True) as demo:
|
|
95 |
step=1,
|
96 |
label="Parameters"
|
97 |
)
|
98 |
-
# This markdown
|
99 |
param_range_display = gr.Markdown(f"Range: `{PARAM_CHOICES[0]}` to `{PARAM_CHOICES[-1]}`")
|
100 |
|
101 |
top_k_dropdown = gr.Dropdown(label="Number of Top Organizations", choices=TOP_K_CHOICES, value=25)
|
@@ -107,7 +110,6 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True) as demo:
|
|
107 |
status_message_md = gr.Markdown("Initializing...")
|
108 |
data_info_md = gr.Markdown("")
|
109 |
|
110 |
-
# Event handler to update the text display when the slider changes
|
111 |
def update_param_display(value: tuple):
|
112 |
min_idx, max_idx = int(value[0]), int(value[1])
|
113 |
return f"Range: `{PARAM_CHOICES[min_idx]}` to `{PARAM_CHOICES[max_idx]}`"
|
@@ -168,12 +170,10 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True) as demo:
|
|
168 |
plot_stats_md = "No data matches the selected filters. Please try different options."
|
169 |
else:
|
170 |
total_items_in_plot = len(treemap_df['id'].unique())
|
171 |
-
# --- FIX 3: Corrected the NameError from the traceback ---
|
172 |
total_value_in_plot = treemap_df[metric_choice].sum()
|
173 |
plot_stats_md = f"## Plot Statistics\n- **Models shown**: {total_items_in_plot:,}\n- **Total {metric_choice}**: {int(total_value_in_plot):,}"
|
174 |
return plotly_fig, plot_stats_md
|
175 |
|
176 |
-
# A standard load event, no JS needed anymore.
|
177 |
demo.load(
|
178 |
fn=ui_load_data_controller,
|
179 |
inputs=[],
|
@@ -189,4 +189,6 @@ with gr.Blocks(title="🤗 ModelVerse Explorer", fill_width=True) as demo:
|
|
189 |
|
190 |
if __name__ == "__main__":
|
191 |
print(f"Application starting...")
|
192 |
-
demo.queue().launch()
|
|
|
|
|
|
1 |
+
# --- START OF FINAL POLISHED FILE app.py ---
|
2 |
+
|
3 |
import gradio as gr
|
4 |
import pandas as pd
|
5 |
import plotly.express as px
|
6 |
import time
|
7 |
from datasets import load_dataset
|
|
|
8 |
from gradio_rangeslider import RangeSlider
|
9 |
|
10 |
# --- Constants ---
|
11 |
PARAM_CHOICES = ['< 1B', '1B', '5B', '12B', '32B', '64B', '128B', '256B', '> 500B']
|
|
|
12 |
PARAM_CHOICES_DEFAULT_INDICES = (0, len(PARAM_CHOICES) - 1)
|
13 |
|
14 |
TOP_K_CHOICES = list(range(5, 51, 5))
|
|
|
80 |
models_data_state = gr.State(pd.DataFrame())
|
81 |
loading_complete_state = gr.State(False)
|
82 |
|
83 |
+
# --- FIX 1: The application title is restored here ---
|
84 |
+
with gr.Row():
|
85 |
+
gr.Markdown("# 🤗 ModelVerse Explorer")
|
86 |
+
|
87 |
with gr.Row():
|
88 |
with gr.Column(scale=1):
|
89 |
count_by_dropdown = gr.Dropdown(label="Metric", choices=[("Downloads (last 30 days)", "downloads"), ("Downloads (All Time)", "downloadsAllTime"), ("Likes", "likes")], value="downloads")
|
|
|
91 |
tag_filter_dropdown = gr.Dropdown(label="Select Tag", choices=TAG_FILTER_CHOICES, value=None, visible=False)
|
92 |
pipeline_filter_dropdown = gr.Dropdown(label="Select Pipeline Tag", choices=PIPELINE_TAGS, value=None, visible=False)
|
93 |
|
|
|
94 |
param_range_slider = RangeSlider(
|
95 |
minimum=0,
|
96 |
maximum=len(PARAM_CHOICES) - 1,
|
|
|
98 |
step=1,
|
99 |
label="Parameters"
|
100 |
)
|
101 |
+
# This markdown provides the meaningful labels for the slider's numeric range
|
102 |
param_range_display = gr.Markdown(f"Range: `{PARAM_CHOICES[0]}` to `{PARAM_CHOICES[-1]}`")
|
103 |
|
104 |
top_k_dropdown = gr.Dropdown(label="Number of Top Organizations", choices=TOP_K_CHOICES, value=25)
|
|
|
110 |
status_message_md = gr.Markdown("Initializing...")
|
111 |
data_info_md = gr.Markdown("")
|
112 |
|
|
|
113 |
def update_param_display(value: tuple):
|
114 |
min_idx, max_idx = int(value[0]), int(value[1])
|
115 |
return f"Range: `{PARAM_CHOICES[min_idx]}` to `{PARAM_CHOICES[max_idx]}`"
|
|
|
170 |
plot_stats_md = "No data matches the selected filters. Please try different options."
|
171 |
else:
|
172 |
total_items_in_plot = len(treemap_df['id'].unique())
|
|
|
173 |
total_value_in_plot = treemap_df[metric_choice].sum()
|
174 |
plot_stats_md = f"## Plot Statistics\n- **Models shown**: {total_items_in_plot:,}\n- **Total {metric_choice}**: {int(total_value_in_plot):,}"
|
175 |
return plotly_fig, plot_stats_md
|
176 |
|
|
|
177 |
demo.load(
|
178 |
fn=ui_load_data_controller,
|
179 |
inputs=[],
|
|
|
189 |
|
190 |
if __name__ == "__main__":
|
191 |
print(f"Application starting...")
|
192 |
+
demo.queue().launch()
|
193 |
+
|
194 |
+
# --- END OF FINAL POLISHED FILE app.py ---
|