Spaces:
Sleeping
Sleeping
chore: add download plot button
Browse files
app.py
CHANGED
|
@@ -92,15 +92,15 @@ def toggle_inputs(use_average):
|
|
| 92 |
else:
|
| 93 |
return gr.update(interactive=True, visible=True), gr.update(interactive=True, visible=True)
|
| 94 |
|
| 95 |
-
|
|
|
|
|
|
|
| 96 |
|
| 97 |
def plot_distances(model, dataset, use_average, cluster_method, cluster_method_param, plot_fn):
|
| 98 |
"""
|
| 99 |
Plots all languages from the distances matrix using t-SNE.
|
| 100 |
"""
|
| 101 |
|
| 102 |
-
global i
|
| 103 |
-
|
| 104 |
updated_matrix, updated_languages = filter_languages_nan(model, dataset, use_average)
|
| 105 |
|
| 106 |
if cluster_method == "HDBSCAN":
|
|
@@ -126,9 +126,19 @@ def plot_distances(model, dataset, use_average, cluster_method, cluster_method_p
|
|
| 126 |
|
| 127 |
fig = plot_fn(model, dataset, use_average, filtered_matrix, filtered_languages, clusters, legends)
|
| 128 |
fig.tight_layout()
|
| 129 |
-
fig.savefig(
|
| 130 |
-
|
| 131 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 132 |
|
| 133 |
|
| 134 |
with gr.Blocks() as demo:
|
|
@@ -185,19 +195,22 @@ with gr.Blocks() as demo:
|
|
| 185 |
plot_tsne_button = gr.Button("Plot t-SNE")
|
| 186 |
plot_umap_button = gr.Button("Plot UMAP")
|
| 187 |
plot_mst_button = gr.Button("Plot MST")
|
|
|
|
|
|
|
|
|
|
| 188 |
|
| 189 |
with gr.Row():
|
| 190 |
plot_output = gr.Plot(label="Distance Plot")
|
| 191 |
|
| 192 |
plot_tsne_button.click(fn=partial(plot_distances, plot_fn=plot_distances_tsne),
|
| 193 |
inputs=[model_input, dataset_input, average_checkbox, cluster_method_input, clusters_input],
|
| 194 |
-
outputs=plot_output)
|
| 195 |
plot_umap_button.click(fn=partial(plot_distances, plot_fn=plot_distances_umap),
|
| 196 |
inputs=[model_input, dataset_input, average_checkbox, cluster_method_input, clusters_input],
|
| 197 |
-
outputs=plot_output)
|
| 198 |
plot_mst_button.click(fn=partial(plot_distances, plot_fn=plot_mst),
|
| 199 |
inputs=[model_input, dataset_input, average_checkbox, cluster_method_input, clusters_input],
|
| 200 |
-
outputs=plot_output)
|
| 201 |
|
| 202 |
with gr.Tab(label="Language Families Subplot"):
|
| 203 |
|
|
@@ -227,23 +240,15 @@ with gr.Blocks() as demo:
|
|
| 227 |
plot_family_button = gr.Button("Plot Families")
|
| 228 |
plot_figsize_h_input = gr.Slider(label="Figure Height", minimum=5, maximum=30, step=1, value=15)
|
| 229 |
plot_figsize_w_input = gr.Slider(label="Figure Width", minimum=5, maximum=30, step=1, value=15)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 230 |
plot_family_output = gr.Plot(label="Families Plot")
|
| 231 |
-
def plot_families_subfamilies(families, model, dataset, use_average, figsize_h, figsize_w):
|
| 232 |
-
global i
|
| 233 |
-
|
| 234 |
-
updated_matrix, updated_languages = filter_languages_nan(model, dataset, use_average)
|
| 235 |
-
updated_matrix, updated_languages = filter_languages_by_families(updated_matrix, updated_languages, families)
|
| 236 |
-
|
| 237 |
-
clusters, legends = cluster_languages_by_subfamilies(updated_languages)
|
| 238 |
-
fig = plot_mst(model, dataset, use_average, updated_matrix, updated_languages, clusters, legends, fig_size=(figsize_w, figsize_h))
|
| 239 |
-
fig.tight_layout()
|
| 240 |
-
fig.savefig(f"plots/plot_{i}.pdf", format="pdf")
|
| 241 |
-
i += 1
|
| 242 |
-
return fig
|
| 243 |
|
| 244 |
plot_family_button.click(fn=plot_families_subfamilies,
|
| 245 |
inputs=[checked_families_input, model_input, dataset_input, average_checkbox, plot_figsize_h_input, plot_figsize_w_input],
|
| 246 |
-
outputs=plot_family_output)
|
| 247 |
|
| 248 |
|
| 249 |
demo.launch(share=True)
|
|
|
|
| 92 |
else:
|
| 93 |
return gr.update(interactive=True, visible=True), gr.update(interactive=True, visible=True)
|
| 94 |
|
| 95 |
+
|
| 96 |
+
plot_path = "plots/last_plot.pdf"
|
| 97 |
+
|
| 98 |
|
| 99 |
def plot_distances(model, dataset, use_average, cluster_method, cluster_method_param, plot_fn):
|
| 100 |
"""
|
| 101 |
Plots all languages from the distances matrix using t-SNE.
|
| 102 |
"""
|
| 103 |
|
|
|
|
|
|
|
| 104 |
updated_matrix, updated_languages = filter_languages_nan(model, dataset, use_average)
|
| 105 |
|
| 106 |
if cluster_method == "HDBSCAN":
|
|
|
|
| 126 |
|
| 127 |
fig = plot_fn(model, dataset, use_average, filtered_matrix, filtered_languages, clusters, legends)
|
| 128 |
fig.tight_layout()
|
| 129 |
+
fig.savefig(plot_path, format="pdf")
|
| 130 |
+
return fig, gr.DownloadButton(label="Download Plot", value=plot_path)
|
| 131 |
+
|
| 132 |
+
|
| 133 |
+
def plot_families_subfamilies(families, model, dataset, use_average, figsize_h, figsize_w):
|
| 134 |
+
updated_matrix, updated_languages = filter_languages_nan(model, dataset, use_average)
|
| 135 |
+
updated_matrix, updated_languages = filter_languages_by_families(updated_matrix, updated_languages, families)
|
| 136 |
+
|
| 137 |
+
clusters, legends = cluster_languages_by_subfamilies(updated_languages)
|
| 138 |
+
fig = plot_mst(model, dataset, use_average, updated_matrix, updated_languages, clusters, legends, fig_size=(figsize_w, figsize_h))
|
| 139 |
+
fig.tight_layout()
|
| 140 |
+
fig.savefig(plot_path, format="pdf")
|
| 141 |
+
return fig, gr.DownloadButton(label="Download Plot", value=plot_path)
|
| 142 |
|
| 143 |
|
| 144 |
with gr.Blocks() as demo:
|
|
|
|
| 195 |
plot_tsne_button = gr.Button("Plot t-SNE")
|
| 196 |
plot_umap_button = gr.Button("Plot UMAP")
|
| 197 |
plot_mst_button = gr.Button("Plot MST")
|
| 198 |
+
|
| 199 |
+
with gr.Row():
|
| 200 |
+
download_plot_button = gr.DownloadButton("Download Plot")
|
| 201 |
|
| 202 |
with gr.Row():
|
| 203 |
plot_output = gr.Plot(label="Distance Plot")
|
| 204 |
|
| 205 |
plot_tsne_button.click(fn=partial(plot_distances, plot_fn=plot_distances_tsne),
|
| 206 |
inputs=[model_input, dataset_input, average_checkbox, cluster_method_input, clusters_input],
|
| 207 |
+
outputs=[plot_output, download_plot_button])
|
| 208 |
plot_umap_button.click(fn=partial(plot_distances, plot_fn=plot_distances_umap),
|
| 209 |
inputs=[model_input, dataset_input, average_checkbox, cluster_method_input, clusters_input],
|
| 210 |
+
outputs=[plot_output, download_plot_button])
|
| 211 |
plot_mst_button.click(fn=partial(plot_distances, plot_fn=plot_mst),
|
| 212 |
inputs=[model_input, dataset_input, average_checkbox, cluster_method_input, clusters_input],
|
| 213 |
+
outputs=[plot_output, download_plot_button])
|
| 214 |
|
| 215 |
with gr.Tab(label="Language Families Subplot"):
|
| 216 |
|
|
|
|
| 240 |
plot_family_button = gr.Button("Plot Families")
|
| 241 |
plot_figsize_h_input = gr.Slider(label="Figure Height", minimum=5, maximum=30, step=1, value=15)
|
| 242 |
plot_figsize_w_input = gr.Slider(label="Figure Width", minimum=5, maximum=30, step=1, value=15)
|
| 243 |
+
|
| 244 |
+
with gr.Row():
|
| 245 |
+
download_families_plot_button = gr.DownloadButton("Download Plot", value=plot_path)
|
| 246 |
+
|
| 247 |
plot_family_output = gr.Plot(label="Families Plot")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 248 |
|
| 249 |
plot_family_button.click(fn=plot_families_subfamilies,
|
| 250 |
inputs=[checked_families_input, model_input, dataset_input, average_checkbox, plot_figsize_h_input, plot_figsize_w_input],
|
| 251 |
+
outputs=[plot_family_output, download_families_plot_button])
|
| 252 |
|
| 253 |
|
| 254 |
demo.launch(share=True)
|