Ejecuta FoldX 5.0 en consola Linux (versión 2).
Descarga bajo licencia FoldX 5.0 de http://foldxsuite.crg.eu/
Hemos hecho una simulación de dinámica molecular con YASARA structure de 500 ns y disponemos de 5000 instantáneas, cada una de ellas tiene una proteína y un fosfopéptido unido a ella (al menos en el unicio de la simulación, ya que con el transcurso del tiempo puede despegarse). Queremos hacer un medida de la energia de unión del fosfopéptido a la proteína y para ello usaremos FoldX 5.0.
Necesitamos convertir cada instantanea en un fichero *.pdb, lo que podemos conseguir usando el macro de YASARA llamado "convert.mrc". Debemos modificar el macro para que automáticamente convierta ficheros *.sim en *.pdb y eliminamos el agua e iones. Justo debjo tenemos esas modificaciones:
# Source format (srcformat) and destination format (dstformat) can be 'sim' (see SaveSim/LoadSim),
# 'xtc' (see SaveXTC/LoadXTC), 'mdcrd' (see SaveMDCrd/LoadMDCrd), or 'pdb' (a series of PDB files).
# If one is left empty, YASARA will ask for the formats interactively.
srcformat='sim'
dstformat='pdb'
# Flag if water object should be included (1) or not (0)
waterincluded=0Seguiremos la descripción con un ejemplo real: 72 simulaciones de MD, con 500 ns cada una, es decir, 5000 instantáneas. Queremos convertir cada una de ellas en el correspondiente fichero *.pdb, pero sin agua ni iones usados en la simulación.
Disponemos de un fichero de texto con el nombre que queremos que muestre SLURM de cada trabajo (conversion, simulación de dinámica, ejecución de FoldX, etc), en nuestro ejemplo lo llamamos _lista-4-variables-en-4-columnas.txt. Contiene cadenas de texto separadas por tabuladores. Por ejemplo, la primera simulación de MD, aparecerá en SLURM como 'MD01' (tomado de la primera columna y primera fila) y se ejecutó en la ruta '/home/jant.encinar/runMD/MD01_pY165-BCAR1_PTPRF-D1__human_model_0_ok/'. El nombre del fichero de partida (MD01_pY165-BCAR1_PTPRF-D1__human_model_0) coincide con el nombre de la carpeta que contiene todos los ficheros *.sim de esta simulación, salvo por el final de la cadena '_ok'. Con esta etiqueta distingo carpetas con los 5000 ficheros *.sim de carpetas que aún no contengan los 5000 ficheros. En este ejemplo las cadenas texto de las columnas tercera y cuarta son redundantes, pero están ahí para ser cambiadas en caso de que sean necesarias en otros scripts que usen 3, 4 o n variables.
Usando _lista-4-variables-en-4-columnas.txt y el siguiente molde: '_14_template-CONVERT-umh.txt' vamos a generar 72 ficheros *.sbatch para que, posteriormente, cada uno de ellos sea lanzado al cola de trabajos gobernada por SLURM. El siguiente script de Python permite hacer ese trabajo. Cada fichero *.sbatch generado tiene la etiqueta '', que antecede su nombre.
# -*- coding: utf-8 -*-
import os
# Ruta y nombre de archivo de la lista de variables
var_file_path = '/home/jant.encinar/py-linux/34-foldx-array-DRAGON/_lista-4-variables-en-4-columnas.txt'
# Ruta y nombre de archivo de la plantilla de configuracin
template_file_path = '/home/jant.encinar/py-linux/34-foldx-array-DRAGON/_14_template-CONVERT-umh.txt'
# Abrir el archivo de variables y leer las lneas
with open(var_file_path, 'r') as var_file:
var_lines = var_file.readlines()
# Para cada lnea de variables, generar una nueva plantilla con las variables sustituidas
for line in var_lines:
# Separar las variables por tabuladores y eliminar cualquier espacio en blanco
variables = [var.strip() for var in line.split('\t')]
# Leer la plantilla de configuracin y sustituir las variables
with open(template_file_path, 'r') as template_file:
template = template_file.read()
for i in range(len(variables)):
template = template.replace(f'[variable-{i+1}]', variables[i])
# Guardar el archivo de configuracin generado con el nombre de la primera variable y la extensin ".sbatch"
output_file_path = f"/home/jant.encinar/py-linux/34-foldx-array-DRAGON/_convert-00-{variables[0]}.sbatch"
with open(output_file_path, 'w') as output_file:
output_file.write(template)
print("Proceso completado con éxito!")Justo debajo tenemos el ejemplo del contenido del fichero *.sbatch que convertirá los ficheros *.sim de la carpeta "/home/jant.encinar/runMD/MD01_pY165-BCAR1_PTPRF-D1__human_model_0_ok/" en ficheros *.pdb

Con el siguiente script de Python podemos generar un fichero _17-alanzar-CONVERT-sim-to-pdb.sh que lanze 72 trabajos a la cola de SLURM para convertir en *.pdb todos los ficheros *.sim de las 72 simulaciones de MD.
# -*- coding: utf-8 -*-
import os
import glob
folder_path = "/home/jant.encinar/py-linux/34-foldx-array-DRAGON/"
file_pattern = "_convert-00-"
files = glob.glob(os.path.join(folder_path, file_pattern + "*"))
files = sorted(files) # Ordenar la lista de nombres de archivo
with open("_17-alanzar-CONVERT-sim-to-pdb.sh", "w") as f:
for filename in files:
if os.path.isfile(filename) and filename.startswith(os.path.join(folder_path, file_pattern)):
f.write(f"sbatch {filename}\n")
os.chmod("_17-alanzar-CONVERT-sim-to-pdb.sh", 0o777) # establecer permisos en 777Run REPAIRPDB
Se recomienda encarecidamente reparar las estructuras antes de realizar cualquier modelado con FoldX. RepairPDB identifica los residuos que presentan ángulos de torsión inadecuados, choques de Van der Waals o una energía total desfavorable, y los repara.
Se puede ejecutar mediante la línea de comandos:
start foldx5.exe --command=RepairPDB --pdb=name-file.pdb