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
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:
Aquí hay un código de ejemplo para llevar a cabo estos pasos:
En este código de ejemplo, el archivo PDB se carga utilizando la clase
PDBParser
y el métodoget_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 objetostructure
, y se almacenan en una lista llamadacoordinates
.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 llamadadistances
, 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.