旧ページcrYOLO190418 crYOLO/200211

粒子pickツール
本家様 http://sphire.mpg.de/

構築方針

nvidiaのカードがあれば、それを使ってpick可能です。なければないでcpuで計算してくれます。

アプリはpythonで作られており、充実したPython実行環境が必須.
OSのリポジトリで初め構築しようかと思ったが、yumで提供されていないパッケージがあった.
なので pyenv で python実行環境 を切り替えて、pythonパッケージ管理anaconda で crYOLO向けの仮想環境 を作ることにした。

まず、
pyenvの基点を /apps/pyenv として、その配下に pythonパッケージ管理anaconda を敷く。

pyenv

pyenvをインストール

[root@c ~]# git clone https://github.com/yyuu/pyenv.git /apps/pyenv

次にこのpyenvを使ってyumから離れた独自のpython実行環境を用意する。
pyenvを使えるようにして

[root@c ~]# export PYENV_ROOT=/apps/pyenv
[root@c ~]# export PATH=$PYENV_ROOT/bin:$PATH
[root@c ~]# eval "$(pyenv init - --no-rehash)"

yumから離れた独自の環境にanacondaをインストールします。

[root@c ~]# pyenv install anaconda3-5.3.1
[root@c ~]# pyenv version
system (set by /apps/pyenv/version)
[root@c ~]# pyenv versions
* system (set by /apps/pyenv/version)
  anaconda3-5.3.1
[root@c ~]#
[root@c ~]# pyenv global anaconda3-5.3.1
[root@c ~]# pyenv version
anaconda3-5.3.1 (set by /apps/pyenv/version)
[root@c ~]# pyenv versions
  system
* anaconda3-5.3.1 (set by /apps/pyenv/version)
[root@c ~]#

crYOLO向けの仮想実行環境を作る

複数の仮想実行環境が作れる。例えばcrYOLO向けにpython関連パッケージを詰め込んだ環境、
spliceAI向けにパッケージを詰め込んだ環境とか、別々に環境を用意することで互いに独立して相互の影響をなくせる。

[root@c ~]# export PATH=$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH
[root@c ~]# conda update conda
 
[root@c ~]# conda create -n cryolo -c anaconda python=3.6 pyqt=5 cudnn=7.1.2 numpy==1.14.5 cython \
              wxPython==4.0.4 intel-openmp==2019.4

これで、python=3.6 pyqt=5 cudnn=7.1.2 numpy==1.14.5 wxPython==4.0.4 intel-openmp==2019.4 を満たす crYOLO の実行環境を用意できた。
ちなみに現在あるほかの実行環境は下記コマンドで調べられる

[root@c ~]# conda env list
# conda environments:
#
base                  *  /apps/pyenv/versions/anaconda3-5.3.1
cryolo                   /apps/pyenv/versions/anaconda3-5.3.1/envs/cryolo
 
[root@c ~]#
 
(環境を削除するには)
[root@c ~]# conda env remove --name cryolo

crYOLOのインストール

crYOLO環境にアクティベートします。
CentOS7系だと「source activate cryolo」でいける。
「conda create -n cryolo ..」の際に「conda activate cryolo」でアクティベートを求められるが、CenOS7だとエラーになる。
*これがCentOS8なら「conda activate cryolo」で行ける

インストール先にGPUカードがあるのならGPUで計算してくれるエディション(cryolo[gpu])を入れる。
っでGPUがなくてCPUで計算したいのならcryolo[cpu]をインストールします

[root@c ~]# source activate cryolo
(cryolo) [root@c ~]# pip install cryolo[gpu]     <-- cpuで計算するなら「cryolo[cpu]」を指定します

*coreが32個とかならcryolo[cpu]がいいのかな?

EnvironmentModules

ここではEnvironmentModulesを使って実行環境を整備してます。
作ったmoduleファイルは下記URLを参照して
http://sphire.mpg.de/wiki/doku.php?id=pipeline:window:cryolo:integration_into_module_system

#%Module -*- tcl -*-
##
## dot modulefile
##
proc ModulesHelp { } {
 
  puts stderr "\tAdds anaconda to your environment variables,"
}
module-whatis "Adds anaconda to your environment variables"
set          root       /apps/pyenv/versions/anaconda3-5.3.1/envs/cryolo
setenv       CRYOLOPATH $root
prepend-path PATH       $root/bin

としてます。
これを「/etc/modulefiles/crYOLO」として配置

計算してみる

まずはcrYOLOのmoduleファイルをロードしてcrYOLO実行環境を準備します

[saber@c ~]$ module load crYOLO
[saber@c ~]$ cd crYOLO
[saber@c crYOLO]$

これでcrYOLO関係のアプリが使えます。
*「/apps/pyenv/versions/anaconda3-5.3.1/envs/cryolo/bin」の関連アプリがあります

ここでは提供されているmodelファイル
General PhosaurusNet models

  • For cryo images (low-pass filtered)
  • For cryo images (neural network denoised with JANNI)
  • For negative stain images

から「For cryo images (low-pass filtered)」のmodelを使ってpickしてみます。
modelファイルは、「http://sphire.mpg.de/wiki/doku.php?id=downloads:cryolo_1#general_phosaurusnet_models」から取得

