Molscriptの画像とGRASPの表面電荷とを重ね合わせる


この文書は、私がMolScript (& Raster3D) の画像とGRASPの表面電荷の画像を重ね合わせた図を作成した際の手順を記したものです。行き当たりばったりで作業したものですので、ここに示したよりスマートな方法があるのかもしれませんが、とりあえずまとめてみます。


表示アングルの決定と表面電荷ファイルの作成

GRASPを使って、表示アングルを決定し表面電荷ファイルを作成します。HETATM (水や糖鎖など) も含めた分子表面を作成しますので、これらが不要な場合はテキストエディタを用いて不要なHETATMを削除してください。

$ grasp 1IQQ_protein.pdb
  1. マウスの左ボタンを押しながらドラッグして、立体構造を希望のアングルに調整します
  2. マウスの右ボタンをクリックして "Macros → Surf_Charge_PB_Interpolate" と選択すると、電荷によって色分けされた分子表面が作成されます。
  3. マウスの右ボタンをクリックして "Write → Atom (PDB) File → 1IQQ_angle.pdb → Box Centered and Rotated → PDB, No extra data → All Atoms" と選択します。
  4. マウスの右ボタンをクリックして "Write → Grasp Surface File → Let me enter it → 1IQQ_angle.srf → Box Centered and Rotated → All Surfaces" と選択します。
  5. マウスの右ボタンをクリックして "Quit GRASP" と選択してGRASPが終了します。

表面電荷ファイルの変換

ungraspコマンドを使ってGRASPで作成した表面電荷のファイルをRaster3Dの形式に変換します。ungraspコマンドがない場合は以下の要領で作成します。ただし、GCCのg77でコマンドは作成できないようです。IRIXのf77コマンドで作成してください。

$ cd $FOO/Raster3D_バージョン番号/grasp
$ f77 -o ungrasp ungrasp.f

GRASPで作成した表面電荷のファイルをRaster3Dの形式に変換します。斜体で示した部分を入力し、それ以外の部分はそのままリターンキーをたたきます。max potentialの値は適宜変更してください。

$ $FOO/Raster3D_バージョン番号/grasp/ungrasp
Input file: 1IQQ_angle.srf
 header line 1:
 format=2                                                                        
 header line 2:
 vertices,accessibles,normals,triangles                                          
 header line 3:
 potentials                                                                      
 vertices, triangles, gridsize, lattice spacing
        15502       30988          65   1.064608    
 center
   -8.614000      -19.30250       7.817500    
 This file contains potentials
 Potential range:  -57.03126       88.51860    
Color by potential? y
What did GRASP say the max potential was? 10
         1783 truncated color values
