计算化学公社

 找回密码 Forget password
 注册 Register

求助关系python语言解决向量问题

查看数: 14064 | 评论数: 17 | 收藏 Add to favorites 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-1-6 20:58

正文摘要:

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

回复 Reply

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

显然要加上键连关系才能明确处理
snljty 发表于 Post on 2021-1-14 16:58:20
少年爱吃地三鲜 发表于 2021-1-14 16:54
老师,我想问一下您,我们自己构建函数时候用到的原子坐标可能随着轨迹突然跳到另一端,这个时候我们编写 ...

(假设是正交盒子)每个坐标如果超过盒子长度就减去一个盒子长度,如果是负数就加上一个盒子长度。通常来说,不会有跑到中心盒子边上两个和以上盒子距离的情况。
少年爱吃地三鲜 发表于 Post on 2021-1-14 16:54:56
liyuanhe211 发表于 2021-1-7 15:22
学一下numpy吧,很好用的。

老师,我想问一下您,我们自己构建函数时候用到的原子坐标可能随着轨迹突然跳到另一端,这个时候我们编写程序应该如何定义呢? 还是说只能在gomacs 中 使用nojump? 这个周期性边界自己写该如何考虑,麻烦您了
我本是个娃娃 发表于 Post on 2021-1-7 15:42:28
liyuanhe211 发表于 2021-1-7 15:22
学一下numpy吧,很好用的。

学过。但是脑子一抽,就想不起来用……
liyuanhe211 发表于 Post on 2021-1-7 15:22:45
我本是个娃娃 发表于 2021-1-7 12:10
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

学一下numpy吧,很好用的。
少年爱吃地三鲜 发表于 Post on 2021-1-7 13:13:16
我本是个娃娃 发表于 2021-1-7 12:10
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

liuyuje714 发表于 Post on 2021-1-7 12:20:21
我本是个娃娃 发表于 2021-1-7 12:10
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

你这个实际用起来应该不一定对,你没有考虑正负,正常情况应该是[-PI, PI].
我本是个娃娃 发表于 Post on 2021-1-7 12:10:54
2019年7月写的,当时是为了解决另一个帖子的关于乙烷的二面角问题。

diangle.py (1.28 KB, 下载次数 Times of downloads: 14)
少年爱吃地三鲜 发表于 Post on 2021-1-7 10:35:49
highlight 发表于 2021-1-7 09:41
这里 https://stackoverflow.com/questi ... ordinates-in-python
乘负一的原因是

非常感谢您!
少年爱吃地三鲜 发表于 Post on 2021-1-7 10:20:22
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))
liuyuje714 发表于 Post on 2021-1-7 10:12:13
本帖最后由 liuyuje714 于 2021-1-7 10:13 编辑

按照图二的公式写就好了。对于做MD轨迹分析的话你还是应该看看一些源码的,比如mdanalysis的源中就有相应的二面角计算函数,你主要还应该考虑跨周期性分子的问题。物理知识只是告诉你如何做和原理是什么,真正用到实际问题考虑要更加全面。
少年爱吃地三鲜 发表于 Post on 2021-1-7 10:07:05
liyuanhe211 发表于 2021-1-7 09:45
代码截图的分辨率起码得能看得清是等号还是减号吧。。。

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

感谢您的教导!!!!
liyuanhe211 发表于 Post on 2021-1-7 09:45:12
代码截图的分辨率起码得能看得清是等号还是减号吧。。。

令二面角是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 13:17 , Processed in 0.171222 second(s), 26 queries , Gzip On.

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