11.4.1. 原子选择层次 MDAnalysis.core.selection

此模块包含表示选择的对象。它们被构建,然后应用到组中。

总体而言, Parser.parse() 创建一个 Selection 从选择字符串中获取。这 Selection 然后向对象传递一个 AtomGroup 通过ITS apply() 方法来应用 Selection 发送到 AtomGroup

这些对用户来说都是不可见的 select_atoms() An的方法 AtomGroup

class MDAnalysis.core.selection.AromaticSelection(parser, tokens)[源代码]

选择芳香原子。

芳香性可在 aromaticities 属性,并通过RDKit提供

class MDAnalysis.core.selection.BackboneSelection(parser, tokens)[源代码]

BackboneSelection包含名称为‘N’、‘CA’、‘C’、‘O’的所有原子。

这不包括C-末端的OT*(包括在例如VMD的主干选择中)。

在 1.0.1 版本发生变更: BB_ATOMERS更改为SET(从NumPy数组)在较大系统上将性能提高约100倍

class MDAnalysis.core.selection.BaseSelection(parser, tokens)[源代码]

碱基中原子的选择。

识别的原子名称(来自CHARMM):

‘N9’、‘N7’、‘C8’、‘C5’、‘C4’、‘N3’、‘C2’、‘N1’、‘C6’、‘O6’、‘N2’、‘N6’、‘O2’、‘N4’、‘O4’、‘C5M’

在 1.0.1 版本发生变更: 在较大的系统上,base_ATOMERS更改为SET(从Numy数组)性能提高约100倍

class MDAnalysis.core.selection.BoolSelection(parser, tokens)[源代码]

布尔值的选择

class MDAnalysis.core.selection.ByNumSelection(parser, tokens)[源代码]
class MDAnalysis.core.selection.ByResSelection(parser, tokens)[源代码]

选择位于相同片段和残基中的所有原子作为选择

