Update app.py
Browse files
app.py
CHANGED
@@ -5,39 +5,22 @@ import time
|
|
5 |
from functools import wraps
|
6 |
import sys
|
7 |
import multimolecule # Importar para registrar los modelos de multimolecule
|
|
|
8 |
|
9 |
-
# Decorador
|
10 |
def medir_tiempo(func):
|
11 |
@wraps(func)
|
12 |
def wrapper(*args, **kwargs):
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
return resultado
|
20 |
-
except RecursionError as re:
|
21 |
-
print(f"RecursionError en '{func.__name__}': {re}")
|
22 |
-
raise re
|
23 |
-
except Exception as e:
|
24 |
-
print(f"Error en '{func.__name__}': {e}")
|
25 |
-
raise e
|
26 |
return wrapper
|
27 |
|
28 |
-
#
|
29 |
-
|
30 |
-
if device == -1:
|
31 |
-
print("Advertencia: CUDA no está disponible. Se usará la CPU, lo que puede ser lento.")
|
32 |
-
|
33 |
-
# Cargar el pipeline de Fill-Mask
|
34 |
-
try:
|
35 |
-
print("Cargando el pipeline de Fill-Mask...")
|
36 |
-
fill_mask = pipeline('fill-mask', model='multimolecule/mrnafm', device=device)
|
37 |
-
except Exception as e:
|
38 |
-
print(f"Error al cargar el pipeline de Fill-Mask: {e}")
|
39 |
-
sys.exit(1)
|
40 |
-
|
41 |
@medir_tiempo
|
42 |
def predecir_fill_mask(secuencias):
|
43 |
"""
|
@@ -77,6 +60,19 @@ def predecir_fill_mask(secuencias):
|
|
77 |
print(f"Error durante la predicción: {e}")
|
78 |
return f"Error al realizar la predicción: {e}"
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
# Definir la interfaz de Gradio
|
81 |
titulo = "OmniGenome: Predicción de Fill-Mask para Secuencias de ARN"
|
82 |
descripcion = (
|
|
|
5 |
from functools import wraps
|
6 |
import sys
|
7 |
import multimolecule # Importar para registrar los modelos de multimolecule
|
8 |
+
import spaces # Importar el módulo spaces
|
9 |
|
10 |
+
# Decorador para medir el tiempo de ejecución
|
11 |
def medir_tiempo(func):
|
12 |
@wraps(func)
|
13 |
def wrapper(*args, **kwargs):
|
14 |
+
inicio = time.time()
|
15 |
+
resultado = func(*args, **kwargs)
|
16 |
+
fin = time.time()
|
17 |
+
tiempo_transcurrido = fin - inicio
|
18 |
+
print(f"Tiempo de ejecución de '{func.__name__}': {tiempo_transcurrido:.2f} segundos")
|
19 |
+
return resultado
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
return wrapper
|
21 |
|
22 |
+
# Decorador para asignar GPU (según la funcionalidad proporcionada por spaces)
|
23 |
+
@spaces.GPU
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
@medir_tiempo
|
25 |
def predecir_fill_mask(secuencias):
|
26 |
"""
|
|
|
60 |
print(f"Error durante la predicción: {e}")
|
61 |
return f"Error al realizar la predicción: {e}"
|
62 |
|
63 |
+
# Configurar el dispositivo (aunque el decorador @spaces.GPU debería manejar esto)
|
64 |
+
device = 0 if torch.cuda.is_available() else -1
|
65 |
+
if device == -1:
|
66 |
+
print("Advertencia: CUDA no está disponible. Se usará la CPU, lo que puede ser lento.")
|
67 |
+
|
68 |
+
# Cargar el pipeline de Fill-Mask
|
69 |
+
try:
|
70 |
+
print("Cargando el pipeline de Fill-Mask...")
|
71 |
+
fill_mask = pipeline('fill-mask', model='multimolecule/mrnafm', device=device)
|
72 |
+
except Exception as e:
|
73 |
+
print(f"Error al cargar el pipeline de Fill-Mask: {e}")
|
74 |
+
sys.exit(1)
|
75 |
+
|
76 |
# Definir la interfaz de Gradio
|
77 |
titulo = "OmniGenome: Predicción de Fill-Mask para Secuencias de ARN"
|
78 |
descripcion = (
|