#author("2020-07-09T03:28:43+00:00","default:sysosa","sysosa") #author("2020-07-09T03:36:57+00:00","default:sysosa","sysosa") 本家様 [[http://www.mrc-lmb.cam.ac.uk/kzhang/>+http://www.mrc-lmb.cam.ac.uk/kzhang/]] &size(10){[[Gctf]]と同じサイトです}; [[Gautomatch/bash]] 現時点(170928)では最新版が Gautomatch_v0.56 で、ダウンロードサイトを訪れると cuda8.0 に対応して 各種sm毎にバイナリーが用意されている。 利用するnvidiaのカードがMaxwellベースの「GM20{0|4|6}」チップならsm_52、Pascalベースの「GP10{2|4|6|7|8}」チップならsm_61で用意する。カードによる下位互換性はあるようなので「GP102」搭載カードでも「sm_51」のプログラムは動く ここでは #code(nonumber){{ [root@c ~]# mkdir /Appl/Gautomatch/v0.56 [root@c ~]# cd /Appl/Gautomatch/v0.56 [root@c v0.56]# curl -R -O http://www.mrc-lmb.cam.ac.uk/kzhang/Gautomatch/Gautomatch_v0.56/Gautomatch_v0.56_sm52_cu8.0 [root@c v0.56]# chmod +x ./Gautomatch_v0.56_sm52_cu8.0 [root@c v0.56]# ln -s Gautomatch_v0.56_sm52_cu8.0 gautomatch [root@c v0.56]# ln -s Gautomatch_v0.56_sm52_cu8.0 Gautomatch [root@c ~]# rm /Appl/Gautomatch/cr ; ln -s /Appl/Gautomatch/v0.56 /Appl/Gautomatch/cr }} サンプルファイルがあるので、それに実行方法らが記載されている。 ***メモ [#x47d1044] 下記はサンプルファイルの一部で「ribosome_automatch_test8.png」である。 &ref(2018y04m25d_020031470.png,nolink); こんな感じで粒子をpickできるよとの資料みたい。実行方法は同封の「readme.txt」を参照のこと ここではこの画像を再現してみた。 対象となる画像ファイルが「test8.mrc」で #code(nonumber){{ [saber@e ~]$ gautomatch --apixM 1.34 --diameter 240 --min_dist 200 --cc_cutoff 0.25 --speed 1 test8.mrc }} より「test8_automatch.box」「test8_automatch.star」「test8_nonunique.box」「test8_rejected.box」「test8_rejected.star」が得られた。「test8_automatch.box」の中身は下記のようになっている。 #code(nonumber){{ 1121 27 238 238 0.642691 0 0.000000 2019 71 238 238 0.599376 0 0.000000 2835 21 238 238 0.430485 0 0.000000 357 143 238 238 0.508037 0 0.000000 921 129 238 238 0.636458 0 0.000000 2343 89 238 238 0.366626 0 0.000000 2645 127 238 238 0.646135 0 0.000000 : }} ***実行 [#s5fc8098] gautomatchはそのまま実行したら1プロセス、1GPUでしか走らない. 4GPUマシンなら4つ同時に動かしたいものである. 方法はいろいろあるのだが、ここでは parallel コマンドを併用してみる 下記はmrcファイルの在処に移って、parallelコマンドで4同時並行に実行する方法です。 「-j4」は4同時を意味して、「--gid」はGautomatchでの使用するGPUデバイスID(0,1,2,3)を指定します。 ここで「'$(({%} - 1))'」として「{%}」はparallelの「-j」と連動していて「同時並行プロセスの何番目のプロセス」を示します。 っで1番目のプロセスなら「--gid $(1-1)」で「--gid 0」と指定され、2番目なら「--gid $(2-1)」で「--gid 1」となります. 「yum --enablerepo=epel install parallel 」&color(red){*};&size(10){epelで入手可能}; #code(nonumber){{ cd MotionCorr/job002/Micrographs/ ls *.mrc | parallel -j4 Gautomatch --gid '$(({%} - 1))' --speed 1 --apixM 1.47 --diameter 150 --cc_cutoff 0.5 --lave_D 150 --lsigma_D 300 {} }} ***どこをpickしたか確認したい [#tf5686e8] 「test8_automatch.box」の中身からその並びは x, y, height, width,,,だろうか.... この値を使って、画像上に四角を載せてみる。 まず、mrcファイルでの扱いは難しいので、jpegに変換。EMAN2パッケージの「e2proc2d.py」を使用 #code(nonumber){{ [saber@e ~]$ e2proc2d.py test8.mrc test8.jpeg }} &size(10){Shrinkはしてません}; その後、下記のようなphpスクリプトで描かせてみた #code(nonumber){{ <?php $f = "test8.jpeg"; $box="test8_automatch.box"; $img = ImageCreateFromJPEG( $f ); imagesetthickness($img, 5); $color = imagecolorallocate($img, 255, 0, 255); $fp=fopen($box,"r"); if($fp){ while(($b=fgets($fp,4096)) !== false){ if ( preg_match("/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$/",$b,$m) ){ imagerectangle ($img, $m[1] , $m[2], ($m[1] + $m[3]), ($m[2] + $m[3]), $color); } } fclose($fp); } imagejpeg($img, "test8_particle.jpeg"); imagedestroy($img); ?> }} っが、 &ref(2018y04m25d_021732940.png,nolink); と合わない。どうやら画像側の上下の反転が必要なようで、ImageMagickのconvrtを使って反転 #code(nonumber){{ [saber@e ~]$ convert -flip test8.jpeg test8_flip.jpeg }} この「test8_flip.jpeg」を先ほどのphpスクリプトに流すと、 &size(10){あとphpスクリプトと微調整して}; &ref(2018y04m25d_022114045.png,nolink); となる。一応近いかな なぜ「flip」が必要かは原点の取り方なのか良く分からない... phpスクリプトで、「imagerectangle」部分を #code(nonumber){{ - imagerectangle ($img, $m[1] , $m[2], ($m[1] + $m[3]), ($m[2] + $m[3]), $color); + imagerectangle ($img, $m[1] , (4096 - ($m[2] + $m[3])) , ($m[1] + $m[3]), (4096 - $m[2]) , $color); }} とすると上下の反転せずとも粒子のpick場所を正しく表示できるけど... &ref(2018y04m25d_071550695.png,nolink); そもそも「ribosome_automatch_test8.png」でなぜ反転させたのか? ほか、relion-tutorialで出されているFalconの画像でも行ってみた 計算パラメータは下記として #code(nonumber){{ [saber@e ~]$ gautomatch --apixM 3.54 --diameter 200 --min_dist 200 --cc_cutoff 0.25 --speed 1 Falcon_2012_06_12-14_33_35_0.mrc }} Gautomatchで推定された粒子が下記と成る &ref(2018y04m25d_111636714.png,nolink); 一方で、この「Falcon_2012_06_12-14_33_35_0.mrc」をrelionの「manual-picking」で開くと上下の反転されて表示される &ref(2018y04m26d_001638598.png,nolink); ***試作アプリ [#w7326c10] Gautomatchを使ってこんなアプリを作ってみた。 &ref(2018y05m31d_032137375.png,nolink); 満足がいくまでパラメータを変更していただき、その値を使って対象ファイルからparticleをpickするもの。