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

参见

guess_bonds()

MDAnalysis.topology.guessers.guess_aromaticities(atomgroup)[源代码]

用RDKit猜测原子的芳香性

参数:

atomgroup (mda.core.groups.AtomGroup) -- 将被猜测芳香性的原子

返回:

芳香性 --每个原子芳香性的布尔值数组

返回类型:

numpy.ndarray

在 2.0.0 版本加入.

MDAnalysis.topology.guessers.guess_atom_charge(atomname)[源代码]

从名字中猜想原子电荷。

警告

未实现;仅返回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]

返回:

适用于构建宇宙拓扑的元组列表。

返回类型:

list

警告

在猜测键以查看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) -- 将被猜测电荷的原子

返回:

收费 --表示每个原子电荷的浮点值数组

返回类型:

numpy.ndarray

在 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

MDAnalysis.topology.guessers.guess_types(atom_names)[源代码]

根据原子名称猜测多个原子的原子类型

参数:

atom_names -- 每个原子的名称

返回:

atom_types

返回类型:

np.ndarray dtype object

MDAnalysis.topology.guessers.validate_atom_types(atom_types)[源代码]

根据原子类型在我们的表中是否可用来验证它们

参数:

atom_types -- 每个原子的类型

返回:

  • None

  • 。。版本已更改::0.20.0 --也尝试大写的原子类型名称