在VMD中显示原子序号的方法

在VMD中显示原子序号的方法

文/Sobereva
First release: 2013-Jul-30    Last update: 2014-Jul-23


VMD虽然灵活强大,但是却没有提供一般的分子可视化软件的直接显示全部原子序号的功能,比较不方便。但是这也可以手动或者通过脚本来实现。

手动实现的办法就是按数字键1,然后依次点击打算显示原子编号的原子,然后进入Graphics-Labels,选中所有条目,然后点击Properties标签页,在Format框里面输入%i。那些原子的编号就显示在图中了。如果觉得标签位置不合适,可以拖动Properties标签页里Offset里的十字使位置合适。在Global Properties标签页里可以设文字大小和粗细。修改文字颜色的方法是在Graphics-Colors里的Categories里选择Labels,Names里选择Atoms,然后再选择一种颜色。

如果原子很多,则可以将以下脚本拷贝到命令行窗口运行来定义一个命令atmlab,
proc atmlab {range id} {
set sel [atomselect $id $range]
set k 0
foreach i [$sel list] {
label add Atoms $id/$i
label textformat Atoms $k { %i }
label textoffset Atoms $k { -0.11 -0.0055 }
incr k
}
$sel delete
label textsize 1.2
}
之后,若想让所有ID为3的体系的原子编号都显示,就输入atmlab all 3。如果比如想让只有在34号原子的5埃范围以内的原子的标签显示,就输入atmlab "within 5 of index 34" 3
运行label delete Atoms all命令可以将所有标签都删掉。
如果想让元素名和原子编号同时显示,则把%i改为%e%i。如果想让原子编号从1开始而非从0开始,把%i改为%1i。

为了省事,还可以再定义一个命令
proc lab {} {
atmlab all [molinfo top]
}
运行lab就会把top的体系的原子编号都显示。



比较遗憾的是,虽然用如上方法可以显示出原子编号,但是如果用CPK之类方式显示,就会把原子标签给覆盖掉。而且标签大小没法随视角的远近变化自动缩放。

仅有一条评论

  1. 乐平

    Sob 老师介绍的方法很好用。但是对于初学者可能在某个地方卡住。比如:
    “若想让所有ID为3的体系的原子编号都显示,就输入atmlab all 3”
    这里“所有 ID 为 3 的体系” 是指在 VMD 主程序框中编号为 3 的分子,初学者可能并不一定能注意到这一点。

    VMD 导入分子的时候默认从编号 0 开始,每导入一个分子,编号加1。
    只要VMD主程序不关闭,即使删除了之前导入的分子,编号始终会递增。
    所以希望大家使用的时候一定要注意这一点。

评论已关闭