前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RMSD计算中的Kabsch算法简介

RMSD计算中的Kabsch算法简介

作者头像
用户7592569
发布2020-07-27 15:53:09
3K0
发布2020-07-27 15:53:09
举报
文章被收录于专栏:量子化学量子化学
  • Jun 14, 2020 更正错误
  • Oct 7, 2019 初版

RMSD即均方根偏差(root mean square deviation)。设有两组向量P和Q,每组向量有N个维度为D的向量,因此P和Q可以看做N×D矩阵,那么这两组向量的RMSD为

若两组向量相同,则RMSD为零。若两组向量差别变大,则RMSD的值也会随之增大。RMSD可以量化两组向量之间的偏差,所以在计算化学中被用于衡量两个构象的相似度。

在计算RMSD之前首先要将向量平移和旋转,使两组向量达到最大重合的状态,才能得到最小的RMSD值。在比较两个构象的相似度时,不对构型进行平移和旋转操作得到的RMSD值是没有意义的。

Kabsch算法是一种计算最优旋转矩阵的算法。因为Kabsch算法只计算旋转矩阵,所以在计算之前需要将两组向量的几何中心移动到原点。而为了计算旋转矩阵,需要先计算协方差矩阵。Kabsch算法的总流程是

1. 将两组向量的几何中心平移到原点

2. 计算协方差矩阵

3. 计算旋转矩阵

1. 将两组向量的几何中心平移到原点

假设平移之前的两组向量如下图所示

可以看到这两组向量还远没有达到最大重合的状态。

首先计算每组向量的几何中心(centroid),计算公式为

随后每组向量的每个向量均减去相应的几何中心的坐标,即可将两组向量的几何中心平移到原点。

平移后的两组向量如下所示

平移后两组向量的重合程度增加了,但是由于没有旋转,RMSD值仍然偏大。

2. 计算协方差矩阵

协方差矩阵H的计算公式为

3. 计算旋转矩阵

旋转矩阵最简单的计算方法是做SVD。首先对协方差矩阵H做SVD

为了保证旋转操作后得到的坐标系依然是右手坐标系,需要对SVD的结果做符号检查。

其中sign(x)指x的符号,当x>0时,sign(x)=1;当x<0时,sign(x)=−1。最优的旋转矩阵为

令P=PR,即可得到旋转后的P。

旋转后的两组向量如下所示

很明显,经过旋转操作后,两组向量的重合程度达到最大值,此时RMSD最小。

参考资料:

  • https://en.wikipedia.org/wiki/Kabsch_algorithm
  • http://nghiaho.com/?page_id=671
  • https://github.com/charnley/rmsd
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子化学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档