cutoffをする(たぶん)かんたんスクリプトXDS_ASCII.HKLファイルをSCALAにてスケーリング準備(前提条件)スクリプト何をやってるかXDSを使ってみるXDSはHKL2000のようなGUIを持たないデータ処理&スケーリングプログラムパッケージです。毎年年末にプログラムの期限が切れるので、忘れずに12月になったら最新版を取得しましょう。玄人好みのプログラムですが、自動化などにも使われているようです。細かなパラメータ等は自動で決定してくれるので慣れると便利な気がします。Packageにはいくつかのプログラムが含まれており、基本はXDS、XSCALE、XDSCONVを使います。プログラムを実行する際にはインプットファイルを用意しますが、インプットファイル名は固定されており、それぞれ実行ディレクトリにあるXDS.INP、XSCALE.INP、XDSCONV.INPが使用されます。処理の出力も基本的には実行ディレクトリになります。単一のデータセットのみを使う場合はXSCALEの手順は不要みたいです。プレディクション(観測反射位置と計算反射位置の重ね合わせ)が見れないとどうしても嫌だ、という方はHKL2000とかiMOSFLMを使いましょう。http://code.google.com/p/xdsme/XDSの実行プログラムパッケージ名にもなっているXDSですが、実際のXDSプログラムは指数付けおよび積分を行うプログラムです。インプットファイルを作成し、プログラムを実行します。処理結果ファイルやログファイルはプログラムを実行したディレクトリに出力されるので、適当なディレクトリを作成したほうがいいでしょう。XDSはバージョンにより出力内容が結構変わるみたいなので、バージョンが異なると多少手順が変わるかもしれません。ここでは2010-12-06版(2011-12-31まで)を基にしています。インプットファイル雛形の取得XDSインプットファイルはゼロからでも作れますが(相当大変そうですが・・・)、SPring-8およびPFの場合はINPファイルがビームラインのホームページに用意してあるのでそれらを使います。ビームラインや検出器によって異なるので、どれを使えばいいかよく分からない場合はビームラインスタッフに確認しましょう。取得したファイルを修正して処理を流します。格子定数、ファイル名および枚数です。!以降はコメントとして無視されます。BL41XU(Q315)のインプットファイルを例に説明します。ここで挙げた項目とパラメータ名の対応は以下の表の通りです。180テンプレートにはコメントが書いてあるのでそれに従えばよいでしょう。SPACE_GROUP_NUMBER、UNIT_CELL_CONSTANTSはインデックス(指数付け)の目安として使用されます。不明の場合はSPACE_GROUP_NUMBER=0にしておくと良いでしょう。XDSMEを使うと処理後、空間群をPOINTLESSを使って決めてくれるようです。作成したインプットファイルはXDS.INPという名前(大文字)で保存します。インプットファイルの修正(その2)複数のデータセットをマージしたい場合、P31など軸の取り方が複数ある空間群ではデータセット毎に軸が異なってしまう場合があります。その時、合わせる手系をXDSに知らせるため、REFERENCE_DATA_SETでマージ先のHKLファイルを指定すると軸を合わせてくれるようです(たぶん)。データセットとしてxds1およびxds2がある場合、xds1に合わせるならxds2/XDS.INPのREFERENCE_DATA_SETを以下のようにします。(optional)こうすることで軸を統一することができます。インプットファイルの修正(いろいろ)その他細かい修正が可能です。読み込まれるインプットファイルはXDS.INP固定なので、プログラムを実行するだけです。xds.logとするだけで、(必要なら)指数付け、積分、までやってくれます。並列処理ができない環境の場合はxds_parではなく、オリジナルのxdsを使う事になりますが、処理時間は当然長くなります。120.000という感じで出力されます。処理が終わると、実行したディレクトリにいくつかのファイルが出力されます。この中で重要なのが.LPファイルおよびXDS_ASCII.HKLファイルです。LPファイルはログファイルであり、処理の結果がまとめられています。XDS_ASCII.HKLが処理の結果作成された反射ファイルです。複数データ間のマージを行わない場合はXSCALEは不要です。CORRECT.LPはスケーリングの前に強度補正(吸収、LPなど)を行っているプロセスですが、ほぼスケーリングをしたときと同様の統計値がテーブルで出力されています。このテーブルを見ることにより、少なくとも積分までのデータ処理がうまく行っていたかどうか分かります。XSCALEのインプットファイルを準備する前に、CORRECT.LPを確認しておきましょう。XSCALEの実行XDSで積分が終わったら、続いてスケーリングおよびマージを行います。このプログラムもXDSと同様にXSCALE.INPというインプットファイルを用意します。設定項目は少ないのでテンプレートをちょっと修正すればいいはずです。単一のデータセットの場合はXSCALEをしなくてもいいようです。XDSで得られたXDS_ASCII.HKLをXDSCONVでフォーマット変換を行ってください。P31などのマージ軸の取り方が複数ある空間群のデータセット同士をマージするとき、軸が異なっているとcorrelationが低くなり警告が出ます。INCOMPATIBLE.***軸の取り方が複数ある空間群でマージする場合は最低限この項目はチェックした方がいいでしょう。通常0.99ぐらいになるはずです。警告が出た場合、REFERENCE_DATA_SETパラメータをセットしてマージする軸に合わせてXDSで再処理しましょう。http://www.ccp4.ac.uk/dist/html/reindexing.htmlマージ後のReindexマージした後にReindexを行いたいときは、OUTPUT_FILEパラメータの前に、SPACE_GROUP_NUMBER、UNIT_CELL_CONSTANTS、REIDXを追加します。../xds_low2/XDS_ASCII.HKLREIDXパラメータの内容は以下の通り。0,1,0)を並べて表現したものですね。プログラムの実行インプットファイルの修正が終わったら実行します。xscale.log実行後はXSCALE.LPで統計値を確認しておきましょう。最終結果はXDSCONVで使用するプログラムにあわせてフォーマット変換を行います。FreeRフラグを付けることもできます。対応しているフォーマットは以下の通り。XtalViewXDSCONV.INPの編集テンプレートを見れば編集箇所はすぐ分かると思いますが、最低限以下の項目を編集します。先頭の"!"を外すOUTPUT_FILEの拡張子は何でもいいと思いますが、ここでは区別のためにSHELXのsをつけてshklとしています。GENERATE_FRACTION_OF_TEST_REFLECTIONSを有効にすると後からFreeRフラグを付ける必要がなく便利。過去のデータとFreeRを統一するなら後ろにあるINHERIT_の項目を使用します。その他、Wilsonプロット、ネガティブインテンシティのCutoffなどが使用可能です。プログラムの実行プログラムを実行すれば変換が行われます。xdsconvMTZ形式への変換XDSCONVで取得できるのはMTZ変換前のFデータですので、F2MTZを使って変換します。そのためのF2MTZ.INPファイルが実行ディレクトリに生成されるはずです。XDSCONV実行後にも手順が出力されますが、以下のようにして変換します。ENDEOSこれで生成されるoutput.mtzが目的のMTZファイルです。CUTOFFマクロと同じようなことができるようです。慎重に使えとHKL2000マニュアルにも書いてありますのでその弊害をHKL2000マニュアルで確認しておきましょう。cutoffの機能はないとXDSwikiに書いてありますが、XDSが出力するHKLファイルはテキストファイルなので手動でできるようです。以下の例ではXDS_ASCII.HKLから0σ未満の反射を除外します。SIG_CUTOFF_0.hklこれで得られるSIG_CUTOFF_0.HKLが得られたファイルです。cutoff?かんたんスクリプトスクリプトにしてみました。試してないので使用は自己責任で。[SIG_CUTOFF_-1.HKL]カレントディレクトリのXDS_ASCII.HKLから指定したI/σ以下の反射を除きます。出力ファイル名はSIG_CUTOFF_値.HKLです。onend-scala============================使うときはファイルにコピペしてね。何をやってるかpointlessにてXDS_ASCII.HKLをMulit-recordのMTZファイルに変換する。sortもpointlessで出来ているのでscala前のsortmtz不要。scalaの中→scalesなどのオプションついては別途scalaの使い方をお好みで。