4.3.3. 水桥分析 MDAnalysis.analysis.hydrogenbonds.WaterBridgeAnalysis

作者:

吴志义

:

2017-2018年

版权所有:

GNU公共许可证v3

维护员:

吴志毅<zhiyi.wu@gtc.ox.ac.uk>, @xiki-tempula 论GitHub

给出了一个 Universe (具有1个或更多帧的模拟轨迹)测量选择1和选择2之间每个帧的所有水桥。水桥被定义为桥接水,它同时与选择1和选择2中的原子形成两个氢键。

在两个氢键受体之间可以形成水桥。

例如-CO2 - :···H−O−H···:- o2 c-

两个氢键施主之间也可以形成一座水桥。

例如-NH···:O:···HN-(式中O为桥水的氧)

氢键受体和另一个氢键供体可以通过水连接。

例如-CO2 - :···H−O:···HN-(其中H−O是 H−O −H)

高阶水桥被定义为一个以上的水桥接氢键的受体和给体。二阶水桥的一个示例:

例如-CO2 - :···H−O:···H−O:···HN-(其中H−O是 H−O −H)

以下关键字参数对于控制水桥分析的行为很重要:

  • water_selection (resname SOL): the selection string for the bridging water

  • 订单 水桥两端的最大桥数

  • 供体-受体 距离 (?):3.0

  • 角度 截止日期 (度):120.0

  • 力场 在不同力场的默认值之间切换

  • 捐赠者接受者 原子类型(添加其他原子名称)

4.3.3.1. 理论

该模块试图通过类似于广度优先搜索的方法来寻找多阶水桥,其中选择了选择1的第一个溶剂化壳,然后选择第二个溶剂化壳以及选择1中的任何氢键伙伴。之后,检测到第三个溶剂化壳以及选择2中的任何结合伙伴。重复这一过程,直到达到水桥的最大订单。

4.3.3.2. 作为网络输出

因为连接选择两端的水域本质上是一个网络。我们提供了水网络的网络表示。每帧返回水桥数据,该数据存储在 WaterBridgeAnalysis.results.network 。每一帧被表示为词典,其中关键字是源自选项1的氢键,并且值是表示从与选项1形成氢键的相应分子中产生的氢键的新词典。

至于达到选择2的氢键,相应键的值为无。其中选择1和选择2由也与另一水(B)氢键连接的一个水分子(A)连接的一个实例将表示为:

# (selection 1)-O:···H-O(water 1):···H-(selection 2)
#                      |             :
#                      H·············O-H(water2)
#                                    H
{(sele1_acceptor, None, water1_donor, water1_donor_heavy, distance, angle):
     {(water1_acceptor, None, sele2_donor, sele2_donor_heavy,
     distance, angle): None},
     {(water1_donor, water1_donor_heavy, water2_acceptor, None,
     distance, angle):
          {(water2_acceptor, None, sele2_donor, sele2_donor_heavy,
          distance, angle): None}
      },
}

原子用原子指数表示,如果原子是氢键给体,则后面跟着相应重原子的指数 (donor_proton, donor_heavy_atom) 。如果原子是氢键受体,后面就没有氢键。

4.3.3.3. 作为时间序列输出

对于较低阶的水桥,可能需要将连接表示为 WaterBridgeAnalysis.results.timeseries 。每帧返回结果,并且是选项1或选项2与桥接水之间的氢键的列表。由于高阶水桥的复杂性,以及三阶和四阶水桥中都可能出现两水之间的一个氢键,因此,高阶水桥中的氢键 WaterBridgeAnalysis.results.timeseries 属性以深度优先的搜索方式生成,以避免重复。示例代码说明如何 WaterBridgeAnalysis.results.timeseries 已生成::

def network2timeseries(network, timeseries):
    '''Traverse the network in a depth-first fashion.
    expand_timeseries will expand the compact representation to the
    familiar timeseries representation.'''

    if network is None:
        return
    else:
        for node in network:
            timeseries.append(expand_timeseries(node))
            network2timeseries(network[node], timeseries)

