jibsn commited on
Commit
e4d24f7
·
verified ·
1 Parent(s): 865684e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -34
app.py CHANGED
@@ -1,39 +1,33 @@
1
- from fastapi import FastAPI, File, UploadFile
2
- from fastapi.responses import JSONResponse
3
- import gradio as gr
4
- import os
5
-
6
  import sys
7
  sys.path.append(os.path.dirname(os.path.abspath(__file__)))
8
-
 
9
  from ONNX0630 import main as predict_smiles
10
- from PIL import Image
11
- import io
12
  import tempfile
13
  import logging
14
 
15
  # 设置日志
16
  logging.basicConfig(level=logging.INFO)
17
  logger = logging.getLogger(__name__)
18
-
 
19
  def gradio_predict(image):
20
  try:
21
- # 使用临时文件目录保存图片
22
- # with tempfile.NamedTemporaryFile(suffix=".png", dir="/temp", delete=False) as temp_file:
23
- # temp_path = temp_file.name
24
- # logger.info(f"temp_path: {temp_path}")
25
- # image.save(temp_path)
26
- # logger.info(f"图片已保存至: {temp_path}")
27
-
28
- # # 调用模型的 main 函数
29
  if image is None:
30
  logger.error("上传的图片为空")
31
  return "错误: 请上传有效的图片文件"
32
 
 
 
 
 
 
 
33
  # 使用 /home/user/app 保存临时文件
34
- with tempfile.NamedTemporaryFile(suffix=".png", dir="/home/user/app", delete=False) as temp_file:
35
  temp_path = os.path.abspath(temp_file.name)
36
- logger.info(f"保存图片到: {temp_path}")
37
  image.save(temp_path)
38
 
39
  # 验证文件存在
@@ -41,20 +35,24 @@ def gradio_predict(image):
41
  logger.error(f"图片文件未正确保存: {temp_path}")
42
  return f"错误: 图片文件未正确保存 - {temp_path}"
43
 
44
- # 检查路径内容( 't' 问题)
45
- logger.info(f"传递给 main 的路径: {temp_path}, 类型: {type(temp_path)}")
46
-
47
  smiles = predict_smiles(temp_path)
48
- logger.info(f"SMILES 输出: {smiles}")
49
 
50
  # 清理临时文件
51
- os.remove(temp_path)
52
- logger.info(f"已删除临时文件: {temp_path}")
 
 
 
53
 
54
  return smiles
55
  except FileNotFoundError as e:
56
  logger.error(f"文件路径错误: {e}")
57
  return f"错误: 文件路径问题 - {str(e)}"
 
 
 
58
  except PermissionError as e:
59
  logger.error(f"权限错误: {e}")
60
  return f"错误: 文件权限问题 - {str(e)}"
@@ -62,19 +60,14 @@ def gradio_predict(image):
62
  logger.error(f"处理错误: {e}")
63
  return f"错误: {str(e)}"
64
 
65
- # Define Gradio interface
66
  iface = gr.Interface(
67
  fn=gradio_predict,
68
  inputs=gr.Image(type="pil"),
69
  outputs=gr.Textbox(),
70
- title="Chemical Structure to SMILES Converter",
71
- description="Upload an image of a chemical structure to get its SMILES string."
72
  )
73
 
74
- # Launch Gradio with FastAPI
75
- # app = gr.mount_gradio_app(app, iface, path="/")
76
-
77
  if __name__ == "__main__":
78
- # import uvicorn
79
- # uvicorn.run(app, host="0.0.0.0", port=7860)
80
- iface.launch(server_name="0.0.0.0", server_port=7860)
 
 
 
 
 
 
1
  import sys
2
  sys.path.append(os.path.dirname(os.path.abspath(__file__)))
3
+ import os
4
+ import gradio as gr
5
  from ONNX0630 import main as predict_smiles
 
 
6
  import tempfile
7
  import logging
8
 
9
  # 设置日志
10
  logging.basicConfig(level=logging.INFO)
11
  logger = logging.getLogger(__name__)
12
+
13
+
14
  def gradio_predict(image):
15
  try:
16
+ # 检查图片输入
 
 
 
 
 
 
 
17
  if image is None:
18
  logger.error("上传的图片为空")
19
  return "错误: 请上传有效的图片文件"
20
 
21
+ # 验证工作目录
22
+ work_dir = "/home/user/app"
23
+ if not os.path.isdir(work_dir):
24
+ logger.error(f"工作目录不存在或不是目录: {work_dir}")
25
+ return f"错误: 工作目录无效 - {work_dir}"
26
+
27
  # 使用 /home/user/app 保存临时文件
28
+ with tempfile.NamedTemporaryFile(suffix=".png", dir=work_dir, delete=False) as temp_file:
29
  temp_path = os.path.abspath(temp_file.name)
30
+ logger.info(f"保存图片到: {temp_path}, 类型: {type(temp_path)}")
31
  image.save(temp_path)
32
 
33
  # 验证文件存在
 
35
  logger.error(f"图片文件未正确保存: {temp_path}")
36
  return f"错误: 图片文件未正确保存 - {temp_path}"
37
 
38
+ # 调用模型的 main 函数
39
+ logger.info(f"传递给 main 的路径: {temp_path}")
 
40
  smiles = predict_smiles(temp_path)
 
41
 
42
  # 清理临时文件
43
+ try:
44
+ os.remove(temp_path)
45
+ logger.info(f"已删除临时文件: {temp_path}")
46
+ except Exception as e:
47
+ logger.warning(f"删除临时文件失败: {e}")
48
 
49
  return smiles
50
  except FileNotFoundError as e:
51
  logger.error(f"文件路径错误: {e}")
52
  return f"错误: 文件路径问题 - {str(e)}"
53
+ except IsADirectoryError as e:
54
+ logger.error(f"路径是目录: {e}")
55
+ return f"错误: 路径是目录 - {str(e)}"
56
  except PermissionError as e:
57
  logger.error(f"权限错误: {e}")
58
  return f"错误: 文件权限问题 - {str(e)}"
 
60
  logger.error(f"处理错误: {e}")
61
  return f"错误: {str(e)}"
62
 
63
+ # 定义 Gradio 界面
64
  iface = gr.Interface(
65
  fn=gradio_predict,
66
  inputs=gr.Image(type="pil"),
67
  outputs=gr.Textbox(),
68
+ title="化学结构转 SMILES",
69
+ description="上传化学结构图片以获取其 SMILES 字符串"
70
  )
71
 
 
 
 
72
  if __name__ == "__main__":
73
+ iface.launch(server_name="0.0.0.0", server_port=7860, share=False)