パイプライン処理
gitで取得したrelionの scripts フォルダに「relion_it.py」があります。
これを「--gui」フラグを付けて起動すると下記のような画面が表示されます。

*「tkinter」パッケージが必要

[illya@c ~]$ mkdir sample && cd sample
 
[illya@c sample]$ cp /Appl/src/relion-3.0_beta/scripts/relion_it.py .
 
[illya@c sample]$ python ./relion_it.py --gui

2018y11m23d_004343406.png

電顕から書き出されるtiffファイルの場所を「Pattern for movies:」欄にすれば逐次処理が可能となる。
細かい調整は「save options」ボタンの押下で作られる「relion_it_options.py」ファイルを直接修正する必要があります。
queueとかの設定もある。加えて

[illya@c sample]$ view relion_it_options.py
 :
 :
### Now perform 2D and/or 3D classification with the extracted particles?
do_class2d = True
# And/or perform 3D classification?
do_class3d = True
# Repeat 2D and/or 3D-classification for batches of this many particles
batch_size = 10000
# Number of 2D classes to use
class2d_nr_classes = 50
# Diameter of the mask used for 2D/3D classification (in Angstrom)
mask_diameter = 198.00000000000003
# Symmetry group (when using SGD for initial model generation, C1 may work best)
symmetry = 'C1'
#
 :
 :
[illya@c sample]$

ともあり、batch_sizeまで粒子が集まったら 2D/3Dを行うように定義されているみたい

実行のための下拵え

「relion_it.py」の稼働設定ファイルを作らせるために、一度 relion_it をguiで起動させる。

[illya@c ~]$ mkdir relionIT && cd relionIT
[illya@c relionIT]$ cp /Appl/src/relion/relion3/relion-3.0_beta/scripts/relion_it.py .
 
[illya@c relionIT]$ chmod +x relion_it.py
[illya@c relionIT]$ ./relion_it.py --gui

GUIが表示されたら、撮影対象のパラメーターは勿論の事、何をさせるかパイプラインを決めます。
ここでは
2018y11m23d_233725662.png
の場合としています。

その後に「Save options」ボタンを押下して、「Gain reference(optional)」欄のファイルが存在しないと警告が出るけど、警告に「OK」ボタンを押下して「Save & run」を押下せずに画面を閉じます。

これで設定内容が反映された「relion_it_options.py」が得られる。
初めから「relion_it.py」の中身を調整するのもありだけど、オリジナルは弄りたくないので。

っで、「relion_it_options.py」の中身をさらに調整する。
だいたいの調整箇所は

  • import_images = 'Movies/*.tif'
    送り込まれるtiffファイルの場所を指定。あるいは既にあるtiffファイルの場所かもしれないけど。
  • motioncor_gainreference = 'Movies/gain.mrc'
  • motioncor_exe = '/public/EM/MOTIONCOR2/MotionCor2'
    自分の環境に合わせて
  • motioncor_gpu = '0'
    複数枚のGPUカードが使えるなら、'0:1:2:3'でもいいかも
  • motioncor_gainflip = 'No flipping (0)'
  • motioncor_gainrot = 'No rotation (0)'
    gainファイルに従って
  • motioncor_submit_to_queue = False
    ローカルで作業させるか、queueを使って作業させるか。ローカルにGPUカード1枚あるなら、Falseのままローカルで作業させてもいいかも
  • gctf_exe = '/public/EM/Gctf/bin/Gctf'
  • ctffind4_exe = '/public/EM/ctffind/ctffind.exe'
    自分の環境に合わせて
  • ctffind_submit_to_queue = False
  • autopick_submit_to_queue = False
  • extract_submit_to_queue = False

計算機の運用・使い方にも寄りますが、2D以降はqsubで流された方がいいかも。
「relion_it.py」を起動すると「import_images」を監視して
 motioncor->ctffind->autopick->select
