CrystFEL tutorial をやってみた(未完)

CrystFEL のチュートリアルが更新された。CXIDB にあるリゾチームのデータセットを使うようになっている。

書いてあるとおりにやれば動くのだが、気がついた点をメモしておく。

データの形式

データのダウンロードは CXIDB の当該エントリ から行うのだが、cxidb-17-run0300.tar というのと run0300.tar.gz (CrystFEL format)という二種類がある。チュートリアルが要求しているのは後者。前者は拡張子が .cxi、後者は .h5 となっていて、どちらも hdfsee で閲覧できるのだが、前者だと detector geometry ファイルをうまく読み込めない。また、前者は CSPAD 1枚1枚の画像が別々に表示される(hdfsee の [View]-[Images]-[/entry1] 以下から選択可能)。

これらを1枚の画像にアセンブリしたのが後者ということだろうか? 実際、/entry1 というデータチャンクは消えて、/data/data という1つにまとまっている。アセンブルといっても検出器の繋ぎ目(gap)を含めてしまうとデータサイズが無駄になるので、とりあえず全部詰めて並べてあって、それを geometry file の情報で修正するということかな。

hdfsee によるデータ表示

F3 で binning を 1 にして、F5 で Intensity Boost を 50 くらいにして、[View]-[Inverse Monochrome] とすると、見慣れた放射光の回折像っぽい雰囲気になる。それでも回折点が少ないのは、SFX は振動写真でなくてスチル写真だからである。

ピーク検出

後に出てくる指数付けのステップと同じく、-j 4 などとすれば並列化される。

出力される stream ファイルはテキストファイルに過ぎない。

ピーク確認

check-peak-detection スクリプトを使うが、これは上記の stream file から、画像1枚分のピーク座標を list.tmp に切り出して、それを hdfsee に -p オプションで渡しているだけである。スクリプトに対する他のオプションも、そのまま hdfsee に渡されるので、例えば -c invmono をつけると、[View]-[Inverse Monochrome] を選んだ状態で hdfsee が起動する。

それにしても、画像1枚ごとに hdfsee を開き直さないといけないのは、あまりにも残念な仕様であると言わざるをえない。hdfsee にも adxv のような socket 経由で操作できる機能とかをつけるべきである(お前がやれ > 自分)。

指数付け-1

Xeon 6core x 2 のマシンで 8 並列で処理したところ、5分ほどで終わった。

indexing=mosflm-raw-nolatt-bad だと MOSFLM が利用されるが、indexing=xds-nolatt-nocell とすると、XDS による指数付けが行われる。しかし、mosflm-raw-nolatt-bad だと 341/816 で指数がついたのに対して、XDS だとわずか 32/816 である。そのうえ、lattice type も triclinic になっている。

結果の確認には cell-please スクリプトを使う。これは gnuplot を呼び出しているだけだが、出力先が unitcell.ps 固定なのはいただけない。

指数付け-2 格子の制約

mosflm-raw-latt-bad を使う。nolatt が latt に変化したことに注目。つまり、格子情報を使うという指定である。

XDS での対応するオプションが不明。xds-raw-latt-bad を指定しても、

Prepared indexing method 0: xds-raw-bad-latt-cell

と出て、本来次のステップで行いたい、格子定数も使った指数付けになってしまう。そのうえ、816/816 で指数がついたと言われる。lattice type も triclinic のままだし要確認。

確認には、check-near-bragg を利用する。ここで表示されるのは、ピーク検出が発見したスポットではなく、積分されたスポットである。

#終わりまでやってあるんだけど、精神不調のため筆が止まってしまったので、とりあえずここまで公開