根据xyz坐标集创建距离矩阵(python)

时间:2018-11-27 19:41:12

标签: python-3.x bioinformatics

我有一个分配给变量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坐标。有手动计算此距离矩阵的好方法吗?

1 个答案:

答案 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])