ファイル内容の操作  

ファイルの内容を操作します。おそらくはMTZファイルやPDBファイルの操作が主な内容になると思います。
簡単にファイル内容を変更したいけどプログラムがわからない、という疑問を解消できればいいな。

MTZファイル  

CCP4のMTZファイルは含まれる情報が多いだけに慣れるまで扱いがよくわかりません。そんな偉大なファイルを扱うためのレシピを集めてみます。

以前のデータとFree-Rフラッグを一致させるには  

準備するもの  

  1. 前のデータのMTZファイル
  2. 今度のMTZファイル(Fとsig(F)があればよい)

使用するスクリプト  

cad hklin1 previous.mtz \
    hklin2 current.mtz \
    hklout newtmp.mtz << eof > cad.log
labi file 1 E1=FreeR_flag
labi file 2 E1=FP E2=SIGFP
END
eof

freerflag hklin newtmp.mtz hklout new.mtz << eof > freer.log
COMPLETE FREE=FreeR_flag
eof

解説  

previous.mtzに、FreeR_flagというカラム(CCP4を勉強してね)があり、それを新しいデータcurrent.mtzに取り入れてnew.mtz に吐き出したいとしますね。上のはそういうスクリプトです。

  1. $CDOCの中のプログラムドキュメントを読んで
  2. $CEXAMの中の例をパクって来て
  3. 流してみてから、後のことを考える

MTZファイルのパラメータを編集するには  

CCP4iのReflection Data UtilitiesのEdit MTZ File (SFTOOLS)を使用します。

PDBファイル  

PDBフォーマットを正規化したい  

2010-07-28 : 追加

CNSなどで生成したPDBファイルの場合、CCP4のプログラムによってはエラーがでることがあります。

そんな時は、PDBSETを使って正しいフォーマットにしてみて下さい。

% pdbset xyzin refine.pdb xyzout refine_ccp4.pdb <<EOF
EOF

ELEMENTカラムを追加されたフォーマットへ変換してくれます。

水分子の番号を付け直すには  

構造の精密化を進めていくと、水分子の番号が飛び飛びになることがよくあります。少しぐらいなら手で直しても大した手間ではありませんがそれが100, 200やもっととなるとそれどころではありません。そんな時は1)Emacs用スクリプトpdb-mode.elを使うようにする、2)COOTで直す、3)PDBSETを使う、などがあります。

Emacsにpdb-mode.elを読み込ませる  

Emacsの拡張スクリプトであるpdb-mode.elをEmacs起動時に読み込ませるようにすると、拡張子が.pdbのファイルを編集するときにPDB用編集コマンドが使えるようになります。私はこの作業を行うときぐらいしかEmacsを使わないので細かいことはわかりませんが、Emacs起動スクリプトに、

(load-file "/usr/local/ccp4-6.1/ccp4-6.1.0/include/pdb-mode.el")
(setq auto-mode-alist
    (cons (cons "pdb$" 'pdb-mode)
            auto-mode-alist ) )
(autoload 'pdb-mode "PDB")

を追加します。
Vine 4.2の場合はホームディレクトリに.emacs.my.elを作成しその中に記述します。他のディストリビューションは確認していないので不明ですが、おそらく.emacs.elあたりが怪しいような・・・

COOTで付け直す  

Emacsの設定がめんどくさい人はCOOTを使いましょう。[Extensions]の中にそのコマンドがあります。
Ver.0.5.1以降なら分類されてますので[Extensions]->[Modeling]->[Renumber Waters...]で、それ以前のバージョンなら[Extensions]->[Renumber Waters...]で付け直すことができます。
[Calculate]->[Renumber Residues...]は残基番号をシフトさせるだけなのでこの場合使えないようです。

PDBSETを使う  

COOTを立ち上げるのもイヤな場合、またはXが使えない環境の場合はCCP4のPDBSETを使います。

ELEMENTカラムを追加するには  

CNSで精密化などをした場合、77,78桁目のフィールドが空白になってしまうことがあります。ここは元素名が入るところですが、プログラムによっては必要なこともあるようです(COOT 0.5のみ必要; 0.5.1以降は不要になりました)。

% pdbset xyzin refine.pdb xyzout refine_ccp4.pdb <<EOF
EOF

これで出力されたrefine_ccp4.pdbには元素名が出力されています。