在 1.0.0 版本发生变更: 使用 "resindices" 而不是 "resids" (见#2669和#2672)

MDAnalysis.core.selection.FLOAT_PATTERN = '-?\\d*\\.?\\d*(?:e[-+]?\\d+)?'

用于识别选定内容中的浮点数的正则表达式。像1.2、1.2e-01、-1.2这样的数字都被解析为Python浮点数。

class MDAnalysis.core.selection.FloatRangeSelection(parser, tokens)[源代码]

浮点值的范围选择

dtype

float 的别名

MDAnalysis.core.selection.INT_PATTERN = '-?\\d+'

用于识别选择中的无符号整数的正则表达式。

class MDAnalysis.core.selection.NucleicBackboneSelection(parser, tokens)[源代码]

包含名称为“P”、“C5‘”、“C3’”、“O3‘”、“O5’”的所有原子。

这些原子只有在它们位于与 NucleicSelection

在 1.0.1 版本发生变更: BB_ATOMERS更改为SET(从NumPy数组)在较大系统上将性能提高约100倍

class MDAnalysis.core.selection.NucleicSelection(parser, tokens)[源代码]

核酸残基中具有公认残基名称的所有原子。

已识别的残留物名称:

  • 在CHARMM力场中:

    Awk‘/resi/{printf“’”‘“%s”“’,”,$2}‘top_all27_prot_na.rtf

  • 已识别:‘ade’、‘ura’、‘cyt’、‘gua’、‘thy’

  • 已识别(Gromacs中的CHARMM):‘da’、‘Du’、‘dc’、‘dg’、‘dt’

在 0.8 版本发生变更: 其他Gromacs选项

在 1.0.1 版本发生变更: 将nucl_res更改为set(从NumPy数组)在较大的系统上将性能提高约100倍

class MDAnalysis.core.selection.NucleicSugarSelection(parser, tokens)[源代码]

包含名称为C1‘、C2’、C3‘、C4’、O2‘、O4’、03‘的所有原子。

在 1.0.1 版本发生变更: Sug_ATOMERS更改为set(从NumPy数组)在较大的系统上将性能提高约100倍

class MDAnalysis.core.selection.PropertySelection(parser, tokens)[源代码]

一些可能的属性:x、y、z、半径、质量、

在 2.0.0 版本发生变更: 已更改==运算符以使用np.islose而不是np.equals。增列 atolrtol 要控制的关键词 np.isclose 宽容。

可能围绕运算符拆分:

道具x<5道具x<5

class MDAnalysis.core.selection.ProteinSelection(parser, tokens)[源代码]

由所有具有公认残基名称的残基组成。

中识别的残基名称 ProteinSelection.prot_res

  • 在CHARMM力场中:

    Awk‘/resi/{printf“’”‘%s“’,”,$2}‘top_all27_prot_lipid.rtf

  • 手动添加特殊的CHARMM、OPLS/AA和琥珀残留物名称。

在 1.0.1 版本发生变更: 将prot_res更改为set(从NumPy数组)在较大系统上将性能提高约100倍

MDAnalysis.core.selection.RANGE_PATTERN = '\\s*(?:[:-]| to )\\s*'

用于识别范围分隔符的正则表达式。分隔符包括“:”、“-”、“to”,并且可以有任意的空格。

class MDAnalysis.core.selection.RangeSelection(parser, tokens)[源代码]

INT值的范围选择

dtype

int 的别名

class MDAnalysis.core.selection.ResidSelection(parser, tokens)[源代码]

基于数值场选择原子

允许使用‘:’、‘-’和‘to’来指定值的范围,例如

RESID 1:10

class MDAnalysis.core.selection.SameSelection(parser, tokens)[源代码]

选择与选择中的任何原子具有相同子关键字值的所有原子

在 1.0.0 版本发生变更: 地图 "residue""resindices""segment""segindices" (见#2669和#2672)

class MDAnalysis.core.selection.SelectionParser(*p, **k)[源代码]

一个用于选择表达式的小型解析器。使用优先爬坡进行递归下降解析的演示(请参阅http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm).将表达式转换为嵌套选择树。

作为参考,我们解析的语法是::

E(xpression)--> Exp(0)
Exp(p) -->      P {B Exp(q)}
P -->           U Exp(q) | "(" E ")" | v
B(inary) -->    "and" | "or"
U(nary) -->     "not"
T(erms) -->     segid [value]
                | resname [value]
                | resid [value]
                | name [value]
                | type [value]
expect(token)[源代码]

预期并删除给定的令牌

parse(selectstr, selgroups, periodic=None, atol=1e-08, rtol=1e-05, sorted=True, rdkit_kwargs=None, smarts_kwargs=None)[源代码]

从字符串创建选择对象。

参数:
  • selectstr (str) -- 描述所选内容的字符串

  • selgroups (AtomGroups) -- 要在中使用的原子组 group 精选

  • periodic (bool, optional) -- 对于基于距离的选择,是否考虑周期性边界条件

  • atol (float, optional) -- 浮点数比较的绝对公差参数。已传递给 numpy.isclose()

  • rtol (float, optional) -- 浮点数比较的相对公差参数。已传递给 numpy.isclose()

  • sorted (bool, optional) -- 是否对输出原子组进行排序。

  • rdkit_kwargs (dict, optional) -- 使用基于Smarts查询的选择时传递给RDKitConverter的参数

  • smarts_kwargs (dict, optional) -- 在内部传递给RDKit的 GetSubstructMatches

返回:

  • 适当的选择对象。在上使用.Apply方法

  • 此选项用于执行选择。

抛出:

SelectionError -- 如果在创建选择对象时出现任何错误。

在 2.0.0 版本发生变更: 已添加 atolrtol 关键字来选择浮点值。增列 rdkit_kwargs 将参数传递给RDKitConverter

在 2.2.0 版本发生变更: 增列 smarts_kwargs 参数,允许用户将参数字典传递给RDKit的 GetSubstructMatches

class MDAnalysis.core.selection.SingleCharSelection(parser, tokens)[源代码]

当属性只是一个字符时,例如RSChirality

在 2.1.0 版本加入.

class MDAnalysis.core.selection.SmartsSelection(parser, tokens)[源代码]

根据Smarts查询选择原子。

使用RDKit运行查询并将结果转换为MDAnalysis。支持手性。

在 2.2.0 版本发生变更: rdkit_wargssmarts_kwargs 现在可以传递以控制RDKit转换器和RDKit的 GetSubstructMatches 分别进行了分析。默认设置 maxMatches 传递给的值 GetSubstructMatches 已从 1000max(1000, n_atoms * 10) 以限制生成的匹配太少的情况。如果出现以下情况,现在也会抛出警告 maxMatches 已经联系上了。

MDAnalysis.core.selection.gen_selection_class(singular, attrname, dtype, per_object)[源代码]

任意TopologyAttrs的选择类工厂。

通常,除非在代码库内或由开发人员使用,否则不应使用它;它由元类调用 MDAnalysis.core.topologyattrs._TopologyAttrMeta 通过创建具有拓扑属性(单数)名称的标记来自动生成合适的选择类。该函数使用提供的 dtype 要选择将哪个选择类子类化,请执行以下操作:

其他值类型尚不受支持,将引发ValueError。这些类是在 _selectors 模块以避免命名空间冲突。

参数:
  • singular (str) -- TopologyAttr的单一名称

  • attrname (str) -- 拓扑属性的属性名称

  • dtype (type) -- 拓扑类型属性

  • per_object (str) -- 拓扑属性级别

返回:

selection

返回类型:

subclass of Selection

抛出:

ValueError -- 如果 dtype 不是受支持的类型之一

示例

该函数在内部创建一个类 _selectors 然后把它还回去。通常不需要手动调用,因为它是为每个TopologyAttr::创建的

>>> gen_selection_class("resname", "resnames", object, "residue")
<class 'MDAnalysis.core.selection._selectors.ResnameSelection'>

只需生成此选择器就足以让关键字通过 select_atoms() ,因为这是由 _Selectionmeta

参见

MDAnalysis.core.topologyattrs._TopologyAttrMeta,

MDAnalysis.core.selection.grab_not_keywords(tokens)[源代码]

从左侧弹出令牌,直到您命中关键字

参数:

tokens (collections.deque) -- 字符串的奇特之处,一些令牌,有些不是

返回:

--在命中关键字之前找到的所有非关键字

返回类型:

list of strings

备注

此函数用于从双队列中弹出值

示例

GRAB_NOT_KEYS( [‘H’、‘and’、‘RENAME’、‘MET’] )> ['H']

GRAB_NOT_KEYS( [‘H’、‘Ca’、‘N’、‘and’、‘RENAME’、‘MET’] )> [‘H’、‘Ca’、‘N’]

GRAB_NOT_KEYS( [‘and’,‘rename’,‘Met’] )>[]

MDAnalysis.core.selection.is_keyword(val)[源代码]

Val是选择关键字吗?

对以下任一字符串返回FALSE:
  • SELECTIONDICT中的键(来自选择对象的令牌)

  • 操作中的键(来自LogicOperations的令牌)

  • (括号)

  • 它的价值 None (在选择字符串中用作EOF)

MDAnalysis.core.selection.join_separated_values(values)[源代码]

用空格分隔的联接范围值

参数:

values (list) -- 值字符串列表

返回:

values

返回类型:

list of strings

示例

JOIN_SELECTED_VALUES( [‘37’、‘to’、‘22’] )> [‘37到22岁’]

在 2.0.0 版本加入.

MDAnalysis.core.selection.return_empty_on_apply(func)[源代码]

修饰符在不对其求值的情况下从Apply()函数返回空的原子组