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.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浮点数。
- 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。增列
atol
和rtol
要控制的关键词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.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]
- 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 版本发生变更: 已添加 atol 和 rtol 关键字来选择浮点值。增列 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_wargs
和smarts_kwargs
现在可以传递以控制RDKit转换器和RDKit的GetSubstructMatches
分别进行了分析。默认设置maxMatches
传递给的值GetSubstructMatches
已从1000
至max(1000, n_atoms * 10)
以限制生成的匹配太少的情况。如果出现以下情况,现在也会抛出警告maxMatches
已经联系上了。
- MDAnalysis.core.selection.gen_selection_class(singular, attrname, dtype, per_object)[源代码]
任意TopologyAttrs的选择类工厂。
通常,除非在代码库内或由开发人员使用,否则不应使用它;它由元类调用
MDAnalysis.core.topologyattrs._TopologyAttrMeta
通过创建具有拓扑属性(单数)名称的标记来自动生成合适的选择类。该函数使用提供的dtype
要选择将哪个选择类子类化,请执行以下操作:BoolSelection
对于布尔人来说RangeSelection
对于整数FloatRangeSelection
对于花车_ProtoStringSelection
对于字符串
其他值类型尚不受支持,将引发ValueError。这些类是在
_selectors
模块以避免命名空间冲突。- 参数:
- 返回:
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)