VMDのスクリプトの書き方

概要

vmdのスクリプトの書き方について、日本語の記事が少なかったのでまとめておきます。vmdのスクリプトはTCL言語で記述できます。

環境

macOS Mojave 10.14.6
vmd 1.9.2

スクリプトの読み込み方

まずは、vmdのパスを通してください。file.tclというスクリプトを書いたとすると

$ vmd -dispdev text -e file.tcl

スクリプトを実行できます。-dispdev textオプションをつけると、CUI環境のみでの実行ができます。

スクリプトの書き方

まずは、プロテインとリガンドの複合体構造であるcomplex.pdbを読み込んでプロテインだけを抽出しprt.pdbに保存するスクリプトを書きます。

mol load pdb complex.pdb  #pdbファイルの読み込み
set prt [atomselect 0 protein]  #0番目に読み込んだファイルからプロテインの情報をprt変数に格納
$prt writepdb prt.pdb  #prt.pdbにprtの情報を書き出す
exit  #vmdの終了

これを実行すると、complex.pdbからプロテインを抽出してprt.pdbに書きだせます。 次に、残基名がCBA(リガンド)かつ原子名がC26とC27の原子を抽出したいとすると以下のようにします。

mol load pdb complex.pdb
set lig_atoms [atomselect 0 "resname CBA and name C26 C27"]
$lig_atoms writepdb lig_atoms.pdb
exit

原子の指定方法

atomselectコマンドではインデックス、原子名、残基名、chain、残基番号で原子を指定できます。

ATOM index name resname chain resid  x      y      z
ATOM     1  N   MET     X     3  79.319  65.199  87.555  0.00  0.00
ATOM     2  CA  MET     X     3  78.050  64.660  87.941  0.00  0.00
ATOM     3  CB  MET     X     3  78.049  63.179  87.518  0.00  0.00
ATOM     4  CG  MET     X     3  77.664  62.902  86.057  0.00  0.00

重心を取り出す

set geom_center [measure center $lig_atom]
puts "geometrical center $geom_center" #出力

トラジェクトリ ーを読み込む

trj.xtccomplex.pdbを読み込んでフレーム毎の重心をgeom_center.textに出力するスクリプトを書いてみる。複数のファイルを読み込む時は拡張子を指定する必要がある。

mol load pdb complex.pdb xtc trj.xtc
set num_frame [molinfo top get numframes] #トラジェクトリのフレーム数
set out_file [open geom_center.txt w]

for {set i 1} {$i < $num_frame} {incr i} {
    set all [atomselect top all frame $i]
    set geom_center [measure center $all]
    puts $out_file $geom_center
}
exit