Convertir el DataFrame a una tabla HTML.
Este script parte de un fichero de texto separado por tabuladores que contiene en la primera fila el nombre de cada columna y en cada columna una variable. Genera un fichero html que permite visualizar la tabla, ordenar de mayor a nemor, buscar y mostrar un número variable de registros.
import pandas as pd
import os
# --- Configuración de Archivos ---
input_file = r'D:\zzz\clusters_70_80_90.txt'
output_folder = r'D:\zzz'
output_html_file = 'cluster_data_sortable_table.html' # Nombre del archivo HTML de salida
# Asegúrate de que la carpeta de salida exista
os.makedirs(output_folder, exist_ok=True)
# --- Leer el Fichero de Datos ---
try:
df = pd.read_csv(input_file, sep='\t')
print(f"Archivo '{input_file}' leído exitosamente.")
except FileNotFoundError:
print(f"Error: El archivo '{input_file}' no se encontró. Por favor, verifica la ruta.")
exit()
except Exception as e:
print(f"Ocurrió un error al leer el archivo: {e}")
exit()
# --- Generar el Contenido HTML ---
# Convertir el DataFrame a una tabla HTML
# DataTables.net requiere que la tabla tenga un y un
# y un ID para poder inicializarla con JavaScript.
# df.to_html() lo hace de forma predeterminada si no especificas index=True
html_table = df.to_html(
index=False, # No incluir el índice de Pandas en la tabla HTML
table_id='myDataTable', # Asigna un ID a la tabla para JavaScript
classes='display compact' # Clases CSS de DataTables para un estilo básico
)
# Plantilla HTML para envolver la tabla y añadir los scripts de DataTables
html_content = f"""
Datos de Clústeres Ordenables
Datos de Clústeres
{html_table}
"""
# --- Guardar el archivo HTML ---
output_path = os.path.join(output_folder, output_html_file)
try:
with open(output_path, 'w', encoding='utf-8') as f:
f.write(html_content)
print(f"Archivo HTML generado exitosamente en: {output_path}")
print(f"Ábrelo con tu navegador web para ver la tabla interactiva.")
except Exception as e:
print(f"Error al escribir el archivo HTML: {e}")
El fiechero de partida es clusters_70_80_90.txt y la tabla generada en el fichero html de salida se puede ver justo debajo.
Name
SMILES
Cluster_70
Cluster_80
Cluster_90
MolPort-044-984-592_3
OC(=O)[C@@H]1OCC[C@H]1NC(=O)[C@@H]1OCC[C@@H]1CNC(=O)OCC1c2c(cccc2)c2c1cccc2
22
22
22
MolPort-044-985-007_10
OC(=O)[C@H]1OCC[C@@H]1CNC(=O)[C@@H]1COC[C@H]1NC(=O)OCC1c2c(cccc2)c2c1cccc2
20
20
20
MolPort-044-566-107_1
O=C(NCCN1C[C@@H]2C[C@H](C1)c1cccc(=O)n1C2)c1n[nH]c(c1)c1cc2c(OCC2)cc1
14
14
14
MolPort-044-984-907_12
OC(=O)[C@H]1OCC[C@H]1CNC(=O)[C@@H]1OCC[C@H]1NC(=O)OCC1c2c(cccc2)c2c1cccc2
0
0
23
MolPort-044-942-261_6
OC(=O)[C@H]1CN(CCO1)C(=O)[C@@H]1C[C@@H](NC(=O)OCC2c3c(cccc3)c3c2cccc3)C=C1
18
18
18
MolPort-044-975-789_3
OC(=O)Cn1cc(NC(=O)[C@@H]2OCC[C@H]2NC(=O)OCC2c3c(cccc3)c3c2cccc3)cn1
13
13
13
MolPort-044-991-489_12
OC(=O)[C@H]1C[C@H]1CNC(=O)[C@@H]1OCC[C@H]1NC(=O)OCC1c2c(cccc2)c2c1cccc2
0
0
12
MolPort-044-992-964_2
OC(=O)[C@H]1CN(CC21CC2)C(=O)C#CCNC(=O)OCC1c2c(cccc2)c2c1cccc2
5
5
2
MolPort-044-563-997_2
COc1c(cccc1)c1n[nH]c(c1)C(=O)NCCN1C[C@H]2C[C@H](C1)c1cccc(=O)n1C2
17
17
17
MolPort-044-985-584_2
C[C@H]1CN(C[C@@H]1C(=O)O)C(=O)C#CCNC(=O)OCC1c2c(cccc2)c2c1cccc2
21
21
21
MolPort-044-992-964_1
OC(=O)[C@@H]1CN(CC21CC2)C(=O)C#CCNC(=O)OCC1c2c(cccc2)c2c1cccc2
5
5
2
MolPort-044-544-232_2
COc1nn2c(CCCC(=O)N3CCCC4=C[C@@H]5C[C@@H](CN6CCCC[C@H]56)[C@H]34)nnc2cc1
16
16
16
MolPort-044-910-463_1
OC(=O)[C@]12CN(C[C@@H]1COCC2)C(=O)C#CCNC(=O)OCC1c2c(cccc2)c2c1cccc2
15
15
15
MolPort-044-543-441_14
O=C(CCCn1nnc2ccccc2c1=O)N1CCCC2=C[C@H]3C[C@H](CN4CCCC[C@@H]34)[C@@H]12
8
8
8
MolPort-044-985-309_2
OC(=O)[C@H]1[C@H]2C[C@@H]1N(C2)C(=O)C#CCNC(=O)OCC1c2c(cccc2)c2c1cccc2
19
19
19
MolPort-044-810-474_6
CC1(C)CC(=O)c2c(O)cc(OCC(=O)N3C[C@H]4C[C@H](C3)[C@H]3CCCC(=O)N3C4)cc2O1
4
4
4
MolPort-044-810-474_2
CC1(C)CC(=O)c2c(O)cc(OCC(=O)N3C[C@H]4C[C@H](C3)[C@@H]3CCCC(=O)N3C4)cc2O1
4
4
4
MolPort-044-611-890_6
C[C@@H](NC(=O)NC[C@@H]1C[C@@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-611-890_1
C[C@H](NC(=O)NC[C@@H]1C[C@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-611-890_3
C[C@H](NC(=O)NC[C@H]1C[C@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-611-890_7
C[C@H](NC(=O)NC[C@H]1C[C@@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-611-890_2
C[C@@H](NC(=O)NC[C@@H]1C[C@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-611-890_8
C[C@@H](NC(=O)NC[C@H]1C[C@@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-611-890_4
C[C@@H](NC(=O)NC[C@H]1C[C@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-564-956_2
O=C(NCCN1C[C@H]2C[C@H](C1)c1cccc(=O)n1C2)c1c2COc3ccccc3c2n[nH]1
11
11
11
MolPort-044-611-890_5
C[C@H](NC(=O)NC[C@@H]1C[C@@H](CO1)c1ccccc1)c1nnnn1c1ccccc1
1
1
1
MolPort-044-544-136_6
COc1c2C(=O)[C@@]3(Oc2c(Cl)c(OC)c1)[C@H](C)CC(=CC3=O)N[C@@H](Cc1ccccc1)C(=O)N
7
7
7
MolPort-044-959-262_3
OC(=O)[C@@H]1[C@@H]2C[C@H]1N(C2)C(=O)c1nonc1NC(=O)OCC1c2c(cccc2)c2c1cccc2
12
12
5
MolPort-045-096-602_4
N[C@H]1CC[C@H]2CN(C[C@H]12)C(=O)C1CCN(CC1)C(=O)c1cccc2ccccc12
9
9
9
MolPort-044-915-483_2
OC(=O)[C@H]1COCCN1C(=O)c1noc(NC(=O)OCC2c3c(cccc3)c3c2cccc3)c1
3
3
3
MolPort-044-566-273_8
[C@H]12CN(C[C@@H](C1)[C@H]1CCCC(=O)N1C2)C(=O)c1c([nH]nc1)c1cc2c(OCCO2)cc1
10
10
10
MolPort-044-939-996_1
OC(=O)[C@@H]1CN(CCO1)C(=O)C1(CCC1)NC(=O)OCC1c2c(cccc2)c2c1cccc2
6
6
6
MolPort-044-566-273_1
[C@@H]12CN(C[C@H](C1)[C@@H]1CCCC(=O)N1C2)C(=O)c1c([nH]nc1)c1cc2c(OCCO2)cc1
10
10
10
MolPort-044-566-273_5
[C@@H]12CN(C[C@H](C1)[C@H]1CCCC(=O)N1C2)C(=O)c1c([nH]nc1)c1cc2c(OCCO2)cc1
10
10
10
MolPort-045-089-868_6
Cc1c(nnn1c1cccc(c1)[N+](=O)[O-])C(=O)N[C@H]1[C@@H]2CCC[C@H]1C[C@H](N)C2
2
2
0
MolPort-045-089-868_3
Cc1c(nnn1c1cccc(c1)[N+](=O)[O-])C(=O)N[C@@H]1[C@H]2CCC[C@@H]1C[C@H](N)C2
2
2
0