计算化学公社

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

[程序/脚本开发] 求助关系python语言解决向量问题

[复制链接 Copy URL]

376

帖子

0

威望

2757

eV
积分
3133

Level 5 (御坂)

尊贵的地三鲜骑士

求助各位老师,我是用MDAnalysis计算二面角的, 图二是 根据的公式, 图一是找到的算法代码。 请教几个小问题,1:请问b0 为啥要乘以负一  2: v和w是什么含义? 麻烦各位老师了

QQ图片20210106205622.png (35.64 KB, 下载次数 Times of downloads: 41)

图一

图一

QQ图片20210106205559.png (97.09 KB, 下载次数 Times of downloads: 53)

图二

图二
由衷的感谢每一位给与过我帮助的人

3097

帖子

29

威望

1万

eV
积分
17221

Level 6 (一方通行)

18#
发表于 Post on 2021-1-14 20:28:26 | 只看该作者 Only view this author
少年爱吃地三鲜 发表于 2021-1-14 17:19
老师,按照简单的例子,如果求 分子链的均方末端距,那这条链横跨了两个镜像,如果按您说的坐标来看,坐标 ...

显然要加上键连关系才能明确处理

376

帖子

0

威望

2757

eV
积分
3133

Level 5 (御坂)

尊贵的地三鲜骑士

17#
 楼主 Author| 发表于 Post on 2021-1-14 17:19:23 | 只看该作者 Only view this author
老师,按照简单的例子,如果求 分子链的均方末端距,那这条链横跨了两个镜像,如果按您说的坐标来看,坐标原点是哪个角?另外加上或减去边长这样计算的距离会不会算多了?

图片1.png (6.17 KB, 下载次数 Times of downloads: 46)

周期性图

周期性图
由衷的感谢每一位给与过我帮助的人

1187

帖子

5

威望

2876

eV
积分
4163

Level 6 (一方通行)

16#
发表于 Post on 2021-1-14 16:58:20 | 只看该作者 Only view this author
少年爱吃地三鲜 发表于 2021-1-14 16:54
老师,我想问一下您,我们自己构建函数时候用到的原子坐标可能随着轨迹突然跳到另一端,这个时候我们编写 ...

(假设是正交盒子)每个坐标如果超过盒子长度就减去一个盒子长度,如果是负数就加上一个盒子长度。通常来说,不会有跑到中心盒子边上两个和以上盒子距离的情况。

376

帖子

0

威望

2757

eV
积分
3133

Level 5 (御坂)

尊贵的地三鲜骑士

15#
 楼主 Author| 发表于 Post on 2021-1-14 16:54:56 | 只看该作者 Only view this author
liyuanhe211 发表于 2021-1-7 15:22
学一下numpy吧,很好用的。

老师,我想问一下您,我们自己构建函数时候用到的原子坐标可能随着轨迹突然跳到另一端,这个时候我们编写程序应该如何定义呢? 还是说只能在gomacs 中 使用nojump? 这个周期性边界自己写该如何考虑,麻烦您了
由衷的感谢每一位给与过我帮助的人

2494

帖子

11

威望

7054

eV
积分
9768

Level 6 (一方通行)

14#
发表于 Post on 2021-1-7 15:42:28 | 只看该作者 Only view this author
liyuanhe211 发表于 2021-1-7 15:22
学一下numpy吧,很好用的。

学过。但是脑子一抽,就想不起来用……

3097

帖子

29

威望

1万

eV
积分
17221

Level 6 (一方通行)

13#
发表于 Post on 2021-1-7 15:22:45 | 只看该作者 Only view this author
我本是个娃娃 发表于 2021-1-7 12:10
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

学一下numpy吧,很好用的。

376

帖子

0

威望

2757

eV
积分
3133

Level 5 (御坂)

尊贵的地三鲜骑士

12#
 楼主 Author| 发表于 Post on 2021-1-7 13:13:16 | 只看该作者 Only view this author
我本是个娃娃 发表于 2021-1-7 12:10
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

