计算化学公社

标题: 求助VMD如何动态绘制分子的偶极矩? [打印本页]

作者
Author:
lishine    时间: 2022-8-26 10:43
标题: 求助VMD如何动态绘制分子的偶极矩?
通过gromacs跑出来的:*.top文件包含了蛋白质的原子电荷

*.gro文件包含了原子坐标
*.trr文件记录了蛋白质的运动轨迹
Q:请问如何通过这些文件动态显示每一帧的偶极矩?

我的初步想法:
脚本计算偶极矩的坐标方向+VMD画箭头。但是VMD中draw arrow画出来的是固定坐标的箭头,不会随着每一帧蛋白质的运动而变化。

感觉这个方法很笨,请问大家有没有其他思路?


作者
Author:
sobereva    时间: 2022-8-26 13:49
先把原子电荷读入VMD作为原子的charge属性
然后建立一个回调函数,帧数每切换一次就自动调用一次回调函数,计算偶极矩、删除原有物体并绘制出新的箭头

部分内容可参考
使VMD实时显示gromacs轨迹中原子的受力
http://sobereva.com/36
作者
Author:
lishine    时间: 2022-8-27 15:08
按照您的思路,成功了,谢谢sob老师。下面是我在您的基础上修改的TCL文件,适用于实时显示偶极矩方向:

proc showdip {args} {
global vmd_frame
graphics 0 delete all
set sel [atomselect top all frame $vmd_frame(0)]
set dir [measure dipole $sel -debye]
set com [measure center $sel weight mass]
scan $dir "%f %f %f" x1 y1 z1
scan $com "%f %f %f" x0 y0 z0
set end "[expr $x0+$x1] [expr $y0+$y1] [expr $z0+$z1]"
set init "[expr $x0] [expr $y0] [expr $z0]"
puts "com = $init"
puts "end = $end"
puts "dip = $dir"
graphics 0 color red
graphics 0 cylinder $init $end radius 0.3 filled yes resolution 20
$sel delete
}

# trace variable vmd_frame(0) w showdip
# trace vdelete vmd_frame(0) w showdi









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