Bio.SVDSuperimposer包

模块内容

使用DID对齐将蛋白质结构与另一个蛋白质结构对齐。

SVDSuperimposer找到最佳旋转和平移来将两个点集放在彼此之上(最小化RMSD)。这是eg。有助于镶嵌晶体结构。DDD代表奇异值分解,用于算法中。

class Bio.SVDSuperimposer.SVDSuperimposer

基类:object

类运行MVD对齐。

SVDSuperimposer找到最佳旋转和平移来将两个点集放在彼此之上(最小化RMSD)。这是eg。有助于镶嵌晶体结构。

DDD代表奇异值分解,用于计算叠加。

参考:

矩阵计算,第2版。Golub,G。& Van Loan,CF.,约翰·霍普金斯大学出版社,巴尔的摩,1989年

从两个坐标集开始(NX 3数组- float)

>>> from Bio.SVDSuperimposer import SVDSuperimposer
>>> from numpy import array, dot, set_printoptions
>>>
>>> x = array([[51.65, -1.90, 50.07],
...      [50.40, -1.23, 50.65],
...      [50.68, -0.04, 51.54],
...      [50.22, -0.02, 52.85]], 'f')
>>>
>>> y = array([[51.30, -2.99, 46.54],
...      [51.09, -1.88, 47.58],
...      [52.36, -1.20, 48.03],
...      [52.71, -1.18, 49.38]], 'f')

开始

>>> sup = SVDSuperimposer()

设置坐标y将在x上旋转和平移

>>> sup.set(x, y)

做lsq适合

>>> sup.run()

获取RMSD

>>> rms = sup.get_rms()

获得旋转(右乘!)和翻译

>>> rot, tran = sup.get_rotran()

在x上旋转y

>>> y_on_x1 = dot(y, rot) + tran

一回事

>>> y_on_x2 = sup.get_transformed()
>>> set_printoptions(precision=2)
>>> print(y_on_x1)
[[ 5.17e+01 -1.90e+00  5.01e+01]
 [ 5.04e+01 -1.23e+00  5.06e+01]
 [ 5.07e+01 -4.16e-02  5.15e+01]
 [ 5.02e+01 -1.94e-02  5.29e+01]]
>>> print(y_on_x2)
[[ 5.17e+01 -1.90e+00  5.01e+01]
 [ 5.04e+01 -1.23e+00  5.06e+01]
 [ 5.07e+01 -4.16e-02  5.15e+01]
 [ 5.02e+01 -1.94e-02  5.29e+01]]
>>> print("%.2f" % rms)
0.00
__init__()

初始化课程。

set(reference_coords, coords)

设置要叠加的坐标。

coords将放在reference_coords的顶部。

  • reference_coords:NxDIM数组

  • 坐标:NxDIM阵列

DIM是点的维度,N是要叠加的点的数量。

run()

叠加坐标集。

get_transformed()

获取转换后的坐标集。

get_rotran()

右乘旋转矩阵和平移。

get_init_rms()

未转换坐标的平方根偏差。

get_rms()

叠加坐标的平方根偏差。

__firstlineno__ = 29
__static_attributes__ = ('coords', 'init_rms', 'n', 'reference_coords', 'rms', 'rot', 'tran', 'transformed_coords')