Создание матрицы расстояний из наборов координат XYZ (Python) - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть список координат xyz различных точек из файла PDB, назначенного переменной x.Вот фрагмент того, на что это похоже

[ 8.721 15.393 22.939]
[11.2   13.355 25.025]
[11.045 15.057 28.419]
[13.356 13.814 31.169]
[12.54  13.525 34.854]
[14.038 15.691 37.608]
[16.184 12.782 38.807]
[17.496 12.053 35.319]
[18.375 15.721 34.871]
[20.066 15.836 38.288]
[22.355 12.978 37.249]
[22.959 14.307 33.724]
[24.016 17.834 34.691]
[26.63  16.577 37.161]
[29.536 18.241 35.342]
[27.953 21.667 35.829]

Я хотел бы использовать эти точки для вычисления матрицы расстояний.Я попытался использовать функцию SciPy distance_matrix, однако она не поддерживает координаты XYZ, только координаты X и Y.Есть ли хороший способ вычислить эту матрицу расстояний вручную?

1 Ответ

0 голосов
/ 28 ноября 2018

Если вы можете использовать biopython Bio.PDB, чтобы получить эти атомы, то вы можете получить расстояние между 2 атомами, просто вычитая два атома distance = atom1 - atom2.Если вы действительно хотите получить расстояние самостоятельно, то это также просто, используя формулу d = sqrt((x2 - x1)**2 + (y2 - y1)**2 + (z2 - z1)**2).

. Вам просто нужно выполнить цикл, чтобы получить матрицу расстояний, используя один из методов distance.выше:

dist=[[0]*len(array[0])]*len(array)  
for i in range(len(array)-1):  
    for j in range(i+1,len(array)):  
        dist[i][j]=distance(array[i],array[j])  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...