由衷的感谢每一位给与过我帮助的人

222

帖子

5

威望

2591

eV
积分
2913

Level 5 (御坂)

11#
发表于 Post on 2021-1-7 12:20:21 | 只看该作者 Only view this author
我本是个娃娃 发表于 2021-1-7 12:10
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

你这个实际用起来应该不一定对,你没有考虑正负,正常情况应该是[-PI, PI].

2494

帖子

11

威望

7054

eV
积分
9768

Level 6 (一方通行)

10#
发表于 Post on 2021-1-7 12:10:54 | 只看该作者 Only view this author
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

diangle.py (1.28 KB, 下载次数 Times of downloads: 14)

376

帖子

0

威望

2757

eV
积分
3133

Level 5 (御坂)

尊贵的地三鲜骑士

9#
 楼主 Author| 发表于 Post on 2021-1-7 10:35:49 | 只看该作者 Only view this author
highlight 发表于 2021-1-7 09:41
这里 https://stackoverflow.com/questi ... ordinates-in-python
乘负一的原因是

非常感谢您!
由衷的感谢每一位给与过我帮助的人

376

帖子

0

威望

2757

eV
积分
3133

Level 5 (御坂)

尊贵的地三鲜骑士

8#
 楼主 Author| 发表于 Post on 2021-1-7 10:20:22 | 只看该作者 Only view this author
def dihedral(p1,p2,p3,p4):
    '''p1,p2,p3,p4 are atoms'''
    c1=p1.position
    c2=p2.position
    c3=p3.position
    c4=p4.position
    b0 = -1.0*(c2-c1)
    b1 = c3 - c2
    b2 = c4 - c3
    b1 /= np.linalg.norm(b1)
    v = b0 - np.dot(b0, b1)*b1
    w = b2 - np.dot(b2, b1)*b1
    x = np.dot(v, w)
    y = np.dot(np.cross(b1, v), w)   
    return np.degrees(np.arctan2(y, x))
由衷的感谢每一位给与过我帮助的人

222

帖子

5

威望

2591

eV
积分
2913

Level 5 (御坂)

7#
发表于 Post on 2021-1-7 10:12:13 | 只看该作者 Only view this author
本帖最后由 liuyuje714 于 2021-1-7 10:13 编辑

按照图二的公式写就好了。对于做MD轨迹分析的话你还是应该看看一些源码的,比如mdanalysis的源中就有相应的二面角计算函数,你主要还应该考虑跨周期性分子的问题。物理知识只是告诉你如何做和原理是什么,真正用到实际问题考虑要更加全面。

376

帖子

0

威望

2757

eV
积分
3133

Level 5 (御坂)

尊贵的地三鲜骑士

6#
 楼主 Author| 发表于 Post on 2021-1-7 10:07:05 | 只看该作者 Only view this author
liyuanhe211 发表于 2021-1-7 09:45
代码截图的分辨率起码得能看得清是等号还是减号吧。。。

令二面角是A1-A2-A3-A4组成的,则算二面角的俩 ...

感谢您的教导!!!!
由衷的感谢每一位给与过我帮助的人

3097

帖子

29

威望

1万

eV
积分
17221

Level 6 (一方通行)

5#
发表于 Post on 2021-1-7 09:45:12 | 只看该作者 Only view this author
代码截图的分辨率起码得能看得清是等号还是减号吧。。。

令二面角是A1-A2-A3-A4组成的,则算二面角的俩向量应该是向量A2->A1和向量A3->A4之间的二面角,而不是向量A1->A2和向量A3->A4的二面角,所以它乘个负一。。。为啥要减个错的再乘负一我也不知道

设有一单位向量a,(b·a)a 的几何意义是求b在平行于a方向的分向量。b - (b·a)a 就是求b在垂直于a方向的分向量.

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
少年爱吃地三鲜 + 5 谢谢

查看全部评分 View all ratings

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

GMT+8, 2026-2-22 16:04 , Processed in 0.211655 second(s), 25 queries , Gzip On.

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