我有一个分配给变量x的PDB文件中不同点的xyz坐标列表。这是它的外观片段
[ 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坐标。有手动计算此距离矩阵的好方法吗?
答案 0 :(得分:1)
如果可以使用biopython Bio.PDB
来获得这些原子,则只需将两个原子distance = atom1 - atom2
相减就可以得到2个原子之间的距离。
如果您真的想自己获取距离,那么使用公式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])