Spaces:
Running
on
Zero
Running
on
Zero
fixed requirements
Browse files- .gitignore +1 -0
- app.py +27 -13
- requirements.txt +1 -1
.gitignore
CHANGED
|
@@ -20,6 +20,7 @@ venv/
|
|
| 20 |
env/
|
| 21 |
.env/
|
| 22 |
.venv/
|
|
|
|
| 23 |
|
| 24 |
# Ignore IDE specific files
|
| 25 |
.idea/
|
|
|
|
| 20 |
env/
|
| 21 |
.env/
|
| 22 |
.venv/
|
| 23 |
+
openalex_env_map/
|
| 24 |
|
| 25 |
# Ignore IDE specific files
|
| 26 |
.idea/
|
app.py
CHANGED
|
@@ -128,7 +128,14 @@ def predict(text_input, sample_size_slider, reduce_sample_checkbox, sample_reduc
|
|
| 128 |
# Check if input is empty or whitespace
|
| 129 |
print(f"Input: {text_input}")
|
| 130 |
if not text_input or text_input.isspace():
|
| 131 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 132 |
|
| 133 |
|
| 134 |
# Check if the input is a valid OpenAlex URL
|
|
@@ -235,6 +242,8 @@ def predict(text_input, sample_size_slider, reduce_sample_checkbox, sample_reduc
|
|
| 235 |
# Create and save plot
|
| 236 |
plot_start = time.time()
|
| 237 |
progress(0.7, desc="Creating plot...")
|
|
|
|
|
|
|
| 238 |
|
| 239 |
|
| 240 |
plot = datamapplot.create_interactive_plot(
|
|
@@ -251,16 +260,18 @@ def predict(text_input, sample_size_slider, reduce_sample_checkbox, sample_reduc
|
|
| 251 |
text_outline_width=5,
|
| 252 |
point_hover_color='#5e2784',
|
| 253 |
point_radius_max_pixels=7,
|
| 254 |
-
|
|
|
|
| 255 |
font_family="Roboto Condensed",
|
| 256 |
-
font_weight=
|
| 257 |
tooltip_font_weight=600,
|
| 258 |
tooltip_font_family="Roboto Condensed",
|
| 259 |
extra_point_data=extra_data,
|
| 260 |
on_click="window.open(`{doi}`)",
|
| 261 |
custom_css=DATAMAP_CUSTOM_CSS,
|
| 262 |
initial_zoom_fraction=.8,
|
| 263 |
-
enable_search=False
|
|
|
|
| 264 |
)
|
| 265 |
|
| 266 |
# Save plot
|
|
@@ -388,18 +399,21 @@ def predict(text_input, sample_size_slider, reduce_sample_checkbox, sample_reduc
|
|
| 388 |
# Return iframe and download buttons with appropriate visibility
|
| 389 |
return [
|
| 390 |
iframe,
|
| 391 |
-
gr.DownloadButton(label="Download Interactive Visualization", value=html_file_path, visible=True),
|
| 392 |
-
gr.DownloadButton(label="Download CSV Data", value=csv_file_path, visible=download_csv_checkbox),
|
| 393 |
-
gr.DownloadButton(label="Download Static Plot", value=png_file_path, visible=download_png_checkbox),
|
| 394 |
gr.Button(visible=False) # Return hidden state for cancel button
|
| 395 |
]
|
| 396 |
|
| 397 |
|
| 398 |
theme = gr.themes.Monochrome(
|
| 399 |
font=[gr.themes.GoogleFont("Roboto Condensed"), "ui-sans-serif", "system-ui", "sans-serif"],
|
| 400 |
-
|
| 401 |
text_size="lg",
|
| 402 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 403 |
)
|
| 404 |
|
| 405 |
|
|
@@ -424,9 +438,9 @@ with gr.Blocks(theme=theme) as demo:
|
|
| 424 |
cancel_btn = gr.Button("Cancel", visible=False, variant='secondary')
|
| 425 |
|
| 426 |
# Create separate download buttons
|
| 427 |
-
html_download = gr.DownloadButton("Download Interactive Visualization", visible=False)
|
| 428 |
-
csv_download = gr.DownloadButton("Download CSV Data", visible=False)
|
| 429 |
-
png_download = gr.DownloadButton("Download Static Plot", visible=False)
|
| 430 |
|
| 431 |
text_input = gr.Textbox(label="OpenAlex-search URL",
|
| 432 |
info="Enter the URL to an OpenAlex-search.")
|
|
@@ -483,7 +497,7 @@ with gr.Blocks(theme=theme) as demo:
|
|
| 483 |
with gr.Column(scale=2):
|
| 484 |
html = gr.HTML(
|
| 485 |
value='<div style="width: 100%; height: 1000px; display: flex; justify-content: center; align-items: center; border: 1px solid #ccc; background-color: #f8f9fa;"><p style="font-size: 1.2em; color: #666;">The visualization map will appear here after running a query</p></div>',
|
| 486 |
-
label="
|
| 487 |
show_label=True
|
| 488 |
)
|
| 489 |
gr.Markdown("""
|
|
|
|
| 128 |
# Check if input is empty or whitespace
|
| 129 |
print(f"Input: {text_input}")
|
| 130 |
if not text_input or text_input.isspace():
|
| 131 |
+
error_message = "Error: Please enter a valid OpenAlex URL in the 'OpenAlex-search URL'-field"
|
| 132 |
+
return [
|
| 133 |
+
error_message, # iframe HTML
|
| 134 |
+
gr.DownloadButton(label="Download Interactive Visualization", value='html_file_path', visible=False), # html download
|
| 135 |
+
gr.DownloadButton(label="Download CSV Data", value='csv_file_path', visible=False), # csv download
|
| 136 |
+
gr.DownloadButton(label="Download Static Plot", value='png_file_path', visible=False), # png download
|
| 137 |
+
gr.Button(visible=False) # cancel button state
|
| 138 |
+
]
|
| 139 |
|
| 140 |
|
| 141 |
# Check if the input is a valid OpenAlex URL
|
|
|
|
| 242 |
# Create and save plot
|
| 243 |
plot_start = time.time()
|
| 244 |
progress(0.7, desc="Creating plot...")
|
| 245 |
+
# Create a solid black colormap
|
| 246 |
+
black_cmap = mcolors.LinearSegmentedColormap.from_list('black', ['#000000', '#000000'])
|
| 247 |
|
| 248 |
|
| 249 |
plot = datamapplot.create_interactive_plot(
|
|
|
|
| 260 |
text_outline_width=5,
|
| 261 |
point_hover_color='#5e2784',
|
| 262 |
point_radius_max_pixels=7,
|
| 263 |
+
cmap=black_cmap,
|
| 264 |
+
#color_label_text=False,
|
| 265 |
font_family="Roboto Condensed",
|
| 266 |
+
font_weight=600,
|
| 267 |
tooltip_font_weight=600,
|
| 268 |
tooltip_font_family="Roboto Condensed",
|
| 269 |
extra_point_data=extra_data,
|
| 270 |
on_click="window.open(`{doi}`)",
|
| 271 |
custom_css=DATAMAP_CUSTOM_CSS,
|
| 272 |
initial_zoom_fraction=.8,
|
| 273 |
+
enable_search=False,
|
| 274 |
+
offline_mode=False
|
| 275 |
)
|
| 276 |
|
| 277 |
# Save plot
|
|
|
|
| 399 |
# Return iframe and download buttons with appropriate visibility
|
| 400 |
return [
|
| 401 |
iframe,
|
| 402 |
+
gr.DownloadButton(label="Download Interactive Visualization", value=html_file_path, visible=True, variant='secondary'),
|
| 403 |
+
gr.DownloadButton(label="Download CSV Data", value=csv_file_path, visible=download_csv_checkbox, variant='secondary'),
|
| 404 |
+
gr.DownloadButton(label="Download Static Plot", value=png_file_path, visible=download_png_checkbox, variant='secondary'),
|
| 405 |
gr.Button(visible=False) # Return hidden state for cancel button
|
| 406 |
]
|
| 407 |
|
| 408 |
|
| 409 |
theme = gr.themes.Monochrome(
|
| 410 |
font=[gr.themes.GoogleFont("Roboto Condensed"), "ui-sans-serif", "system-ui", "sans-serif"],
|
|
|
|
| 411 |
text_size="lg",
|
| 412 |
+
).set(
|
| 413 |
+
button_secondary_background_fill="white",
|
| 414 |
+
button_secondary_background_fill_hover="#f3f4f6",
|
| 415 |
+
button_secondary_border_color="black",
|
| 416 |
+
button_secondary_text_color="black",
|
| 417 |
)
|
| 418 |
|
| 419 |
|
|
|
|
| 438 |
cancel_btn = gr.Button("Cancel", visible=False, variant='secondary')
|
| 439 |
|
| 440 |
# Create separate download buttons
|
| 441 |
+
html_download = gr.DownloadButton("Download Interactive Visualization", visible=False, variant='secondary')
|
| 442 |
+
csv_download = gr.DownloadButton("Download CSV Data", visible=False, variant='secondary')
|
| 443 |
+
png_download = gr.DownloadButton("Download Static Plot", visible=False, variant='secondary')
|
| 444 |
|
| 445 |
text_input = gr.Textbox(label="OpenAlex-search URL",
|
| 446 |
info="Enter the URL to an OpenAlex-search.")
|
|
|
|
| 497 |
with gr.Column(scale=2):
|
| 498 |
html = gr.HTML(
|
| 499 |
value='<div style="width: 100%; height: 1000px; display: flex; justify-content: center; align-items: center; border: 1px solid #ccc; background-color: #f8f9fa;"><p style="font-size: 1.2em; color: #666;">The visualization map will appear here after running a query</p></div>',
|
| 500 |
+
label="",
|
| 501 |
show_label=True
|
| 502 |
)
|
| 503 |
gr.Markdown("""
|
requirements.txt
CHANGED
|
@@ -10,7 +10,7 @@ adapters
|
|
| 10 |
torch
|
| 11 |
tqdm
|
| 12 |
pyarrow
|
| 13 |
-
datamapplot==0.
|
| 14 |
numba==0.58.1
|
| 15 |
umap-learn==0.5.7
|
| 16 |
pynndescent==0.5.12
|
|
|
|
| 10 |
torch
|
| 11 |
tqdm
|
| 12 |
pyarrow
|
| 13 |
+
datamapplot==0.5.0
|
| 14 |
numba==0.58.1
|
| 15 |
umap-learn==0.5.7
|
| 16 |
pynndescent==0.5.12
|