计算化学公社

标题: 测量两个面之间夹角的tcl语言脚本编写问题 [打印本页]

作者
Author:
知黑守白    时间: 2022-6-26 18:30
标题: 测量两个面之间夹角的tcl语言脚本编写问题
还是这个问题,详细情况在下帖中:

如何测量两个面的夹角(不是二面角) - 分子模拟 (Molecular Modeling) - 计算化学公社 (keinsci.com)

我想用VMD内置的tcl语言测量两个平面之间的夹角,一个平面来自小分子,另一个平面来自蛋白的helix

在尝试了上贴中各位大佬给的建议之后,我按照培训班中卢老师的脚本进行了尝试改写,如下图和附件中所示。

蛋白helix对应的平面原子编号为 “Index 4936 4992 5045 5089"     小分子对应的平面原子编号为 “Index 8355 8351 8362"

运行的时候,一直报错,提示acos为空值,应该是上一步的 “set zcomp [lindex [lindex [lindex [measure inertiaZ $sel $sur] 1] 2] 2]” 写的不对

我在VMD官网的user guide里面看到的 inertiaZ这个指令,可能还没有更新到win版和linux版的VMD当中?

这几天一直在尝试修改这个脚本,以期得到我想测量的值,但都失败了,又很着急,请求各位大佬指正,我要怎么修改才能测量出想要的夹角?

作者
Author:
sobereva    时间: 2022-6-27 05:11
helix和平面没什么直接联系,不知道你说的是什么平面,得给个示意图
遇到脚本出不来结果的时候,就不要一下子把好多个语句嵌套在一起,应该拆开来一条一条执行。即每个[ ]子语句的执行作为一行,并且结果赋值到一个变量里,在脚本中把这个变量puts显示出来,这样自然就能分析到底哪个地方有问题。
作者
Author:
snljty2    时间: 2022-6-27 10:41
我还以为你要做某个平面的拟合(超过3个原子),那得做奇异值分解,用Tcl实现估计比较难。只是随口说一句,如果硬要做这个,可以参考http://bbs.keinsci.com/thread-23019-1-1.html,用C语言链接LAPACK做个SVD的接口。。。另外几十个GB的xyz也不至于大到不能接受,有个硬盘大点的服务器,多等一会儿还是能出结果的。
作者
Author:
lyj714    时间: 2022-6-27 11:51
三点以上平面需要拟合,tcl有数学库可以做最小二乘奇异值分解。
作者
Author:
snljty2    时间: 2022-6-28 16:59
lyj714 发表于 2022-6-27 11:51
三点以上平面需要拟合,tcl有数学库可以做最小二乘奇异值分解。

Tcl居然还有这种库,求一下库的名字,感激




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3