5.26. 猜测未知的拓扑信息 MDAnalysis.topology.guessers
总体而言 guess_atom_X 返回单个值的猜测值,而 guess_Xs 将在由多个原子组成的阵列上工作。
5.26.1. 猜测者用法举例
5.26.1.1. 从原子名称中猜测元素
目前,可以使用以下命令从原子名称中猜测元素 guess_atom_element()
(或同义词 guess_atom_type()
)。这可以通过以下方式完成:
import MDAnalysis as mda
from MDAnalysis.topology.guessers import guess_atom_element
from MDAnalysisTests.datafiles import PRM7
u = mda.Universe(PRM7)
print(u.atoms.names[1]) # returns the atom name H1
element = guess_atom_element(u.atoms.names[1])
print(element) # returns element H
在上面的例子中,我们取一个名为h1的原子并使用 guess_atom_element()
猜测元素氢(即H)。需要注意的是,元素猜测并不总是准确的。事实上,在原子类型不被识别的情况下,我们最终可能得到错误的元素。例如::
import MDAnalysis as mda
from MDAnalysis.topology.guessers import guess_atom_element
from MDAnalysisTests.datafiles import PRM19SBOPC
u = mda.Universe(PRM19SBOPC)
print(u.atoms.names[-1]) # returns the atom name EPW
element = guess_atom_element(u.atoms.names[-1])
print(element) # returns element P
这里我们发现虚拟站点原子‘EPW’被赋予元素P,这将不是预期的结果。因此,我们始终建议用户仔细检查任何猜测者的结果。
在某些情况下,人们可能想要猜测整个宇宙的元素,并将此猜测添加为拓扑属性。这可以使用以下命令完成 guess_types()
以下列方式:
import MDAnalysis as mda
from MDAnalysis.topology.guessers import guess_types
from MDAnalysisTests.datafiles import PRM7
u = mda.Universe(PRM7)
guessed_elements = guess_types(u.atoms.names)
u.add_TopologyAttr('elements', guessed_elements)
print(u.atoms.elements) # returns an array of guessed elements
有关添加拓扑属性的更多信息,请参阅 user guide 。
- MDAnalysis.topology.guessers.get_atom_mass(element)[源代码]
返回以u为单位的原子质量 元素 。
群众查询在
MDAnalysis.topology.tables.masses
。警告
未知质量设置为0.0
在 0.20.0 版本发生变更: 也尝试使用大写的原子类型名称
- MDAnalysis.topology.guessers.guess_angles(bonds)[源代码]
给出一个键的列表,找出原子之间存在的所有角度。
其原理是假设如果原子1和2成键,2和3成键,则(1,2,3)一定是一个角。
- 返回:
定义角度的元组列表。适用于美国拓扑学
- 返回类型:
list of tuples
- MDAnalysis.topology.guessers.guess_aromaticities(atomgroup)[源代码]
用RDKit猜测原子的芳香性
- 参数:
atomgroup (mda.core.groups.AtomGroup) -- 将被猜测芳香性的原子
- 返回:
芳香性 --每个原子芳香性的布尔值数组
- 返回类型:
在 2.0.0 版本加入.
- MDAnalysis.topology.guessers.guess_atom_element(atomname)[源代码]
从名字中猜出原子的元素。
在dict中查找是否找到元素,否则使用原子名中的第一个字符。该表来自CHARMM和AMBER原子类型,其中第一个字符不足以确定原子类型。还添加了一些GROMOS离子。
- MDAnalysis.topology.guessers.guess_atom_mass(atomname)[源代码]
根据原子名称猜想一个质量。
guess_atom_element()
用来确定原子的种类。警告
任何无法识别的内容都被简单地设置为0;如果您依赖于质量,则可能需要再次检查。
- MDAnalysis.topology.guessers.guess_atom_type(atomname)[源代码]
从名字中猜出原子类型。
目前,该函数只返回元素,正如下面所猜测的
guess_atom_element()
。
- MDAnalysis.topology.guessers.guess_bonds(atoms, coords, box=None, **kwargs)[源代码]
根据两个原子之间的距离来猜测它们之间是否存在键。
如果两个原子在其中,两个原子之间就形成了键
\[D<f\CDOT(R_1+R_2)\]彼此之间,在哪里 \(R_1\) 和 \(R_2\) 是原子的VDW半径和 \(f\) 是临时的 fudge_factor 。这是 same algorithm that VMD uses 。
- 参数:
atoms (AtomGroup) -- 应该猜测成键的原子
coords (array) -- 原子的坐标(即, AtomGroup.positions) )
fudge_factor (float, optional) -- 原子必须相互重叠才能被认为是键的因子。较大的价值将增加找到的债券数量。 [0.55]
vdwradii (dict, optional) -- 为算法中的原子提供定制的vdwRadii。必须是格式为{type:Radii}的词典。范德华半径的默认表被硬编码为
MDAnalysis.topology.tables.vdwradii
。作为参数传递的任何用户定义的vdwRadii都将取代表值。 [None
]lower_bound (float, optional) -- 最小键合长度。所有发现的短于此长度的键都将被忽略。这对于分析具有Altloc记录的PDB很有用,其中Altloc A和B的原子可能非常接近,并且它们之间应该没有化学键。 [0.1]
box (array_like, optional) -- 利用距离搜索找到键,如果给定单元信息,则在距离搜索中将考虑周期性边界条件。 [
None
]
- 返回:
适用于构建宇宙拓扑的元组列表。
- 返回类型:
警告
在猜测键以查看Lewis结构是否正确之后,不进行任何检查。这是错误的,会烧死人的。
- 抛出:
ValueError --
在 0.7.7 版本加入.
在 0.9.0 版本发生变更: 已在内部更新方法以使用更多
numpy
,应该更快地发挥作用。还应该使用更少的内存,以前扩展为 \(O(n^2)\) 。 VdwRadii 参数现在增加了表列表,而不是完全替换。
- MDAnalysis.topology.guessers.guess_dihedrals(angles)[源代码]
给出一个角的列表,找出存在于原子之间的所有二面体。
其工作原理是假设如果(1,2,3)是一个角,并且3和4是结合的,那么(1,2,3,4)一定是二面体。
- 返回:
元组列表 --定义二面体的元组列表。适用于美国拓扑学
。。版本添加了0.9.0
- MDAnalysis.topology.guessers.guess_gasteiger_charges(atomgroup)[源代码]
用RDKit猜测Gasteiger部分电荷
- 参数:
atomgroup (mda.core.groups.AtomGroup) -- 将被猜测电荷的原子
- 返回:
收费 --表示每个原子电荷的浮点值数组
- 返回类型:
在 2.0.0 版本加入.
- MDAnalysis.topology.guessers.guess_improper_dihedrals(angles)[源代码]
给出一个角度列表,找出原子之间存在的所有不适当的二面体。
它的工作原理是假设如果(1,2,3)是一个角,并且2和4是结合的,那么(2,1,3,4)一定是不适当的二面体。不适当的二面体是由(1,2,3)和(1,3,4)形成的平面之间的夹角
- 返回:
定义不适当二面体的元组列表。
Suitable for use in u._topology
- MDAnalysis.topology.guessers.guess_masses(atom_types)[源代码]
根据原子的类型来猜测许多原子的质量
- 参数:
atom_types -- 每个原子的类型
- 返回:
atom_masses
- 返回类型:
np.ndarray dtype float64