Update app.py
Browse filesupdate download fun
app.py
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
| 1 |
from openai import OpenAI
|
| 2 |
from ocr_mathpix import extract_pdf_mathpix
|
| 3 |
import gradio as gr
|
|
@@ -242,6 +245,52 @@ def update_input():
|
|
| 242 |
return en_1
|
| 243 |
|
| 244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 245 |
CSV_FILE_PATH_Golden_Benchmark_Enzyme = "static/Golden Benchmark for Enzyme Kinetics.csv"
|
| 246 |
CSV_FILE_PATH_Golden_Benchmark_Ribozyme = "static/Golden Benchmark for Ribozyme Kinetics.csv"
|
| 247 |
CSV_FILE_PATH_LLENKA_Dataset = "static/3450_merged_data_2000_lines.csv"
|
|
@@ -350,6 +399,11 @@ with gr.Blocks(title="Automated Enzyme Kinetics Extractor") as demo:
|
|
| 350 |
| Enzyme3 | Homo sapiens | Substrate_C | 6.9 | mM | 15.6 | s^-1 | 43000 | µM^-1s^-1 | 65°C | 8.0 | T253S | NAD^+ |
|
| 351 |
|
| 352 |
""")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 353 |
with gr.Tab("Golden Benchmark for Enzyme Kinetics"):
|
| 354 |
gr.Markdown(
|
| 355 |
'''<h1 align="center"> Golden Benchmark Viewer with Advanced Search </h1>
|
|
@@ -459,7 +513,8 @@ with gr.Blocks(title="Automated Enzyme Kinetics Extractor") as demo:
|
|
| 459 |
extract_button_md.click(extract_pdf_md, inputs=file_input, outputs=text_output)
|
| 460 |
extract_button_text.click(extract_pdf_pypdf, inputs=file_input, outputs=text_output)
|
| 461 |
exp.click(update_input, outputs=model_input)
|
| 462 |
-
gen.click(fn=predict, inputs=[model_input, text_output, model_dropdown, temp_slider], outputs=outputs)
|
|
|
|
| 463 |
clr.click(fn=lambda: [gr.update(value=""), gr.update(value="")], inputs=None, outputs=[model_input, outputs])
|
| 464 |
viewer_button.click(display_pdf_images, inputs=file_input, outputs=file_out)
|
| 465 |
|
|
|
|
| 1 |
+
import datetime
|
| 2 |
+
import tempfile
|
| 3 |
+
import os
|
| 4 |
from openai import OpenAI
|
| 5 |
from ocr_mathpix import extract_pdf_mathpix
|
| 6 |
import gradio as gr
|
|
|
|
| 245 |
return en_1
|
| 246 |
|
| 247 |
|
| 248 |
+
# 包装函数:把 outputs 的内容写入文件,并显示 File 组件
|
| 249 |
+
def reveal_download_file(content):
|
| 250 |
+
path = download_markdown(content)
|
| 251 |
+
if not path:
|
| 252 |
+
return gr.update(visible=False, value=None)
|
| 253 |
+
return gr.update(visible=True, value=path)
|
| 254 |
+
|
| 255 |
+
|
| 256 |
+
def download_markdown(content):
|
| 257 |
+
"""Save the markdown content to a temporary file with a timestamp."""
|
| 258 |
+
if not content or content.strip() == "":
|
| 259 |
+
return None # 如果内容为空,则不生成文件
|
| 260 |
+
|
| 261 |
+
# 生成带时间戳的文件名
|
| 262 |
+
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
|
| 263 |
+
filename = f"enzyme_kinetics_extract_{timestamp}.md"
|
| 264 |
+
|
| 265 |
+
# 直接创建带时间戳的文件,避免重命名操作
|
| 266 |
+
file_path = os.path.join(tempfile.gettempdir(), filename)
|
| 267 |
+
|
| 268 |
+
# 增强文件创建的健壮性,添加重试机制和更完善的错误处理
|
| 269 |
+
max_retries = 3
|
| 270 |
+
for attempt in range(max_retries):
|
| 271 |
+
try:
|
| 272 |
+
# 检查文件是否已存在,如果存在则添加序号
|
| 273 |
+
final_path = file_path
|
| 274 |
+
if os.path.exists(final_path):
|
| 275 |
+
name, ext = os.path.splitext(file_path)
|
| 276 |
+
counter = 1
|
| 277 |
+
while os.path.exists(f"{name}_{counter}{ext}"):
|
| 278 |
+
counter += 1
|
| 279 |
+
final_path = f"{name}_{counter}{ext}"
|
| 280 |
+
|
| 281 |
+
with open(final_path, 'w', encoding='utf-8') as f:
|
| 282 |
+
f.write(content)
|
| 283 |
+
return final_path
|
| 284 |
+
except Exception as e:
|
| 285 |
+
print(f"Attempt {attempt + 1} failed to create download file: {e}")
|
| 286 |
+
if attempt == max_retries - 1:
|
| 287 |
+
print(f"Error creating download file after {max_retries} attempts: {e}")
|
| 288 |
+
return None # 返回None表示创建失败
|
| 289 |
+
# 等待一段时间后重试
|
| 290 |
+
import time
|
| 291 |
+
time.sleep(0.1)
|
| 292 |
+
|
| 293 |
+
|
| 294 |
CSV_FILE_PATH_Golden_Benchmark_Enzyme = "static/Golden Benchmark for Enzyme Kinetics.csv"
|
| 295 |
CSV_FILE_PATH_Golden_Benchmark_Ribozyme = "static/Golden Benchmark for Ribozyme Kinetics.csv"
|
| 296 |
CSV_FILE_PATH_LLENKA_Dataset = "static/3450_merged_data_2000_lines.csv"
|
|
|
|
| 399 |
| Enzyme3 | Homo sapiens | Substrate_C | 6.9 | mM | 15.6 | s^-1 | 43000 | µM^-1s^-1 | 65°C | 8.0 | T253S | NAD^+ |
|
| 400 |
|
| 401 |
""")
|
| 402 |
+
# 添加下载提取结果按钮和文件组件
|
| 403 |
+
with gr.Row():
|
| 404 |
+
download_file = gr.File(label="Download Extract Result File", interactive=False, visible=False)
|
| 405 |
+
|
| 406 |
+
# 添加下载 Markdown 按钮和文件组件
|
| 407 |
with gr.Tab("Golden Benchmark for Enzyme Kinetics"):
|
| 408 |
gr.Markdown(
|
| 409 |
'''<h1 align="center"> Golden Benchmark Viewer with Advanced Search </h1>
|
|
|
|
| 513 |
extract_button_md.click(extract_pdf_md, inputs=file_input, outputs=text_output)
|
| 514 |
extract_button_text.click(extract_pdf_pypdf, inputs=file_input, outputs=text_output)
|
| 515 |
exp.click(update_input, outputs=model_input)
|
| 516 |
+
gen.click(fn=predict, inputs=[model_input, text_output, model_dropdown, temp_slider], outputs=outputs) \
|
| 517 |
+
.then(fn=reveal_download_file, inputs=outputs, outputs=download_file)
|
| 518 |
clr.click(fn=lambda: [gr.update(value=""), gr.update(value="")], inputs=None, outputs=[model_input, outputs])
|
| 519 |
viewer_button.click(display_pdf_images, inputs=file_input, outputs=file_out)
|
| 520 |
|