计算化学公社

 找回密码 Forget password
 注册 Register
Views: 992|回复 Reply: 13
打印 Print 上一主题 Last thread 下一主题 Next thread

[GROMACS] 统计体相水氢键z轴取向的分布,得到的分布却显示各向异性

[复制链接 Copy URL]

33

帖子

0

威望

519

eV
积分
552

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 chieko 于 2023-11-29 17:35 编辑

请教一下大家,我想要统计体系中水形成的氢键取向的分布,现在用一个pbc的水盒子测试脚本,5 nm的OPC3水盒子,20 ns NPT:
脚本很简单,主要是先用MDAnalysis统计氢键,然后依次读取每个氢键中供体上H和受体O的坐标,用这两个坐标计算与z方向的角度,最后统计角度分布并输出;
理论上bulk水的氢键角度分布应该是各向同性的,显示一条直线(如J. Chem. Phys. 143, 114708 (2015), https://doi.org/10.1063/1.4931414);
但我计算出来的是这样的不均匀的分布↓;(左:我的结果;右:文献的,绿色为bulk)

脚本中用MDA分析氢键的部分:
  1. hbonds = HydrogenBondAnalysis(universe=u,
  2.                               donors_sel=None,
  3.                               hydrogens_sel=f'name HW1 HW2 and {center_region} and (prop z >= {z1}) and (prop z <= {z2})',  # HBs in water.
  4.                               acceptors_sel=f'name OW and {center_region} and (prop z >= {z1}) and (prop z <= {z2})',
  5.                               d_a_cutoff=3.5,
  6.                               d_h_a_angle_cutoff=138.1,   # set as 138.1 to fit gmx (30).
  7.                               update_selections=True)
  8. hbonds.run(start=fps1,stop=fps2,verbose=True)
复制代码
脚本中计算角度并统计取向的部分:
  1. for hbond in tqdm(hbonds.results.hbonds, desc="Processing for all hydrogen bonds"):
  2.     frame = int(hbond[0])  # Frame of this hb
  3.     h_idx = int(hbond[2])  # Hydrogen atom index
  4.     a_idx = int(hbond[3])  # Acceptor atom index
  5.     u.trajectory[frame]
  6.     vec = u.atoms.positions[h_idx] - u.atoms.positions[a_idx]
  7.     angle = np.degrees(np.arccos(vec[2] / np.linalg.norm(vec)))
  8.     angles.append(angle)
  9. angle_distribution = np.array(angles)
复制代码
我也单独输出脚本每个部分的结果,测试了氢键的统计、原子坐标读取、角度计算,都没有什么问题。完整的脚本见附件。
麻烦Sob老师和各位老师看看问题出在哪里,谢谢大家!

clac-hb-angle.py

1.89 KB, 下载次数 Times of downloads: 13

350

帖子

4

威望

3305

eV
积分
3735

Level 5 (御坂)

Nerv

2#
发表于 Post on 2023-11-29 18:05:31 | 只看该作者 Only view this author
本帖最后由 Lacrimosa 于 2023-11-29 18:14 编辑

可能是归一化的问题,把结果除以一个sin(theta)看看

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
chieko + 5 谢谢!!!

查看全部评分 View all ratings

God's in his heaven,all is right with the world

33

帖子

0

威望

519

eV
积分
552

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2023-11-29 21:12:16 | 只看该作者 Only view this author
本帖最后由 chieko 于 2023-11-30 10:13 编辑
Lacrimosa 发表于 2023-11-29 18:05
可能是归一化的问题,把结果除以一个sin(theta)看看

非常感谢您的建议!
我尝试了一下,数据确实平了,但是还想请教两个问题:
1、这样得到的值大约在0.88%左右,理论上似乎应该是1/180=0.00556即0.55%左右,如文献中显示那样;
2、为什么您会想到除以sin(theta)呢?是只因为形状相似(笑),还是有什么地方我没有注意到呢?或许这也有助于我解决问题1;
再次感谢您!

350

帖子

4

威望

3305

eV
积分
3735

Level 5 (御坂)

Nerv

4#
发表于 Post on 2023-11-30 12:21:41 | 只看该作者 Only view this author
chieko 发表于 2023-11-29 21:12
非常感谢您的建议!
我尝试了一下,数据确实平了,但是还想请教两个问题:
1、这样得到的值大约在0.88% ...

第一个问题我没太看懂,
第二个问题简单来说就是当用你的方法统计角度分布的时候,不同角度都乘了个权重值,这个权重正比于该角度下圆环区域的大小(见链接中的图),要把这个权重除掉才能得到真实的角度分布,详细的内容可以参考下面的链接
http://keatonb.github.io/archivers/uniforminclination

评分 Rate

参与人数
Participants 2
eV +10 收起 理由
Reason
naoki + 5 谢谢
chieko + 5 谢谢!

查看全部评分 View all ratings

God's in his heaven,all is right with the world

33

帖子

0

威望

519

eV
积分
552

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2023-11-30 16:11:26 | 只看该作者 Only view this author
本帖最后由 chieko 于 2023-11-30 16:13 编辑
Lacrimosa 发表于 2023-11-30 12:21
第一个问题我没太看懂,
第二个问题简单来说就是当用你的方法统计角度分布的时候,不同角度都乘了个权重 ...

感谢您提供的思路!这确实是一个看起来很简单,但实际上很容易被忽略的点。
虽然我现在还是没有完全想明白——因为在MD里面计算角度,似乎并不涉及“观察球壳上某点相对于观测点的角度”?这样也就不涉及不同角度下球壳面积不同,导致的取样概率不一样的问题了。HBs与z轴的角度值并不依赖于某个观察点,而是直接用原子坐标计算的。
其实我前两天也做了个小测试,随机在(20,30)的范围内生成50万行,每行6个随机数,每行的6个数代表随机的两个原子坐标。然后计算每对坐标的连线与z轴的角度分布。
我本觉得这够随机了,统计的角度分布应该得到一条直线——但意外的是结果近似sin曲线(还不完全是)。现在看来,可能正是您提到的原因。

另外,上面我第一个问题的意思就是说,因为统计角度时是在0-180°上每间隔1°统计的,因此对于各向同性的体系,这个直线的分布值应该是1/180=0.00556即0.55%。
至于为什么我的结果不是这个值,可能也是归一化的问题吧?这倒是好解决(笑,就是不知道会不会不严谨)。

再次感谢您的解释和帮助!

350

帖子

4

威望

3305

eV
积分
3735

Level 5 (御坂)

Nerv

6#
发表于 Post on 2023-11-30 17:07:24 | 只看该作者 Only view this author
chieko 发表于 2023-11-30 16:11
感谢您提供的思路!这确实是一个看起来很简单,但实际上很容易被忽略的点。
虽然我现在还是没有完全想明 ...

对于第一个问题,举个例子,如果你在程序里给每个氢键形成的向量进行归一化,最终这些氢键向量就组成了一个半径为1的球面了。这个时候统计向量出现的次数和直接数球面上的点是同样的操作。尽管你在程序中转化成了角度,实际上也还是在数点而已,这个时候2*Pi*sinθdθ的权重就自然被考虑进去了。

第二个问题的信息不太够,不好判断呢。如果你有180个点,分布是一条y=0.88的直线,那求和以后不等于1啊。

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
sweetbotsu + 2 谢谢分享

查看全部评分 View all ratings

God's in his heaven,all is right with the world

33

帖子

0

威望

519

eV
积分
552

Level 4 (黑子)

7#
 楼主 Author| 发表于 Post on 2023-11-30 22:47:01 | 只看该作者 Only view this author
Lacrimosa 发表于 2023-11-30 17:07
对于第一个问题,举个例子,如果你在程序里给每个氢键形成的向量进行归一化,最终这些氢键向量就组成了一 ...

我好像有点明白了,我再去自己研究的体系上试试,看结果和预期是否吻合;
至于结果除以sin(theta)后积分不为1的问题,可能暗示这其中还是有点什么地方没有弄对,我暂时也想不出什么原因了,可能只好先“强行”让它归一化了。
非常感谢您的帮助!!

504

帖子

0

威望

3662

eV
积分
4166

Level 6 (一方通行)

truffle

8#
发表于 Post on 2024-9-9 00:18:19 | 只看该作者 Only view this author
本帖最后由 naoki 于 2024-9-9 07:41 编辑
Lacrimosa 发表于 2023-11-29 19:05
可能是归一化的问题,把结果除以一个sin(theta)看看

感觉这样的话0°和180°附近会有过大的权重啊
No problem is insoluble in all conceivable circumstances.

350

帖子

4

威望

3305

eV
积分
3735

Level 5 (御坂)

Nerv

9#
发表于 Post on 2024-9-9 13:18:47 | 只看该作者 Only view this author
naoki 发表于 2024-9-9 00:18
感觉这样的话0°和180°附近会有过大的权重啊

实际操作中好像不会遇到这个问题,毕竟对角度划分bins的时候不可能取到sin(0)
God's in his heaven,all is right with the world

504

帖子

0

威望

3662

eV
积分
4166

Level 6 (一方通行)

truffle

10#
发表于 Post on 2024-9-9 15:36:10 | 只看该作者 Only view this author
Lacrimosa 发表于 2024-9-9 14:18
实际操作中好像不会遇到这个问题,毕竟对角度划分bins的时候不可能取到sin(0)

我取到了0.5,然后一柱擎天
No problem is insoluble in all conceivable circumstances.

350

帖子

4

威望

3305

eV
积分
3735

Level 5 (御坂)

Nerv

11#
发表于 Post on 2024-9-9 21:44:20 | 只看该作者 Only view this author
naoki 发表于 2024-9-9 15:36
我取到了0.5,然后一柱擎天

如果把样本量继续增大说不定能降下来?
God's in his heaven,all is right with the world

28

帖子

0

威望

553

eV
积分
581

Level 4 (黑子)

12#
发表于 Post on 2024-9-10 09:59:52 | 只看该作者 Only view this author
bulk water相关角度分布本来就该是你第一张图那样的啊,见Nat Commun 11, 5809 (2020).的fig5黑线,你第二张图才是做了什么数据处理吧

4

帖子

0

威望

538

eV
积分
542

Level 4 (黑子)

13#
发表于 Post on 2024-9-25 16:43:37 | 只看该作者 Only view this author
我的观点:向量与Z轴夹角的概率分布就是应该是抛物线而非概率相等的直线。理由如下:我也遇到了这个问题,在盒子里随机放入线性分子,统计线性分子与X/Y/Z轴的夹角分布概率,也是得到了从0-180度,概率密度先增大后减小,在90度附近概率最大的抛物线形状。按2楼的方法将结果除以sin(theta)之后的确得到了之前预想的直线,但是概率加和也是不等于1。于是我又对同一个体系求了与X轴、Y轴的夹角概率分布,发现也是相同的抛物线,查找资料得到这样一句话"当分子与某一轴的夹角为 90 度时,它们的取向是最随机的。此时,分子在两个平面内的运动自由度最大,从而导致这一位置的分布概率最大",我试着在纸上画了三维坐标图,想象一个球体,发现当分子与Z轴的夹角为90度的时候,自由度的确是最大的,分子可以在XY平面内任意分布,当与Z的夹角从90度缩小到60度、30度、0度的时候,自由度逐渐减小,最后只能与Z轴平行,根本就不自由了。可能这样还是很难理解,那就再极端一点,直接比较与Z轴的夹角为0度还是90度,分子分布的概率是不是相同的,在0度时,分子或者说向量只能与Z轴平行,在XY平面没有任何变化的空间,而当夹角为90度时,向量在XY平面既可以选择与Y轴或者X轴平行,也可以自由地在XY轴平面内选择一个方向朝向。由此可见,90度的概率就是应该比0度或者180度大才对。以上是我的一点观点。

33

帖子

0

威望

519

eV
积分
552

Level 4 (黑子)

14#
 楼主 Author| 发表于 Post on 2024-11-5 21:52:42 | 只看该作者 Only view this author
本帖最后由 chieko 于 2024-11-5 22:13 编辑

搞明白了,说到底还是自己数学基础不好hhh;其实关于此早有严格的数学描述,见:
【空间中两随机向量间夹角的概率密度分布】  https://jerkwin.github.io/2013/0 ... %E5%88%86%E5%B8%83/
例如对于3维空间,随机向量夹角θ的分布的概率为:P(θ) = 1/2 sin(θ)
感谢大家的讨论!

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 00:40 , Processed in 0.203893 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list