4.2.8. 键-角-扭坐标分析 MDAnalysis.analysis.bat

作者:

Soohaeng Yoo Willow和David Minh

:

2020

版权所有:

GNU公共许可证,v2或更高版本

在 2.0.0 版本加入.

This module contains classes for interconverting between Cartesian and an internal coordinate system, Bond-Angle-Torsion (BAT) coordinates [Chang2003], for a given set of atoms or residues. This coordinate system is designed to be complete, non-redundant, and minimize correlations between degrees of freedom. Complete and non-redundant means that for N atoms there will be 3N Cartesian coordinates and 3N BAT coordinates. Correlations are minimized by using improper torsions, as described in [Hikiri2016].

更具体地说,键是指一对键合原子之间的键长或距离。角度是指键角,即一对键与中心原子之间的角度。扭转角是指扭转角度。对于四个原子a、b、c和d的集合,扭转需要a和b、b和c以及c和d之间的键。扭转是包含原子a、b和c的平面与包含b、c和d的另一个平面之间的夹角。对于共享原子b和c的一组扭转,一个扭转被定义为主要扭转。其他被定义为不适当的扭转,原始扭转角度与主要扭转之间的差异。这个定义降低了扭转角之间的相关性。

每个分子也有六个外部坐标,定义了它在空间中的平移和旋转。第一个原子的三个笛卡尔坐标是分子的平移自由度。旋转自由度由轴角约定指定。旋转轴是从第一个原子指向第二个原子的归一化矢量。它用极角来描述, \(\phi\) 和方位角, \(\theta\)\(\omega\) 是第三个角,它描述了第三个原子绕轴旋转的情况。

This module was adapted from AlGDock [Minh2020].

参见

Dihedral

类计算一组给定原子或残数的二面角。

MDAnalysis.lib.distances.calc_dihedrals()

根据原子位置计算二面角的函数

4.2.8.1. 示例应用程序

这个 BAT 类根据原子基团的拓扑定义键角扭转坐标,并在笛卡尔坐标系和BAT坐标系之间进行相互转换。

例如,我们可以确定腺苷酸激酶(ADK)5-10残基的内部坐标。轨迹包含在测试数据文件中:

import MDAnalysis as mda
from MDAnalysisTests.datafiles import PSF, DCD
import numpy as np

u = mda.Universe(PSF, DCD)

# selection of atomgroups
selected_residues = u.select_atoms("resid 5-10")

from MDAnalysis.analysis.bat import BAT
R = BAT(selected_residues)

# Calculate BAT coordinates for a trajectory
R.run()

之后 R.run() ,可以通过以下方式访问坐标 R.results.bat 。下面的代码片段假定前面的代码片段已经执行。

重建第一帧的笛卡尔坐标::

# Reconstruct Cartesian coordinates from BAT coordinates
# of the first frame
XYZ = R.Cartesian(R.results.bat[0,:])

# The original and reconstructed Cartesian coordinates should all be close
print(np.allclose(XYZ, selected_residues.positions, atol=1e-6))

通过以下方式更改单个扭转角度 \(\pi\) ::

bat = R.results.bat[0,:]
bat[bat.shape[0]-12] += np.pi
XYZ = R.Cartesian(bat)

# A good number of Cartesian coordinates should have been modified
np.sum((XYZ - selected_residues.positions)>1E-5)

将数据存储到磁盘并再次加载::

# BAT coordinates can be saved to disk in the numpy binary format
R.save('test.npy')

# The BAT coordinates in a new BAT instance can be loaded from disk
# instead of using the run() method.
Rnew = BAT(selected_residues, filename='test.npy')

# The BAT coordinates before and after disk I/O should be close
print(np.allclose(Rnew.results.bat, R.results.bat))

4.2.8.2. 分析类

class MDAnalysis.analysis.bat.BAT(ag, initial_atom=None, filename=None, **kwargs)[源代码]

计算指定原子组的BAT坐标。

将为原子组和轨迹中的所有框架计算键角扭转(BAT)内部坐标 ag

