es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reemplazar las entradas de átomos de un archivo PDB con un archivo PDB modificado que solo contiene entradas de átomos.

Anteriormente he modificado los ‘chain_id’ de un archivo pdb, 6gch, lo cual resulta en una salida que se ve así:

ATOM 1 N CYS G 1 54.142 90.734 71.584 1.00 8.30 N
ATOM 2 CA CYS G 1 53.264 90.010 72.541 1.00 6.56 C
ATOM 3 C CYS G 1 53.418 90.566 73.962 1.00 7.21 C

Usando el código:

from Bio.PDB import PDBList, PDBIO, PDBParser

pdbl = PDBList()

io = PDBIO()
parser = PDBParser()
pdbl.retrieve_pdb_file(‘6gch’, pdir=’.’, file_format=”pdb”)

pdb6gch.ent es el nombre de archivo cuando se recupera con PDBList

structure = parser.get_structure(‘6gch’, ‘pdb6gch.ent’)

renames = {
“E”: “A”,
“F”: “B”,
“G”: “C”
}

for model in structure:
for chain in model:
old_name = chain.get_id()
new_name = renames.get(old_name)
if new_name:
print(f”renombrando cadena {old_name} a {new_name}”)
chain.id = new_name
else:
print(f”manteniendo el nombre de la cadena {old_name}”)

io.set_structure(structure)
io.save(‘6gch_renombrado.pdb’)

Me preguntaba si podría reemplazar las entradas ATOM 1, 2 y 3 que han sido modificadas en sus cadenas (mostradas al inicio) con las entradas del archivo pdb original, 6gch.

Aún estoy aprendiendo a programar, así que cualquier ayuda será apreciada.

Archivo pdb 6gch – https://files.rcsb.org/download/6GCH.pdb

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible reemplazar los ID de cadenas editadas con los originales. Primero, puedes crear un nuevo objeto de estructura analizando el archivo PDB original utilizando el mismo PDBParser como antes. Luego, puedes iterar a través de las estructuras, modelos y cadenas en las estructuras original y editada, y si los IDs de cadenas coinciden, copia las coordenadas y otros atributos de la cadena original a la cadena editada. Aquí tienes un código de ejemplo:

    from Bio.PDB import PDBParser
    
    # Analizar el archivo PDB original y el archivo PDB editado
    parser = PDBParser()
    orig_struct = parser.get_structure('6gch', '6GCH.pdb')
    edited_struct = parser.get_structure('6gch_editado', '6gch_renombrado.pdb')
    
    # Iterar a través de las estructuras, modelos y cadenas en ambas estructuras
    for orig_model, edited_model in zip(orig_struct, edited_struct):
        for orig_chain, edited_chain in zip(orig_model, edited_model):
            # Si los IDs de cadenas coinciden, copiar las coordenadas y otros atributos de la cadena original
            if orig_chain.id == edited_chain.id:
                for orig_res, edited_res in zip(orig_chain, edited_chain):
                    for orig_atom, edited_atom in zip(orig_res, edited_res):
                        edited_atom.set_coord(orig_atom.get_coord())
    
    # Guardar la estructura editada con las entradas ATOM originales
    io.set_structure(edited_struct)
    io.save('6gch_original.pdb')
    

    Este código debería reemplazar los IDs de cadenas editados en el archivo 6gch_renombrado.pdb con los originales del archivo 6GCH.pdb, preservando las entradas ATOM originales. Ten en cuenta que esto asume que los únicos cambios realizados en el archivo PDB fueron en los IDs de cadenas, y que el orden y numeración de residuos y átomos no se alteraron. Si se realizaron otros cambios, puede ser necesario agregar código adicional para reconciliar adecuadamente los archivos.

Comments are closed.