構造

実装して学ぶデータ処理システム その3 - Kabsch transform の意味

今回は XDS における最大の特徴、Kabsch transform の意味について説明する。論文の 2.3 節に対応する。Kabsch transform は、goniostat 座標系から reflection 座標系への変換である。これまでに出てきた検出器系や実験室系との変換と違い、この変換は局所…

実装して学ぶデータ処理システム その4 - 座標変換の実際

前回(本記事公開時には未公開)、Kabsch 変換の意味について説明した。今回は、実装上の問題点について述べる。DIALS のレポジトリにある James の文章 が参考になる。逆空間の一点とKabsch 変換後の反射座標系での一点は、数学的には一対一に対応している。…

RELION の classification で、クラスの割合を抽出する

RELION の 2D / 3D classification で、iteration ごとに各クラスの割合がどう変化したかをプロットしたいと言われたので、スクリプトを作った。 for i in `seq 0 20`; do j=`printf %03d $i`; echo -n $j" "; relion_star_printtable run_it${j}_model.star…

指数付けアルゴリズム総説

指数付けの目的は、逆空間の基底ベクトルを決定することである。3 つの基底ベクトル(縦ベクトルである)を横に並べて 3 x 3 行列にしたものを方位行列 A と呼ぶ。成分を書き下すと、 である。 方位行列は 9 成分を持つから、自由度も 9 である。そのうち 6 つ…

DIALS でたくさんのデータセットを一気に処理する

small wedge で測定した大量のデータセットを DIALS で一気に処理してみた。まず、wedge を検出して、wedge ごとに作業フォルダを作る。 TOPDIR=/path/to/topdir/ find $TOPDIR -name "*_000001.img" -a ! -name "scan*.img" > targets.lst i=0 while read f…

実装して学ぶデータ処理システム その2 - 反射が起きる条件

スポット検出の話 が間に入ってしまったが、第 1 回に引き続き、Kabsch, Wolfgang. "Integration, scaling, space-group assignment and post-refinement" Acta Crystallographica Section D (2010): 133-144 の 2.2 節で述べられている反射条件を説明する。…

RELION に mrcs 形式の particle をインポートする

公開データセットを使って RELION の練習をしている。高分解能データが触ってみたいので、 EMPIAR ID 10029 にある GroEL のシミュレーションデータを使うことにした。EMAN2 で もっと低分解能の GroEL を題材にしたチュートリアル と同じように処理したとこ…

実装して学ぶデータ処理システム その2 - union-find によるスポット検出

作図に手間取っているので、予定を変更して、スポット検出アルゴリズムについて説明する。元ネタは Kabsch, Wolfgang. "Integration, scaling, space-group assignment and post-refinement" Acta Crystallographica Section D (2010): 133-144 の 2.5 節だ…

実装して学ぶデータ処理システム その1 - XDS の座標系

XDS の主要なアルゴリズムを手を動かして実装することを通じて、X 線回折のデータ処理について理解を深めよう。サンプルデータは Thaumatin / Diamond Light Source I04 user training を用いることにする。まず、XDS の座標系を学ぶ。nXDS は回転軸の概念が…

XDS の謎

XDS には謎が多い。ソースコードが公開されていない以上、いくら悩んでも答えが出ないことも多い。そういう疑問点を、自分が忘れないために列挙しておく。もし答え(かもしれないもの)をご存知のかたは、ぜひ教えてほしい。 GAIN.cbf と BKGINIT.cbf GAIN.cbf…

方位行列の偏微分

以前に書いた方位行列の偏微分を求めておこう。 となるような方位行列を計算すると、 となるのだった。これを偏微分していく。ただし、 の形も使う。ここまでは楽勝。以下、検算してない(上も保証はできないけれど)ここもなんとか。問題は の偏微分であるが…

d*TREK を使ってみる

さきほど、d*TREK をビルドしたが、dtprocess と dtdisplay という GUI 部分がうまく動かなかった。そこで、CUI だけから使ってみることになる。基本的には、xia2 のドキュメント ftp://ftp.ccp4.ac.uk/ccp4/6.3.0/ccp4-6.3.0/share/xia2/xia2/Wrappers/dTRE…

DIALS image viewer の周辺

DIALS image viewer は dials/command_line/image_viewer.py がエントリポイントであるが、直ちに dials/util/spotfinder_wrap.py に移譲される。GUI の本体は dials/util/spotfinder_frame.py であるが、これは cctbx 側の rstbx に含まれている slip_viewe…

iPython notebook から cctbx を使う

年を取ったのでなかなか Python が身につかない――などと言っているわけにもいかなくなってきたので、頑張る。iPython と notebook が便利らしいので、cctbx もここから使いたい。iPython 自体は apt-get install ipython ipython-notebook で入るのだが、こ…

統計量の不偏性や一致性と、post-refinement について

