4.9.1. 扩散图 MDAnalysis.analysis.diffusionmap

作者:

尤金·赫鲁斯卡,约翰·德特尔夫斯

:

2016

版权所有:

GNU公共许可证v2

本模块包含了非线性降维方法的扩散图。扩散矩阵的特征向量代表一个分子的“集体坐标”;最大的特征值是更主要的集体坐标。为“集体坐标”赋予物理意义是一个根本性的难题。扩散图的时间复杂度为 \(O(N^3)\) ,其中N是轨迹中的帧数,内存存储复杂性为 \(O(N^2)\) 。可以使用蛋白质结构的样本来代替单一的轨迹。样品应至少在局部达到平衡。采样结构在轨迹中的顺序无关紧要。

这个 扩散贴图教程 演示如何使用扩散图进行降维。

有关漫射贴图的更多详细信息,请参阅 [Porte2008, Coifman2006, Ferguson2011, Rohrdanz2011]

4.9.1.1. 扩散贴图教程

该示例使用作为MDAnalysis测试套件的一部分提供的文件(在变量中 PSFDCD )。本教程介绍如何使用漫反射贴图类。

首先加载所有模块和测试数据

import MDAnalysis as mda
import MDAnalysis.analysis.diffusionmap as diffusionmap
from MDAnalysis.tests.datafiles import PSF, DCD

给定一个宇宙或原子群,我们可以从该轨迹创建和特征值分解扩散矩阵,使用 DiffusionMap :并得到相应的特征值和特征向量。

u = mda.Universe(PSF,DCD)

我们将适当的刻度参数ε的确定留给用户, [Rohrdanz2011] 使用复杂的方法,涉及轨迹帧的k最近邻,而其他简单的方法使用恒定epsilon的试错法。目前,常量epsilon方法是由MDAnalysis实现的。

dmap = diffusionmap.DiffusionMap(u, select='backbone', epsilon=2)
dmap.run()

从这里,我们可以执行嵌入到k个主导特征向量上。地图的非线性意味着低维空间和我们的原始轨迹之间没有明确的关系。然而,这是一个等距(保持距离的映射),这意味着在低维空间中接近的点在高维空间中也是接近的,反之亦然。为了嵌入到最相关的低维空间中,应该存在一定数量的主导特征向量,其对应的特征值以恒定的速度减小,直到消失,这被称为谱间隙,对于处于平衡状态的系统来说,这应该是比较明显的,具有大量的帧。

import matplotlib.pyplot as plt
f, ax = plt.subplots()
upper_limit = # some reasonably high number less than the n_eigenvectors
ax.plot(dmap.eigenvalues[:upper_limit])
ax.set(xlabel ='eigenvalue index', ylabel='eigenvalue')
plt.tight_layout()

从这里我们可以变换到扩散空间

num_eigenvectors = # some number less than the number of frames after
# inspecting for the spectral gap
fit = dmap.transform(num_eigenvectors, time=1)

这可能很难解释数据,并将其作为一项任务留给用户。这个 diffusion distance 帧i和j之间的欧几里得距离最好地由self.diffect_space的行i和j之间的欧几里得距离来近似。

4.9.1.2. 班级

class MDAnalysis.analysis.diffusionmap.DiffusionMap(u, epsilon=1, **kwargs)[源代码]

非线性降维方法

通过轨迹中选定结构的扩散映射进行降维。

eigenvalues

扩散映射的特征值

类型:

数组(N_FRAMES,)

run()[源代码]

构造了一个各向异性扩散核,并对其进行特征值分解。

transform(n_eigenvectors, time)[源代码]

执行将帧嵌入表示集体坐标的特征向量中。

在 2.2.0 版本发生变更: DiffusionMap 现在也接受 AtomGroup

参数:
  • u (MDAnalysis Universe or AtomGroup or DistanceMatrix object.) -- 可以是宇宙或原子组,在这种情况下,必须为DistanceMatrix的初始化提供kwarg。否则,它可以是已初始化的DistanceMatrix。无论哪种方式,这都将被制成一个扩散核。

  • epsilon (Float) -- 指定用于选择扩散贴图中的比例参数的方法。更多信息,请访问 [Coifman2006, Ferguson2011, Rohrdanz2011] ,默认:1。

  • **kwargs -- 要传递的参数以初始化 DistanceMatrix

class MDAnalysis.analysis.diffusionmap.DistanceMatrix(universe, select='all', metric=<function rmsd>, cutoff=-4.0, weights=None, **kwargs)[源代码]

使用给定的度量计算轨迹中每一帧之间的成对距离

距离矩阵可以单独初始化,并在 DiffusionMap