Clipping bounds (xlo,xhi,ylo,yhi,zlo,zhi:
 No clipping limits
Output grid rather than surface?
Invert normals?
Output file: 1IQQ_angle_surf.r3d

MolScriptによる立体構造の画像作成およびRaster3D形式への変換

MolsScriptを使って重ね合わせる立体構造のスクリプトを作成します。ここではMolScriptの解説は割愛します。molautoコマンドを適宜オプションをつけて実行し、できあがったスクリプトをお好みに合わせて編集します。スクリプトのbackground, window, slubについては変更しても問題ありませんでした。transformは変更しても問題ないかもしれませんが試していません。デフォルトの500x500以外の画像サイズが必要な場合はmolscriptコマンドに "-size xxx yyy" オプションを追加してください。

$ molauto -nice 1IQQ_angle.pdb > 1IQQ_angle.in
$ vi 1IQQ_angle.in
$ molscript -gl < 1IQQ_angle.in
$ molscript -log 1IQQ_angle_molscript.log -size 1500 1285 -r < 1IQQ_angle.in > 1IQQ_angle.r3d

表面電荷ファイルの座標をノーマライズ

Raster3D形式の表面電荷ファイルの座標とMolScriptで作成したRaster3D形式のファイルの座標を合わせるために、表面電荷ファイルの座標をノーマライズします (という説明でよいのでしょうか。よく理解せず「ノーマライズ」という言葉を使っています)。まず、MolScriptで作成したRaster3D形式のファイルからヘッダ部分のみを取り出したファイルを作成します。MolScript-2.1.2が作成するRaster3D形式のファイルでは、ヘッダは最初の20行です。以下のように作成します。

$ head -20 1IQQ_angle.r3d > header.r3d
$ cp header.r3d header_normalize.r3d

header_normalize.r3dファイルを編集します。1IQQ_angle_molscript.logファイルにある "translation vector applied:" の次の行の値を基に、テキストエディタで以下のように変更します。

--- header_normalize.r3d.old    Thu Nov 29 19:23:05 2001
+++ header_normalize.r3d        Thu Nov 29 19:28:07 2001
@@ -13,7 +13,7 @@
 1 0 0 0    view matrix: input coordinate transformation
 0 1 0 0
 0 0 1 0
-0 0 0 50.8454
+1.4767 0.4563 -79.7114 1
 3          mixed objects
 *          (free format triangle and plane descriptors)
 *          (free format sphere descriptors)

Raster3D形式の表面電荷ファイルの座標をMolScriptで作成したRaster3D形式にのノーマライズします。

$ cat header_normalize.r3d 1IQQ_angle_surf.r3d | normal3d -h > 1IQQ_angle_normalize.r3d

MolScript画像とRaster3D表面電荷を重ね合わせるためのヘッダの作成

実際に画像を重ね合わせるときに使うRaster3D形式のヘッダを作成します。先ほど作成したheader.r3dをテキストエディタで以下のように変更します。

--- header.r3d.old      Thu Nov 29 19:34:30 2001
+++ header.r3d  Thu Nov 29 19:34:47 2001
@@ -6,8 +6,8 @@
 F          no shadows cast (T = shadows cast)
 25.6       Phong power (specular highlights)
 0.25       secondary light contribution
-0.05       ambient light contribution
-0.25       specular reflection component
+0.00       ambient light contribution
+0.00       specular reflection component
 0          eye position (0 = no perspective)
 1 1 1      main light source position
 1 0 0 0    view matrix: input coordinate transformation

この段階で以下のコマンドを実行すると、表面電荷がPNG形式のファイル1IQQ_surf.pngに書き出されます (リンクしている画像は大きさを50%に縮小しています)。GRASPのRGB/Snapshotと比較すると、美しい画質で画像のサイズを変更できる (molscriptに-sizeオプションをつける) という利点があります。

$ cat header.r3d 1IQQ_angle_normalize.r3d | render -png 1IQQ_surf.png

透過度調整ファイルの作成

透過度を調整する設定ファイルを作成します。設定ファイルの例を2個挙げておきます。ファイルを作成するときは、空行を作らないでください。

$ vi transparent.r3d
# Material description for 80% transparent surface
8
 17.  0.6        0.0  0.0  0.0     0.8   0 0 0 0
$ vi transparent1.r3d
# Material description for fancier (expensive) coloured transparent surface.
# MOPT=1 means that only the "top" surface of the material will be rendered.
8
 17.  0.6       -1.0 -1.0 -1.0     0.8   1 0 0 0

いずれの設定でも、0.8の値を変更すると透過度が変わります。

重ね合わせ画像の作成

実際に、MolScriptの画像とGRASPの表面電荷を重ね合わせます。以下のコマンドを実行すると、重ね合わせた画像がPNG形式のファイル1IQQ_merge.pngに書き出されます (リンクしている画像は大きさを50%に縮小しています)。

% cat 1IQQ_angle.r3d transparent.r3d 1IQQ_angle_normalize.r3d | render -png 1IQQ_merge.png

または

% cat 1IQQ_angle.r3d transparent1.r3d 1IQQ_angle_normalize.r3d | render -png 1IQQ_merge1.png


Back toX線結晶構造解析関連ソフトウェア使用メモ


松浦 孝範 (MATSUURA Takanori)
t.matsuu%gmail.com (“%” は “@” に置き換えてください)

Valid XHTML 1.1! Valid CSS!