Menu Desplegable


Scripts para Python 3.10: a) combinar ficheros SDF en un único fichero de salida, b) separar en tantos ficheros como estructuras unicas contenga un fichero SDF dado, c) extraer nombres de las moleculas contenidas en un fichero SDF dado, d) descarga una lista de ficheros PDB en tu disco duro.
import os

# Carpeta que contiene los archivos SDF
folder_path = 'D:/MolPort-database_v5/MPv5-001/'

# Nombre del archivo de salida combinado
output_file_name = 'MPv5-001_ligands.sdf'

# Lista de nombres de archivos SDF en la carpeta
sdf_files = [file for file in os.listdir(folder_path) if file.endswith('.sdf')]

# Ruta completa del archivo de salida combinado
output_file_path = os.path.join(folder_path, output_file_name)

# Abrir archivo de salida en modo escritura
with open(output_file_path, 'w') as outfile:

    # Iterar sobre cada archivo SDF
    for file in sdf_files:
        
        # Abrir archivo SDF en modo lectura
        with open(os.path.join(folder_path, file), 'r') as infile:
            
            # Escribir contenido del archivo SDF para la salida y agrega los 4dolares
            outfile.write(infile.read())
            outfile.write("$$$$\n")
import os

# Carpeta que contiene el archivo SDF de entrada y donde se guardarán los archivos SDF de salida
folder_path = 'c:/salida-SDF-unico/'

# Ruta completa del archivo SDF de entrada
input_file_path = os.path.join(folder_path, '_todos-SDF.sdf')

# Abrir archivo de entrada en modo lectura
with open(input_file_path, 'r') as input_file:

    # Leer todo el contenido del archivo de entrada
    input_text = input_file.read()
    
    # Separar el contenido del archivo en una lista de estructuras SDF
    sdf_structures = input_text.split('$$$$\n')
    
    # Iterar sobre cada estructura SDF
    for structure in sdf_structures:
        
        # Obtener el nombre del archivo de salida de la primera línea de la estructura
        name_line = structure.split('\n')[0]
        output_file_name = name_line.strip() + '.sdf'
        
        # Ruta completa del archivo de salida
        output_file_path = os.path.join(folder_path, output_file_name)
        
        # Abrir archivo de salida en modo escritura
        with open(output_file_path, 'w') as output_file:
            
            # Escribir la estructura SDF en el archivo de salida
            output_file.write(structure)
import os
# Carpeta que contiene el archivo SDF de entrada y donde se guardará el archivo de texto de salida
folder_path = 'c:/lista-de-mombres-moleculas/'
# Ruta completa del archivo SDF de entrada
input_file_path = os.path.join(folder_path, '_todos-SDF-a-lista-de-mombres-moleculas.sdf')
# Ruta completa del archivo de texto de salida
output_file_path = os.path.join(folder_path, '_todos-SDF-a-lista-de-mombres-moleculas.txt')
# Abrir archivo de entrada en modo lectura
with open(input_file_path, 'r') as input_file:
    # Leer todo el contenido del archivo de entrada
    input_text = input_file.read()
    # Separar el contenido del archivo en una lista de estructuras SDF
    sdf_structures = input_text.split('$$$$\n')
    # Lista para almacenar los nombres de las moléculas
    molecule_names = []
    # Iterar sobre cada estructura SDF
    for structure in sdf_structures:
        # Obtener el nombre de la molécula de la primera línea de la estructura
        name_line = structure.split('\n')[0]
        molecule_name = name_line.strip()
        # Añadir el nombre de la molécula a la lista
        molecule_names.append(molecule_name)
# Abrir archivo de texto de salida en modo escritura
with open(output_file_path, 'w') as output_file:

    # Escribir los nombres de las moléculas en el archivo de texto
    for molecule_name in molecule_names:
        output_file.write(molecule_name + '\n')

El fichero "_lista-PDB-descargar.txt" contiene
2IIP,3ROD,5YJF,6CHH,6ORR,6PVE,6PVS,7BKG,7BLE,7EGU,7EHZ,7EI2,7ET7,7EU5,7NBJ,
7NBM,7NBQ,7RKK,7RKL,7WMC,7WMT

import urllib.parse
import urllib.request

# Lee la lista de PDB desde el archivo y divídela en una lista utilizando la coma como separador
with open("c:/descarga-PDB/_lista-PDB-descargar.txt", "r") as f:
    pdb_list = f.read().split(",")

# Descarga cada archivo PDB de la lista
for pdb in pdb_list:
    # Elimina los espacios en blanco al principio y al final del código PDB
    pdb = pdb.strip()
    pdb_code = urllib.parse.quote(pdb)
    url = f"https://files.rcsb.org/download/{pdb_code}.pdb"
    print(url)
    output = f"c:/descarga-PDB/{pdb}.pdb"
    urllib.request.urlretrieve(url, output)