参数:
  • universe (~MDAnalysis.core.universe.Universe or ~MDAnalysis.core.groups.AtomGroup) -- 关于降维MD轨迹,记住特征值分解的计算代价是O(N^3),其中N是帧的数目。可以通过增加步长间隔或在调用时指定开始和停止值来降低成本 DistanceMatrix.run()

  • select (str, optional) -- 的任何有效选择字符串 select_atoms() 这种原子选择被用来计算不同帧之间的RMSD。水应该被排除在外。

  • metric (function, optional) -- 将两个NumPy数组映射到一个浮点数,是正定的和对称的。指标的API要求数组的长度必须相等,并且函数应该将权重作为可选参数。权重为每个索引值赋予其自己的权重,用于在整个数组上进行度量计算。默认:指标设置为rms.rmsd()。

  • cutoff (float, optional) -- 指定被视为相等的指标值的给定分界值,默认值:1EO-5

  • weights (array, optional) -- 为公制计算的坐标赋予的权重

  • verbose (bool, optional) -- 如果设置为,则显示计算的详细进度 True ;默认为 False

atoms

经过降维的轨迹中的选定原子

类型:

~MDAnalysis.core.groups.AtomGroup

results.dist_matrix

轨迹中帧之间所有可能的ij度量距离的数组。这个矩阵是对称的,对角线上有零。

在 2.0.0 版本加入.

类型:

数字.ndarray,(n帧,n帧)

dist_matrix

自 2.0.0 版本弃用: 将在MDAnalysis 3.0.0中删除。请使用 results.dist_matrix 取而代之的是。

类型:

数字.ndarray,(n帧,n帧)

示例

通常,自定义距离矩阵可用于局部epsilon确定或扩散图方法的其他操作。这个 DistanceMatrix 存在于 diffusionmap 可以作为初始化参数传递给 DiffusionMap

import MDAnalysis as mda
import MDAnalysis.analysis.diffusionmap as diffusionmap
from MDAnalysis.tests.datafiles import PSF, DCD

现在创建距离矩阵并将其作为参数传递给 DiffusionMap

U=mda.宇宙(psf,dcd)dist_Matrix=扩散映射。距离矩阵(u,select=‘all’)dist_matrix.run()dmap=扩散映射.扩散映射(Dist_Matrix)dmap.run()

在 1.0.0 版本发生变更: save() 方法已被移除。您可以使用 np.save() 在……上面 DistanceMatrix.results.dist_matrix 取而代之的是。

在 2.0.0 版本发生变更: dist_matrix 现在存储在一个 MDAnalysis.analysis.base.Results 实例。

在 2.2.0 版本发生变更: DistanceMatrix 现在也接受 AtomGroup

引用

如果您在出版物中使用这种降维方法,请引用 [Coifman2006]

如果选择默认度量,则此模块使用快速QCP算法 [Theobald2005] 要计算两个坐标集之间的均方根距离(RMSD)(如中实现的 MDAnalysis.lib.qcprot.CalcRMSDRotationalMatrix() )。在已发表的作品中使用此模块时,请 [Theobald2005]

[Porte2008] (1,2,3)

J Porte, Ben Herbst, Willy Hereman, and Stéfan van der Walt. An introduction to diffusion maps. In 11 2008.

[Coifman2006] (1,2,3,4,5,6,7,8,9)

Ronald R. Coifman and Stéphane Lafon. Diffusion maps. Applied and Computational Harmonic Analysis, 21(1):5–30, 2006. Special Issue: Diffusion Maps and Wavelets. URL: https://www.sciencedirect.com/science/article/pii/S1063520306000546, doi:https://doi.org/10.1016/j.acha.2006.04.006.

[Ferguson2011] (1,2,3,4,5,6)

Andrew L. Ferguson, Athanassios Z. Panagiotopoulos, Ioannis G. Kevrekidis, and Pablo G. Debenedetti. Nonlinear dimensionality reduction in molecular simulation: the diffusion map approach. Chemical Physics Letters, 509(1):1–11, 2011. URL: https://www.sciencedirect.com/science/article/pii/S0009261411004957, doi:https://doi.org/10.1016/j.cplett.2011.04.066.

[Rohrdanz2011] (1,2,3,4,5,6,7,8,9)

Mary A. Rohrdanz, Wenwei Zheng, Mauro Maggioni, and Cecilia Clementi. Determination of reaction coordinates via locally scaled diffusion map. The Journal of Chemical Physics, 134(12):124116, 2011. doi:10.1063/1.3569857.

[Theobald2005] (1,2,3,4,5,6)

Douglas L. Theobald. Rapid calculation of RMSDs using a quaternion-based characteristic polynomial. Acta Crystallographica Section A, 61(4):478–480, Jul 2005. doi:10.1107/S0108767305015266.