VMD的console是十分强大的,也提供了很多内置命令,这里把当年研究VMD内置命令的笔记的一小部分发上来。和user guide有相似之处,但是我都尽量写成例子的形式来说明,绝大部分都是亲自试过的。可能当时有些地方写的不准确,也不完整,但是现在也懒得check了。有疑问还是对照user guide中的严格说法。
*****一些额外内容*****
VMD里面所有行为,都可以用命令描述出来。打开VMD之后运行log sdf.txt,接下来干你的事,你干的所有事的等价的命令行都被记录到sdf.txt当中,运行log off停止记录。
atomselect之后占用内存,选择范围的原子越多占得越大,应当用完之后删除,比如atomselect1 delete,内存就释放了。但是atomselect编号仍然继续往后延,并不会重新占用已经删了的。
修改TKconsole的设置,通过修改D:\study\VMD186\plugins\noarch\tcl\vmdtkcon1.0\tkcon-modified.tcl。比如里面的font create tkconfixed -family Courier -size 12,把12改成20,字号就变成20了。
在.vmdrc或者vmd.rc里面有很多被注释掉的内容,也有没有被注释的,都是控制启动后vmd的默认设置,比如开哪些窗口,窗口位置,光源什么的
*****以下为正文*****
animate dup 0 复制当前帧到最后新的一帧
animate dup frame 2 0 复制22帧到新的帧
animate pause 暂停播放,按回车或者随便瞎输个命令就可继续
animate forward/for向下播放
animate reverse/rev向前播放
animate prev/next 向前/向后一帧
animate skip 设置播放时的step
animate delete all 删除所有帧
animate speed 0.3 设置速度为0.3,数值>=0,<=1
animate style once/loop/rock 设置播放模式
animate styles 显示可用的播放模式,其实就是显示once、loop、rock
animate goto start/end/n回到开始帧、末尾帧、第n帧
atomselect keywords显示所有可以选择的关键字
macro指的就是那些charged、acidic之类的整体。
atomselect macro 显示所有macro
atomselect macro charged 显示charged的定义
atomselect delmacro ions删除ions的macro
atomselect macro sdfsdf {resname ALA and hydrogen}定义一个新的macro,如果已经有定义了,则覆盖
设好的macro在graphics representations-selection-singlewords里面也会出现
atomselect 3 "resid 25" frame last 选择3号分子最后一帧的resid 25。分子可以是数字或者top,所选内容就是普通的selection,用双引号或者{}括住,帧号可以是数字、first、last、now。
【VMD常用命令(转载)】选择之后,会出现比如atomselect0,然后可以运行:
atomselect0 num显示所选的内容有多少原子
atomselect0 list显示所选的内容的原子的编号
atomselect0 text显示所选内容表示的意义
atomselect0 molid显示所选内容的分子编号
atomselect0 frame显示所选内容的所在帧。atomselect0 frame x设置选择的帧为x
atomselect0 delete删除atomselect0函数。
atomselect0 global将atomselect0移入全局命名空间
atomselect0 get mass 得到atomselect0所选范围的质量,还可以是{x y z}得坐标,{x}仅x坐标。get后面可以接任何属性,见manual p77
atomselect0 get structure 可以得到结构中每个残基所处的二级结构
实际上不管是在图形界面选择newcartoon还是文本控制台输入get structure,都要调用stride来计算
atomselect0 getbonds 得到成键列表
atomselect0 setbonds 按照成键列表成键,比如{{2 5} {4 6}}
atomselect0 move4x4 matrix根据矩阵移动
atomselect0 moveby {1 1 6}把所选原子向1,1,6向量方向和距离上移动
atomselect0 lmoveby offset_list:move each atom by an offset given in the list.
atomselect0 moveto { 3 6 5}把所选内容移动到3,6,5位置
atomselect0 moveto position_list:move each atom to a point given by the appropriate list element
atomselect0 writepdb a.pdb把目前所选原子写到当前文件夹(vmd所在文件夹)的a.pdb中
set kk [atomselect 0 {resname ALA}]定义$kk变量,用echo $kk可以查看其代表的内容,比如得到atomselect0
set mass [$sel get mass]set mass [$sel get mass]
set kkk 4
incr kkk把kkk加1
$sel set beta 0# all values are set to zero
$sel set beta $mass# copy mass to beta
axes locations 显示所有坐标轴可能显示的位置
axes location 得到当前坐标轴的位置
axes location < of | origin | lowerleft | lowerright | upperleft | upperright >设置坐标轴情况
color scale method RGB设置调节颜色方法为RGB,也可以是BGR、RWB之类
colorinfo scale methods得到所有颜色调节方法列表
colorinfo scale method得到现在用的颜色调节方法
colorinfo scale midpoint或min或max 得到这三种情况对应的数值,比如0.5,0.1,1.0
colorinfo categories显示所有颜色分类,比如Type之类
colorinfo category Resname显示某个颜色分类,比如Resname分类下包含的预置的对不同残基的颜色
colorinfo colors显示有多少种预置颜色,比如red
colorinfo index或rgb purple显示purple颜色的序号或者rgb值(默认以1为最大)
display update off 禁止屏幕刷新,display屏幕就卡住了
display resetview重置
display distance x设置东西与屏幕的距离,越大则分子离屏幕越近,相当于放大。不可太小比如几十,否则有凸镜的效果
display geteyesep | focallength | height | distance | antialias | depthcue | culling |
rendermode | size | stereo | projection | nearclip | farclip得到相应的信息
mol new在分子列表中创建一个空分子
draw xxxx命令大多数情况下与graphics [molid] xxxx是等价的,draw只能在top层上绘图,而graphics可以自己指定,相对于draw是更底层的绘图命令。graphics不能自定义绘图命令比如vmd_draw_unitcell这样的。如果当前一层都没有,draw可以自动生成一层,graphics不行。以下的都可以用draw来代替。
graphics 3 {0 2 0} 在3号分子,0,2,0位置上画个点
graphics 3 {0 0 0} {3 4 5}在0,0,0与3,4,5之间连线。几个坐标之间大括号必须有空格隔开
graphics 5 cylinder {0 1 0} {3 14 0} radius 1 filled yes resolution 20在5号分子这两个点之间画一个柱形,半径是1,里面都充满,否则从截面就一个壳。resolution越大,越圆滑。
graphics 5 triangle {0 0 0} {5 5 5} {0 4 0} 指定三个点画一个三角
draw sphere { 0 0 0 } radius 3 resolution 15画一个球
draw text { 0 0 0 } "haha" size 3在某个点写字,无论怎么缩放,字的大小都不变
draw color 4graphics 4 color red3设定颜色,不会对已经画好的物件生效,只管以后的。对几何和文字颜色都管用。
draw material Glossy设定绘制的物件的材质。即便是已经画好的,也立刻变成现在设定的。
draw delete all删除所有画的物件
draw delete 0每画完一个物件,都会立刻显示此物件的id,这里删的是id=0的物件
draw list列出现在所有物件的id
draw exists 4检查id=4的物件是否存在,存在返回1,否为0
draw info 2显示创造2号物件时用的指令
draw replace 3接下来创造的物件的id=3,代替之前3号id的物件。即便是更改颜色、材质的操作,也算一个id。
下面示例中label中只要是写Bonds的,都可以是Atoms|Bonds|Angles|Dihedrals之一
和分子ID不一样,并非固定,比如Bonds 3,如果在label里面把之前的Bond的label都删了,就成了Bonds 0了
label list 显示所有的label分类
label list Bonds 显示所有键的label
label add Bonds 0/347 0/4440设定index 347和index 4440的键的label
label show/hide Bonds all显示/隐藏所有键的label,all也可以是label号来具体控制
label delete Atoms all删除所有原子的label,all也可以是label号来具体控制
用鼠标点,新生成的label号从0开始,1、2、3、4...,从Graphics-label里面能看到顺序
label graph Bonds 0[文件名]显示0号Bond lable的长度,输出所有帧中的长度。如果写了文件名,则输出到文件中而不显示
label textsize 2.2把label文字设成2.2,所有文字立刻生效。默认是1.0
light num显示目前有多少个光源注意光源编号是从0开始的,0-3
light 2 on/off把2号光源开或者关
light 0 status显示0号光源的状态
light 1 rot x 40把0号光源根据x轴转40度
light 0 pos显示0号光源目前坐标
light 1 default显示1号光源默认坐标
light 1 pos { 2 3 1.1 } 将1号光源移到2,3,1.1位置
logfile sdf.txt把log信息写入sdf.txt。注意只有使改变了状态的指令才会被写入,比如light 0 pos {1.1 1 1},而draw color red或者查询状态的命令都不会被写入。
logfile off停止写入
logfile console把本来要写入文件的信息直接在console里显示出来
material list显示所有材质,比如Opaque之类的
material settings Steel显示Steel代表的具体的材质控制参数,5个小数。代表ambient, specular, diffuse, shininess, opacity
material add ttt新加一个叫ttt的材质,默认等价于Opaque
material copy ttt拷贝ttt成为一个新的材质,名字自动生成显示出来
material rename ttt xxx把ttt改名为ttt
material delete ttt删除ttt材质
material change diffuse xx 0;
99把xx材质的diffuse属性设为0.99
measure avpos atomselect3 first 1 last 300 step 1 得到atomselect3选择的原子的从1至300帧之间的每个原子的平均位置
measure center atomselect3 weight mass得到atomselect3的中心,用mass属性来作为权重参考。weight后面可以接各种属性,在手册77页table 5.5里面。比如还可以x、radius之类
measure contacts 5 atomselect3 atomselect4 得到在atomselect4中的任意原子的5埃范围内的atomselect3中的未与之成键的原子。如果只写一个atomselect3,则atomselect4等于atomselect3。
measure fit atomselect5 atomselect6 得到作用在atomselect5上,能使之与atomselect6的RMSD最小的4x4变换矩阵,可以套进atomselect0 move用
measure gofr计算rdf等内容。见p103
measure sumweights atomselect7 weight mass把atomselect7的所有原子的质量加起来。如果atomselect top protein,那么得到的就是蛋白质总质量,若charge,得到的就是总电荷。
measure hbonds 3.5 30 atomselect0 atomselect1显示所有氢键,角度<30,距离<3.5A。!!!!!!如果两个atomselect都有,则认为0是donor,1是acceptor!!!!!!。得到的结果第一个列表是donor的index,第二个列表是acceptor的index,第三个是氢的index。两个atomselect都必须在一个ID内。donor可以是氢,也可以是氢连着的原子。
measure inverse {{1 2 3 4} { 2 5 6 8} { 8 3 5 6} { 1 4 6 2}}得到4*4矩阵的逆矩阵
measure rgyr atomselect0 weight mass得到atomselect0的radius of gyration
measure minmax atomselect0显示atomselect0里面x、y、z坐标最小和最大的原子坐标
measure rmsf atomselect0 first 50 last 100 step 2 得到atomselect0的每个原子从50帧到100帧的rmsf,两帧取样一次。可以省略selection后面的,默认为从头到尾,step=1。
measure rmsd atomselect0 atomselect1 weight mass得到两个selection之间的rmsd并考虑质量权重,所选的这两个部分必须原子数相同。比如可以选不同的帧的同一个部分。
measure sasa 1.4 atomselect1以1.4埃为探测球的半径,得atomselect1的SASA。还可以加[-points varname] [-restrict restrictedsel] [-samples numsamples]参数,见P104。得到的结果和mm_pbsa得到的输出文件的surface area项基本一致。用这个方法算,两个部分不能相加,比如1的sasa和2的sasa之和不等于1和2的总sasa
mol命令用的分子号,可以是独立的一个mol ID,也可以是all, top, active,
inactive, displayed, on, off, fixed, free。
mol new创建一个新的空分子
mol new f:\sustiva.pdb创建一个新分子,读入此文件
mol addfile f:\sustiva.pdb读入此分子到top分子中
mol new和mol addfile后面都可以接参数,type pdb读入pdb类型,还支持其它的,包括轨迹等。first