MOSFLMを使ってみよう

コマンドラインからMOSFLM  

MOSFLMを起動するとコマンドラインから使用できることに気づきます。

************ Version 6.2.6 for Image plate and CCD data 4th May 2006  ***********
A.G.W. Leslie, MRC Laboratory Of Molecular Biology, HILLS ROAD, CAMBRIDGE CB2 2QH, UK
E-mail andrew@mrc-lmb.cam.ac.uk
New auto-indexing using DPS due to Ingo Steller Robert Bolotovsky and Michael Rossmann
(1998) J. Appl. Cryst. 30, 1036-1040
Original auto-indexing using REFIX due to Wolfgang Kabsch (Kabsch,W. (1993),
J.Appl.Cryst. 24,795-800.)
X-windows interface using xdl_view due to John Campbell (Daresbury Laboratory, UK.)
(Campbell,J.W. (1995) J. Appl. Cryst. 28, 236-242.
MOSFLM => 

LINUXなどのシステムと同様、MOSFLMは起動するとコマンドプロンプトを要求してきます。 これにたいしてどんなコマンドを入力すればどんなことをやってくれるかを見てみましょう。

最初の準備は・・・  

基本的なパラメータ設定については以下のを利用したとします。

init.mac中のコマンド
! This input created from an interactive session
DIRE ../
TEMPLATE deg01_0####.img
!IMAGE 1 phi 0.0 to 0.1
DETECTOR ADSC
DETECTOR OMEGA 90
WAVELENGTH  0.9197
DIVERGENCE    0.040    0.003
BEAM SWUNG_OUT  105.33  105.45
GAIN 1.00
ADCOFFSET   10
NULLPIX    50
DISTANCE  140.024
DISTORTION YSCALE    1.0007 TILT   31 TWIST    4
MOSAIC 0.30
OVERLOAD CUTOFF   60000

とりあえず必要なパラメータは上記で網羅されています。後は処理するだけ、という。 これらの基本的なパラメータについては各自準備してください。

Autoindex  

パラメータ読み込み  

私(ひらた)の知っている限りで書きますので他にもバリエーションがあることをお忘れなく。

MOSFLM => @init.mac    

として init.mac 中のパラメータをMOSFLMにおぼえさせます。@を使うことにより作ったファイルをMOSFLMに読ませることができるということです。
ちなみに上記のコマンドはいちいち手で打っても問題ありません。面倒なので共通部分はなるべくとっといて使いまわそうということで上記ファイル「init.mac」を準備したということです。

Autoindexをする  

MOSFLM => autoindex dps image 1

とすると1枚目のイメージを使ってAutoindexをしてくれます。

MOSFLM => autoindex dps image 1 91

とすると1、91枚目のイメージを使ってAutoindexしてくれます。 以下同様に

MOSFLM => autoindex dps image 1 91 181 

なども使えます。

MOSFLM => symm p43212

とあらかじめ入力しておくと空間群はP43212である条件のもと結晶格子定数を確定してくれます。

Cell refinement  

結晶格子定数の精密化を行います。

MOSFLM => postref segment 5
MOSFLM => process 1 5
MOSFLM => run
MOSFLM => process 301 305
MOSFLM => run
MOSFLM => process 601 605
MOSFLM => run
MOSFLM => process 901 905
MOSFLM => run 
MOSFLM => process 1201 1205
MOSFLM => run

以上で計算が開始されます。終わったらログをよく確認して正しい格子定数が見積もられているかどうかをチェックしよう。
segment で指定するのはデータセットの角度領域のこと。上記の例では0.1deg. 振動で1800枚とったイメージのうち、 "0.1-0.5, 30.0-30.5, 60.0-60.5, 90.0-90.5, 120.0-120.5 deg." を使って格子定数のリファインメントをやりますよ、という宣言。

LOG file の内容(端末に表示、あるいは MOSFLM.LPにあるはず)  

Cell refinement is complete
Starting cell   78.638   78.638   37.021   90.000   90.000   90.000
Refined cell    78.736   78.736   36.996   90.000   90.000   90.000
Error            0.001    0.001    0.001    0.000    0.000    0.000

Rms positional error (mm) as a function of cycle for each image.
     Image   1     2     3     4     5   301   302   303   304   305
Cycle 1    0.043 0.060 0.056 0.048 0.067 0.051 0.059 0.065 0.062 0.058
Cycle 2    0.066 0.058 0.050 0.065 0.048 0.051 0.067 0.052 0.073 0.050
Cycle 3    0.054 0.075 0.051 0.056 0.061 0.047 0.065 0.054 0.070 0.046
     Image 601   602   603   604   605   901   902   903   904   905
Cycle 1    0.067 0.060 0.065 0.077 0.068 0.048 0.058 0.049 0.056 0.038
Cycle 2    0.064 0.053 0.079 0.061 0.059 0.050 0.050 0.054 0.070 0.054
Cycle 3    0.052 0.061 0.068 0.076 0.056 0.056 0.055 0.051 0.063 0.052
     Image1201  1202  1203  1204  1205
Cycle 1    0.041 0.053 0.050 0.048 0.048
Cycle 2    0.042 0.046 0.053 0.048 0.048
Cycle 3    0.040 0.057 0.047 0.049 0.045


YSCALE as a function of cycle for each image:
     Image   1     2     3     4     5   301   302   303   304   305
Cycle 1    1.001 1.001 1.001 1.001 1.001 1.002 1.001 1.001 1.002 1.002
Cycle 2    1.000 1.000 1.000 1.001 1.000 1.001 1.000 1.000 1.000 1.000
Cycle 3    1.000 1.000 1.000 1.001 1.000 1.000 1.000 1.000 1.000 1.000
     Image 601   602   603   604   605   901   902   903   904   905
Cycle 1    1.001 1.002 1.002 1.001 1.002 1.001 1.001 1.001 1.001 1.001
Cycle 2    1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
Cycle 3    1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
     Image1201  1202  1203  1204  1205
Cycle 1    1.000 1.001 1.000 1.001 1.001
Cycle 2    1.000 1.001 1.000 1.000 1.001
Cycle 3    1.000 1.000 1.000 1.000 1.001


Detector distance as a function of cycle for each image:
     Image   1     2     3     4     5   301   302   303   304   305
Cycle 1    140.0 140.1 140.0 140.0 140.0 140.0 140.1 140.1 140.1 140.1
Cycle 2    140.2 140.1 140.2 140.1 140.2 140.2 140.2 140.2 140.2 140.2
Cycle 3    140.2 140.2 140.2 140.1 140.2 140.2 140.2 140.2 140.2 140.2
     Image 601   602   603   604   605   901   902   903   904   905
Cycle 1    140.1 140.0 140.0 140.0 140.1 140.1 140.0 140.0 140.1 140.1
Cycle 2    140.2 140.2 140.2 140.2 140.2 140.2 140.2 140.2 140.2 140.2
Cycle 3    140.2 140.2 140.2 140.2 140.2 140.2 140.2 140.2 140.2 140.2
     Image1201  1202  1203  1204  1205
Cycle 1    140.0 140.0 140.0 140.0 140.0
Cycle 2    140.2 140.2 140.2 140.2 140.2
Cycle 3    140.2 140.2 140.2 140.2 140.2

Refined mosaic spread (excluding safety factor):   0.12


Missets for first image (   1)  0.00  0.02  0.04
Missets for last image  (1205)  0.05  0.02  0.05

注意すべきなのは、格子定数が最初のイメージと最後ので相当違っているとか(数Å)、カメラ長が数ミリ違ってきているとか、とかいうおかしな現象。
ただし、このプロセスがうまく終了していたらまずはデータ処理くらいはできます、という目安になります。
数値的にうまく処理できているかを判断したい場合は RMS positional errorの表です。よい結晶データの場合、この値が0.01-0.05くらいでしょうか。上記の例だと少し高いですが、0.10を超えなければ私はよしとしています。
おかしな現象というのは大体、上記の確認で見付けることができると思います。
この場合、ビームラインやカメラ長など、パラメータの設定(init.mac)がおかしい、か、処理のプロトコルを再考する必要がある。
missets というパラメータは最初にAutoindexで決まっていた結晶のX線に対する向きがどの程度の角度ずれているか、ということを示すパラメータ。
最初にAutoindexできめた結晶の方位(向き)はざっくり見積りである。このざっくり見積をさらに正確に決めた後に、初期のパラメータからずれたよ、ということを示すのがMISSETSである。
上記の例では最初と最後の角度セグメントの1枚目(ややこしい?)で結晶の方位が若干違っていたよ、ということを示しています。これらの情報はイメージ上にある回折点の位置を見てMOSFLMが見積もってくれるものです。

MOSAICITY の見積り  

実はMOSAICITY(mosaic spread)の見積りは上記の格子定数精密化をやるとほぼ正確に行えます。以下に記す方法は「若干精度を欠くMOSAICITYの見積りである」ことを認識しておいてください。

MOSFLM => mosaic estimate 901

このコマンドで901枚目のイメージを使ってmosaicityを見積もります。 ちなみにこの見積り計算は1枚のイメージしか使いません。ということでmosaicityの見積りとしては相当甘いものになります。最初に積分を行うときのざっとした見積値としてどうしても(上記)格子定数精密化ができない場合やむなく使う、という位置づけとして考えましょう。

積分  

MOSFLM => process 1 to 180
MOSFLM => go

以上でこれまで決めてきた結晶のパラメタ(格子定数、mosaicity, orientation matrix)を使って反射イメージの積分を行うことができます。

どうしたらええのん?  

プロファイルフィッティングでこける  

MOSFLM積分作業を開始してしばらくすると「プロファイルフィッティングがプアーです」といって勝手にMOSFLMが停止することがあります。そんなときには、以下をお試しください。この問題以外での用途にも使えるコマンドもあります。

氷のリングがあるのかも  

氷のリングでバックグラウンドがうまく決まっていないかも知れないので、

resolution exclude 3.66 3.72

などとして、リングがある分解能領域(2 theta)のみ、計算に使わない。

部分反射をリファインメントに入れてみる  

フィッティングするパラメータの数とリファインメントに使う反射の数が、つりあっていないかも知れない。

refinement include partials 0.3

0.3以上の部分度(partiality)を持つ反射をリファインメントに使う。

プロファイルがだめ、と判断するためのパラメータをいじる  

MOSFLM処理では、どんなパラメータも「良い結晶」基準で、デフォルトパラメータがある。プロファイルフィッティングについてもそうで、以下のようにパラメータに規制がかかっています。

  1. 標準プロファイルを決めるための反射が10個以上あるか?
  2. バックグラウンド平面のRMSが大きすぎないか?(10以下)

これらを意図的に、ゆるくしてあげることで、リファインメントに使用する反射を増やすことが出来ます(ただし、得られるデータが良くなるわけではありません)。

PROFILE RMSBG 20 NREF 5

この指定によって、バックグラウンド平面のRMSは'20以下'だと許容、反射数も'5個'あれば良い、という設定が可能です。

プロファイルを作るピーク  

標準プロファイルを計算している時に、「変な形(プロファイル)の反射ピーク」を使うと、この問題が起きるケースもあります。特に、CCDモジュールの間にある隙間が反射に掛かってしまう場合などが挙げられます。他になんか変な影とかがイメージ上にないですか?

NULLPIX 20

カウントが20以下のピクセルが入るとその反射はプロファイル計算に使わない、というコマンド。
バックグラウンドの値をイメージビューアなどでよく確認してめちゃんこ慎重に閾値を選ばないと、それこそ変な処理になっちゃいますので注意。

しかし、大体の場合・・・  

上記のようなマニアックな設定は、ほとんどいじらなくても問題なくいけます(くにを経験上)。もし、プロファイルフィッティングにこけたのであれば、最初に以下の設定をしてみてください。

RASTER 23 17 8 3 2 (数値は任意)

デフォルトでは、もっともよいボックスパラメータ(以下のボックスの縦横、ピーク領域などのパラメータ)をプログラムが自動的に決めます。

           <------------------ NXS = 23 --------------->

      ^    - - - - - - - - - - - - - - - - - - - - - - -  ^
      !    - - - - - - - - - - - - - - - - - - - - - - -    NRY =2
      !    - - - - - -                       - - - - - -  ^
      !    - - - - -                           - - - - -
      !    - - - -                               - - - -
      !    - - -                                   - - -
      !    - - -                                   - - -
      !    - - -                                   - - -
   NYS =17 - - -                                   - - -
      !    - - -                                   - - -  ^
      !    - - -                                   - - -  !
      !    - - -                                   - - -  !
      !    - - - -                               - - - -  !
      !    - - - - -                           - - - - -  NC =8
      !    - - - - - -                       - - - - - -  !
      !    - - - - - - - - - - - - - - - - - - - - - - -  !
      ^    - - - - - - - - - - - - - - - - - - - - - - -  ^
           <NRX> = 3

上図は、各パラメータの値を示しています。NXS/NYSはボックスの大きさ、NRX/NRYはバックグラウンド見積領域、NCは中心ですかね。
上図では - となっている部分がバックグラウンドです。 コマンドで指定する順ですが、

RASTER NXS NYS NC NRX NRY

回折イメージを見てプロファイルがのびのびの場合に、MOSFLM自動生成ボックスを使うと、プロファイルを決めるのに失敗しやすいのだろうと思います。
ということで、上記コマンドでは、初期ボックスの大きさ、などを指定しています。うまく行かない場合は、最初にこのボックスサイズを調整してみるのが良いと思います。
ただし、この作業は「積分ボックスが大きすぎると、隣の反射まで処理してしまう」ことがあるので、イメージを見ながらやった方がよいでしょう。

ポストリファインメントについて  

X線の発散角とモザイク角  

POSTREF BEAM 1
  1. x = 0 switches off refinement
  2. x = 1 only mosaic spread refined
  3. x = 2 mosaic spread not refined, horizontal and vertical beam divergences refined

注意事項  

MOSFLMによるデータ処理を行う場合 SPOTODファイルという一時ファイルが作成されます。このファイルは一時ファイルだけあってアクセススピードがかなり速いらしい。NFSでHDDをマウントしており、データ処理をそのHDD上で行う場合にNFSのアクセススピードによってたまにMOSFLMがコアダンプはいて止まる、というケースもあります。
このような場合、一時ファイルはローカルのHDDを使用する必要がある。私(ひらた)の場合は、IPMOSFLM起動時にコマンドラインにて、

$ ipmosflm spotod /localdisk/test.spotod

という指定をしてあげることにしています。