の計算を繰り返すみたい。「import_images」のファイルに追加が無くても。
そして「Select/job006/」にあるparticles_split[0-9]{3}.starを積み上げるみたい。

  • batch_size = 10000
    particles_split[0-9]{3}.starに収まる粒子の数
  • refine_do_gpu = True
    2D,3Dの計算でgpuを使う
  • refine_gpu = '0:1:2:3'
    使う場合の定義
  • refine_mpi = 5
  • refine_threads = 2
    この辺は使うqsubに依存かな
  • queue_minimum_dedicated = 16
    この扱いが難しい...16コアマシンなら上記の定義でも動きはするが、最適ではない...
  • queue_submission_template = '/Appl/relion-3.0-beta-2-orig/bin/qsub.sh'
    「queue_minimum_dedicated」をどう料理するかは結局qsub.sh次第かも...

そして積みあがったparticles_split[0-9]{3}.starを使って順次2D/3Dを行うみたい。

実行

修正した「relion_it_options.py」を使って実行させる

./relion_it.py relion_it_options.py

これで「import_images」で定義した「'Movies/*.tif'」が監視され、新規ファイルがあれば随時処理される。
実行時に「RUNNING_RELION_IT」と「RUNNING_PIPELINER_PREPROCESS」の空ファイルが作られるが、
フォアグラウンドとなっている「relion_it.py」を終了させたいなら「RUNNING_RELION_IT」をrmで消す
バックグランドで動いている「relion_pipeliner」を終了させたいなら、「RUNNING_PIPELINER_PREPROCESS」も消す

メモ

1分1枚で Movies フォルダに入れてみた。MotionCorr(relion_run_motioncorr,job002)では--iは常に「Import/job001/movies.star」なのだが、
「--only_do_unfinished」を使って全体ではなく、未実施のファイルのみ対象にしているみたい。
CtfFind(relion_run_ctffind,job003)も同じく「--only_do_unfinished」を使っている
AutoPick(relion_autopick,job004)も
Extract(relion_preprocess,job005)は「--only_extract_unfinished」
Select(relion_star_handler,job006)は常に「`which relion_star_handler` --i Extract/job005/particles.star --o Select/job006/particles.star --split --size_split 10000」を繰り返す

(間違っているかも...)
relion_it.pyは、relionの各ステップをスケジュール実行させるrelion_pipelinerを作り、
同時に「'Movies/*.tif'」を監視して、繰り返してrelion_pipelinerに回す。
preprocess_repeat_timesとpreprocess_repeat_wait(min)の値まで。
試しにpreprocess_repeat_times=30, preprocess_repeat_wait=1とし、1分1枚で Movies フォルダに入れてみた。
そうしたら30min以降に投入したファイルについては、処理が行われなくなった。
2D/3Dは、それまでに作られたparticles_split[0-9]{3}.starを見てrefineを実行しているみたい。
(ただしbatch_sizeに満たない star ファイルは2D/3D実行されないみたい)
batch_sizeを満たしたparticles_split[0-9]{3}.starの全てで(2D/3D)実行し終えると「RUNNING_PIPELINER_PREPROCESS」は消える

続きの処理を行いたいのなら、RUNNING_RELION_ITを削除して

./relion_it.py --continue

を実行する。そうすれば未回収のtiffファイルが処理され、2D/3Dはbatch_sizeを満たしたstarファイルだけ実行される

決めうちのルーチン処理として使用して、結果の状態を見ながらこのステップから再計算って使い方かな。

Import(job001)、MotionCorr(job002)、CtfFind(job003)、AutoPick(job004)、Extract(job005)、Select(job006)までは
tiffファイルが追加されてもjob番号はそもままを維持する。
2D/3Dは、Selectのparticles_split[0-9]{3}.starの数でjob番号が増える
particles_split001.star --> Class2D(job007)、InitialModel(job008)、Class3D(job009)
particles_split002.star --> Class2D(job010)、Class3D(job011)

だが、、batch_sizeに満たない particles_split003.star で Class3D(job012)が動いた..
イメージ図(仮)
2018y11m24d_154325230.png


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2018-11-24 (土) 15:44:03 (24d)