GoogleAnalytics

SyntaxHighlighter

2011年4月21日木曜日

[PX] xds me to the moon

最初、「xds me tonight」というエントリタイトルにしようかと思ったんですが、ヤメましたw

回折強度積分ソフトウェアである『XDS』と、そのヘルパースクリプト『xdsme』を使ってみました。

XDS は、ディテクタ設定や測定条件なんかを全てインプットファイルに書かないといけないので、面倒くさくて敬遠してたんですが、xdsme という python スクリプトを用いることで、そのほとんど全てをイメージファイルのヘッダ情報から抽出し、インプットファイルを自動生成してくれてとても楽チン、と風の噂で聞いたので、やってみることにしました。

評判に違わず、なかなかイイですね、コレ。

XDS はココを参考にしてダウンロードとインストール、次にココから xdsme をダウンロードしてインストールし、PATHを設定します。

ついでに『XDS-Viewer』もダウンロードして、XDS と同じ場所にインストールしておきました。

ココとかコレとかを読んで、なんとなく概要と使い方がぼんやりとわかったところで、素性の知れた標準サンプルでも処理してみることにしました。使ったサンプルは、以前 SPring-8 BL41XU で取った波長 1.5 Åのリゾチーム結晶のデータ。

早速やってみましょう。

ubuntu-vm:~/testXDS> xdsme IMG/Lys15A03_*.img
>> Interpreting header of image:  IMG/Lys15A03_00001.img
>> Image format:      adsc
>> Detector type:     ADSC 315

    Simplified XDS Processing

    Diffraction Setup Parameters:

  Detector distance:                80.00 mm
  X-ray wavelength:                1.5000 A
  Oscillation range:               1.0000 degree

  Beam coordinate X:               1538.0 pixel
                  Y:               1534.0 pixel
  Resolution range:           (45.0, 0.0)
  Image range:                   [1, 360]
   …

おお、ちゃんとヘッダから読んでますねぇ…

…
  !!! WARNING in IDXREF. Percentage of indexed reflections bellow 50%.

  Unit cell parameters:   36.82 78.25 97.03 87.95 87.99 88.50 
  Space group number:     1
  Indexed spots:          13.3% (1293/9708)
  Spot prediction ESD:       2.26   pixels and  1.14 degrees
  Refined beam position (in mm):      (  158.214,   157.017)
  Refined beam position (in pixels):  (  1542.23,   1530.56)
  Shift in beam position:      0.55 mm  (5.4 pixels)
  Size of the origine index table:      60
  Origin ranking for the best 5 solutions: 
 Quality:            1.10,     1.50,     1.90,     2.10,     2.50
 Shift (mm):         0.55,     1.74,     2.74,     1.37,     3.00
 Shift (pixels):      5.4,     17.0,     26.7,     13.4,     29.2
 Beam X (mm):       157.3,    157.8,    160.4,    156.9,    159.9
 Beam Y (mm):       157.0,    155.6,    158.1,    158.4,    159.4
 Index Origin:    0  0  0,  0  1  0, -1  0  0,  0 -1  0, -1 -1  0

    TABLE OF POSSIBLE LATTICES:

 num  Symm  quality  mult     a      b      c    alpha   beta  gamma
 -------------------------------------------------------------------
  1)    P1    0.00     1     36.8   78.2   97.0   87.9   88.0   88.5
  2)    P1   27.80     1     36.8   78.2   97.0   92.1   92.0   88.5
   … 

…あれ? 格子が上手く決まってませんので、一旦止めましょう。

…
     9 -     16          38        0.908            0
    17 -     24          28        0.991            0
^CTraceback (most recent call last):
  File "/usr/local/xdsme/bin/noarch/xdsme", line 1614, in 
    R4 = newrun.run_integrate(collect.imageRanges)
  File "/usr/local/xdsme/bin/noarch/xdsme", line 997, in run_integrate
    self.run(rsave=True)
  File "/usr/local/xdsme/bin/noarch/xdsme", line 731, in run
    lines = xdsProcess.stdout.readline()
KeyboardInterrupt
ubuntu-vm:~/testXDS> 

そういえば、BL41XU はゴニオの回転方向が他と逆(いわゆる『ReversePhi』)でしたねw

BL41XU解析パラメータのページにある Q315 用の XDS.INP を参考に、パラメータを追加してみましょう。

xdsme に、-i オプションで "ROTATION_AXIS=-1 0 0" とパラメータを追加しました。