参数:
  • ag (AtomGroup or Universe) -- 为其计算BAT坐标的原子组。 ag 必须具有债券属性。如果不可用,可以使用以下方法猜测债券 AtomGroup.guess_bondsag 只能包含一个分子。如果轨迹与原子相关联,则计算将在该轨迹上迭代。

  • initial_atom (Atom) -- 其笛卡尔坐标定义了分子平移的原子。如果未指定,将选择最重的末端原子。

  • filename (str) -- 包含保存的BAT数组的NumPy二进制文件的名称。如果文件名不是 None ,将从此文件加载数据,而不是使用run()方法重新计算。

抛出:
results.bat

包含焊接-角度-扭转坐标的时间序列,格式为(n帧,3N) numpy.ndarray 数组。每行对应于轨迹中的一个帧。在每一列中,前六个元素描述外部自由度。前三个是初始原子的质心。以下三个选项根据轴角约定指定外部角度: \(\phi\) ,极角, \(\theta\) 、方位角和 \(\omega\) ,第三个角度,描述第三个原子绕轴旋转的情况。接下来的三个自由度是根原子的内部自由度: \(r_{{01}}\) ,原子0和1之间的距离, \(r_{{12}}\) 原子1和原子2之间的距离,以及 \(a_{{012}}\) ,三个原子之间的夹角。数组的其余部分包括所有其他键距、所有其他键角,然后是所有其他扭角。

Cartesian(bat_frame)[源代码]

单帧图像从BAT到笛卡尔坐标的转换

此函数的一个应用是在修改特定扭转角度后确定新的笛卡尔坐标。

参数:

bat_frame (numpy.ndarray) -- 具有维度(3N,)的阵列,其外部自由度和内部自由度基于根原子,后跟键、角度和(适当的和不适当的)扭转坐标。

返回:

XYZ --具有笛卡尔坐标的(N,3)维的数组。第一个维度与用于初始化类的原子组具有相同的顺序。分子将完全相反,而不是包裹在周期边界上。

返回类型:

numpy.ndarray

property atoms

为其计算BAT的原子组(只读属性)

load(filename, start=None, stop=None, step=None)[源代码]

从NumPy二进制格式的文件中加载蝙蝠轨迹

参数:
  • filename (str) -- NumPy二进制文件的名称

  • start (int, optional) -- 分析的起始框架

  • stop (int, optional) -- 停止分析框架

  • step (int, optional) -- 要在每个分析的帧之间跳过的帧数

参见

save

将蝙蝠轨迹以NumPy二进制格式保存在文件中

run(start=None, stop=None, step=None, frames=None, verbose=None, *, progressbar_kwargs={})

执行计算

参数:
  • start (int, optional) -- 分析的起始框架

  • stop (int, optional) -- 停止分析框架

  • step (int, optional) -- 要在每个分析的帧之间跳过的帧数

  • frames (array_like, optional) -- 用于切片轨迹的整数或布尔数组; frames 只能使用 insteadstartstop ,以及 step 。设置 both frames 并且至少有一项 startstopstep 设置为非默认值将引发 ValueError 。。。版本已添加::2.2.0

  • verbose (bool, optional) -- 启用详细信息

  • progressbar_kwargs (dict, optional) -- 带有有关进度条位置等的自定义参数的ProgressBar关键字;请参见 MDAnalysis.lib.log.ProgressBar 查看完整的列表。

在 2.2.0 版本发生变更: 添加了分析任意帧的功能,方法是在 frames 关键字参数。

在 2.5.0 版本发生变更: 增列 progressbar_kwargs 参数,允许修改tqdm进度条的描述、位置等

save(filename)[源代码]

将蝙蝠轨迹以NumPy二进制格式保存在文件中

参见

load

从NumPy二进制格式的文件中加载蝙蝠轨迹

引用

[Chang2003]

Chia-En Chang, Michael J. Potter, and Michael K. Gilson. Calculation of molecular configuration integrals. The Journal of Physical Chemistry B, 107(4):1048–1055, 2003. doi:10.1021/jp027149c.

[Hikiri2016]

Simon Hikiri, Takashi Yoshidome, and Mitsunori Ikeguchi. Computational methods for configurational entropy using internal and cartesian coordinates. Journal of Chemical Theory and Computation, 12(12):5990–6000, 2016. PMID: 27951672. doi:10.1021/acs.jctc.6b00563.

[Minh2020]

David D. L. Minh. Alchemical grid dock (algdock): binding free energy calculations between flexible ligands and rigid receptors. Journal of Computational Chemistry, 41(7):715–730, 2020. doi:https://doi.org/10.1002/jcc.26036.