计算化学公社

标题: 用VMD的TCL脚本把Multiwfn的结果标记到原子上的方法 [打印本页]

作者
Author:
ggdh    时间: 2019-1-4 12:30
标题: 用VMD的TCL脚本把Multiwfn的结果标记到原子上的方法
本帖最后由 ggdh 于 2020-6-15 15:15 编辑

在vmd中标记原子的方法参考:
在VMD中显示原子序号的方法
Multiwfn可以产生各种划分到原子上的信息,比如轨道分布,原子电荷等等。如果能把这些信息标记到原子上,一目了然。如果嫌直接显示标签太乱,看不清,可以使用
使用Multiwfn+VMD以原子着色方式表现原子电荷、自旋布居、电荷转移、简缩福井函数

这里记录,如何把HOMO轨道的分布标记到原子上的过程:
1.进行Gaussian运算,产生fchk。
2.用Multiwfn处理fchk文件,使用8 2 功能对HOMO轨道做SCPA分解。
3.把产生的轨道分布信息复制到excel中,格式改为保留2位小数,然后在复制出来,到Notepad++中,保存为文件(附件中的的orb_comp.txt文件)
4.把gaussian的log文件转换成vmd可以打开的结构文件,这里我转成了mol2文件(附件中的NCPCN.mol2)
5.用vmd打开mol2文件,然后打开tk console,把下面的程序复制过去:
  1. proc labelAtoms {filename seltext} {  
  2.     set molid [molinfo top]
  3.     set sel [atomselect top all]
  4.     set atomlist [$sel list]
  5.     set label_data [split [read [open $filename r]] "\n"]
  6.     set i 0
  7.     label delete Atoms all
  8.     foreach {atom} $atomlist {data} $label_data {
  9.         set atomlabel [format "%d/%d" $molid $atom]
  10.         label add Atoms $atomlabel
  11.         label textformat Atoms $i $data
  12.         incr i
  13.     }
  14.     label hide Atoms
  15.     set selshow [atomselect top $seltext]
  16.     set atomlist [$selshow list]
  17.     foreach {atom} $atomlist {
  18.         label show Atoms $atom
  19.     }
  20.   $sel delete
  21. }
复制代码

6.继续在Tk console 中输入
  1. labelAtoms "D:/orb_comp.txt" all
复制代码
注意这里的D:/orb_comp.txt 为你实际放置标签信息的位置
最后效果如下 (, 下载次数 Times of downloads: 53) 注意:label的颜色在Graphics-->color 中调节,而label的大小在Graphics-->Labels中调节

可以看到H原子上的HOMO轨道占据基本都是0,为了使得显示更简洁,可以把H上的标签全部去掉
输入命令
  1. labelAtoms "D:/orb_comp.txt" "not name \"H.*\""
复制代码
(, 下载次数 Times of downloads: 70)
可以看到,清楚了不少。

最后附上另外一种方法,首先定义程序:
  1. proc labelAtoms {molid seltext label_format} {
  2.     label delete Atoms all
  3.     set sel [atomselect $molid $seltext]
  4.     set i 0
  5.     set atomlist [$sel list]
  6.     foreach {atom} $atomlist {
  7.     set atomlabel [format "%d/%d" $molid $atom]
  8.     label add Atoms $atomlabel
  9.     label textformat Atoms $i $label_format
  10.     incr i
  11.   }
  12.   $sel delete
  13. }
复制代码
然后使用上面的程序
使用方法是
labelAtoms 0 all “%a-%i-%q”
可以显示所有原子的原子名称,序号和电荷,
这个电荷是写在mol2文件中的最后一列里面(具体位置参考附件中的mol2文件),因此我们可以把Multiwfn产生的各种信息当作电荷,替换mol2文件中原本放电荷的位置,让vmd显示出来。
这里的标签格式可以自行指定。具体有哪些格式可以参考:











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