ubuntu-vm:~/testXDS> xdsme -i "ROTATION_AXIS=-1 0 0" IMG/Lys15A03_*.img
>> Interpreting header of image:  IMG/Lys15A03_00001.img
>> Image format:      adsc
>> Detector type:     ADSC 315

    Simplified XDS Processing

    Diffraction Setup Parameters:

  Detector distance:                80.00 mm
  X-ray wavelength:                1.5000 A
  Oscillation range:               1.0000 degree

  Beam coordinate X:               1538.0 pixel
                  Y:               1534.0 pixel
  Resolution range:           (45.0, 0.0)
  Image range:                   [1, 360]

  (中略)

 --->  Running job:               IDXREF

  Unit cell parameters:   37.06 79.03 79.04 90.01 90.01 90.02 
  Space group number:     1
  Indexed spots:          96.1% (9330/9708)
  Spot prediction ESD:       0.33   pixels and  0.20 degrees
  Refined beam position (in mm):      (  157.800,   157.672)
  Refined beam position (in pixels):  (  1538.19,   1536.94)
  Shift in beam position:      0.28 mm  (2.7 pixels)
  Size of the origine index table:       9
  Origin ranking for the best 5 solutions: 
 Quality:            1.00,     4.50,     4.70,     5.50,     6.70
 Shift (mm):         0.28,     3.35,     3.78,     4.80,     6.79
 Shift (pixels):      2.7,     32.7,     36.8,     46.8,     66.2
 Beam X (mm):       157.8,    155.2,    160.4,    153.6,    151.0
 Beam Y (mm):       157.6,    155.2,    160.1,    159.7,    157.3
 Index Origin:    0  0  0, -1  1  0,  1 -1  0, -1 -2 -1, -2 -1 -1

    TABLE OF POSSIBLE LATTICES:

 num  Symm  quality  mult     a      b      c    alpha   beta  gamma
 -------------------------------------------------------------------
  1)    P1    0.00     1     37.1   79.0   79.0   90.0   90.0   90.0
  2)    P1    0.20     1     37.1   79.0   79.0   90.0   90.0   90.0
  3)    P2    0.50     2     79.0   37.1   79.0   90.0   90.0   90.0
  4)    C2    0.60     4    111.8  111.8   37.1   90.0   90.0   90.0
  5)    P2    0.60     2     37.1   79.0   79.0   90.0   90.0   90.0
  6)    P2    0.70     2     37.1   79.0   79.0   90.0   90.0   90.0
  7)  P222    0.90     4     37.1   79.0   79.0   90.0   90.0   90.0
  8)    C2    1.00     4    111.8  111.8   37.1   90.0   90.0   90.0
  9)  C222    1.00     8    111.8  111.8   37.1   90.0   90.0   90.0
 10)    P4    1.30     4     79.0   79.0   37.1   90.0   90.0   90.0

   …

今度は上手くいってそうです。

…
   ->  New high resolution limit: 1.54 Å   ->  Usging spacegroup: P4(1)2(1)2  #92

 --->  Running job:              CORRECT

  RMSd spot position:                    0.63 pix,  0.14 deg.
  Refined Mosaicity:                                0.13 deg.

  Rsym:                                   5.9
  I/sigma:                                9.6
  Suggested high resolution cutoff:      1.54
  Compared reflections:                 477910
  Total number of measures:             477920

Traceback (most recent call last):
  File "/usr/local/xdsme/bin/noarch/xdsme", line 1617, in 
    newrun.run_correct((h, l), spgn)
  File "/usr/local/xdsme/bin/noarch/xdsme", line 1072, in run_correct
    s = resum_scaling(lpf=os.path.join(self.run_dir,"CORRECT.LP"))
  File "/usr/local/xdsme/XDS/xupy.py", line 843, in resum_scaling
    sp1 = lp.index("   INPUT DATA SET")
ValueError: substring not found
ubuntu-vm:~/testXDS

終わったみたいです。
Rsym は、5.9 % と悪くないデータですが、空間群が勝手に【P 41212】にされています。

なので、-s オプションで空間群を指定してやり直しです。
また、後でS-SADをかけるために -A オプションをつけてバイフット対で出力させて、-3 オプションで IDEXREF から処理させます。

ubuntu-vm:~/testXDS> xdsme -A -3 -s P43212 -i "ROTATION_AXIS=-1 0 0" IMG/Lys15A03_*.img

…
  Rsym:                                   8.7
  I/sigma:                                7.5
  Suggested high resolution cutoff:      1.54
  Compared reflections:                 637929
  Total number of measures:             638068

Traceback (most recent call last):
  File "/usr/local/xdsme/bin/noarch/xdsme", line 1617, in 
    newrun.run_correct((h, l), spgn)
  File "/usr/local/xdsme/bin/noarch/xdsme", line 1072, in run_correct
    s = resum_scaling(lpf=os.path.join(self.run_dir,"CORRECT.LP"))
  File "/usr/local/xdsme/XDS/xupy.py", line 843, in resum_scaling
    sp1 = lp.index("   INPUT DATA SET")
