公開データセットを使って RELION の練習をしている。高分解能データが触ってみたいので、 EMPIAR ID 10029 にある GroEL のシミュレーションデータを使うことにした。EMAN2 で もっと低分解能の GroEL を題材にしたチュートリアル と同じように処理したところ、8コアのマシン単独で約 2.5 日間かかり、5.8 Å (at FSC 0.143) となった。RELION だとどうなるか試してみるのが目的だ。
Prepare input files - Relion にあるようにして、STAR ファイルを作る。defocus 値などを EMAN2 の処理結果から引きぬかなければならない。
EMAN2 に含まれている e2refinetorelion2d.py によると、info/*.json にある defocus 値を 10000 倍したものを rlnDefocusU と V に設定し、rlnDefocusAngle は 0 でいいらしい。問題は rlnAmplitudeContrast である。json ファイル中には % で記述されているようなので、JSON ファイルに 10 とあれば STAR ファイルには 0.1 を指定すればよさそうだが、コードでは 10 で割っている。そもそも コードだと ampcont をパースした値を defocus 用の変数 DEF1, DEF2 に格納してるが、バグだろうか。
そのへんを配慮しつつ、json2star.sh を作った。
#!/bin/bash name=`basename $1` defocus=`grep defocus $1 | cut -d: -f2 | tr -d ,` defocus=`echo $defocus*10000 | bc` ampcont=`grep ampcont $1 | cut -d: -f2 | tr -d ,` ampcont=`echo "scale=1;$ampcont/100" | bc` voltage=`grep voltage $1 | cut -d: -f2 | tr -d ,` nptcl=`grep ptcl_repr $1 | head -n1| cut -d: -f2 | tr -d ,` cs=`grep \"cs\" $1 | cut -d: -f2 | tr -d ,` imgname=Micrographs/${name%_info.*}.mrcs relion_star_datablock_stack $nptcl $imgname $imgname $defocus $defocus 0 $voltage $cs $ampcont
これを
relion_star_loopheader rlnImageName rlnMicrographName rlnDefocusU rlnDefocusV rlnDefocusAngle rlnVoltage rlnSphericalAberration rlnAmplitudeContrast > particles_all.star for f in info/micrograph_0*.json; do bash json2star.sh $f; done >> particles_all.star
などとして実行し、particles_all.star を作る。
中身は、
data_ loop_ _rlnImageName _rlnMicrographName _rlnDefocusU _rlnDefocusV _rlnDefocusAngle _rlnVoltage _rlnSphericalAberration _rlnAmplitudeContrast 000001@Micrographs/micrograph_001.mrcs Micrographs/micrograph_001.mrcs 22770.0018882751460000 22770.0018882751460000 0 300.0 2.700000047683716 .1 000002@Micrographs/micrograph_001.mrcs Micrographs/micrograph_001.mrcs 22770.0018882751460000 22770.0018882751460000 0 300.0 2.700000047683716 .1 000003@Micrographs/micrograph_001.mrcs Micrographs/micrograph_001.mrcs 22770.0018882751460000 22770.0018882751460000 0 300.0 2.700000047683716 .1 000004@Micrographs/micrograph_001.mrcs Micrographs/micrograph_001.mrcs 22770.0018882751460000 22770.0018882751460000 0 300.0 2.700000047683716 .1 000005@Micrographs/micrograph_001.mrcs Micrographs/micrograph_001.mrcs 22770.0018882751460000 22770.0018882751460000 0 300.0 2.700000047683716 .1 (中略) 000199@Micrographs/micrograph_001.mrcs Micrographs/micrograph_001.mrcs 22770.0018882751460000 22770.0018882751460000 0 300.0 2.700000047683716 .1 000200@Micrographs/micrograph_001.mrcs Micrographs/micrograph_001.mrcs 22770.0018882751460000 22770.0018882751460000 0 300.0 2.700000047683716 .1 000001@Micrographs/micrograph_002.mrcs Micrographs/micrograph_002.mrcs 22949.998378753660000 22949.998378753660000 0 300.0 2.700000047683716 .1 000002@Micrographs/micrograph_002.mrcs Micrographs/micrograph_002.mrcs 22949.998378753660000 22949.998378753660000 0 300.0 2.700000047683716 .1 000003@Micrographs/micrograph_002.mrcs Micrographs/micrograph_002.mrcs 22949.998378753660000 22949.998378753660000 0 300.0 2.700000047683716 .1 (後略)
のような感じになっている。rlnImageName が物理的なファイル名であり、rlnMicrographName がノイズ補正などに使われるグループ名(Prepare input files - Relion 参照)らしい。これを RELION GUI の Display ボタンで表示できることを確認した。
次に、これを relion_preprocess で処理して、蛋白質を白・背景を黒になるように反転し、強度を正規化する。
relion_preprocess --o imported --operate_on particles_all.star --norm --bg_radius 70 --norm --white_dust -1 --black_dust -1 --invert_contrast
ここで --operate_on オプションを使うのがポイントである。どこにも使い方が書いてないので一晩悩み、ダミーの box ファイルを作るとか迷走してしまった。最終的に、Classification example - Relion がヒントになった。
これで imported.star と imported.mrcs (全部の画像が入った巨大なファイル)ができた。今、2D classification を走らせているが、一応動いているようだ。結果がちゃんとしているかは、今後確認する。→ 8/6 うまく三次元再構成できることを確認した。