4.3.2. 氢键自相关 MDAnalysis.analysis.hydrogenbonds.hbond_autocorrel
- 作者:
理查德·J·高尔斯
- 年:
2014
- 版权所有:
GNU公共许可证v3
在 0.9.0 版本加入.
在 2.0.0 版本发生变更: 模块从 MDAnalysis.analysis.hbonds.hbond_autocorrel
至 MDAnalysis.analysis.hydrogenbonds.hbond_autocorrel
。
4.3.2.1. 描述
计算时间自相关函数, \(C_x(t)\) ,因为传递给它的选择中的氢键。在给定的起点上氢键的数量, \(t_0\) ,根据几何标准进行评估,然后随着时间的推移监测这些键的寿命。通过轨迹的多次通过被用来建立行为的平均值。
下标 \(x\) 指使用的寿命的定义,连续的或间歇的。连续定义测量特定氢键保持连续连接的时间,而间歇性定义允许键断裂,然后重新进行计算。相关的生命周期, \(\tau_x\) ,然后可以通过集成该函数来找到
为此,观察到的行为符合多指数函数,其中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()
方法, fit , tau 和 估算 属性之后填充。 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)[源代码]
返回每个氢的给体原子
在 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']
取而代之的是。
- solve(p_guess=None)[源代码]
将结果拟合为多指数衰减,并进行积分以求出特征时间
- 参数:
p_guess (tuple of floats, optional) -- 对于最小拟合度的初始猜测,必须与预期系数的形状匹配
连续定义的结果符合双指数曲线
scipy.optimize.leastsq()
、间歇性定义符合三重指数。此拟合过程的结果保存在 fit , tau 和 估算 解决方案词典中的关键字。
fit 包含系数(A1,tau1,tau2)或(A1,A2,tau1,tau2,tau3)
tau 包含氢键的计算寿命,以ps为单位
估算 包含由时间自相关函数的拟合提供的估计值
此外,还可以将
leastsq()
函数保存到解决方案DICT中信息词典
mesg
ier