4/23 ごろに Twitter に書いたことの再録。シリアル結晶学における post-refinement について問題提起しておく。これらの手法の不偏性や一致性についての検証はまったくといってよいほどされていない。つまり、ある枚数から処理したときに得られる強度(の推…

cctbx.xfel 読解メモその4

まだまだ続くよ。xfel/metrology/mark0.py には、CSPAD のピクセルサイズと厚さがハードコードされている。rstbx/bandpass/parameters.h は、use_case_bp3 が使うパラメータを集めた parameters_bp3 クラスのほか、検出器の parallax correction を行う pad_…

bash の wait と、SHELXE の条件検討

bash のシェルスクリプト内で background job を立ち上げた場合、最後に wait を入れないと、job の完了を待たずにスクリプトが終了してしまう。したがって、job も共倒れになってしまう。例えば、TORQUE を使って 30 並列で SHELXE の条件検討を行うスクリ…

watch コマンドで SHELXE の進捗を監視

先日、@yam_cpp 氏に watch コマンドを教えてもらった。これは、定期的にコマンドを実行して、結果をフルスクリーンで(=再実行ごとに clear を実行して)表示する。解説は watch でコマンドを延々と実行する - いますぐ実践! Linuxシステム管理 / Vol.223 が…

シリアル結晶学のための post-refinement について

1年前に Post-refinement についての覚え書き - biochem_fan's note を書いた。その後、シリアル結晶学への応用が急速に進み、2015年に至って、ついに効果が立証された。これらの進展について説明しよう。Rossmann, M. G., et al. "Processing and post-refi…

cctbx.xfel 読解メモその3

いったん分かりだすとペースが早くなり、ここにメモを書くのがもどかしくなって、メモをせずにどんどん進めてしまった。要点だけ。cctbx.xfel はスポット検出に distl.spotfinder, 指数付けに labelit を用いている。これらは画像ファイルへのアクセスに iot…

cctbx.xfel 読解メモその2

長くなったので項目を分けた。xfel/command_line/frame_extractor.pyは DIALS の処理結果を cctbx.xfel 用の pickle に変換するもののようだ。xfel/command_line/frame_unpickler.py はその逆?xfel/command_line/metrology.py は、detector metrology refine…

cctbx.xfel 読解メモ

cctbx.xfel のコードを読んでいく。メモなのでぐちゃぐちゃ。cctbx.xfel は LCLS のシステムと強く結合している。LCLS では、生データは XTC というストリームで供給される。これを処理するのが pyana というライブラリ。XTC はイベントベースのストリームで…

φ の回折パラメータによる偏微分

Kabsch, Wolfgang. "Integration, scaling, space-group assignment and post-refinement" Acta Crystallographica Section D 66.2 (2010): 133-144 の 2.8 節において、反射の生じる回転角 の、回折パラメータ による偏微分がと表現されている。この見慣れ…

指数の正規化、あるいは、asymmetric unit への変換

マージする時や mtz ファイルを解釈する時など、与えられた指数を標準的な asymmetric unit 内の指数に変換する必要が生じる。もっとも単純なアルゴリズムは以下のとおり。 あらかじめ点群における対称操作 を列挙しておく 与えられた指数 h に、上の対称操…

シリアル結晶学における partiality の分布

シリアル結晶学における partiality の分布がどうなるかをシミュレーションで調べる。まず、rocking curve のモデルとして、標準正規分布を採用する(XDS のモデル)。 図では、-4, 4, -3, 3, -2, 2 のところに縦線をひいた。仮に、結晶の mosaicity やビーム…

vmd のスクリプト覚え書き

追記していく予定。 読み込み mol load psf topology.psf for {set i 0} {$i < 40} {incr i} {mol addfile [format "production_run_%02d.dcd" $i]} 表示の追加 mol rep NewCartoon mol selection protein mol color SegName mol addrep top mol rep Licoric…

Rodrigues space による回転の表現と GrainSpotter

3次元空間で、原点を始点とするベクトル u を、原点を始点とする別のベクトル v に重ねる回転は無数にある。u, v に直交する軸で回転させるのが直感的かもしれないが、回転した後にさらに v を軸に任意に回転させることができる。また、原点を頂点として、u,…

sigma cutoff によるバイアス

sigma cutoff の濫用は、バイアスの原因となる。負の観測を切り捨てることで測定値を正にバイアスし、ノイズしかない場合でもシグナルがあるかのような統計値を生み出してしまう。このため、業界のコンセンサスとしては、-3 よりも大きくするのは良くないと…

oversampling / density modification による位相回復のデモ

R で oversampling / density modification による位相回復のデモを作った。実験的に得られた F とランダムな位相から始める。これを実空間に戻して、マスクをかけてからフーリエ変換する。得られた位相(hopefully improved) と実験的 F を組み合わせて、反…

正二十面体対称性について

6/21 に Twitter に書いた事から再録。ウィルスの殼で見られる正二十面体対称性 icosahedral symmetry がやっと理解できた。幾何が苦手で、いつもすっきりしなかったのだ。 向かい合う面の中央を貫く3回軸が 20 / 2 = 10本 向かい合う頂点を貫いて5回軸が 12…