timeseries = []
network2timeseries(network, timeseries)

一个例子就是。**

results = [
    [ # frame 1
       [ <donor index>, <acceptor index>,
        (<donor residue name>, <donor residue number>, <donor atom name>),
        (<acceptor residue name>, <acceptor residue number>,
        <acceptor atom name>),
         <distance>, <angle>],
       ....
    ],
    [ # frame 2
      [ ... ], [ ... ], ...
    ],
    ...
]

使用 WaterBridgeAnalysis.generate_table() 方法一可以将结果重新格式化为扁平的“标准化”表,以便更容易地导入到数据库或数据帧中进行进一步处理。

4.3.3.4. 水上桥梁的检测

如果桥接水同时与选择1和选择2形成氢键,则记录水桥。

氢键的检测基于几何标准:

  1. 受体与氢之间的距离小于或等于 distance (默认为3?)。

  2. 给氢受体夹角大于或等于 angle (缺省值为120?)。

分界值 angledistance 可以设置为关键字 WaterBridgeAnalysis

从原子名称中检测到施主和受主重原子。当前默认设置适用于表中定义的CHARMM27和GLYCAM06力场 Default atom names for water bridge analysis

根据氢原子与施主的距离来搜索与施主相连的氢原子。该算法搜索所有氢(名称“H*”或名称“ [123] H“或类型”H“)与施主原子相同的残基,截止距离为1.2?

CHARMM27力场的默认重原子名称。

捐助者

接受者

评论

主链

N

O、OC1、OC2

来自amber99sb-ildn(Gromacs)的OC1、OC2

俄亥俄州俄亥俄州

俄亥俄州俄亥俄州

SPC、TIP3P、TIP4P(CHARMM27、Gromacs)

ARG

Ne、NH1、NH2

ASN

ND2

OD1

ASP

OD1、OD2

CYS

SG

CYH

SG

CyS可能出现假阳性

GLN

Ne2

Oe1

GLU

Oe1、Oe2

HIS

ND1、NE2

ND1、NE2

H的存在决定了供体是否

HSD

ND1

Ne2

HSE

Ne2

ND1

HSP

ND1、NE2

LYS

NZ

MET

SD

参见例如 [Gregoret1991]

SER

OG

OG

THR

OG1

OG1

TRP

NE1

TYR

OH

OH

GLYCAM06力场的重原子类型。

元素

捐助者

接受者

N

N、NT、N3

N,NT

O

哦,哇!

O、O2、OH、OS、OW、OY

S

SM

CHARMM27力场的施主和受主名称也适用于例如OPLS/AA或琥珀(在Gromacs中测试)。表中的残留物名称仅供参考,在确定接受者和捐赠者时不作考虑。这可能会导致对组氨酸或胞嘧啶等残基的供体/受体的分配有一定的模糊性。

有关GLYCAM06中的命名约定的更多信息,请参阅 Carbohydrate Naming Convention in Glycam

通过提供原子名称列表,可以扩展施主和受主名称列表 donorsacceptors 关键字至 WaterBridgeAnalysis 。如果这些列表完全不合适(例如,当分析使用非常不同的原子名称的力场进行的模拟时),则应该使用 forcefield 不设置默认值或派生新类并自行设置默认列表的步骤:

class WaterBridgeAnalysis_OtherFF(WaterBridgeAnalysis):
      DEFAULT_DONORS = {"OtherFF": tuple(set([...]))}
      DEFAULT_ACCEPTORS = {"OtherFF": tuple(set([...]))}

然后只需使用新类而不是父类,并使用 `forcefield` = "OtherFF" 。还请考虑将重原子名称列表提供给MDAnalysis。

参考文献

[Gregoret1991] (1,2,3)

Lydia M. Gregoret, Stephen D. Rader, Robert J. Fletterick, and Fred E. Cohen. Hydrogen bonds involving sulfur atoms in proteins. Proteins: Structure, Function, and Bioinformatics, 9(2):99–107, 1991. doi:https://doi.org/10.1002/prot.340090204.