Enzo Reis de Oliveira commited on
Commit
ddae879
·
1 Parent(s): b383374

Fixing bug

Browse files
Files changed (2) hide show
  1. app.py +31 -22
  2. requirements.txt +1 -2
app.py CHANGED
@@ -2,17 +2,20 @@ import os
2
  import sys
3
  import json
4
  import tempfile
 
5
  import pandas as pd
6
  import gradio as gr
 
7
 
8
- # 1) Ajuste de path ANTES de importar smi_ted_light
9
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
10
  INFERENCE_PATH = os.path.join(BASE_DIR, "smi-ted", "inference")
11
  sys.path.insert(0, INFERENCE_PATH)
12
 
 
13
  from smi_ted_light.load import load_smi_ted
14
 
15
- # 2) Carrega o modelo
16
  MODEL_DIR = os.path.join(INFERENCE_PATH, "smi_ted_light")
17
  model = load_smi_ted(
18
  folder=MODEL_DIR,
@@ -20,7 +23,7 @@ model = load_smi_ted(
20
  vocab_filename="bert_vocab_curated.txt",
21
  )
22
 
23
- # 3) Função que retorna STRING JSON + gr.update para o CSV
24
  def gerar_embedding_e_csv(smiles: str):
25
  smiles = smiles.strip()
26
  if not smiles:
@@ -28,46 +31,52 @@ def gerar_embedding_e_csv(smiles: str):
28
  return json.dumps(erro), gr.update(visible=False)
29
 
30
  try:
 
31
  vetor = model.encode(smiles, return_torch=True)[0].tolist()
32
- # monta CSV
33
  df = pd.DataFrame([vetor])
34
  tmp = tempfile.NamedTemporaryFile(suffix=".csv", delete=False)
35
  df.to_csv(tmp.name, index=False)
36
  tmp.close()
37
- # retorna JSON-string e torna o link visível
38
  return json.dumps(vetor), gr.update(value=tmp.name, visible=True)
39
  except Exception as e:
40
  erro = {"erro": str(e)}
41
  return json.dumps(erro), gr.update(visible=False)
42
 
43
- # 4) Interface Blocks
44
  with gr.Blocks() as demo:
45
  gr.Markdown(
46
  """
47
- ## SMI-TED Embedding Generator
48
- Cole uma sequência SMILES e receba:
49
- 1. Uma **string JSON** com o vetor (Textbox)
50
- 2. Um link para **baixar o CSV** (File)
51
  """
52
  )
53
 
54
  with gr.Row():
55
- inp_smiles = gr.Textbox(label="SMILES", placeholder="Ex.: CCO")
56
- btn = gr.Button("Gerar Embedding")
 
57
  with gr.Row():
58
- out_text = gr.Textbox(
59
- label="Embedding (JSON)",
60
- interactive=False,
61
- lines=4,
62
- placeholder='Vai aparecer aqui o vetor como JSON...'
 
 
 
 
63
  )
64
- out_file = gr.File(label="Download do CSV", visible=False)
65
 
66
- btn.click(
 
67
  fn=gerar_embedding_e_csv,
68
- inputs=inp_smiles,
69
- outputs=[out_text, out_file]
70
  )
71
 
72
  if __name__ == "__main__":
73
- demo.launch()
 
2
  import sys
3
  import json
4
  import tempfile
5
+
6
  import pandas as pd
7
  import gradio as gr
8
+ from PIL import Image
9
 
10
+ # 1) Ajusta o path antes de importar o loader
11
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
12
  INFERENCE_PATH = os.path.join(BASE_DIR, "smi-ted", "inference")
13
  sys.path.insert(0, INFERENCE_PATH)
14
 
15
+ # 2) Importa o loader do SMI-TED Light
16
  from smi_ted_light.load import load_smi_ted
17
 
18
+ # 3) Carrega o modelo
19
  MODEL_DIR = os.path.join(INFERENCE_PATH, "smi_ted_light")
20
  model = load_smi_ted(
21
  folder=MODEL_DIR,
 
23
  vocab_filename="bert_vocab_curated.txt",
24
  )
25
 
26
+ # 4) Função que gera o embedding e cria o CSV temporário
27
  def gerar_embedding_e_csv(smiles: str):
28
  smiles = smiles.strip()
29
  if not smiles:
 
31
  return json.dumps(erro), gr.update(visible=False)
32
 
33
  try:
34
+ # Gera o vetor
35
  vetor = model.encode(smiles, return_torch=True)[0].tolist()
36
+ # Grava CSV
37
  df = pd.DataFrame([vetor])
38
  tmp = tempfile.NamedTemporaryFile(suffix=".csv", delete=False)
39
  df.to_csv(tmp.name, index=False)
40
  tmp.close()
41
+ # Retorna JSON em string e ativa o link de download
42
  return json.dumps(vetor), gr.update(value=tmp.name, visible=True)
43
  except Exception as e:
44
  erro = {"erro": str(e)}
45
  return json.dumps(erro), gr.update(visible=False)
46
 
47
+ # 5) Monta a interface com Blocks
48
  with gr.Blocks() as demo:
49
  gr.Markdown(
50
  """
51
+ # SMI-TED Embedding Generator
52
+ Cole uma sequência SMILES e:
53
+ - Veja o vetor embedding (JSON)
54
+ - Baixe-o em CSV
55
  """
56
  )
57
 
58
  with gr.Row():
59
+ smiles_in = gr.Textbox(label="SMILES", placeholder="Ex.: CCO")
60
+ gerar_btn = gr.Button("Gerar Embedding")
61
+
62
  with gr.Row():
63
+ embedding_out = gr.Textbox(
64
+ label="Embedding (JSON)",
65
+ interactive=False,
66
+ lines=4,
67
+ placeholder="O vetor aparecerá aqui…"
68
+ )
69
+ download_csv = gr.File(
70
+ label="Baixar CSV",
71
+ visible=False
72
  )
 
73
 
74
+ # Conecta botão à função que tem dois outputs
75
+ gerar_btn.click(
76
  fn=gerar_embedding_e_csv,
77
+ inputs=smiles_in,
78
+ outputs=[embedding_out, download_csv]
79
  )
80
 
81
  if __name__ == "__main__":
82
+ demo.launch(server_name="0.0.0.0")
requirements.txt CHANGED
@@ -5,6 +5,5 @@ numpy==1.26.4
5
  pandas==1.4.0
6
  tqdm>=4.66.4
7
  rdkit>=2024.3.5
8
- gradio==4.32.0
9
- gradio-client==0.2.0
10
  huggingface-hub
 
5
  pandas==1.4.0
6
  tqdm>=4.66.4
7
  rdkit>=2024.3.5
8
+ gradio>=4.33.1
 
9
  huggingface-hub