Tendrás que editar el script y cambiar la ruta de la carpeta raíz que deseas analizar, en mi caso "/LUSTRE/home/CTS164/jant.encinar.umh.es/py-linux/06_analysis-tab/tab/".
En esta ruta el script encuentra los archivos cuyo nombre termina en "_bindenergy.tab", elimina saltos de línea y divide por espacios en blanco, creando un fichero con el mismo nombre pero con extensión TXT, y dejando los datos en columnas separadas por tabuladores.
import os
# Directorio donde se encuentran los archivos de entrada que terminan en "_bindenergy.tab"
# este script elimina saltos de línea y divide por espacios en blanco, creando un fichero
# con el mismo nobre pero extensión TXT, y dejando columnas separadas por tabuladores.
# El script se llama "07_tab-to-txt.py"
input_dir = '/LUSTRE/home/CTS164/jant.encinar.umh.es/py-linux/06_analysis-tab/tab/'
# Obtener lista de archivos que terminan en "_analysis.tab"
input_files = [f for f in os.listdir(input_dir) if f.endswith('_analysis.tab')]
# Recorrer cada archivo de entrada
for input_file in input_files:
# Abrir archivo de entrada y archivo de salida
with open(os.path.join(input_dir, input_file), 'r') as f_in, \
open(os.path.join(input_dir, input_file.replace('.tab', '.txt')), 'w') as f_out:
# Recorrer cada línea del archivo de entrada
for line in f_in:
# Eliminar saltos de línea y dividir por espacios en blanco
values = line.strip().split()
# Escribir los valores separados por tabuladores en el archivo de salida
f_out.write('\t'.join(values) + '\n')
El siguiente script usa como información de entrada los ficheros "_analysis.txt", que hemos hecho con el script anterior, y nos devuelve dos ficheros de texto: "007-glue-like-FAS_ana.txt" y "007-glue-like-FAS_ana-reves.txt". Este último tiene la información con los valores de RMSD en columnas para todas las simulaciones analizadas. Se importa con facilidad en un fichero Excel.
import os
directory = "/LUSTRE/home/CTS164/jant.encinar.umh.es/py-linux/06_analysis-tab/tab/"
output_file_path = "/LUSTRE/home/CTS164/jant.encinar.umh.es/py-linux/06_analysis-tab/007-glue-like-FAS_ana.txt"
files = [f for f in os.listdir(directory) if f.endswith("_analysis.txt")]
files.sort() # Ordenar por orden alfabético
with open(output_file_path, "w") as output_file:
for filename in files:
file_path = os.path.join(directory, filename)
with open(file_path, "r") as input_file:
lines = input_file.readlines()
if len(lines) < 2:
print(f"El archivo {filename} está vacío.")
continue
columns = [line.strip().split("\t")[-2] for line in lines[1:] if len(line.strip().split("\t")) >= 2]
if len(columns) == 0:
print(f"El archivo {filename} no tiene la columna adecuada.")
continue
output_file.write("{}\t{}\n".format(filename, '\t'.join(columns)))
# segunda parte...
import os
# Ruta del archivo de entrada y salida
input_file = '/LUSTRE/home/CTS164/jant.encinar.umh.es/py-linux/06_analysis-tab/007-glue-like-FAS_ana.txt'
output_file = '/LUSTRE/home/CTS164/jant.encinar.umh.es/py-linux/06_analysis-tab/007-glue-like-FAS_ana-reves.txt'
# Abre el archivo de entrada y lee todas las líneas
with open(input_file, 'r') as f_in:
lines = f_in.readlines()
# Trasponer las líneas
transpose_lines = []
for i in range(len(lines[0].split())):
row = []
for line in lines:
row.append(line.split()[i])
transpose_lines.append('\t'.join(row) + '\n')
# Escribe las líneas transpuestas en el archivo de salida
with open(output_file, 'w') as f_out:
f_out.writelines(transpose_lines)
# Imprime mensaje de éxito
print(f"Archivo {output_file} generado exitosamente.")