4.3.2. 氢键自相关 MDAnalysis.analysis.hydrogenbonds.hbond_autocorrel

作者:

理查德·J·高尔斯

:

2014

版权所有:

GNU公共许可证v3

在 0.9.0 版本加入.

4.3.2.1. 描述

计算时间自相关函数, \(C_x(t)\) ,因为传递给它的选择中的氢键。在给定的起点上氢键的数量, \(t_0\) ,根据几何标准进行评估,然后随着时间的推移监测这些键的寿命。通过轨迹的多次通过被用来建立行为的平均值。

\[C_x(T)=\Left\LANGE\FRAC{h_{ij}(T_0)h_{ij}(t_0+t)}{h_{ij}(T_0)^2}\Right\Range\]

下标 \(x\) 指使用的寿命的定义,连续的或间歇的。连续定义测量特定氢键保持连续连接的时间,而间歇性定义允许键断裂,然后重新进行计算。相关的生命周期, \(\tau_x\) ,然后可以通过集成该函数来找到

\[\tau_x=\int_0^\inty C_x(T)dt`\]

为此,观察到的行为符合多指数函数,其中2个指数代表连续寿命,3个指数代表间歇寿命。

\(C_x(t) = A_1 \exp( - t / \tau_1) + A_2 \exp( - t / \tau_2) [+ A_3 \exp( - t / \tau_3)]\)

在这里,最终的先验因素 \(A_n\) 受以下条件限制:

\(A_n = 1 - \sum\limits_{i=1}^{n-1} A_i\)

有关更多详细信息,请参阅 [Gowers2015]

4.3.2.2. 输入

三个原子组选择代表 氢气捐赠者接受者 你想要分析的东西。请注意, 氢气捐赠者 所选内容必须对齐,即 [hydrogens[0]] 和 [donors[0]] 必须表示绑定对。对于水这样的系统,这意味着每个氧在 捐赠者 原子组。功能 find_hydrogen_donors() 可用于构建供体原子组::

import MDAnalysis as mda
from MDAnalysis.analysis import hbonds
from MDAnalysis.tests.datafiles import waterPSF, waterDCD
u = mda.Universe(waterPSF, waterDCD)
hydrogens = u.select_atoms('name H*')
donors = hbonds.find_hydrogen_donors(hydrogens)

请注意,这需要宇宙拥有债券信息。如果这在拓扑文件中不存在,则 MDAnalysis.core.groups.AtomGroup.guess_bonds() 方法可以按如下方式使用::

import MDAnalysis as mda
from MDAnalysis.analysis import hbonds
from MDAnalysis.tests.datafiles import GRO
# we could load the Universe with guess_bonds=True
# but this would guess **all** bonds
u = mda.Universe(GRO)
water = u.select_atoms('resname SOL and not type DUMMY')
# guess bonds only within our water atoms
# this adds the bond information directly to the Universe
water.guess_bonds()
hydrogens = water.select_atoms('type H')
# this is now possible as we guessed the bonds
donors = hbonds.find_hydrogen_donors(hydrogens)

关键字 排除事项 允许提供阵列地址的元组(HIDX,AIDX),则不允许将这些氢受体对计算为分析的一部分。这可以用来排除相同官能团内的氢键的考虑,或者执行严格的分子间氢键的分析。

氢键是在几何标准的基础上定义的;氢-受体距离小于 dist_crit 以及施氢体-氢受体夹角大于 angle_crit

PS中要分析的轨迹长度, sample_time ,用于选择要分析的长度。

多个通道,由关键字控制 Nrun ,通过轨迹进行,并计算平均值。对于每一次传递, NSamples 将计算沿管路的点数。

4.3.2.3. 输出

所有分析结果均可通过 属性。这是一本有以下关键字的词典

  • 结果 时间自相关函数的原始结果。

  • time 结果的时间轴,以ps为单位。

  • fit 指数曲线拟合法的结果。对于

    连续式 这些是(a1,tau1,tau2),对于 间歇性 这些是(A1、A2、tau1、tau2、tau3)。

  • tau 根据拟合计算出的时间常数。

  • 估算 通过计算的拟合生成的估计值。

这个 结果time 值仅在 run() 方法, fittau估算 属性之后填充。 solve() 方法已被采用。

4.3.2.4. 聚酰胺的工作实例

这个例子求出了聚酰胺体系中N-H..O之间的连续氢键寿命。这将使用长度为3.0?、角度为130度的氢键的默认几何定义。它将观察到2.0 ps的窗口 (sample_time ),并尝试在该时间窗口内收集1000个采样点(这取决于足够频繁地对轨迹进行采样)。对20个不同的起始点重复这一过程,以建立更好的平均值。

import MDAnalysis as mda
from MDAnalysis.analysis import hbonds
from MDAnalysis.tests.datafiles import TRZ_psf, TRZ
import matplotlib.pyplot as plt
# load system
u = mda.Universe(TRZ_psf, TRZ)
# select atoms of interest into AtomGroups
H = u.select_atoms('name Hn')
N = u.select_atoms('name N')
O = u.select_atoms('name O')
# create analysis object
hb_ac = hbonds.HydrogenBondAutoCorrel(u,
            acceptors=O, hydrogens=H, donors=N,
            bond_type='continuous',
            sample_time=2.0, nsamples=1000, nruns=20)
# call run to gather results
hb_ac.run()
# attempt to fit results to exponential equation
hb_ac.solve()
# grab results from inside object
tau = hb_ac.solution['tau']
time = hb_ac.solution['time']
results = hb_ac.solution['results']
estimate = hb_ac.solution['estimate']
# plot to check!
plt.plot(time, results, 'ro')
plt.plot(time, estimate)
plt.show()

4.3.2.5. 函数和类

MDAnalysis.analysis.hydrogenbonds.hbond_autocorrel.find_hydrogen_donors(hydrogens)[源代码]

返回每个氢的给体原子

参数:

hydrogens (AtomGroup) -- 会形成氢键的氢

返回:

捐赠者 --每个氢的施主原子,通过键信息找到

返回类型:

AtomGroup

在 0.20.0 版本加入.

class MDAnalysis.analysis.hydrogenbonds.hbond_autocorrel.HydrogenBondAutoCorrel(universe, hydrogens=None, acceptors=None, donors=None, bond_type=None, exclusions=None, angle_crit=130.0, dist_crit=3.0, sample_time=100, time_cut=None, nruns=1, nsamples=50, pbc=True)[源代码]

对系统中的氢键进行时间自相关。

参数:
  • universe (Universe) -- 所有选择所属的MDAnalysis领域

  • hydrogens (AtomGroup) -- 能形成氢键的氢原子基团

  • acceptors (AtomGroup) -- 所有受主原子的原子群

  • donors (AtomGroup) -- 与氢原子相连的原子。这个基团的长度必须与氢基团相同并匹配,即氢 [0] 与捐赠者有联系 [0] 。对于水,这意味着捐赠者在这组中出现两次,每个氢气出现一次。

  • bond_type (str) -- 要考虑氢键寿命的定义是“连续”还是“间歇”。

  • exclusions (ndarray, optional) -- 要排除的氢-受体对的指数。对于NH和NA氢和受体,计算距离的(NH×NA)阵列, 排除事项 用作此数组上的掩码,以排除某些对。

  • angle_crit (float, optional) -- 所有键必须大于的角度(以度为单位) [130.0]

  • dist_crit (float, optional) -- 氢键的最大距离(埃) [3.0]

  • sample_time (float, optional) -- 希望观察氢键的时间量,以ps为单位 [100]

  • nruns (int, optional) -- 轨迹内要使用的不同起点的数量 [1]

  • nsamples (int, optional) -- 在每次运行中,要分析的帧的数量 [50]

  • pbc (bool, optional) -- 计算中是否考虑周期边界 [True]

  • ..versionchanged (1.0.0) -- save_results() 方法被移除。您可以改用 np.savez() 在……上面 HydrogenBondAutoCorrel.solution['time']HydrogenBondAutoCorrel.solution['results'] 取而代之的是。

run(force=False)[源代码]

运行所有必需的通行证

参数:

force (bool, optional) -- 将覆盖以前的结果(如果它们存在

solve(p_guess=None)[源代码]

将结果拟合为多指数衰减,并进行积分以求出特征时间

参数:

p_guess (tuple of floats, optional) -- 对于最小拟合度的初始猜测,必须与预期系数的形状匹配

连续定义的结果符合双指数曲线 scipy.optimize.leastsq() 、间歇性定义符合三重指数。

此拟合过程的结果保存在 fittau估算 解决方案词典中的关键字。

  • fit 包含系数(A1,tau1,tau2)或(A1,A2,tau1,tau2,tau3)

  • tau 包含氢键的计算寿命,以ps为单位

  • 估算 包含由时间自相关函数的拟合提供的估计值

此外,还可以将 leastsq() 函数保存到解决方案DICT中

  • 信息词典

  • mesg

  • ier