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_bonds
。 ag 只能包含一个分子。如果轨迹与原子相关联,则计算将在该轨迹上迭代。initial_atom (
Atom
) -- 其笛卡尔坐标定义了分子平移的原子。如果未指定,将选择最重的末端原子。filename (str) -- 包含保存的BAT数组的NumPy二进制文件的名称。如果文件名不是
None
,将从此文件加载数据,而不是使用run()方法重新计算。- 抛出:
AttributeError -- 如果 ag 不包含债券属性
ValueError -- 如果 ag 包含不止一个分子
- 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)维的数组。第一个维度与用于初始化类的原子组具有相同的顺序。分子将完全相反,而不是包裹在周期边界上。
- 返回类型:
- property atoms
为其计算BAT的原子组(只读属性)
- load(filename, start=None, stop=None, step=None)[源代码]
从NumPy二进制格式的文件中加载蝙蝠轨迹
- 参数:
参见
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 只能使用 instead 的 start , stop ,以及 step 。设置 both frames 并且至少有一项 start , stop , step 设置为非默认值将引发
ValueError
。。。版本已添加::2.2.0verbose (bool, optional) -- 启用详细信息
progressbar_kwargs (dict, optional) -- 带有有关进度条位置等的自定义参数的ProgressBar关键字;请参见
MDAnalysis.lib.log.ProgressBar
查看完整的列表。在 2.2.0 版本发生变更: 添加了分析任意帧的功能,方法是在 frames 关键字参数。
在 2.5.0 版本发生变更: 增列 progressbar_kwargs 参数,允许修改tqdm进度条的描述、位置等
引用
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.
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.
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.