そしてconfigファイルを準備します。
チュートリアルにも記載されてますが、下記を実行してconfigファイルを作ります

[saber@c crYOLO]$ cryolo_gui.py config config_cryolo_.json 220 --filter LOWPASS --low_pass_cutoff 0.1

中身は

[saber@c crYOLO]$ cat config_cryolo_.json
{
    "model": {
        "architecture": "PhosaurusNet",
        "input_size": 1024,
        "anchors": [
            220,
            220
        ],
        "max_box_per_image": 700,
        "filter": [
            0.1,
            "filtered_tmp/"
        ]
    }
}
[saber@c crYOLO]$

となる。configファイルのたたき台を作るくらいでしょうか。別に手動で作成しても宜しいかと思う。
各項目の説明は下記URL参照
http://sphire.mpg.de/wiki/doku.php?id=cryolo_config

pick対象はrelion30のチュートリアルデータです。
っで実際にpickさせてみます。

[saber@c crYOLO]$ cryolo_predict.py -c config_cryolo_.json -w /Appl/crYOLO/gmodel_phosnet_201912_N63.h5 -i ./20170629_000*.mrc -o ./
###############################################
New version of crYOLO available
Local version:           1.5.5
Latest version:          1.5.6
More information here:
 http://sphire.mpg.de/wiki/doku.php?id=pipeline:window:cryolo
###############################################
START METHOD: fork
Using TensorFlow backend.
 :
 :
6701 particles in total are found ( 10 seconds)
Deleted 564 particles as they were not fully immersed in the micrograph
[saber@c crYOLO]$

6701個の粒子をpickしました。そのpickした座標データは形式に合わせてCBOX、EMAN、STARフォルダにそれぞれ書かれる。
EMANのbox形式を見てみると

[saber@c crYOLO]$ less EMAN/20170629_00021_frameImage.box
723.0   3568.5  220     220
2002.5  3583.5  220     220
2128.0  3587.5  220     220
2391.5  3574.0  220     220
2929.0  3565.0  220     220
3358.0  3596.0  220     220
1268.5  3517.5  220     220
1557.0  3526.0  220     220
2575.0  3522.0  220     220
3114.0  3520.5  220     220
 :
[saber@c crYOLO]$

な感じで書かれています。
GPU4枚マシンで4枚使って計算したいなら

[saber@c crYOLO]$ cryolo_predict.py -g 0 1 2 3 -c config_cryolo_.json -w /Appl/crYOLO/gmodel_phosnet_201912_N63.h5 -i ./20170629_000*.mrc -o ./

と「-g 0 1 2 3」と指定する

cryolo_gui.pyを使ってみる

[saber@c crYOLO]$ cryolo_gui.py

実行するとcrYOLOの画面が表示されます。その左側には「Actions」として「config」「train」「predict」「ecaluation」があります。
2020y02m13d_022916652.png
「config」を選ぶとその右側には複数のタブが並びます。
2020y02m13d_023250324.png
先ほどコマンドラインで作成した「config_cryolo_.json」をGUIで作っているだけなのですが、個々の項目の説明があるので
こちらで欄を埋めてconfigファイルを用意された方がいいのかと思う。
ただ「predict」の実行なら「General arguments」タグの「config_out_path」「boxsize」、「Model options」タグのすべて、
「Denoising option」を埋めて、「Start」ボタンを押下すればconfigファイルは得られる。

っで、次にpredictを選択
2020y02m13d_025846210.png
「Required arguments」タグでconf欄は前段で作ったconfigファイル。inputはmrcファイルを指定します。
weightsがmodelファイルを指定して、outputはそのばでいいなら「./」とします。
2020y02m13d_030217762.png

「Optional auguments」タグは説明を読み定義すれば宜しいかと。そのままで動きます。
「Filament」タグはパス
「Deprecated/Experimental/Special」タグもパス
そして「Start」ボタンを押下すればpickしてくれます。

pick結果を見たい

pickの状態を可視化するツールも備わっているようで、「cryolo_boxmanager.py」コマンドがそれに該当します。
「cryolo_boxmanager.py」を起動すると下記のようなGUI画面が表示されます。
メニューの「File」から「Open image folder」を選択して
2020y02m13d_030750841.png
「Select Image Directory」画面が新たに表示され、そこでpick対象のmrcファイルのあるフォルダを指定します。
*「cryolo_boxmanager.py」の実行場所にmrcファイルがあるのなら、そのまま「Choose」を選びます
すると、別の画面が表れて、mrcファイルが表示されます。
2020y02m13d_031146529.png

そして初回に表示されGUI画面には読み込まれたmrcファイルらが表示されます
次に、BOXデータを読み込みます。再度Fileメニューから「Import Box files」を選びます
2020y02m13d_031521865.png
新に「Select Box Directory」画面が表示され、そこでpredictで得られたpickデータから「CBOX」を選択してパネル下部の「Choose」ボタンを押下します。
2020y02m13d_031707281.png

すると、mrcイメージにBOXが表示されます。
2020y02m13d_032156784.png


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2020-02-13 (木) 03:30:26 (220d)