ValueError: substring not found
ubuntu-vm:~/testXDS>

ログファイル(COLLECT.LP)の統計値を確認…なかなかイイ感じです。
 RESOLUTION     NUMBER OF REFLECTIONS    COMPLETENESS R-FACTOR  R-FACTOR COMPARED I/SIGMA   R-meas  Rmrgd-F  Anomal  SigAno   Nano
   LIMIT     OBSERVED  UNIQUE  POSSIBLE     OF DATA   observed  expected                                      Corr

     3.89       31171    2067      2069       99.9%       2.8%      2.9%    31171   93.40     2.9%     0.9%    94%   2.889     825
     2.76       55935    3699      3699      100.0%       2.9%      3.1%    55935   84.13     3.0%     1.0%    68%   1.843    1642
     2.26       68585    4755      4756      100.0%       4.0%      3.9%    68585   60.80     4.2%     1.6%    54%   1.584    2172
     1.95       81638    5643      5647       99.9%       6.1%      6.0%    81636   41.52     6.3%     2.6%    33%   1.222    2615
     1.75       90417    6335      6377       99.3%      13.0%     13.3%    90417   20.95    13.5%     6.7%    19%   0.975    2972
     1.60       98492    7025      7089       99.1%      31.8%     32.9%    98491    9.14    33.1%    17.5%     3%   0.839    3314
     1.48      104729    7556      7671       98.5%      86.2%     88.6%   104728    3.47    89.5%    47.7%    -2%   0.735    3577
     1.38       84855    7894      8263       95.5%     256.4%    263.3%    84841    0.96   270.0%   184.4%     1%   0.680    3759
     1.30       22199    4857      8812       55.1%     857.7%    896.9%    22078    0.16   976.0%  1110.3%     2%   0.550    2233
    total      638021   49831     54383       91.6%       8.7%      8.9%   637882   25.27     9.1%    19.7%    20%   1.045   23109

同じイメージを、HKL2000 + scalepack で処理した統計値が以下の通りですから、まぁ遜色ないでしょう。
 Shell Lower Upper Average      Average     Norm. Linear Square
 limit    Angstrom       I   error   stat. Chi**2  R-fac  R-fac
      50.00   3.45   368.9     4.0     2.7  0.868  0.030  0.036
       3.45   2.74   220.4     2.7     2.0  0.944  0.036  0.042
       2.74   2.39   106.9     1.7     1.5  0.865  0.046  0.051
       2.39   2.17    81.3     1.6     1.4  0.872  0.057  0.060
       2.17   2.02    60.2     1.4     1.3  1.170  0.082  0.090
       2.02   1.90    38.5     1.3     1.3  0.913  0.103  0.104
       1.90   1.80    25.3     1.3     1.3  0.590  0.124  0.114
       1.80   1.72    17.5     1.4     1.4  0.525  0.176  0.163
       1.72   1.66    13.6     1.5     1.5  0.528  0.245  0.223
       1.66   1.60    11.5     1.8     1.8  0.528  0.326  0.301
  All reflections     94.8     1.9     1.6  0.785  0.052  0.043

さて、このままスケーリングいってみましょう。
ubuntu-vm:~/testXDS> cd xds_process_Lys15A03
ubuntu-vm:~/testXDS/xds_process_Lys15A03> xscale2.py XDS_ASCII.HKL

スケーリングされた unmerged なデータが「XSCALE.HKL」という名前で出力されます。
では shelxC/D/E でS-SAD解析をやってみましょう。

xdsconv.py を使って、shelx 形式にフォーマット変換します。
このとき、以下のように重原子種と数を与えておくと、
ubuntu-vm:~/testXDS/xds_process_Lys15A03> xdsconv.py XDS_SCALE.HKL 10 S shelx

【shelx】というディレクトリが作られて shelxC が実行され、
  • XSCALE_F4.hkl (フォーマット変換された回折データファイル)
  • XX1.hkl ( shelxC で処理された回折データファイル)
  • XX1_fa.hkl (重原子部分構造ファイル)
  • XX1_fa.ins ( shelxD のインプットファイル)
  • run_shelx.sh ( shelx 実行用スクリプト)
が生成されます。

…生成されますが、shelxC の結果をグラフで見たいので、hkl2map で shelxC からやり直しますw

さすがに高分解能データだけあって、異様にキレイなマップですw


とりあえず、これで一通り終わりました。なかなかイイ感じのソフトウェアですね。
もっと早くに使わなかったのがちょっと悔やまれます。…まぁ xdsme なしでは使い始めなかったでしょうけどねw

スケーリングを XSCALE ではなく、Scala でやってみたり、愛しき Thaumatin のデータで試してみたりは、また後日に。

0 件のコメント: