チュートリアルデータを基にして作り直してみました 以前の記事Relion/Gautomatch20220312
撮影した画像をため込んだフォルダを Movies とします。
フォルダ構成を下記だとします。
PrecalculatedResults(ここでRelionを実行)
+------- Movies/ (撮影したtiffファイルが入ってます)
+------- Import/
| +---- job001/
+------- MotionCorr/
| +---- job002/
+------- CtfFind/
+---- job003/
- プロジェクトフォルダを作成して
- Moviesフォルダを作って、そこに撮影した画像ファイル(20170629_00021_frameImage.tiff, 20170629_00022_frameImage.tiff ...)を設置します
- プロジェクトフォルダで relion を起動させ
- 左ペインのジョブタイプブラウザから「Import」を選択して、Movies フォルダにあるtifファイルをすべて集めたstarファイルを作る
- 次にジョブタイプブラウザから「Motion correction」を選択してtiff動画の補正を行う
- 次に「CTF estimation」を選択してctf推定を行う
ここらはチュートリアルで詳しく解説されてます。
っで、次のステップが「単粒子pick」なのですが、手動で行ってもいいし、RelionのLoG、crYOLO、Gautomatchでpickしてもかまいません。
ここではGautomatchでpickを行って、それをどのようにRelionに反映させたらいいのかを示します。
Gautomatch実行場所をどこにするか †
「Motion correction」の結果が入っている場所で行うのが簡単。上記のAAになぞれば
PrecalculatedResults(ここでRelionを実行)
+------- Movies/ (撮影したtiffファイルが入ってます)
+------- Import/job001/
+------- MotionCorr/job002/Movies <-- ここ
+------- CtfFind/job003/Movies <-- ここでもいい
「MotionCorr/job002/Movies」の中にGautomatchの結果ファイルができるようにすればいい。
コマンド的には
[saber@c PrecalculatedResults]$ cd MotionCorr/job002/Movies
[saber@c Movies]$ Gautomatch --apixM 1.58 --diameter 300 *frameImage.mrc
とかで。すると
[saber@c Movies]$ ls -lrt 20170629_00021_frameImage*
-rw-r--r-- 1 rc rc 1049600 Jul 24 2019 20170629_00021_frameImage_PS.mrc
-rw-r--r-- 1 rc rc 44556 Jul 24 2019 20170629_00021_frameImage.star
-rw-r--r-- 1 rc rc 92269 Jul 24 2019 20170629_00021_frameImage_shifts.eps
-rw-r--r-- 1 rc rc 56956944 Jul 24 2019 20170629_00021_frameImage.mrc
-rw-rw-r-- 1 rc rc 188 Mar 12 16:28 20170629_00021_frameImage_rejected.star
-rw-rw-r-- 1 rc rc 416 Mar 12 16:28 20170629_00021_frameImage_rejected.box
-rw-rw-r-- 1 rc rc 10089 Mar 12 16:28 20170629_00021_frameImage_nonunique.box
-rw-rw-r-- 1 rc rc 7130 Mar 12 16:28 20170629_00021_frameImage_automatch.star
-rw-rw-r-- 1 rc rc 9686 Mar 12 16:28 20170629_00021_frameImage_automatch.box
[saber@c Movies]$
とかが得られる。
Gautomatchでpickした状態を見たいなら †
「Manual picking」を利用します。
「IO」タグの「Input micrographs」にはMotionCorrでできた「MotionCorr/job002/corrected_micrographs.star」をあてて
「Display」タグの「Particle diameter」を適当な大きさにします。そして「Run」ボタンを押下。

「corrected_micrographs.star」に記載されている画像リストとpickされている件数が表示される。

もし「IO」タグの「Input micrographs」をCtfFindで得られた「CtfFind/job003/micrographs_ctf.star」にすると、CTFの値も表示される。

ここで特定の画像で「Pick」ボタンを押下します。
指定した画像が表示される。ここでマウス操作で右クリックから「load coordinate」を選択します。

ファイルセレクターが表示され、表示している画像に関連したGautomatchの結果ファイル「20170629_00021_frameImage_automatch.star」を指定して読み込みます。

するとpickの具合が表示されます。

RelionGUIを経由せずコマンドで行いたいのなら
[saber@c PrecalculatedResults]$ relion_manualpick \
--i MotionCorr/job002/corrected_micrographs.star \
--odir ./MotionCorr/job002/ \
--pickname automatch \
--scale 0.2 --sigma_contrast 3 --lowpass 20 --ctf_scale 1 --particle_diameter 200
あるいは
[saber@c PrecalculatedResults]$ cd MotionCorr/job002/Movies
[saber@c Movies]$ relion_manualpick --i "*frameImage.mrc" --odir ./ --pickname automatch --scale 0.2 --sigma_contrast 3 --lowpass 20 --ctf_scale 1 --particle_diameter 200
とすると下記のような画面が表示される。こちらだと画像リストと共にGautomatchでpickさてた数も表示されます。

粒子の切り出し †
まず「Import」でGautomatchの「*_automatch.star」を読み込み
「Input files」には「MotionCorr/job002/Movies/*_automatch.star」
「Node type」には「Particle coordinates (*.box, *_pick.star)」
を指定して、実行

その後に「Particle extraction」では、micrograph STAR filesにはCTF推定で得られたmicrographs_ctf.star
Input coordinatesには先ほど作った「Import」のSTARファイルを入れます。「Import/job00X/coords_suffix_automatch.star」

Gautomatchの実行場所をより分かりやすくしたい †
MotionCorrとかCtfFindの配下でなく、プロジェクトディレクトリの直下にフォルダ(Gautomatch)を作って
PrecalculatedResults(ここでRelionを実行)
+------- Movies/
+------- Import/ job001/
+------- MotionCorr/job002/
+------- CtfFind/ job003/
+------- Gautomatch
「Gautomatch/Movies」を準備する。その「Movies」フォルダに「MotionCorr/job002/Movies/」のmrcファイルをリンクさせる
[saber@c PrecalculatedResults]$ mkdir -p Gautomatch/Movies
[saber@c PrecalculatedResults]$ cd Gautomatch/Movies
[saber@c Movies]$ ln -s ../../MotionCorr/job002/Movies/*frameImage.mrc .
(そして計算)
[saber@c Movies]$ Gautomatch --apixM 1.58 --diameter 300 *frameImage.mrc
(ファイルはこんな感じになります)
[saber@c Movies]$ ls -lrt 20170629_00021*
lrwxrwxrwx 1 rc rc 60 Mar 12 17:20 20170629_00021_frameImage.mrc -> ../../MotionCorr/job002/Movies/20170629_00021_frameImage.mrc
-rw-rw-r-- 1 rc rc 188 Mar 12 17:21 20170629_00021_frameImage_rejected.star
-rw-rw-r-- 1 rc rc 416 Mar 12 17:21 20170629_00021_frameImage_rejected.box
-rw-rw-r-- 1 rc rc 10089 Mar 12 17:21 20170629_00021_frameImage_nonunique.box
-rw-rw-r-- 1 rc rc 7130 Mar 12 17:21 20170629_00021_frameImage_automatch.star
-rw-rw-r-- 1 rc rc 9686 Mar 12 17:21 20170629_00021_frameImage_automatch.box
[rc@AK01 Movies]$
pickの確認は
[saber@c Movies]$ pwd
/home/saber/test/PrecalculatedResults/Gautomatch/Movies
[saber@c Movies]$ relion_manualpick --i "*frameImage.mrc" --odir ./ --pickname automatch \
--scale 0.2 --sigma_contrast 3 --lowpass 20 --ctf_scale 1 --particle_diameter 200
にて行える。
粒子の切り出しは前述の「Import」作業を経由してもいいのですが、一応別の方法でもできるようで
「Particle extraction」で
「micrograph STAR files」には同じようにCTF推定で得られたmicrographs_ctf.starを指定します。
そして、「Input coordinates」には「Gautomatch/_automatch.star」を指定します

これでもいいようで

と一応成功する
crYOLOなら †
crYOLOで実行環境が用意されているとして、下記のような「crYOLO/Movies」フォルダを用意します
[saber@c PrecalculatedResults]$ mkdir -p crYOLO/Movies
(イメージ的にはこんなフォルダ構成)
PrecalculatedResults(ここでRelionを実行)
+------- Movies / (撮影したtiffファイルが入ってます)
+------- Import/job001/
+------- MotionCorr/job002/Movies
+------- crYOLO/Movies
作ったcrYOLOフォルダにて config.json ファイルを作成します。
[saber@c PrecalculatedResults]$ cd crYOLO
[saber@c crYOLO]$ vi config.json
{
"model" : {
"architecture": "PhosaurusNet",
"input_size": 1024,
"anchors": [205,205],
"max_box_per_image": 700,
"num_patches": 1,
"filter": [0.1,"tmp_filtered"]
}
}
[saber@c crYOLO]$
次に計算対象のmrcファイルをリンクとして「crYOLO/Movies」に作ります
[saber@c crYOLO]$ cd Movies
[saber@c Movies]$ ln -s ../../MotionCorr/job002/Movies/*frameImage.mrc .
その後、crYOLOフォルダで cryolo_predict.py を実行します
[saber@c Movies]$ cd ..
[saber@c crYOLO]$ cryolo_predict.py -c config.json -w /apps/crYOLO/gmodel_phosnet_202005_N63_c17.h5 -i Movies/*frameImage.mrc -o ./
crYOLOの計算が開始され終了すると下記のフォルダ構成になる
[saber@c crYOLO]$ ls -CF
CBOX/ config.json DISTR/ EMAN/ logs/ Movies/ STAR/ tmp_filtered/
[saber@c crYOLO]$ls STAR/
20170629_00021_frameImage.star 20170629_00027_frameImage.star 20170629_00036_frameImage.star 20170629_00044_frameImage.star
20170629_00022_frameImage.star 20170629_00028_frameImage.star 20170629_00037_frameImage.star 20170629_00045_frameImage.star
20170629_00023_frameImage.star 20170629_00029_frameImage.star 20170629_00039_frameImage.star 20170629_00046_frameImage.star
20170629_00024_frameImage.star 20170629_00030_frameImage.star 20170629_00040_frameImage.star 20170629_00047_frameImage.star
20170629_00025_frameImage.star 20170629_00031_frameImage.star 20170629_00042_frameImage.star 20170629_00048_frameImage.star
20170629_00026_frameImage.star 20170629_00035_frameImage.star 20170629_00043_frameImage.star 20170629_00049_frameImage.star
[saber@c crYOLO]$
STARファイルは「STAR」フォルダに用意されるが、このファイル名は「20170629_00021_frameImage.star」なって「_autopick」とかが挿入されていない。
これではmanualpickによる確認が面倒なので、意図的に名称変更します
[saber@c crYOLO]$ cd STAR/
[saber@c STAR]$ for i in `ls *.star` ; do ln -s $i ${i%.*}_crYOLO.star ; done
次に crYOLO/Movies のmrcファイルを crYOLO/STAR にリンクさせる
[saber@c STAR]$ for i in `ls ../Movies/*frameImage.mrc`;do ln -s $i . ;done
これでpick具合を確認します。
[saber@c STAR]$ relion_manualpick --i "*frameImage.mrc" --odir ./ --pickname crYOLO --scale 0.2 --sigma_contrast 3 --lowpass 20 --ctf_scale 1 --particle_diameter 200

「pick」を押下すると

そしてExtractを行う
「Gautomatch/_automatch.star」と同じようなことをするには、「crYOLO/Movies」にpickのSTARファイルが必要なので
[saber@c PrecalculatedResults]$ cd crYOLO/Movies/
[saber@c Movies]$ for i in `ls ../STAR/*frameImage.star` ; do ln -s $i $(basename ${i%.*}_crYOLO.star) ; done
[saber@c Movies]$ ls
20170629_00021_frameImage_crYOLO.star 20170629_00029_frameImage_crYOLO.star 20170629_00042_frameImage_crYOLO.star
20170629_00021_frameImage.mrc 20170629_00029_frameImage.mrc 20170629_00042_frameImage.mrc
20170629_00022_frameImage_crYOLO.star 20170629_00030_frameImage_crYOLO.star 20170629_00043_frameImage_crYOLO.star
20170629_00022_frameImage.mrc 20170629_00030_frameImage.mrc 20170629_00043_frameImage.mrc
20170629_00023_frameImage_crYOLO.star 20170629_00031_frameImage_crYOLO.star 20170629_00044_frameImage_crYOLO.star
20170629_00023_frameImage.mrc 20170629_00031_frameImage.mrc 20170629_00044_frameImage.mrc
20170629_00024_frameImage_crYOLO.star 20170629_00035_frameImage_crYOLO.star 20170629_00045_frameImage_crYOLO.star
20170629_00024_frameImage.mrc 20170629_00035_frameImage.mrc 20170629_00045_frameImage.mrc
20170629_00025_frameImage_crYOLO.star 20170629_00036_frameImage_crYOLO.star 20170629_00046_frameImage_crYOLO.star
20170629_00025_frameImage.mrc 20170629_00036_frameImage.mrc 20170629_00046_frameImage.mrc
20170629_00026_frameImage_crYOLO.star 20170629_00037_frameImage_crYOLO.star 20170629_00047_frameImage_crYOLO.star
20170629_00026_frameImage.mrc 20170629_00037_frameImage.mrc 20170629_00047_frameImage.mrc
20170629_00027_frameImage_crYOLO.star 20170629_00039_frameImage_crYOLO.star 20170629_00048_frameImage_crYOLO.star
20170629_00027_frameImage.mrc 20170629_00039_frameImage.mrc 20170629_00048_frameImage.mrc
20170629_00028_frameImage_crYOLO.star 20170629_00040_frameImage_crYOLO.star 20170629_00049_frameImage_crYOLO.star
20170629_00028_frameImage.mrc 20170629_00040_frameImage.mrc 20170629_00049_frameImage.mrc
[rc@AK01 Movies]$
とします。
そしてextractですが、relionを立ち上げて「Particle extraction」にて

結果は下記になります

メモ †
relionのExternal欄を使うツールものある
https://github.com/wlugmayr/relion-ext-cryolo