4.2.4. Simple atomic distance analysis --- MDAnalysis.analysis.atomicdistances

作者:

许洪陈晨

:

2023

版权所有:

GNU公共许可证v3

这个模块提供了一个类来有效地计算两组原子之间的距离,这些原子在轨迹上具有相等的原子数量。具体地,对于两个原子基团 ag1ag2 ,它将返回距离

\[|ag1[i] - ag2[i]|\]

为了所有人 \(i\) 从… \(0\)n_atoms \(- 1\) ,在哪里 n_atoms 是每个原子群中的原子数。默认情况下,此计算是使用周期性边界条件进行的,但可以很容易地将其关闭。这些距离在NumPy数组中按时间步长分组。

For more general functions on computing distances between atoms or groups of atoms, please see MDAnalysis.analysis.distances.

4.2.4.1. 基本用法

此示例使用MDAnalysis测试套件中的文件 (GROXTC )。要开始,请执行::

>>> import MDAnalysis as mda
>>> from MDAnalysis.tests.datafiles import GRO, XTC
>>> import MDAnalysis.analysis.atomicdistances as ad

我们将在周期边界条件下计算原子群101-105和原子群4001-4005之间的距离。要选择这些原子:

>>> u = mda.Universe(GRO, XTC)
>>> ag1 = u.atoms[100:105]
>>> ag2 = u.atoms[4000:4005]

我们可以使用任何选择的变量来运行计算,例如 my_dists 并使用以下工具访问我们的结果 my_dists.results

>>> my_dists = ad.AtomicDistances(ag1, ag2).run()
>>> my_dists.results
array([[37.80813681, 33.2594864 , 34.93676414, 34.51183299, 34.96340209],
    [27.11746625, 31.19878079, 31.69439435, 32.63446126, 33.10451345],
    [23.27210749, 30.38714688, 32.48269361, 31.91444505, 31.84583838],
    [18.40607922, 39.21993135, 39.33468192, 41.0133789 , 39.46885946],
    [26.26006981, 37.9966713 , 39.14991106, 38.13423586, 38.95451427],
    [26.83845081, 34.66255735, 35.59335027, 34.8926705 , 34.27175056],
    [37.51994763, 38.12161091, 37.56481743, 36.8488121 , 35.75278065],
    [37.27275501, 37.7831456 , 35.74359073, 34.54893794, 34.76495816],
    [38.76272761, 41.31816555, 38.81588421, 39.82491432, 38.890219  ],
    [39.20012515, 40.00563374, 40.83857688, 38.77886735, 41.45775864]])

要在没有周期边界条件的情况下进行计算,可以输入关键字参数 pbc=False 之后 ag2 。在这种情况下,结果不同:

>>> my_dists_nopbc = ad.AtomicDistances(ag1, ag2, pbc=False).run()
>>> my_dists_nopbc.results
array([[37.80813681, 33.2594864 , 34.93676414, 34.51183299, 34.96340209],
    [27.11746625, 31.19878079, 31.69439435, 32.63446126, 33.10451345],
    [23.27210749, 30.38714688, 32.482695  , 31.91444505, 31.84583838],
    [18.40607922, 39.21992825, 39.33468192, 41.0133757 , 39.46885946],
    [26.26006981, 37.99666906, 39.14990985, 38.13423708, 38.95451311],
    [26.83845081, 34.66255625, 35.59335027, 34.8926705 , 34.27174827],
    [51.86981409, 48.10347964, 48.39570072, 49.14423513, 50.44804292],
    [37.27275501, 37.7831456 , 35.74359073, 34.54893794, 34.76495816],
    [56.39657447, 41.31816555, 38.81588421, 39.82491432, 38.890219  ],
    [39.20012515, 40.00563374, 40.83857688, 38.77886735, 41.45775864]])
class MDAnalysis.analysis.atomicdistances.AtomicDistances(ag1, ag2, pbc=True, **kwargs)[源代码]

类计算轨迹上两个原子组之间的原子距离。

参数:
  • ag1 (AtomGroup) -- AtomGroup 具有相同数量的原子

  • ag2 (AtomGroup) -- AtomGroup 具有相同数量的原子

  • pbc (bool, optional) -- 如果 True ,使用周期性边界条件(PBC)计算原子距离。设置 pbcFalse ,在不考虑PBC的情况下计算原子距离。默认为 True

results

距离 \(|ag1[i] - ag2[i]|\) 为了所有人 \(i\) 从… \(0\)n_atoms \(- 1\) 对于轨迹上的每一帧。

类型:

numpy.ndarray

n_frames

分析中包含的帧的数量。

类型:

集成

n_atoms

Number of atoms in each atom group.

类型:

集成

在 2.5.0 版本加入.