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 calcular la distancia entre todos los átomos en un archivo PDB y crear una matriz de distancias a partir de eso.

Me gustaría calcular las distancias entre todos los átomos en un archivo PDB y luego crear una matriz de distancias a partir del resultado del PDB.

Actualmente tengo todas las coordenadas x, y y z pero tengo dificultades para hacer este cálculo de distancias para todos los átomos.

Distancia = sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)

Por ejemplo:

Distancia entre el Átomo 1 y el Átomo 2, 3, 4…

Distancia entre el Átomo 2 y el Átomo 3, 4, 5…

Y así sucesivamente para cada Átomo en el archivo PDB. Soy nuevo en la programación, por lo que cualquier método para lograr el resultado final sería genial.

Archivo PDB en cuestión: https://files.rcsb.org/download/6GCH.pdb

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para calcular las distancias entre todos los átomos en un archivo pdb y crear una matriz de distancias, utilizar la biblioteca biopython facilitará la tarea. Aquí están los pasos generales para resolver este problema:

    1. Cargar el archivo PDB en Biopython utilizando el módulo PDB.
    2. Extraer las coordenadas de cada átomo utilizando el módulo Atom.
    3. Calcular la distancia entre cada par de átomos utilizando la fórmula de distancia proporcionada.
    4. Crear una matriz de distancias utilizando los valores de distancia entre pares.
    5. Guardar la matriz de distancias según sea necesario.

    Aquí hay un código de ejemplo para llevar a cabo estos pasos:

    from Bio.PDB import PDBParser
    import numpy as np
    
    # cargar archivo PDB
    parser = PDBParser()
    structure = parser.get_structure("6GCH", "6GCH.pdb")
    
    # extraer coordenadas para cada átomo
    coordinates = []
    for model in structure:
        for chain in model:
            for residue in chain:
                for atom in residue:
                    coordinates.append(atom.coord)
    
    # calcular distancias entre pares y crear matriz de distancias
    distances = np.zeros((len(coordinates), len(coordinates)))
    for i in range(len(coordinates)):
        for j in range(i+1, len(coordinates)):
            distances[i][j] = np.sqrt(np.sum((coordinates[i]-coordinates[j])**2))
            distances[j][i] = distances[i][j]
    
    # guardar matriz de distancias (opcional)
    np.savetxt("distance_matrix.txt", distances)
    

    En este código de ejemplo, el archivo PDB se carga utilizando la clase PDBParser y el método get_structure con el identificador PDB "6GCH". Puedes reemplazar este identificador por tu propio identificador PDB o nombre de archivo. Las coordenadas de cada átomo se extraen utilizando un bucle anidado sobre el objeto structure, y se almacenan en una lista llamada coordinates.

    Las distancias entre pares se calculan utilizando un bucle anidado sobre los índices de la lista coordinates, y se aplica la fórmula de distancia a cada par de coordenadas. Las distancias resultantes se almacenan en una matriz llamada distances, donde el elemento (i,j) corresponde a la distancia entre el i-ésimo y el j-ésimo átomo.

    Finalmente, la matriz de distancias se puede guardar como un archivo de texto utilizando la función savetxt de numpy. El archivo resultante tendrá una fila/columna para cada átomo en el archivo PDB.

Comments are closed.